diff --git a/de_DE.ISO8859-1/books/faq/book.sgml b/de_DE.ISO8859-1/books/faq/book.sgml index 9468097337..8ca0f86883 100644 --- a/de_DE.ISO8859-1/books/faq/book.sgml +++ b/de_DE.ISO8859-1/books/faq/book.sgml @@ -1,14775 +1,14777 @@ %man; %freebsd; + +%teams; %authors; %translators; %bookinfo; %mailing-lists; ]> Häufig gestellte Fragen zu FreeBSD 2.X, 3.X und 4.X Frequently Asked Questions für FreeBSD 2.X, 3.X und 4.X The FreeBSD German Documentation Project Deutsche Übersetzung von Robert S. F. Drehmel, Dirk Gouders und Udo Erdelhoff $FreeBSDde: de-docproj/books/faq/book.sgml,v 1.190 2001/10/06 19:03:19 ue Exp $ 1995 1996 1997 1998 1999 2000 2001 The FreeBSD Documentation Project 2000 2001 The FreeBSD German Documentation Project &bookinfo.legalnotice; Dies ist die FAQ für die FreeBSD-Versionen 2.X, 3.X und 4.X. Alle Einträge sollten für FreeBSD ab Version 2.0.5 relevant sein, andernfalls wird darauf explizit hingewiesen. Alle mit <XXX> gekennzeichneten Einträge befinden sich in Arbeit. Falls Sie daran interessiert sein sollten, an diesem Projekt mitzuhelfen, senden Sie eine Mail an &a.de.translators;. Die aktuelle Version dieses Dokuments ist ständig auf dem FreeBSD World-Wide-Web-Server verfügbar. Es kann auch per HTTP als eine große HTML-Datei heruntergeladen werden oder als Textdatei, im PostScript-, PDF- und anderen Formaten vom FreeBSD FTP-Server. Sie können die FAQ auch durchsuchen. Einleitung Willkommen zur FreeBSD 2.X-4.X FAQ! Wie auch bei den Usenet FAQs üblich, wird mit diesem Dokument beabsichtigt, die am häufigsten gestellten Fragen bezüglich des Betriebssystems FreeBSD zu erfassen und sie natürlich auch zu beantworten. Obwohl FAQs ursprünglich lediglich dazu dienen sollten, die Netzbelastung zu reduzieren und das ständige Wiederholen derselben Fragen zu vermeiden, haben sie sich als wertvolle Informationsquellen etabliert. Wir haben uns die größte Mühe gegeben, diese FAQ so lehrreich wie möglich zu gestalten; falls Sie irgendwelche Vorschläge haben, wie sie verbessert werden kann, senden Sie diese bitte an den &a.faq;. Was ist FreeBSD? FreeBSD ist, kurz gesagt, ein UN*X-ähnliches Betriebssystem für die Plattformen i386 und Alpha/AXP, das auf der 4.4BSD-Lite-Release der University of California at Berkeley (UCB) basiert; außerdem flossen einige Erweiterungen aus der 4.4BSD-Lite2-Release mit ein. Es basiert außerdem indirekt auf der von William Jolitz unter dem Namen 386BSD herausgebrachten Portierung der Net/2-Release der UCB auf die i386-Plattform - allerdings ist nur wenig vom 386BSD-Code übriggeblieben. Eine umfassendere Beschreibung darüber, was FreeBSD ist und wie Sie es für Ihre Zwecke verwenden können, finden Sie auf der FreeBSD home page. Unternehmen, Internet Service Provider, Forscher, Computerfachleute, Studenten und Privatnutzer auf der ganzen Welt nutzen FreeBSD für die Arbeit, die Ausbildung oder zur Freizeitgestaltung. Sie finden einige von ihnen in der FreeBSD Gallerie. Ausführlichere Informationen zu FreeBSD, finden Sie im FreeBSD Handbuch. Welches sind die Ziele von FreeBSD? Die Ziele von FreeBSD sind es, Software zur Nutzung für beliebige Zwecke, bedingungslos zur Verfügung zu stellen. Viele von uns haben entscheidend zur Erstellung des Codes (und zum Projekt) beigetragen und hätten jetzt oder in Zukunft sicherlich nichts gegen einen geringen finanziellen Ausgleich einzuwenden, aber wir beabsichtigen definitiv nicht, darauf zu bestehen. Wir sind der Meinung, daß unsere Mission zuerst und vorderst darin besteht, allen und jedem Kommenden Code für welchen Zweck auch immer zur Verfügung zu stellen, damit der Code möglichst weit eingesetzt wird und den größtmöglichen Nutzen liefert. Das ist, so glauben wir, eines der fundamentalsten Ziele von freier Software und eines, das wir enthusiastisch unterstützen. Der Code in unserem Quellbaum, der der GNU General Public License (GPL) oder der GNU Library General Public License (LGPL) unterliegt, ist mit zusätzlichen, geringfügigen Bedingungen verknüpft, jedoch handelt es sich dabei lediglich um erzwungene Bereitstellung statt des sonst üblichen Gegenteils. Auf Grund der zusätzlichen Komplexität, die durch den kommerziellen Einsatz von GPL Software entstehen kann, bemühen wir uns jedoch, solche Software, wo möglich, durch solche, die dem etwas lockereren FreeBSD Copyright unterliegt, zu ersetzen. Warum heißt es FreeBSD? Es darf kostenlos genutzt werden - sogar von kommerziellen Benutzern. Der komplette Quellcode für das Betriebssystem ist frei verfügbar und die Benutzung, Verbreitung und Einbindung in andere (kommerzielle und nicht-kommerzielle) Arbeiten sind mit den geringstmöglichen Einschränkungen versehen worden. Jedem ist es freigestellt, Code für Verbesserungen und/oder die Behebung von Fehlern einzusenden und ihn zum Quellbaum hinzufügen zu lassen (dies ist natürlich Gegenstand von ein oder zwei offensichtlichen Klauseln). Es wird darauf hingewiesen, daß das englische Wort free hier in den Bedeutungen umsonst und Sie können tun, was immer Sie möchten genutzt wird. Abgesehen von ein oder zwei Dingen, die Sie mit dem FreeBSD-Code nicht tun können (z.B. vorgeben, ihn geschrieben zu haben), können Sie damit tatsächlich tun, was auch immer Sie möchten. Welches ist die aktuelle FreeBSD-Version? Version &rel.current; ist die aktuelle, STABLE Version; sie ist im &rel.current.date; erschienen. Gleichzeitig ist sie auch die aktuelle RELEASE-Version. Kurz erläutert, -STABLE ist für ISPs und andere Benutzer gedacht, die mehr Wert auf Stabilität und eine niedrige Änderungsfrequenz als auf die neuesten Features im aktuellen -CURRENT Snapshot legen. Releases können aus jedem Zweig entstehen, Sie sollten -CURRENT allerdings nur dann benutzen, wenn Sie auf ein erhöhtes Fehlverhalten im Vergleich zu -STABLE auch vorbereitet sind. Releases entstehen nur alle paar Monate. Viele Leute halten ihre Systeme aktueller (lesen Sie die Fragen zu FreeBSD-CURRENT und FreeBSD-STABLE), aber das erfordert ein erhöhtes Engagement, da die Sourcen sich ständig verändern. Was ist FreeBSD-CURRENT? FreeBSD-CURRENT ist die Entwicklungsversion des Betriebssystems, die zu gegebener Zeit zu 5.0-RELEASE werden wird. Als solche ist sie lediglich für Entwickler, die am System mitarbeiten und für unentwegte Bastler von Interesse. Details zum Betrieb von -CURRENT finden Sie im entsprechenden Abschnitt des Handbuchs. Falls Sie nicht mit dem Betriebssystem vertraut sind oder nicht in der Lage sein sollten, den Unterschied zwischen einen echten und einem temporären Problem zu erkennen, sollten Sie FreeBSD-CURRENT nicht verwenden. Dieser Zweig entwickelt sich manchmal sehr schnell weiter und kann gelegentlich für mehrere Tage hintereinander nicht installierbar sein. Von Personen, die FreeBSD-CURRENT verwenden, wird erwartet, daß Sie dazu in der Lage sind, Probleme zu analysieren und nur dann von ihnen berichten, wenn es sich um Fehler und nicht um kurzzeitige Störungen handelt. Fragen wie make world produziert Fehlermeldungen bezüglich Gruppen werden in der -CURRENT Mailingliste manchmal nicht beachtet. Jeden Tag wird der aktuelle Entwicklungsstand in den Zweigen -CURRENT und -STABLE in einer Snapshot Releases festgehalten. Mittlerweile werden sogar CDROM Distributionen dieser gelegentlichen Snapshots zur Verfügung gestellt. Die Ziele dieser Snapshot Releases sind: Die aktuelle Version der Installationssoftware zu testen. Personen, die -CURRENT oder -STABLE benutzen möchten, aber nicht über die nötige Zeit und/oder Bandbreite verfügen, um tagesaktuell zu bleiben, soll eine bequeme Möglichkeit geboten werden, es auf ihr System zu bringen. Die Erhaltung von Referenzpunkten des fraglichen Codes, für den Fall, daß wir später einmal ernsthaften Schaden anrichten sollten (obwohl CVS verhindern sollte, daß solche Situationen entstehen :) Sicherzustellen, daß zu testende, neue Merkmale an eine möglichst großen Zahl potentieller Tester gelangen. Von keinem -CURRENT Snapshot kann Produktionsqualität für beliebige Zwecke erwartet werden. Wenn Sie eine stabile und ausgetestete Version benötigen, sollten Sie eine vollständige Release oder einen -STABLE Snapshot verwenden. Snapshot Releases von 5.0-CURRENT sind unter ftp://current.FreeBSD.org/pub/FreeBSD/ verfügbar; wenn Sie einen Snapshot von 4-STABLE erhalten möchten, lautet die Adresse releng4.FreeBSD.org. Zur Zeit (Mai 2000) werden keine Snapshots von 3-STABLE erstellt. In der Regel wird jeden Tag ein Snapshot jedes zur Zeit aktiven Zweiges erstellt. Was ist das Konzept von FreeBSD-STABLE? Zur Zeit, als FreeBSD 2.0.5 herausgegeben wurde, haben wir entschieden, die Entwicklung von FreeBSD zweizuteilen. Ein Zweig wurde -STABLE genannt. In diesem Zweige werden nur ausgetestete Fehlerbehebungen und kleine, inkrementelle Änderungen aufgenommen. Dieser Zweig ist für Anbieter von Internetdiensten und andere kommerzielle Unternehmen gedacht, für die plötzliche Veränderungen und experimentelle Features unerwünscht sind. Der andere Zweig war -CURRENT. Im wesentlichen stellt eine ununterbrochene Linie zum 4.0-RELEASE (und darüber hinaus) dar, seit 2.0 herausgegeben worden ist. Die folgende ASCII-Zeichnung soll verdeutlichen, wie das aussieht: 2.0 | | | [2.1-STABLE] *ZWEIG* 2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [2.1-STABLE endet] | (März 1997) | | | [2.2-STABLE] *ZWEIG* 2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [Ende] | (März 1997) (Okt 97) (Apr 98) (Jul 98) (Dez 98) | | 3.0-SNAPs (begonnen im 1. Quartal 1997) | | 3.0-RELEASE (Okt 1998) | | [3.0-STABLE] *ZWEIG* 3.1-RELEASE (Feb 1999) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1 | (Mai 1999) (Sep 1999) (Dec 1999) (Jun 2000) (Juli 2000) | | [4.0-STABLE] *ZWEIG* 4.0 (März 2000) -> 4.1 -> 4.1.1 -> 4.2 -> 4.3 -> 4.4 -> ... zukünftige 4.x Releases ... | (Jul 2000) (Sep 2000) (Nov 2000) (Apr 2001) | | \|/ + [5.0-CURRENT wird fortgesetzt] Der Zweig 2.2-STABLE wurde mit der Vero¨ffentlichung der Version 2.2.8 eingestellt. Der Zweig 3-STABLE endete mit Version 3.5.1, der letzten 3.X-Version. Änderungen in diesen Zweigen beschränken sich im allgemeinen auf die Korrektur von Sicherheits-relevanten Fehlern. 4-STABLE ist der Zweig, auf den sich die Entwicklung von -STABLE zur Zeit konzentriert. Die aktuelle Version ist das im &rel.current.date; erschienene &rel.current;-RELEASE. Der -CURRENT-Zweig entwickelt sich langsam in Richtung 5.0 und darüber hinaus weiter. Weitere Informationen über diesen Zweig finden Sie bei Was ist FreeBSD-CURRENT?. Wann werden FreeBSD-Versionen erstellt? Prinzipiell gibt das FreeBSD Core Team nur dann neue FreeBSD-Versionen heraus, wenn es der Meinung ist, daß genügend neue Bestandteile und/oder Fehlerkorrekturen vorliegen, die dies rechtfertigen. Außerdem muß es davon überzeugt sind, daß die durchgeführten Änderungen derart ins System integriert sind, daß eine Beeinträchtigung der Stabilität der Version ausgeschlossen ist. Viele Benutzer halten dies für einen großen Vorteil von FreeBSD, obwohl es manchmal frustrierend sein kann, so lange auf die Verfügbarkeit der aktuellsten Leckerbissen zu warten... Neue Versionen werden durchschnittlich alle vier Monate erstellt. Für diejenigen, die ein wenig mehr Spannung brauchen (oder möchten), werden täglich Snapshots herausgegeben... siehe oben. Wer ist für FreeBSD verantwortlich? Schlüsseldiskussionen, die das FreeBSD-Projekt betreffen, wie z.B. über die generelle Ausrichtung des Projekts und darüber, wem es erlaubt sein soll, Code zum Quellbaum hinzuzufügen, werden innerhalb eines Core Team von etwa 9 Personen geführt. Es gibt ein weitaus größeres Team von über 200 Committers, die dazu autorisiert sind, Änderungen am FreeBSD Quellbaum durchzuführen. Jedoch werden die meisten nicht-trivialen Änderungen zuvor in den Mailinglisten diskutiert und es bestehen keinerlei Einschränkungen darüber, wer sich an diesen Diskussionen beteiligen darf. Wie kann ich FreeBSD beziehen? Jede bedeutende Ausgabe von FreeBSD ist per Anonymous-FTP vom FreeBSD FTP Server erhältlich: Die aktuelle Ausgabe von 3.X-STABLE, 3.5.1-RELEASE, finden Sie im Verzeichnis 3.5.1-RELEASE. Die aktuelle Ausgabe von 4-STABLE, &rel.current;-RELEASE, finden Sie im Verzeichnis &rel.current;-RELEASE. 4.X Snapshots werden in der Regel einmal täglich erstellt. Einmal täglich werden 5.0 Snapshot Ausgaben vom -CURRENT-Zweig erstellt, die allerdings nur den Testern und Entwicklern an vorderster Front dienen. Wo und wie Sie FreeBSD auf CD, DVD, und anderen Medien beziehen können, erfahren Sie im Handbuch. Woher bekomme ich Informationen zu den FreeBSD Mailinglisten? Vollständige Informationen finden Sie im Handbucheintrag über Mailinglisten. Wo finde ich die FreeBSD-spezifischen Informationen zum Jahr-2000-Problem? Vollständige Informationen finden Sie auf der FreeBSD Jahr-2000-Seite. Welche Newsgruppen existieren zu FreeBSD? Sie finden alle Informationen hierzu im Handbucheintrag zu Newsgruppen. Gibt es FreeBSD IRC (Internet Relay Chat) Kanäle? Ja, die meisten großen IRC Netze bieten einen FreeBSD Chat-Channel: Channel FreeBSD im EFNet ist ein FreeBSD-Forum, aber gehen Sie nicht dorthin, um technische Unterstützung zu suchen, oder, um zu versuchen, die Leute dort dazu zu bringen, Ihnen dabei zu Helfen, das mühselige Lesen von Manuals zu ersparen oder eigene Nachforschungen zu betreiben. Es ist in erster Linie ein Chat-Channel und die Themen dort umfassen Sex, Sport oder Kernwaffen ebensogut, wie FreeBSD. Sie wurden gewarnt! Der Channel ist auf dem Server irc.chat.org verfügbar. Der Channel #FreeBSDhelp im EFNet hat sich dagegen auf die Unterstützung der Benutzer von FreeBSD spezialisiert. In diesem Channel sind Fragen deutlich willkommener als im Channel #FreeBSD. Der Channel #FreeBSD im DALNET ist in den USA unter irc.dal.net und in Europa unter irc.eu.dal.net verfügbar. Der Channel #FreeBSD im UNDERNET ist in den USA unter us.undernet.org und in Europa unter eu.undernet.org verfügbar. Es handelt sich hierbei um einen Hilfe-Channel, man wird Sie daher auf Dokumente verweisen, die Sie selbst lesen müssen. Der Channel #FreeBSD im HybNet. Dieser Channel ist ein Hilfe-Channel. Eine Liste der möglichen Server finden Sie auf der Webseite von HybNet. Alle diese Kanäle unterscheiden sich voneinander und sind nicht miteinander verbunden. Ebenso unterscheiden sich Ihre Chat-Stile, weshalb es sein kann, daß Sie zunächst alle Kanäle ausprobieren müssen, um den zu Ihrem Chat-Stil passenden zu finden. Hier gilt, was für jeden IRC-Verkehr gilt: falls sie sich leicht angegriffen fühlen oder nicht mit vielen jungen (und einigen älteren) Leuten, verbunden mit dem nutzlosen Gezanke umgehen können, dann ziehen Sie es gar nicht erst in Erwägung. Wie greife ich auf die Datenbank mit Problemberichten zu? Die Datenbank mit Problemberichten (PR - Problem Report) Änderungsanfragen von Benutzern kann über die Web-basierte PR- Abfrage-Schnittstelle abgefragt und über das PR-Einsende-Interface können Einsendungen vorgenommen werden. Das Programm &man.send-pr.1; kann auch dazu genutzt werden, Problemberichte oder Änderungsanträge per Email einzusenden. Ist die Dokumentation auch in anderen Formaten verfügbar? Zum Beispiel als einfacher Text (ASCII) oder als Postscript? Ja. Werfen Sie einen Blick auf das Verzeichnis /pub/FreeBSD/doc/ auf dem FreeBSD FTP-Server. Dort finden sie Dokumentation in vielen verschiedenen Format. Die Dokumentation wurde nach vielen verschiedenen Kriterien sortiert. Die Kriterien sind: Der Name des Dokumentes, z.B. FAQ oder Handbuch. Die Sprache und der Zeichensatz, die in dem Dokument verwendet werden. Diese entsprechen den Anpassungen, die Sie auf Ihrem FreeBSD-System im Verzeichnis /usr/share/locale finden. Zur Zeit werden die folgenden Sprachen und Zeichensätze benutzt: Name Bedeutung en_US.ISO8859-1 US Englisch es_ES.ISO8859-1 Spanisch fr_FR.ISO8859-1 Französisch de_DE.ISO8859-1 Deutsch ja_JP.eucJP Japanisch (EUC kodiert) ru_RU.KOI8-R Russisch (KOI8-R kodiert) zh_TW.Big5 Chinesisch (Big5 kodiert) Einige Dokumente sind nicht in allen Sprachen verfügbar. Das Format des Dokumentes. Die Dokumentation wird in verschiedenen Formaten erzeugt, um eine möglichst große Flexibilität zu erreichen. Zur Zeit werden die folgenden Formate unterstützt. Format Erklärung html-split Viele kleine HTML-Dateien, die sich gegenseitig referenzieren. html Eine große HTML-Datei, die das komplette Dokument enthält. pdb Palm Pilot Datenbank für das Programm iSilo. pdf Adobe's Portable Document Format ps Postscript rtf Microsoft's Rich Text Format Die Seitennummern werden nicht automatisch aktualisiert, wenn Sie diese Datei in Word laden. Wenn Sie das Dokument geladen haben, müssen Sie Sie CTRLA, CTRLEND, F9 eingeben, um die Seitennummern akualisieren zu lassen. txt Ganz normaler Text Das zur Komprimierung verwendete Programm. Zur Zeit werden drei verschiedene Methoden benutzt. Wenn die Dokumentation im Format html-split vorliegt, werden die Dateien mit &man.tar.1; zusammengefaßt. Die so entstandene .tar Datei wird dann mit einer der unten genannten Methoden komprimiert. Bei allen anderen Formaten existiert nur eine Datei mit dem Namen book.format (z.B., book.pdb, book.html, und so weiter). Diese Dateien werden mit drei verschiedenen Programmen komprimiert. Programm Beschreibung zip Das Zip Format. Wenn Sie diese Dateien unter FreeBSD auspacken wollen, müssen sie vorher den Port archivers/unzip installieren. gz Das GNU Zip format. Sie können diese Dateien mit &man.gunzip.1; entpacken, dieses Programm ist Bestandteil von FreeBSD. bz2 Das BZip2 Format. Es wird selten benutzt, erzeugt aber normalerweise kleinere Archive. Sie müssen den Port archivers/bzip2 installieren, um diese Dateien entpacken zu können. Ein Beispiel: Die mit BZip2 gepackte Version des Handbuchs im Postscript-Format hat den Namen book.ps.bz2 und ist im Verzeichnis handbook/ zu finden. Die formatierte Dokumentation ist auch als Package verfügbar, siehe unten. Nachdem Sie das Format und das Kompressionsverfahren ausgewählt haben, müssen Sie sich entscheiden, ob Sie das Dokument in Form eines FreeBSD Package herunterladen möchten. Der Vorteil dieser Variante, daß Sie die Dokumentation mit normalen Tools wie &man.pkg.add.1; und &man.pkg.delete.1; verwalten können. Wenn Sie das Package herunterladen und installieren wollen, müssen Sie den richtigen Dateinamen kennen. Die Datei liegen in einem separaten Verzeichnis mit dem Namen packages. Die Dateinamen nutzen das Schema Dokument-Name.Sprache.Zeichensatz.Format.tgz. Ein Beispiel: Die englische Version der FAQ im PDF-Format ist in dem Package mit dem Namen faq.en_US.ISO8859-1.pdf.tgz enthalten. Sie können daher das englische PDF FAQ Package mit den folgenden Befehlen installieren. &prompt.root; pkg_add ftp://ftp.de.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz Danach können Sie mit &man.pkg.info.1; nachsehen, wno die Datei installiert wurde. &prompt.root; pkg_info -f faq.en_US.ISO8859-1.pdf 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) Wie sie sehen können, wurde die Datei book.pdf im Verzeichnis /usr/share/doc/en_US.ISO8859-1/books/faq installiert. Wenn sie die Packages nicht benutzen, müssen Sie die komprimierten selber herunterladen, auspacken und die richtigen Stellen kopieren. Wenn Sie zum Beispiel die mit &man.gzip.1; gepackte "split HTML"-Version der englischen FAQ herunterladen und installieren wollten, bräuchten Sie die Datei en_US.ISO8859-1/books/faq/book.html-split.tar.gz. Um diese Datei herunterzuladen und auszupacken, wären die folgenden Schritte notwendig. &prompt.root; fetch ftp://ftp.de.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz &prompt.root; gzip -d book.html-split.tar.gz &prompt.root; tar xvf book.html-split.tar Danach haben Sie eine Sammlung vieler kleiner .html Datei. Die wichtigste Datei hat Namen index.html und enthält das Inhaltsverzeichnis, eine Einleitung und Verweise auf die anderen Teile des Dokumentes. Falls notwendig, können Sie die diversen Dateien jetzt an ihren endgültigen Bestimmungsort verschieben oder kopieren. Was muß ich tun, um einen FreeBSD-Web-Mirror betreiben zu kö:nnen? Sicherlich! Es gibt mehrere Möglichkeiten, die Web-Seiten zu spiegeln. Mit CVSUP: Sie können die formatierten Dateien per CVSUP von einem entsprechenden Server bekommen. Wie Sie die Webseiten erhalten können, können Sie der entsprechender Beispieldatei entnehmen, die auf Ihrem System als /usr/share/examples/cvsup/www-supfile verfübar sein sollte. Mit einem FTP-Spiegel: Sie können sich die eine Kopie der Quelldateien für den Web-Server mit einem FTP-Spiegelwerkzeug Ihrer Wahl herunterladen. Allerdings müssen Sie diese Quelldateien erst übersetzen, bevor Sie sie verwenden können. Starten Sie einfach bei ftp://ftp.de.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www. Gibt es weitere Informationsquellen? In den folgenden Newsgruppen werden nützliche Diskussionen für FreeBSD-Benutzer geführt: comp.unix.bsd.freebsd.announce (moderiert) comp.unix.bsd.freebsd.misc comp.unix.bsd.misc Webseiten: Die FreeBSD Home Page. Falls Sie einen Laptop besitzen, dann besuchen Sie auf alle Fälle Tatsumi Hosokawa's Mobile Computing Page in Japan. Informationen zu SMP (Symmetric MultiProcessing) finden Sie auf der SMP support page. Informationen zu FreeBSD-Multimedia-Anwendungen finden Sie auf der Multimedia-Seite. Falls Sie speziell am Bt848 video capture chip interessiert sind, dann folgen Sie dem Link. Das FreeBSD-Handbuch enthält außerdem eine ziemlich umfangreiche Bibliographie, die es sich lohnt, anzusehen, falls Sie Bücher suchen, die Sie sich kaufen möchten. Nik Clayton
nik@freebsd.org
Installation Welche Dateien muß ich herunterladen, um FreeBSD zu bekommen? Vor dem 3.1-RELEASE benötigte man nur ein Floppy-Image, floppies/boot.flp, um FreeBSD zu installieren. Seit dem 3.1-RELEASE haben wir jedoch Unterstützung für eine Vielfalt von Hardware hinzugefügt, weshalb man nun für 3.x- und 4.x-RELEASE zwei Floppy-Images floppies/kernel.flp und floppies/mfsroot.flp benötigt. Diese Images müssen mit Hilfe von Werkzeugen wie fdimage oder &man.dd.1; auf Disketten kopiert werden. Falls Sie selbst die einzelnen Distributionen herunterladen müssen (um z.B. von einem DOS-Dateisystem aus zu installieren), empfehlen wir, sich die folgenden Distributionen zu besorgen: bin manpages compat* doc src/ssys.* Vollständige Instruktionen für dieses Vorgehen und ein wenig mehr zur Installation generell finden Sie im Handbucheintrag zur Installation von FreeBSD. Was soll ich tun, wenn das Floppy-Image nicht auf eine Diskette paßt? Eine 3,5-Zoll (1,44MB) Diskette kann 1474560 Byte an Daten fassen und das Boot-Image ist exakt 1474560 Byte groß. Häufige Fehler bei der Erstellung der Boot-Diskette sind: Bei der Benutzung von FTP das Floppy-Image nicht im Binär-Modus herunterzuladen. Einige FTP-Clients benutzen als Voreinstellung den ASCII-Modus und versuchen, alle Zeilenendezeichen an das Zielsystem anzupassen. Dadurch wird das Boot-Image in jedem Fall unbrauchbar. Überprüfen Sie die Größe des heruntergeladenen Boot-Images: falls sie nicht exakt mit der auf dem Server übereinstimmt, hat das Herunterladen nicht richtig funktioniert. Abhilfe: geben Sie binary an der FTP-Eingabeaufforderung ein, nach dem Sie mit dem Server verbunden sind und bevor Sie das Image herunterladen. Die Benutzung des DOS-Befehls copy (oder eines entsprechendes Werkzeugs der grafischen Benutzeroberfläche), um das Boot-Image auf die Diskette zu übertragen. Programme wie copy sind hier unbrauchbar, weil das Image zur direkten Übertragung erstellt wurde. Das Image stellt den gesamten Disketteninhalt dar, Spur für Spur, und nicht eine gewöhnliche Datei. Sie müssen es roh mit speziellen Werkzeugen (z.B. fdimage oder rawrite) übertragen, wie es in der Installationsanleitung zu FreeBSD beschrieben ist. Wo befinden sich die Instruktionen zur Installation von FreeBSD? Installationsanleitungen finden Sie im Handbucheintrag zur Installation von FreeBSD. Was benötige ich zum Betrieb von FreeBSD? Sie werden einen 386er oder besseren PC mit 5MB oder mehr Hauptspeicher und mindestens 60MB Festplattenspeicher benötigen. Es läuft mit einer einfachen MDA Grafikkarte, aber um X11R6 zu benutzen, benötigen Sie eine VGA- oder bessere Videokarte. Lesen Sie auch den Abschnitt Ich besitze nur 4 MB Hauptspeicher. Kann ich FreeBSD installieren? FreeBSD 2.1.7 war die letzte FreeBSD-Version, die auf einem 4MB-System installiert werden konnte. Neuere FreeBSD-Versionen, wie 2.2, benötigen mindestens 5MB zur Installation auf einem neuen System. Alle FreeBSD-Versionen, einschließlich 3.0, laufen zwar mit 4MB Hauptspeicher, lediglich ihr Installationsprogramm läuft nicht mit 4MB. Wenn Sie möchten, können Sie für den Installationsvorgang zusätzlichen Hauptspeicher hinzufügen, und nachdem das System installiert ist, wieder auf 4MB zurückgehen. Sie können Ihre Festplatte auch jederzeit in ein System mit >4MB einbauen, dort installieren und sie dann wieder umbauen. Es gibt auch Situationen, in denen FreeBSD 2.1.7 nicht mit 4 MB zu installieren ist. Um genau zu sein: man kann es nicht mit 640 kB Basis- + 3MB erweitertem Speicher installieren. Falls ihr Motherboard einiges vom verlorenen Speicher aus der 640kB - 1MB Region verschieben kann, könnten Sie trotzdem in der Lage sein, FreeBSD 2.1.7 zu installieren. Versuchen Sie in Ihr BIOS-Setup zu gelangen und suchen Sie nach einer remap Option. Aktivieren Sie sie. Sie sollten das ROM shadowing ebenfalls ausschalten. Es könnte einfacher sein, 4 weitere MB nur für die Installation zu benutzen, einen benutzerdefinierten Kernel nur mit den benötigten Optionen zu generieren und dann die 4 MB wieder auszubauen. Sie können auch 2.0.5 installieren und anschließend Ihr System mit der upgrade Option des 2.1.7 Installationsprogramms nach 2.1.7 migrieren. Wenn Sie nach der Installation einen benutzerdefinierten Kernel generieren, wird er mit 4 MB laufen. Irgend jemand hat es geschafft, mit 2 MB zu booten (allerdings war das System nahezu unbrauchbar :-)) Wie kann ich eine angepaßte Installationsdiskette erstellen? Zur Zeit gibt es keine Möglichkeit, nur die angepaßten Installationsdisketten zu erstellen. Sie müssen sich eine ganz neues Release erstellen, das Ihre Installationsdiskette enthält. Befolgen Sie diese Instruktionen, um sich eine angepaßte Ausgabe zu erstellen. Kann ich mehr als ein Betriebssystem auf meinem PC unterbringen? Sehen Sie sich Die Multi-OS-Seite an. Kann Windows 95/98 neben FreeBSD existieren? Installieren Sie zuerst Windows 95/98, dann FreeBSD. Der Bootmanager von FreeBSD kann dann entweder Win95/98 oder FreeBSD booten. Falls Sie Windows 95/98 nach FreeBSD installieren, wird es, ohne zu fragen, Ihren Bootmanager überschreiben. Lesen Sie den nächsten Abschnitt, falls das passieren sollte. Windows 95/98 hat meinen Bootmanager zerstört! Wie stelle ich ihn wieder her? Es gibt drei Möglichkeiten, den FreeBSD-Bootmanager neu zu installieren: Unter DOS wechseln Sie in das Verzeichnis tools/ Ihrer FreeBSD-Distribution und suchen nach bootinst.exe. Rufen sie es so auf: ...\TOOLS> bootinst.exe boot.bin und der Bootmanager wird neu installiert. Booten Sie FreeBSD wieder mit der Bootdiskette und wählen Sie den Menueeintrag Custom Installation. Wählen Sie Partition. Wählen Sie das Laufwerk, auf dem sich der Bootmanager befand (wahrscheinlich der erste Eintrag) und wenn Sie in den Partitioneditor gelangen, wählen Sie als aller erstes (nehmen Sie z.B. keine Änderungen vor) (W)rite. Sie werden nach einer Bestätigung gefragt, antworten ja und vergessen Sie nicht, in der Bootmanager-Auswahl Boot Manager auszuwählen. Hierdurch wird der Bootmanager wieder auf die Festplatte geschrieben. Verlassen Sie nun das Installationsmenue und rebooten wie gewöhnlich von der Festplatte. Booten Sie FreeBSD wieder mit der Bootdiskette (oder der CDROM) und wählen Sie den Menüpunkt Fixit. Wählen Sie die für Sie passende Option, entweder die Fixit-Diskette oder die CD Nummer 2 (die Option live Filesystem). Wechseln Sie zur Fixit-Shell und geben Sie den folgenden Befehl ein: Fixit# fdisk -B -b /boot/boot0 bootdevice Als bootdevice müssen Sie das von Ihrem System verwendete Gerät angeben, z.B. ad0 (erste IDE-Platte), ad4 (erste IDE-Platte an einem zusätzlichen Controller), da0 (erste SCSI-Platte), usw. Mein IBM Thinkpad Modell A, T oder X, hängt sich auf, wenn ich FreeBSD zum ersten Mal starte. Was soll ich machen? Ein Fehler in den ersten BIOS-Versionen dieser Geräte führt dazu, daß sie die von FreeBSD genutzte Partition für eine Suspend-To-Disk-Partition halten. Wenn das BIOS dann versucht, diese Partition auszuwerten, hängt sich das System auf. Laut IBM In einer Mail von Keith Frechette kfrechet@us.ibm.com. wurde der Fehler wurde in den folgenden BIOS-Versionen behoben: Gerät BIOS Version T20 IYET49WW oder neuer T21 KZET22WW oder neuer A20p IVET62WW oder neuer A20m IWET54WW oder neuer A21p KYET27WW oder neuer A21m KXET24WW oder neuer A21e KUET30WW Es ist möglich, daß neuere Version des IBM BIOS den Fehler wieder enthalten. Dieser Beitrag von Jacques Vidrine auf der &a.mobile; beschreibt eine Technik, die Ihnen weiterhelfen könnte, wenn Ihr IBM Laptop mit FreeBSD nicht bootet und Sie eine neuere oder ältere BIOS-Version einspielen können. Wenn Ihr Thinkpad über eine ältere BIOS-Version verfügt und Sie das BIOS nicht aktualisieren können, ist eine der möglichen Lösungen, FreeBSD zu installieren, die Partitions-ID zu ändern und danach neue Bootblocks zu installieren, die mit der geänderten ID umgehen können. Zunächst müssen Sie die Maschine so weit wiederherstellen, daß sie über den Selbst-Test hinauskommt. Dazu ist es erforderlich, daß das System beim Start keine Partitions-ID auf seiner primären Festplatte findet. Eine Variante ist, die Platte auszubauen und vorübergehend in einem älteren Thinkpad (z.B. dem Thinkpad 600) oder (mit einem passenden Adapter) in einen normalen PC einzubauen. Sobald dies erfolgt ist, können Sie die FreeBSD-Partition löschen und die Festplatte wieder in das Thinkpad einbauen. Das Thinkpad sollte jetzt wieder starten können. Danach können Sie mit der nachfolgend beschriebenen Anleitung eine funktionsfähige FreeBSD-Installation erhalten. Beschaffen Sie sich boot1 und boot2 von http://people.freebsd.org/~bmah/ThinkPad/. Legen Sie diese Dateien so ab, daß Sie während der Installation darauf zugreifen können. Installieren Sie ganz wie gewohnt FreeBSD auf dem Thinkpad. Allerdings dürfen Sie den Dangerously Dedicated-Modus nicht benutzen. Nach dem Abschluß der Installation dürfen Sie die Maschine nicht neu starten. Wechseln Sie zur Emergency Holographic Shell (ALTF4) oder starten Sie eine fixit Shell. Benutzen Sie &man.fdisk.8;, um die Partitions-ID von FreeBSD von 165 in 166 zu ändern (dieser Wert wird von OpenBSD benutzt). Kopieren Sie die Dateien boot1 und boot2 auf die lokale Festplatte. Installieren Sie boot1 und boot2 mit &man.disklabel.8; auf die FreeBSD-Slice. &prompt.root; disklabel -B -b boot1 -s boot2 ad0sn Setzen Sie für n die Nummer der Slice ein, auf der sie FreeBSD installiert haben. Starten Sie das System neu. Am Boot-Prompt sollten Sie die Auswahl OpenBSD erhalten. Damit wird in Wirklichkeit FreeBSD gestartet. Was Sie machen müssen, wenn Sie FreeBSD und OpenBSD parallel installieren wollen, sollten Sie zu Übungszwecken einfach einmal selbst herausfinden. Kann ich auf einer Festplatte mit beschädigten Blöcken installieren? Ältere Versionen von FreeBSD enthielten ein Programm namens bad144, das die defekten Sektoren automatisch verlagerte. Da diese Funktion aber von modernen IDE-Platten selbstständig durchgeführt wird, wurde bad144 in der Version 3.0 aus dem System entfernt. Wenn Sie FreeBSD 3.0 oder neuer installieren wollen, sollten Sie sich eine neue Festplatte zulegen. Falls Sie dazu nicht bereit sind, müssen Sie FreeBSD 2.X verwenden. Wenn Ihnen bei einer modernen IDE-Platte defekte Sektoren gemeldet werden, wird die Platte mit großer Wahrscheinlichkeit innerhalb kurzer Zeit vollständig ausfallen, da die Meldung ein Zeichen dafür ist, daß die für die Korrektur reservierten Sektoren bereits verbraucht wurden. Wir raten Ihnen, die Platte auszutauschen. Falls Sie ein SCSI-Laufwerk mit beschädigten Blöcken besitzen, lesen Sie diese Antwort. Wenn ich von der Installationsdiskette boote, geschehen merkwürdige Dinge! Was sollte ich tun? Falls Sie beobachten, daß ihr Rechner sich bis zum Stillstand abmüht oder spontan rebootet, während Sie versuchen, von der Installationsdiskette zu booten, sollten Sie sich drei Fragen stellen: Haben Sie eine brandneue, frisch formatierte, fehlerfreie Diskette benutzt (günstigerweise eine brandneue, direkt aus dem Karton und nicht eine Diskette aus einem Magazin, das schon seit drei Jahren unter Ihrem Bett lag)? Haben Sie das Floppy-Image im Binär- (oder Image) Modus heruntergeladen? (Schämen Sie sich nicht. Sogar die besten unter uns haben wenigstens einmal Binärdateien versehentlich im ASCII-Modus heruntergeladen!) Falls Sie Windows 95 oder Windows 98 benutzen, haben Sie es heruntergefahren und fdimage bzw. rawrite in einfachem, reinem DOS neu gestartet? Es scheint, daß diese Betriebssysteme Programme stören, die direkt auf Hardware schreiben, wie es das Erstellungsprogramm für die Diskette tut; selbst bei der Ausführung des Programms in einem DOS-Fenster in der grafischen Benutzeroberfläche kann dieses Problem auftreten. Es wurde auch darüber berichtet, daß Netscape Probleme beim Herunterladen der Bootdisketten verursacht. Es ist also wahrscheinlich besser, einen anderen FTP-Client zu benutzen, wenn möglich. Ich habe zur Installation von meinem ATAPI CDROM gebootet, aber das Installationsprogramm sagt mir, daß es kein CDROM gefunden hat. Was geht hier ab? Dieses Problem wird üblicherweise durch ein falsch konfiguriertes CDROM verursacht. Bei vielen PCs ist das CDROM der Slave am zweiten IDE-Controller, ein Master ist nicht vorhanden. Laut Spezifikation ist diese Konfiguration illegal, aber Windows verletzt die Spezifikation und das BIOS ignoriert sie, wenn es von einem CDROM booten soll. Daher konnten Sie zwar vom CDROM booten, während FreeBSD es nicht für die Installation nutzen kann. Um dieses Problem zu lösen, müssen Sie entweder das CDROM als Master an den IDE-Controller anschließen oder dafür sorgen, daß an dem vom CDROM genutzten IDE-Controller das CD-ROM als Slave und ein anderes Gerät als Master angeschlossen ist. Wieso kann ich nicht von Band installieren? Falls Sie 2.1.7R von Band installieren, müssen Sie bei der Erstellung des Bandes eine tar-Blockgröße von 10 (5120 Byte) verwenden. Die standard tar-Blockgröße beträgt 20 (10240 Byte) und Bänder, die mit diesem Standardwert erstellt worden sind, können nicht zur Installation von 2.1.7R verwendet werden. Diese Bänder verursachen einen Fehler, der besagt, daß die Satzlänge zu groß ist. Kann ich auf meinem Laptop per PLIP (Parallel Line IP) installieren? Verbinden Sie die beiden Computer hierzu mit einem Laplink-Kabel: Pinbelegung für ein Netzwerkkabel an der parallelen Schnittstelle A-name A-End B-End Descr. Post/Bit DATA0 -ERROR 2 15 15 2 Data 0/0x01 1/0x08 DATA1 +SLCT 3 13 13 3 Data 0/0x02 1/0x10 DATA2 +PE 4 12 12 4 Data 0/0x04 1/0x20 DATA3 -ACK 5 10 10 5 Strobe 0/0x08 1/0x40 DATA4 BUSY 6 11 11 6 Data 0/0x10 1/0x80 GND 18-25 18-25 GND -
Lesen Sie auch diesen Hinweis auf der Mobile-Computing-Seite.
Welche Geometrie sollte ich für ein Festplattenlaufwerk verwenden? Unter der Geometrie einer Festplatte verstehen wir die Anzahl Zylinder, Schreib-/Leseköpfen und Sektoren/Spur auf einer Festplatte - im folgenden werde ich hierfür kurz C/H/S schreiben. Das BIOS des PCs berechnet mit diesen Angaben, auf welche Bereiche der Festplatte es für Schreib-/Lesezugriffe zugreifen muß). Aus einigen Gründen scheint dies für sehr viel Verwirrung zu sorgen. Zunächsteinmal ist die physikalische Geometrie eines SCSI-Laufwerks vollkommen irrelevant, da FreeBSD mit Blöcken arbeitet. Tatsächlich gibt es die physikalische Geometrie nicht, da die Sektordichte auf einer Festplatte variiert - was die Hersteller als die wahre physikalische Geometrie bezeichnen, ist im allgemeinen die Geometrie, die aufgrund ihrer Ergebnisse im geringsten ungenutzten Speicher resultiert. Bei IDE-Platten arbeitet FreeBSD mit C/H/S-Angaben, aber alle modernen Laufwerke wandeln diese intern ebenfalls in Blocknummern um. Wichtig ist nur die logische Geometrie. Das BIOS kann die logische Geometrie der Festplatte abfragen; die erhaltenen Daten werden dann vom BIOS bei Zugriffen auf die Festplatte genutzt. Da FreeBSD das BIOS benutzt, während es bootet, ist es sehr wichtig, daß diese Angaben richtig sind. Insbesondere müssen alle Betriebssysteme mit derselben Geometrie arbeiten, falls Sie mehr als ein Betriebssystem auf einer Festplatte haben, andernfalls werden Sie ernsthafte Bootprobleme bekommen! Bei SCSI-Festplatten hängt die zu verwendende Geometrie davon ab, ob der Extended Translation Support auf Ihrem Controller eingeschaltet ist (oft auch als Unterstützung für DOS-Platten >1GB oder ähnlich bezeichnet). Falls sie ausgeschaltet ist, benutzen Sie N Zylinder, 64 Köpfe und 32 Sektoren/Spur, wobei N die Kapazität der Festplatte in MB ist. Zum Beispiel sollten für eine 2GB Festplatte 2048 Zylinder, 64 Köpfe und 32 Sektoren/Spur angegeben werden. Falls sie eingeschaltet ist (was oft der Fall ist, um bestimmte Einschränkungen von MSDOS zu umgehen) und die Plattenkapazität mehr als 1GB beträgt, benutzen Sie M Zylinder, 63 Sektoren/Spur (nicht 64) und 255 Köpfe, wobei 'M' der Plattenkapazität in MB, dividiert durch 7,844238 entspricht (!). Also würde unsere 2GB Beispielplatte 261 Zylinder, 63 Sektoren/Spur und 255 Köpfe haben. Falls Sie sich hier nicht sicher sind oder FreeBSD während der Installation die Geometrie nicht richtig erkennt, hilft es normalerweise, eine kleine DOS-Partition auf der Festplatte anzulegen. Die richtige Geometrie sollte dann erkannt werden (Sie können die Partition jederzeit im Partitioneditor entfernen, falls Sie sie nicht behalten möchten, oder Sie nutzen sie zur Programmierung von Netzwerkkarten oder ähnlichem). Alternativ wird ein frei verfügbares Programm pfdisk.exe (im Unterverzeichnis tools auf der FreeBSD-CDROM oder den unterschiedlichen FTP-Servern) mit FreeBSD verbreitet, das dazu genutzt werden kann, herauszufinden, welche Geometrie die anderen Betriebssysteme auf der Festplatte verwenden. Diese Geometrie können Sie im Partitioneditor eingeben. Gibt es irgendwelche Einschränkungen, wie ich die Festplatte aufteilen darf? Ja. Sie müssen sicherstellen, daß Ihre Rootpartition innerhalb der ersten 1024 Zylinder liegt, damit das BIOS den Kernel von Ihr booten kann. (Beachten Sie, daß es sich um eine Einschränkung durch das BIOS des PCs handelt und nicht durch FreeBSD). Für ein SCSI-Laufwerk bedeutet dies normalerweise, daß sich die Rootpartition in den ersten 1024MB befindet (oder in den ersten 4096MB, falls die Extended Translation eingeschaltet ist - siehe die vorherige Frage). Der entsprechende Wert für IDE ist 504MB. Verträgt sich FreeBSD mit Plattenmanagern? FreeBSD erkennt den Ontrack Plattenmanager und berücksichtigt ihn. Andere Plattenmanager werden nicht unterstützt. Falls Sie die Festplatte nur mit FreeBSD benutzen wollen, brauchen Sie keinen Plattenmanager. Wenn Sie Sie die Platte einfach in der vom BIOS maximal unterstützten Größe (normalerweise 504 Megabyte) konfigurieren, sollte FreeBSD erkennen, wieviel Platz Sie tatsächlich haben. Falls Sie eine alte Festplatte mit einem MFM-Controller verwenden, könnte es sein, daß Sie FreeBSD explizit angeben müssen, wieviele Zylinder es benutzen soll. Falls Sie die Festplatte mit FreeBSD und einem anderen Betriebssystem nutzen wollen, sollten Sie auch in der Lage sein, ohne einen Plattenmanager auszukommen: stellen sie einfach sicher, daß sich die Bootpartition von FreeBSD und der Bereich für das andere Betriebssystem in den ersten 1024 Zylindern befinden. Eine 20 Megabyte Bootpartition sollte völlig genügen, wenn Sie einigermaßen sorgfältig arbeiten. Beim Booten von FreeBSD erscheint Missing Operating System. Was ist passiert? Dies ist ein klassischer Fall von Konflikten bei den verwendeten Plattengeometrien von FreeBSD und DOS oder anderen Betriebssystemen. Sie werden FreeBSD neu installieren müssen. Bei Beachtung obiger Instruktionen wird in den meisten Fällen alles funktionieren. Wieso komme ich nicht weiter als bis zum F?-Prompt des Bootmanagers? Dies ist ein weiteres Symptom für das bereits in der vorherigen Frage beschriebene Problem. Ihre Einstellungen zur Geometrie im BIOS und in FreeBSD stimmen nicht überein! Falls Ihr Controller oder BIOS Zylinderumsetzung (oft als >1GB drive support bezeichnet), probieren Sie eine Umsetzung dieser Einstellung und Neuinstallation von FreeBSD. Muß ich den vollständigen Quellcode installieren? Im allgemeinen nicht. Wir empfehlen jedoch dringend die Installation des base Source-Kit, das viele der hier erwähnten Dateien enthält und des sys (Kernel) Source-Kit, das den Quellcode für den Kernel enthält. Außer dem Programm zur Konfiguration des Kernels (&man.config.8;) gibt es im System nichts, zu dessen Funktion der Quellcode erforderlich ist. Mit Ausnahme der Kernelquellen ist unsere Build-Struktur so aufgebaut, daß Sie den Quellcode von überall her per NFS read-only mounten und dennoch neue Binaries erstellen können. (Wegen der Einschränkung bezüglich der Kernelquellen empfehlen wir, diese nicht direkt nach /usr/src zu mounten, sondern irgendwoanders hin mit passenden symbolischen Links, um die Toplevel-Struktur des Quellbaumes zu duplizieren.) Die Quellen verfügbar zu haben und zu wissen, wie man ein System mit ihnen erstellt, wird es Ihnen wesentlich einfacher machen, zu zukünftigen Ausgaben von FreeBSD zu wechseln. Um einen Teil der Quellen auszuwählen, verwenden Sie den Menuepunkt Custom, wenn Sie sich im Menue Distributions des Systeminstallationstools befinden. Muß ich einen Kernel erstellen? Ursprünglich war die Erstellung eines neuen Kernels bei fast jeder Installation von FreeBSD erforderlich, aber neuere Ausgaben haben von der Einführung eines weitaus benutzerfreundlicheren Kernelkonfigurationswerkzeugs profitiert. Geben Sie am FreeBSD Boot-Prompt (boot:) ein, um in ein visuelles Konfigurationsmenue zu gelangen. Dieses Programm ermöglicht Ihnen die Konfiguration der Kerneleinstellungen für die gebräuchlichsten ISA-Karten. Es wird weiterhin empfohlen, früher oder später einen neuen Kernel zu erstellen, der nur die benötigten Treiber enthält, um ein wenig Hauptspeicher zu sparen, aber für die meisten Systeme ist dies ist nicht länger erforderlich. Soll ich DES oder MD5 zur Verschlüsselung der Paßwörter benutzen? FreeBSD benutzt standardmäßig MD5 zur Verschlüsselung der Paßwörter. Es wird angenommen, daß diese Methode sicherer ist als das traditionell benutzte Verfahren, das auf dem DES Algorithmus basierte. Es ist immer noch möglich, DES-Paßwörter zu benutzen, wenn Sie die Datei mit den Paßwörtern mit älteren System austauschen müssen. Ältere System verstehen meist nur das unsichere Verfahren, dieses steht Ihnen zur Verfügung, wenn Sie mit sysinstall die crypto Distribution installieren. Sie können auch die crypto Sourcecodes installieren, wenn Sie Ihr System über die Sourcen aktualisieren. Das für neue Paßwörter benutzte Verschlüsselungsverfahren wird über die Einstellung passwd_format in /etc/login festgelegt. Die möglichen Werte sind entweder des (falls installiert) oder md5. Weitere Informationen über die Einstellungen für den Login erhalten Sie in &man.login.conf.5;. Woran kann es liegen, daß ich zwar von der Diskette booten kann, aber nicht weiter als bis zur Meldung Probing Devices... komme? Falls Sie ein IDE-Zip- oder Jaz-Laufwerk eingebaut haben, entfernen Sie es und versuchen Sie es erneut. Solche Laufwerke könnten dem Bootvorgang stören. Nach der Installation des Systems können Sie das Laufwerk wieder einbauen. Dieser Fehler wird hoffentlich in einer späteren Version behoben werden. Wieso wird mit der Fehler panic: cant mount root gemeldet, wenn ich das System nach der Installation reboote? Dieser Fehler beruht auf Unstimmigkeiten zwischen den Festplatteninformationen im Bootblock und denen im Kernel. Der Fehler tritt normalerweise auf IDE-Systemen mit zwei Festplatten auf, bei denen die Festplatten als Master- oder Single-Device auf separaten IDE-Controllern angeschlossen sind und FreeBSD auf der Platte am zweiten Controller installiert wurde. Der Bootblock vermutet, daß das System auf wd1 (der zweiten BIOS-Platte) installiert ist, während der Kernel der ersten Platte auf dem zweiten Controller die Gerätekennung wd2 zuteilt. Der Kernel versucht nach der Geräteüberprüfung die vom Bootblock angenommene Bootdisk wd1 zu mounten, obwohl sie in Wirklichkeit wd2 heißt - und scheitert. Tun Sie folgendes, um dieses Problem zu beheben: Wenn Sie FreeBSD 3.3 oder neuer benutzen, müssen Sie das System rebooten und Enter drücken, wenn die Meldung Booting kernel in 10 seconds; hit [Enter] to interrupt erscheint. Dadurch gelangen Sie in den Boot Loader. Geben Sie nun root_disk_unit="disk_number" ein. disk_number hat den Wert 0, wenn FreeBSD auf dem Master des ersten IDE-Controllers installiert wurde; 1, wenn FreeBSD auf dem Slave des ersten IDE-Controllers installiert wurde; 2, wenn FreeBSD auf dem Master des zweiten IDE-Controllers installiert wurde; und 3, wenn FreeBSD auf dem Slave des zweiten IDE-Controllers installiert wurde. Nach der Eingabe von boot sollte Ihr System jetzt korrekt starten. Damit Sie dieses Ritual nicht bei jedem Start des Systems durchführen müssen, sollten Sie die Zeile root_disk_unit="disk_number" in die Datei /boot/loader.conf.local eintragen. Wenn Sie FreeBSD 3.2 oder eine ältere Version benutzen, geben Sie am Prompt Boot: 1:wd(2,a)kernel ein und betätigen Sie die Enter-Taste. Wenn das System nun startet, führen Sie den Befehl echo "1:wd(2,a)kernel" > /boot.config aus, um diese Bootzeichenfolge zur Voreinstellung zu machen. Stellen Sie eine ununterbrochene Folge der Festplatten her, indem Sie die FreeBSD-Platte am ersten IDE-Controller anschließen. Erstellen Sie einen neuen Kernel: modifizieren Sie die wd-Konfigurationszeilen wie folgt: controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # Kommentieren Sie diese Zeile aus controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # Ändern Sie wd2 in wd1 disk wd2 at wdc1 drive 1 # Ändern Sie wd3 in wd2 Installieren Sie den neuen Kernel. Falls sie Ihre Festplattenanschlüsse umgesteckt haben und die alte Konfiguration wiederherstellen möchten, stecken Sie die Anschlüsse wie gewünscht um und rebooten Sie. Ihr System sollte nun fehlerfrei booten. Gibt es eine Hauptspeicherbegrenzung? Es werden maximal 4 Gigabyte Hauptspeicher unterstützt. Details zu einer entsprechenden, getesteten Konfiguration finden Sie unter Konfiguration von WCArchive. Seien Sie vorsichtig, wenn Sie soviel Hauptspeicher in Ihrem Rechner benutzen möchten. Benutzen Sie ggfs. ECC-Speicher und Module mit neun (statt der üblichen 18) Chips, um die kapazitive Belastung zu reduzieren. Wo liegen die Grenzen für ffs-Dateisysteme? Theoretisch liegt das Limit für ffs-Dateisysteme bei 8 Terabyte (2G-Blöcke) oder 16TB für die Standard-Blockgröße von 8k. In der Praxis setzt die Software das Limit auf 1 Terabyte herab, aber durch Modifikationen sind auch Dateisysteme mit 4 Terabyte möglich (und existieren auch). Die maximale Größe einer einzelnen ffs-Datei liegt bei ungefähr 1G Blöcken (4TB, falls die Blockgröße 4k beträgt). Maximale Dateigröße Blockgröße 2.2.7-stable 3.0-current geht sollte gehen 4K 4T-1 4T-1 4T-1 >4T 8K >32G 8T-1 >32G 32T-1 16K >128G 16T-1 >128+G 32T-1 32K >512G 32T-1 >512G 64T-1 64K >2048G 64T-1 >2048G 128T-1
Wenn die im Dateisystem verwendete Blockgröße 4k beträgt, wird mit dreifacher Indirektion gearbeitet und die Limitierung sollte durch die höchste Blocknummer erfolgen, die mit dreifacher Indirektion dargestellt werden kann (ungefähr 1k^3 + 1k^2 + 1k). In Wirklichkeit liegt das Limit aber bei der (falschen) Anzahl von 1G-1 Blocknummern im Dateisystem. Die maximale Anzahl Blocknummern müßte 2G-1 sein. Es gibt einige Fehler für Blocknummern nahe 2G-1, aber solche Blocknummern sind bei einer Blockgröße von 4k unerreichbar. Bei Blocknummern von 8k und größer sollte das Limit bei 2G-1 Blocknummern liegen, aber tatsächlich liegt es bei bei 1G-1 Blocknummern. Außer unter -STABLE sind Blöcke in der dritten Indirektion unerreichbar, wodurch das Limit auf die durch zweifache Indirektion maximal darstellbare Blocknummer reduziert wird (ca. (Blockgröße/4)^2 + (Blockgröße/4)). Unter -CURRENT könnte die Überschreitung dieser Grenze Probleme verursachen. Die Verwendung der korrekten Grenze von 2G-1 verursacht Probleme.
Wie bekomme ich 1TB-Dateien auf meine Diskette? Ich habe mehrere virtuelle auf Disketten :-). Die maximale Dateigröße hat nicht unbedingt etwas mit der maximalen Plattengröße zu tun. Die maximale Plattengröße beträgt 1TB. Es ist ein Feature, daß die Dateigröße die Plattengröße übersteigen kann. Durch das folgende Beispiel wird eine Datei der Größe 8T-1 erstellt, die insgesamt 32k Plattenplatz (3 indirekte Blöcke und ein Datenblock) auf einer kleinen Rootpartition in Anspruch nimmt. Dieser dd-Befehl setzt ein dd-Programm voraus, das große Dateien unterstützt. &prompt.user; cat foo df . dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1 ls -l z du z df . &prompt.user; sh foo Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 64479 27702 31619 47% / 1+0 records in 1+0 records out 1 bytes transferred in 0.000187 secs (5346 bytes/sec) -rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z 32 z Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 64479 27734 31587 47% / Bruce Evans, September 1998 Wieso erhalte ich die Fehlermeldung archsw.readin.failed beim Start des Systems, nachdem ich habe einen neuen Kernel erstellt habe? Sie können den zu bootenden Kernel direkt im zweiten Schritt angeben, indem Sie eine beliebige Taste drücken, wenn das | erscheint und bevor der Loader startet. Genauer: Sie haben die Kernelquellen erneuert, und von dort ein neues Kernel-Builtin installiert, ohne make world auszuführen. Das geht nicht - führen Sie make world aus. Wie führe ich ein Update von 3.X nach 4.X durch? Wir raten Ihnen dringend, dazu einen der Snapshots zu verwenden. Die Snapshots von 4-STABLE sind auf releng4.FreeBSD.org verfügbar. Wenn Sie den Quellcode für das Update benutzen wollen, finden Sie im FreeBSD Handbuch weitere Informationen. Wenn Sie FreeBSD erst seit kurzer Zeit nutzen, sollten Sie auf gar keinen Fall über den Quellcode updaten, das gilt ganz besonders für das Update von 3.X nach 4.X. Falls Sie es dennoch versuchen wollen, sollten Sie vorher die entsprechenden Anleitungen sehr sorgfältig durchlesen! Was sind die Sicherheits-Profile? In einem Sicherheits-Profil werden verschiedene Einstellungen zusammengefaßt, mit denen das gewüschte Verhältnis zwischen Sicherheit und Benutzerfreundlichkeit hergestellt werden soll. Um dies zu erreichen, werden bestimmte Dienste und Features entweder aktiviert oder deaktiviert. Nutzt man ein strengeres Sicherheits-Profil, werden weniger Dienste automatisch gestartet. Dies ist eines der Grundprinzipien der Sicherheit: Benutze nichts, was nicht unbedingt benutzt werden muß. Bitte beachten Sie, daß die Sicherheits-Profile nur Voreinstellungen sind. Sie können nach der Installation von FreeBSD alle Dienste einzeln aktivieren oder deaktivieren, indem Sie die die entsprechenden Optionen in /etc/rc.conf hinzufügen bzw. ändern. Weitere Informationen erhalten Sie in der Onlinehilfe &man.rc.conf.5;. In der Tabelle sind die Auswirkungen der Sicherheits-Profile zusammengefaßt. Jedes Sicherheits-Profil belegt eine Zeile, die beinflußten Dienste bzw. Optionen stehen in den Spalten. Mögliche Sicherheits-Profile Extreme Moderate &man.sendmail.8; NEIN JA &man.sshd.8; NEIN JA &man.portmap.8; NEIN EVTL. Der Dienst portmapper wird aktiviert, wenn die Maschine während der Installation als NFS-Client oder NFS-Server konfiguriert wurde. NFS server NEIN JA &man.securelevel.8; JA (2) Wenn Sie ein Sicherheits-Profil nutzen, bei dem eine Sicherheits-Stufe gesetzt wird (Extreme or High), sollten Sie sich über die Auswirkungen im klaren sein. Lesen Sie die Onlinehilfe zu &man.init.8; und achten Sie auf die Bedeutung der Sicherheits-Stufen. Wenn Sie das nicht tun, könnten Sie später jede Menge Probleme haben! NEIN
Die Sicherheits-Profile sind kein Allheilmittel! Wenn Sie hier ein strenges Profil auswählen, bedeutet daß nicht, daß Sie sich nicht mehr um das Thema Sicherheit kümmern müssen. Behalten Sie die aktuellen Entwicklungen im Auge (z.B. auf der entsprechenden Mailing Liste), benutzen Sie sichere Kennwörter bzw. Kennsätze und halten Sie die Grundregeln zum Thema Sicherheit ein. Das Sicherheits-Profil ist lediglich eine Möglichkeit, das Verhältnis zwischen Sicherheit und Benutzerfreundlichkeit schon bei der Installation einzustellen. Der Mechanismus der Sicherheits-Profile wurde für die Installation entwickelt. Wenn Sie FreeBSD bereits installiert haben, ist es wahrscheinlich sinnvoller, die einzelnen Dienste direkt zu aktivieren oder zu deaktivieren. Wenn Sie wirklich ein Sicherheits-Profil benutzen wollen, können Sie &man.sysinstall.8; erneut starten, um es zu aktivieren.
Hardware-Kompatibilität Unterstützt FreeBSD andere Architekturen außer x86? Ja. FreeBSD ist zur Zeit auf der Architekturen Intel x86 und DEC (bzw. Compaq) Alpha verfügbar. Außerdem wurde Interesse an einem Port von FreeBSD zur SPARC-Architektur ausgedrückt. Schließen Sie sich der Mailinglistefreebsd-sparc@FreeBSD.org an, wenn Sie bei dem Projekt teilnehmen möchten. Die Neuzugänge auf der Liste der in Zukunft unterstützten Plattformen sind IA-64 und PowerPC, weitere Informationen erhalten Sie auf den Mailinglisten freebsd-ia64@FreeBSD.org und/oder freebsd-ppc@FreeBSD.org. Schließen Sie sich dieser Mailingliste freebsd-platforms@FreeBSD.org an, wenn Sie an grundsätzlichen Diskussionen über neue Architekturen interessiert sind. Falls Ihre Maschine eine andere Architektur aufweist und Sie unbedingt sofort etwas benötigen, schlagen wir vor, daß Sie sich einmal NetBSD oder OpenBSD ansehen. Welche Arten von Festplatten werden von FreeBSD unterstützt? FreeBSD unterstützt EIDE- und SCSI-Laufwerke (mit kompatiblen Controllern - siehe folgenden Abschnitt), sowie alle Laufwerke, die die original Western Digital-Schnittstelle (MFM, RLL, ESDI und natürlich IDE) benutzen. Ein paar Controller mit proprietären Schnittstellen könnten nicht laufen: halten Sie sich an WD1002/3/6/7-Schnittstellen und Clones. Welche SCSI-Controller werden unterstützt? Sie finden eine vollständige Liste im Handbuch. Welche CDROM-Laufwerke werden von FreeBSD unterstützt? Jedes an einem unterstützten Controller angeschlossene SCSI-Laufwerk wird unterstützt. Die folgenden proprietären CDROM-Schnittstellen werden ebenfalls unterstützt: Mitsumi LU002 (8bit), LU005 (16bit) und FX001D (16bit 2x Speed). Sony CDU 31/33A Sound Blaster Non-SCSI CDROM Matsushita/Panasonic CDROM ATAPI compatible IDE CDROMs Von allen Nicht-SCSI-Laufwerken ist bekannt, daß sie im Vergleich zu SCSI-Laufwerken extrem langsam sind. Einige ATAPI-CDROMs könnten nicht funktionieren. Seit Version 2.2 unterstützt die bei FreeBSD Mall erhältliche FreeBSD-CDROM das direkte Booten von CD. Welche CD-Brenner werden von FreeBSD unterstützt? FreeBSD unterstützt alle ATAPI-kombatiblen IDE CD-R und CD-RW Brenner. Wenn Sie FreeBSD ab Version 4.0 benutzen, werfen Sie einen Blick in die Onlinehilfe zu &man.burncd.8;. Wenn Sie eine ältere Version von FreeBSD benutzen, sollten Sie sich die Beispiele in /usr/share/examples/atapi ansehen. FreeBSD unterstützt ebenfalls SCSI CD-R und CD-RW Brenner. Installieren und benutzen Sie das Paket cdrecord aus der Ports-Sammlung. Dazu müssen Sie allerdings das Gerät pass mit in Ihren Kernel aufnehmen. Unterstützt FreeBSD ZIP-Laufwerke? FreeBSD unterstützt natürlich alle gängigen SCSI-ZIP-Laufwerke. Ihr ZIP-Laufwerk darf nur mit den SCSI-Ziel-IDs 5 oder 6 laufen, aber Sie können sogar davon booten, falls das BIOS Ihres Hostadapters dies unterstützt. Es ist nicht bekannt, welche Hostadapter das Booten von anderen Zielen als 0 oder 1 erlauben; daher werden Sie in ihren Handbüchern nachsehen müssen, wenn Sie dieses Merkmal benutzen möchten. ATAPI (IDE) Zip-Laufwerke werden von FreeBSD 2.2.6 und späteren Versionen unterstützt. Seit Version 3.0 unterstützt FreeBSD ZIP-Laufwerke, die an der parallel Schnittstelle angeschlossen sind. Falls Sie eine genügend aktuelle Version benutzen, sollten Sie überprüfen, ob Ihr Kernel die folgenden Treiber enthält: scbus0, da0, ppbus0 und vp0 (der GENERIC-Kernel enthält alle, außer vp0). Wenn diese Treiber vorhanden sind, sollte das Laufwerk an der parallelen Schnittstelle als /dev/da0s4 verfügbar sein. Zip-Datenträger können mit mount /dev/da0s4 /mnt ODER (DOS-formatierte) mount_msdos /dev/da0s4 /mnt gemountet werden. Lesen Sie auch diese Anmerkung zu Wechseldatenträgern und diese zur Formatierung. Unterstützt FreeBSD JAZ, EZ und andere Wechsellaufwerke? Abgesehen von der IDE-Version der EZ-Laufwerke, handelt es sich ausschließlich um SCSI-Geräte. Unter FreeBSD müßten sie sich also alle wie SCSI-Platten und das IDE-EZ-Laufwerk müßte sich wie ein IDE-Laufwerk verhalten. Ich bin mir nicht sicher, wie gut FreeBSD den Wechsel der Datenträger während des Betriebs unterstützt. Sie werden die Laufwerke vor einem Datenträgerwechsel natürlich unmounten und sicherstellen müssen, daß externe Einheiten während des Bootens eingeschaltet sind, damit FreeBSD sie erkennen kann. Lesen Sie auch diesen Hinweis zur Formatierung. Welche seriellen Multi-Port-Karten werden von FreeBSD unterstützt? Es existiert eine Liste der unterstützten Karten im Abschnitt Verschiedene Geräte des Handbuchs. Von einigen nicht NoName-Nachbauten ist ebenfalls bekannt, daß sie funktionieren, speziell von den AST-kompatiblen. In &man.sio.4; finden Sie weitere Informationen zur Konfiguration solcher Karten. Unterstützt FreeBSD meine Tastatur mit USB-Anschluß? Die Unterstützung für USB-Geräte ist seit FreeBSD 3.1 Bestandteil des Systems. Die Unterstützung war allerdings nicht ganz ausgereift; einige der Probleme konnten bis zur Veröffentlichung von FreeBSD 3.2 nicht behoben werden. Wenn Sie die Treiber für USB-Tastaturen selbst testen möchten, sollten Sie den unten aufgeführten Anweisungen folgen: Benutzen Sie FreeBSD 3.2 oder eine neuere Version. Tragen Sie die folgenden Zeilen in die Konfigurationsdatei Ihres Kernels ein und erzeugen Sie einen neuen Kernel. device uhci device ohci device usb device ukbd options KBD_INSTALL_CDEV Falls Sie eine ältere FreeBSD-Version als FreeBSD 4.0 benutzen, müssen Sie diese Einträge verwenden: controller uhci0 controller ohci0 controller usb0 controller ukbd0 options KBD_INSTALL_CDEV Erzeugen Sie im Verzeichnis /dev die notwendigen Dateien: &prompt.root; cd /dev &prompt.root; ./MAKEDEV kbd0 kbd1 Tragen Sie in der /etc/rc.conf die folgenden Zeilen ein: usbd_enable="YES" usbd_flags="" Nach einem Neustart des Systems ist die AT-Tastatur als /dev/kbd0 und die USB-Tastatur als /dev/kbd1 verfügbar. Dies gilt natürlich nur, wenn beide Tastaturen angeschlossen sind; falls nur die USB-Tastatur angeschlossen ist, ist diese als /dev/ukbd0 verfügbar. Wenn Sie die USB-Tastatur an der Systemkonsole benutzen wollen, müssen Sie dies dem System explizit mitteilen. Dazu muß das folgende Kommando während des Systemstarts ausgeführt werden: &prompt.root; kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null Wenn Sie nur die USB-Tastatur angeschlossen haben, ist diese als /dev/kbd0 verfügbar; daher muß in diesem Fall das folgende Kommando benutzt werden: &prompt.root; kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null Tragen Sie dieses Kommando in Datei /etc/rc.i386 ein. Sobald Sie diese Schritte durchgeführt haben, sollte die USB-Tastatur ohne weitere Änderungen auch unter X benutzbar sei. Zur Zeit kann es noch Probleme geben, wenn Sie eine USB-Tastatur im laufenden Betrieb einstecken oder abziehen. Um Probleme zu vermeiden, sollten Sie die Tastatur anschließen, bevor Sie das System anschalten und die Tastatur nicht abziehen, solange das System noch läuft. Weitere Informationen erhalten Sie in &man.ukbd.4;. Ich habe eine unübliche Busmaus. Wie muß ich sie konfigurieren? FreeBSD unterstützt die Busmaus und InPort-Busmaus von Herstellern wie Microsoft, Logitech und ATI. Der Bus-Gerätetreiber ist bei FreeBSD 2.x standardmäßig im GENERIC-Kernel eingebunden; ab Version 3.0 müssen Sie ihn selbst in die Konfigurationsdatei für Ihren angepaßten Kernel einbinden. Fügen Sie die folgende Zeile in Ihre Konfigurationsdatei ein, falls Sie sich einen angepaßten Kernel mit dem Busmaustreiber erstellen FreeBSD 3.0 und ältere Versionen device mse0 at isa? port 0x23c tty irq5 vector mseintr FreeBSD 3.X außer 3.0 device mse0 at isa? port 0x23c tty irq5 FreeBSD 4.X device mse0 at isa? port 0x23c irq5 Die Busmaus wird üblicherweise zusammen mit einer speziellen Karte ausgeliefert. Sie könnte es Ihnen ermöglichen, andere Werte für die Port-Adresse und den Interrupt zu setzen. Weitere Informationen finden Sie in Handbuch zu Ihrer Maus und in der &man.mse.4; Manualpage. Wie benutze ich meine PS/2 (Mouse-Port oder Tastatur)-Maus? Falls Sie eine spätere FreeBSD-Version als 2.2.5 benutzen, ist der entsprechende Treiber psm im Kernel enthalten und aktiviert. Der Kernel sollte Ihre PS/2-Maus beim Booten erkennen. Wenn Sie eine gerigfügig frühere Version von FreeBSD benutzen (2.1.x oder höher), können Sie den Treiber während der Installation einfach im Kernelkonfigurationsmenue aktivieren, oder später mit der Option am Bootprompt boot:. Da der Treiber standardmäßig deaktiviert ist, werden Sie ihn also explizit aktivieren müssen. Falls Sie eine ältere FreeBSD-Version benutzen, müssen Sie folgende Zeile in Ihre Kernelkonfigurationsdatei einfügen und den Kernel neu kompilieren. FreeBSD 3.0 und ältere Versionen device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr FreeBSD 3.1 und neuere Versionen: device psm0 at isa? tty irq 12 Ab FreeBSD 4.0: device psm0 at atkbdc? irq 12 Lesen Sie den Handbucheintrag zur Kernelkonfiguration, falls Sie sich mit der Erstellung eines Kernels nicht auskennen. Wenn Sie den Kernel soweit haben, daß er psm0 beim Booten korrekt erkennt, stellen Sie sicher, daß sich im Verzeichnis /dev ein Eintrag für psm0 befindet. Durch Eingabe von &prompt.root; cd /dev; sh MAKEDEV psm0 können Sie einen erstellen, wenn Sie als root angemeldet sind. Kann man die Maus irgendwie außerhalb des X Window Systems benutzen? Falls Sie den standard Konsoltreiber syscons benutzen, können Sie den Mauszeiger auf Textkonsolen zum Kopieren und Einfügen von Text verwenden. Starten Sie den Mausdämon moused und schalten Sie den Mauszeiger auf der virtuellen Konsole ein: &prompt.root; moused -p /dev/xxxx -t yyyy &prompt.root; vidcontrol -m on xxxx bezeichnet hierbei den Gerätename der Maus und yyyy das Protokoll. Unterstützte Protokolle finden Sie in der &man.moused.8; Manualpage. Wahrscheinlich wollen Sie den Mausdämon automatisch beim Booten starten. In Version 2.2.1 müssen Sie hierzu die folgenden Variablen in /etc/sysconfig setzen: mousedtype="yyyy" mousedport="xxxx" mousedflags="" In den Versionen 2.2.2 bis 3.0 müssen Sie die folgenden Variablen in /etc/rc.conf setzen. moused_type="yyyy" moused_port="xxxx" moused_flags="" Wenn Sie eine PS/2-Maus besitzen und FreeBSD 3.1 (oder neuer) benutzen, brauchen Sie nur die Zeile moused_enable="YES" in die Datei /etc/rc.conf einzutragen. Falls Sie den Mausdämon auf allen virtuellen Bildschirmen anstatt nur während des Bootens auf der Konsole benutzen wollen, tragen Sie außerdem folgendes in /etc/rc.conf ein. allscreens_flags="-m on" Beginnend mit FreeBSD 2.2.6 ist der Mausdämon in der Lage, das richtige Protokoll automatisch zu erkennen, falls es sich nicht um ein relativ altes serielles Mausmodell handelt. Geben Sie auto als Protokoll an, um die automatische Erkennung zu aktivieren. Während der Mausdämon läuft, muß der Zugriff auf die Maus zwischen dem Mausdämon und anderen Programmen, wie z.B. X Windows koordiniert werden. Lesen Sie auch einen anderen Abschnitt zu diesem Thema. Wie funktioniert das Kopieren und Einfügen von Text mit der Maus auf einer Textkonsole? Wenn Sie es geschafft haben, den Mausdämon zu starten (siehe vorherigen Abschnitt), halten Sie die linke Maustaste gedrückt und bewegen Sie die Maus, um einen Textabschnitt zu markieren. Dann drücken Sie die mittlere oder rechte Maustaste, um ihn an der Cursorposition einzufügen. In den Versionen 2.2.6 und späteren bewirkt das Drücken der mittleren Maustaste das Einfügen des Textes. Das Drücken der rechten Maustaste erweitert den markierten Textabschnitt. Evtl. möchten Sie Tasten umbelegen oder die mittlere Taste emulieren, falls Ihre Maus keine hat. Details hierzu finden Sie in der &man.moused.8; Manualpage. Wird meine USB-Maus von FreeBSD unterstützt? Die Unterstützung für USB-Geräte ist seit FreeBSD 3.1 Bestandteil des Systems. Die Unterstützung war allerdings nicht ganz ausgereift; einige der Probleme konnten bis zur Veröffentlichung von FreeBSD 3.2 nicht behoben werden. Wenn Sie die Treiber für USB-Mäuse selbst testen möchten, sollten Sie den unten aufgeführten Anweisungen folgen: Benutzen Sie FreeBSD 3.2 oder eine neuere Version. Tragen Sie die folgenden Zeilen in die Konfigurationsdatei Ihres Kernels ein und erzeugen Sie einen neuen Kernel. device uhci device ohci device usb device ukbd options KBD_INSTALL_CDEV Falls Sie eine ältere FreeBSD-Version als FreeBSD 4.0 benutzen, müssen Sie diese Einträge verwenden: controller uhci0 controller ohci0 controller usb0 controller usm0 Erzeugen Sie im Verzeichnis /dev die notwendigen Dateien: &prompt.root; cd /dev &prompt.root; ./MAKEDEV ums0 Tragen Sie in der /etc/rc.conf die folgenden Zeilen ein: moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags="" usbd_enable="YES" usbd_flags="" Weitergehende Informationen zum Thema moused finden sie im vorherigen Abschnitt. Wenn Sie Ihre USB-Maus auch unter X benutzen wollen, müssen sie die Datei XF86Config ändern. Wenn Sie XFree86 3.3.2 oder eine neuere Version benutzen, müssen die folgenden Zeilen im Abschnitt Pointer stehen: Device "/dev/sysmouse" Protocol "Auto" Wenn sie eine ältere Version von XFree86 benutzen, müssen im Abschnitt Pointer die folgenden Angaben stehen: Device "/dev/sysmouse" Protocol "SysMouse" Weitergehende Informationen zum Thema "Maus und X" erhalten Sie hier. Zur Zeit kann es noch Probleme geben, wenn Sie eine USB-Maus im laufenden Betrieb einstecken oder abziehen. Um Probleme zu vermeiden, sollten Sie die Maus anschließen, bevor Sie das System anschalten und die Maus nicht abziehen, solange das System noch läuft. Meine Maus hat ein neumodisches Rad und mehr Knöpfe. Kann ich sie in FreeBSD benutzen? Unglücklicherweise lautet die Antwort: Vielleicht. Solche Mäuse mit zusätzlichen Extras erfordern in den meisten Fällen spezielle Treiber. Wenn der Gerätetreiber für die Maus oder das Anwendungsprogramm keine spezielle Unterstützung für die Maus bietet, wird sie sich wie eine gewöhnliche Maus mit zwei oder drei Knöpfen verhalten. Ob und wie Sie das Rad unter X nutzen können, können Sie im passenden Abschnitt der FAQ erfahren. Wieso springt der Cursor wild über den Bildschirm, wenn ich eine PS/2-Maus mit Rad benutze? Die bis einschließlich FreeBSD 3.2 genutzte Version des Treibers für PS/2-Mäuse unterstützt einige Mäuse nicht richtig. Dazu gehört die Logitech M-S48 und deren OEM-Version. Wenden Sie die folgenden Patch auf /sys/i386/isa/psm.c an und erzeugen Sie einen neuen Kernel. Index: psm.c =================================================================== RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v retrieving revision 1.60.2.1 retrieving revision 1.60.2.2 diff -u -r1.60.2.1 -r1.60.2.2 --- psm.c 1999/06/03 12:41:13 1.60.2.1 +++ psm.c 1999/07/12 13:40:52 1.60.2.2 @@ -959,14 +959,28 @@ sc->mode.packetsize = vendortype[i].packetsize; /* set mouse parameters */ +#if 0 + /* + * A version of Logitech FirstMouse+ won't report wheel movement, + * if SET_DEFAULTS is sent... Don't use this command. + * This fix was found by Takashi Nishida. + */ i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS); if (verbose >= 2) printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i); +#endif if (sc->config & PSM_CONFIG_RESOLUTION) { sc->mode.resolution = set_mouse_resolution(sc->kbdc, - (sc->config & PSM_CONFIG_RESOLUTION) - 1); + (sc->config & PSM_CONFIG_RESOLUTION) - 1); + } else if (sc->mode.resolution >= 0) { + sc->mode.resolution + = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution); + } + if (sc->mode.rate > 0) { + sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate); } + set_mouse_scaling(sc->kbdc, 1); /* request a data packet and extract sync. bits */ if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) Dieses Problem sollte ab FreeBSD 3.3 nicht mehr auftreten. Wie benutze ich Maus/Trackball/Touchpad auf meinem Laptop? Bitte lesen Sie die Antwort zur vorherigen Frage und sehen Sie sich diese Anmerkung auf der Mobile-Computing-Seite an. Welche Arten von Bandlaufwerken werden unterstützt? FreeBSD unterstützt SCSI-, QIC-36- (mit QIC-02-Schnittstelle) und QIC-40/80-Bandlaufwerke (diskettenbasiert). Hierzu gehören auch 8-mm (aka Exabyte) und DAT-Laufwerke. Die QIC-40/80-Laufwerke sind bekanntlich sehr langsam. Einige der frühen 8-mm-Laufwerke sind nicht besonders kompatibel zu SCSI-2 und könnten unter FreeBSD nicht einwandfrei funktionieren. Unterstützt FreeBSD Bandwechsler? FreeBSD 2.2 untestützt SCSI-Wechsler mit dem Gerät ch und dem Befehl chio. Datails zum Betrieb des Wechslers können Sie in der Manualpage &man.chio.1; finden. Falls Sie nicht AMANDA oder ein anderes Produkt benutzen, das den Wechsler bereits kennt, bedenken Sie, daß die Programme nur wissen, wie sie ein Band von einem Punkt zu einem anderen bewegen müssen. Sie selbst müssen sich also merken, in welchem Einschub sich ein Band befindet und zu welchem Einschub das Band, das sich gerade im Laufwerk befindet, zurück muß. Welche Soundkarten werden von FreeBSD unterstützt? FreeBSD unterstützt die Soundkarten SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib und Gravis UltraSound. MPU-401 und kompatible MIDI-Karten werden begrenzt unterstützt. Ebenso werden Karten, die der Microsoft Sound System-Spezifikation entsprechen, durch den pcm-Treiber unterstützt. Das gilt nur für Sound! Dieser Treiber unterstützt keine CDROMs, SCSI oder Joysticks auf diesen Karten, außer der SoundBlaster. Die SoundBlaster-SCSI-Schnittstelle und einige Nicht-SCSI-CDROMs werden unterstützt, Sie können von diesen Geräten aber nicht booten. Abhilfen für fehlenden Sound von es1370 mit dem pcm-Treiber? Sie können den folgenden Befehl jedesmal nach dem Booten ausführen: &prompt.root; mixer pcm 100 vol 100 cd 100 Welche Netzwerkkarten unterstützt FreeBSD? Sie finden im Abschnitt Ethernet-Karten des Handbuchs eine vollständige Liste. Ich habe keinen mathematischen Co-Prozessor - ist das schlimm? Dies betrifft nur Besitzer von 386/486SX/486SLC - andere Maschinen haben in ihrer CPU einen integriert. Im allgemeinen wird das keine Probleme verursachen, aber es gibt Gelegenheiten bei denen es Sie betreffen wird - entweder bei der Performance oder bei der Genauigkeit der Emulation (lesen Sie den Abschnitt über Gleitpunkt-Emulation). Insbesondere wird das Zeichnen von Bögen in X SEHR langsam sein. Es wird dringend empfohlen, daß Sie sich einen mathematischen Co-Prozessor kaufen - er ist sein Geld wert. Einige Co-Prozessoren sind besser als andere. Es tut uns weh, es zu sagen, aber es ist noch niemand dafür entlassen worden, daß er bei Intel eingekauft hat. Hüten Sie sich vor Clones, es sei denn, Sie sind sicher, daß sie unter FreeBSD funktionieren. Welche Geräte werden noch von FreeBSD unterstützt? Im Handbuch finden Sie eine Liste von anderen unterstützten Geräten. Unterstützt FreeBSD Power-Management auf meinem Laptop? Auf einigen Rechnern unterstützt FreeBSD APM. Suchen Sie bitte in der Kernelkonfigurationdatei LINT nach dem Wort APM. Wieso hängt sich mein Micron-System beim Booten auf? Einige Micron Motherboards besitzen eine nicht-konforme PCI-BIOS-Implementierung. Sie bereitet Kummer, wenn FreeBSD bootet, weil PCI-Geräte nicht an der angegebenen Adresse konfiguriert werden. Deaktivieren Sie Plug and Play Operating System im BIOS, um dieses Problem zu beheben. Weitere Informationen können unter http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron gefunden werden. Wieso erkennt FreeBSD meinen neueren Adaptec-Controller nicht? Die Chips der neueren Adaptec AIC789-Serie werden unter dem CAM SCSI System unterstützt, das sein Debut in 3.0 gemacht hat. Patches für 2.2-STABLE befinden sich in ftp://ftp.de.FreeBSD.org/pub/FreeBSD/development/cam/. Eine Bootdiskette mit CAM-Erweiterung ist unter http://people.FreeBSD.org/~abial/cam-boot/ erhältlich. Lesen Sie in beiden Fällen die Datei README, bevor Sie beginnen. Wieso erkennt FreeBSD mein internes Plug & Play-Modem nicht? Sie werden die PnP-ID Ihres Modems in die PnP-ID-Liste des seriellen Treibers aufnehmen müssen. Erstellen Sie einen neuen Kernel mit dem Eintrag controller pnp0 in der Konfigurationsdatei und rebooten Sie Ihr System, um die Plug & Play-Unterstützung zu aktivieren. Der Kernel wird nun alle PnP-IDs der gefundenen Geräte ausgeben. In der Datei /sys/i386/isa/sio.c finden Sie ab Zeile 2777 (ca.) eine Tabelle, in der Sie die PnP-ID des Modems eintragen müssen. Suchen Sie die Zeichenfolge SUP1310 in der Struktur siopnp_ids[], um die Tabelle zu finden. Erstellen Sie den Kernel nochmals, installieren Sie ihn, rebooten Sie, und Ihr Modem sollte erkannt werden. Möglicherweise müssen Sie in der boot-time-Konfiguration die PnP-Geräte manuell mit einem pnp-Befehl ähnlich pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8 konfigurieren, damit das Modem erkannt wird. Wie kann ich den boot:-Prompt auf einer seriellen Konsole erscheinen lassen? Erstellen Sie einen Kernel mit options COMCONSOLE. Erstellen Sie /boot.config mit als einzigem Text in der Datei. Ziehen Sie das Tastaturkabel aus dem Rechner. Lesen Sie /usr/src/sys/i386/boot/biosboot/README.serial zur Information. Warum arbeitet meine 3Com PCI-Netzwerkkarte in meinem Micron-Computer nicht? Einige Micron Motherboards besitzen eine nicht-konforme PCI-BIOS-Implementierung, die die PCI-Geräte nicht an den angegebenen Adressen konfiguriert. Hierdurch entstehen Probleme, wenn FreeBSD bootet. Deaktivieren Sie die Option Plug and Play Operating System im BIOS, um das Problem zu umgehen. Weitere Informationen zu diesem Problem gibt es unter dem URL: http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron. Unterstützt FreeBSD Symmetric Multiproccessing (SMP)? SMP wird erst ab Version 3.0 unterstützt. SMP ist im Standardkernel (GENERIC) nicht aktiviert; wenn Sie SMP verwenden wollen, müssen Sie einen angepaßten Kernel erstellen. Die dazu notwendigen Optionen können Sie der Datei /sys/i386/conf/LINT entnehmen. Wenn ich ein System mit einem ASUS K7V Mainboard von der Bootdiskette starte, hängt sich das System auf. Wie kann ich dieses Problem lösen? Schalten Sie im BIOS die Option boot virus protection aus. Fehlerbehebung Was sollte ich tun, wenn auf meiner Festplatte fehlerhafte Blöcke sind? SCSI-Laufwerke sollten in der Lage sein, diese automatisch zu verlagern. Bei einigen Laufwerken ist diese Eigenschaft jedoch aus unerfindlichen Gründen bei der Auslieferung ausgeschaltet... Um sie einzuschalten, müssen Sie den Page-Mode des ersten Gerätes editieren. Unter FreeBSD können Sie das (als root) mit folgendem Befehl tun &prompt.root; scsi -f /dev/rsd0c -m 1 -e -P 3 und die Werte für AWRE und ARRE von 0 auf 1 ändern:- AWRE (Auto Write Reallocation Enbld): 1 ARRE (Auto Read Reallocation Enbld): 1 Die folgenden Abschnitte wurden von Ted Mittelstaedt tedm@toybox.placo.com eingesendet: Bei IDE-Laufwerken sind fehlerhafte Blöcke normalerweise ein Zeichen für potentielle Probleme. Bei allen modernen IDE-Laufwerken ist eine interne Verlagerung von fehlerhaften Blöcken eingeschaltet. Heutzutage bieten alle IDE-Festplattenhersteller eine umfassende Garantie und tauschen Laufwerke mit fehlerhaften Blöcken um. Falls Sie ein IDE-Laufwerk mit fehlerhaften Blöcken trotzdem weiterbenutzen möchten, können Sie versuchen, sich vom Hersteller ein IDE-Diagnoseprogramm herunterzuladen und dies über das Laufwerk laufen zu lassen. Manchmal können diese Programme so eingestellt werden, daß sie die Elektronik des Laufwerks dazu veranlassen, das Laufwerk nochmals nach fehlerhaften Blöcken zu durchsuchen und diese auszuschließen. Auf ESDI-, RLL- und MFM-Laufwerken sind fehlerhafte Blöcke nichts ungewöhnliches und im allgemeinen kein Zeichen für Probleme. Auf einem PC übernehmen der Festplatten-Controller und das BIOS die Aufgabe, fehlerhafte Sektoren auszuschließen, was bei Betriebssystemen wie DOS, die das BIOS benutzen, um auf die Platte zuzugreifen, auch gut funktioniert. Die Festplattentreiber von FreeBSD benutzen allerdings nicht das BIOS, weshalb ein Mechanismus bad144 existiert, der diese Funktionalität ersetzt. bad144 arbeitet nur mit dem wd-Treiber (und wird damit von FreeBSD 4.x nicht unterstützt) und kann NICHT für SCSI benutzt werden. bad144 arbeitet, indem es alle gefundenen, fehlerhaften Sektoren in eine spezielle Datei schreibt. Eine Einschränkung von bad144 ist, daß die Datei mit den fehlerhaften Sektoren auf die letzte Spur der Platte plaziert wird. Da diese Datei nun möglicherweise eine Liste von fehlerhaften Sektoren enthalten könnte, die am Anfang der Platte auftreten, wo sich möglicherweise die /kernel-Datei befindet, muß sie vom Bootstrap-Programm, das BIOS-Routinen benutzt, um den Kernel zu lesen, erreichbar sein. Das bedeutet, daß Platten, auf denen bad144 benutzt wird, 1024 Zylinder, 16 Köpfe und 63 Sektoren nicht überschreiten dürfen. Platten, die von bad144 verwaltet werden, sind also effektiv auf 500MB begrenzt. Setzen Sie Bad Block Scanning während der Installation im fdisk-Menue einfach auf ON, um bad144 zu verwenden. Dies funktioniert bis zu FreeBSD 2.2.7. Die Platte darf nicht mehr als 1024 Zylinder besitzen. Generell wird empfohlen, daß die Festplatte vorher mindestens vier Stunden in Betrieb war, um ihr die Möglichkeit zur thermischen Ausdehnung und Spurversetzung zu geben. Falls eine Platte mehr als 1024 Zylinder besitzt (wie z.B. große ESDI-Laufwerke), benutzt der Controller einen speziellen Übersetzungsmodus, um den Betrieb unter DOS zu ermöglichen. Der wd-Treiber kennt diese Übersetzungsmodi, WENN Sie die translated-Geometrie mit dem set geometry-Befehl in fdisk eingeben. Sie dürfen NICHT den "dangerously dedicated"-Modus zur Erstellung der FreeBSD-Partition verwenden, weil dieser die Geometrie ignoriert und obwohl fdisk Ihre überschriebene Geometrie benutzen wird, ist die wahre Größe der Platte noch bekannt und es wird versucht, eine zu große FreeBSD-Partition zu erstellen. Wenn die Plattengeometrie in die übersetzte Geometrie geändert worden ist, dann MUß die Partition manuell durch Angabe der Blockanzahl erstellt werden. Sie können mit dem ESDI-Controller auch kurzerhand eine große ESDI-Platte erstellen, diese dann mit DOS booten und als DOS-Partition formatieren. Anschließend booten Sie mit dem FreeBSD-Installationsprogramm und im fdisk-Menue notieren Sie sich die Blockgröße und die Anzahl Blöcke der DOS-Partition. Dann ändern Sie die Geometrie in die gleiche, wie die von DOS verwendete, löschen die DOS-Partition und erstellen eine kooperative FreeBSD-Partition mit der gleichen Blockgröße, die Sie zuvor notiert haben. Machen Sie die Partition nun bootfähig und schalten Sie Bad Block Scanning ein. Während der tatsächen Installation wird bad144 gestartet, bevor irgendwelche Dateisysteme erstellt werden (Sie können das mit Alt-F2 beobachten). Falls irgendwelche Probleme bei der Erstellung der Datei mit den fehlerhaften Sektoren auftreten sollten, haben Sie eine zu große Plattengeometrie eingestellt - rebooten Sie Ihr System und beginnen Sie von vorne (die Neupartitionierung und Formatierung unter DOS eingeschlossen). Falls die Verlagerung fehlerhafter Blöcke aktiviert ist und Sie trotzdem fehlerhafte Blöcke bemerken, sollten Sie einen Austausch des Laufwerkes in Erwägung ziehen, da die fehlerhaften Blöcke mit der Zeit zunehmen werden. Wieso erkennt FreeBSD meinen SCSI-Controller vom Typ Bustek 742a EISA nicht? Diese Information ist speziell für die 742a, könnte aber auch andere Buslogic-Karten einschließen (Bustek = Buslogic) Es gibt zwei grundverschiedene Versionen der 742a-Karte. Das sind die Hardware-Revisionen A-G und Revisionen von H aufwärts. Der Revisionsbuchstabe befindet sich hinter der Fabriknummer am Rand der Karte. Auf der 742a befinden sich zwei Chips. Einer ist der BIOS-Chip, der andere der Firmware-Chip. FreeBSD achtet nicht darauf, welche BIOS-Version Sie haben, aber es achtet auf die Version des Firmware-Chips. Buslogic schickt Ihnen Upgrade-ROMS, wenn Sie sich an den technischen Support wenden. Die BIOS- und Firmware-Chips müssen als passende Paare ausgeliefert werden. Für Ihre Hardware-Revision benötigen Sie das aktuellste Firmware-ROM auf Ihrer Adapter-Karte. Karten der Revision A-G akzeptieren BIOS/Firmware-Paare bis zu 2.41/2.21. Die Karten der Revisionen H und aufwärts akzeptieren die aktuellsten BIOS/Firmware-Paare 4.70/3.37. Der Unterschied der Firmware-Versionen ist, daß die 3.37-Firmware round robin unterstützt. Auf den Buslogic-Karten befindet sich auch eine Seriennummer. Falls Sie eine Karte mit einer alten Hardwarerevisionsnummer besitzen, können Sie sich an die RMA-Abteilung von Buslogic wenden, Ihre Seriennummer angeben und versuchen, die Karte gegen eine neuere Hardwarerevision auszutauschen. Falls Ihre Karte nicht zu alt ist, wird dem Tausch zugestimmt werden. Von FreeBSD 2.1 werden nur Firmwarerevisionen ab 2.21 aufwärts unterstützt. Wenn Sie eine ätere Firmwarerevision besitzen, wird Ihre Karte nicht als Buslogic-Karte erkannt. Sie könnte jedoch als Adaptec 1540 erkannt werden. Die früe Firmware von Buslogic enthält eine AHA1540 Emulation, wovon bei EISA-Karten jedoch abzuraten ist. Wenn sie eine Karte mit einer alten Hardwarerevisionsnummer besitzen und die 2.21-Firmware für sie bekommen, müssen Sie den Jumper W1 in die Position B-C setzen; die Voreinstellung ist A-B. Wieso wird der SCSI-Controller meines HP Netserver nicht erkannt? Hierbei handelt es sich um ein bekanntes Problem. Der auf dem Board befindliche EISA-SCSI-Controller auf dem HP Netserver belegt die EISA-Slotnummer 11, wodurch sich alle wirklichen EISA-Slots vor ihm befinden. Leider kollidiert der Adreßraum von EISA-Slots >=10 mit dem Adreßraum, der PCI zugeordnet ist und die Autokonfiguration von FreeBSD kann mit dieser Situation derzeit nicht besonders gut umgehen. Die einfachste Alternative ist, diese Kollision einfach zu leugnen. Setzen Sie dazu die Kerneloption EISA_SLOTS auf den Wert 12. Konfigurieren und kompilieren Sie den Kernel, wie im Handbucheintrag zur Kernelkonfiguration beschrieben. Dies bringt Ihnen natürlich das klassische Huhn-Ei-Problem, wenn Sie auf einer solchen Maschine installieren wollen. Um dieses Problem zu umgehen, existiert ein spezieller Hack in UserConfig. Benutzen Sie nicht die visuelle Schnittstelle, sondern die rohe Kommandozeilenschnittstelle. Geben Sie einfach eisa 12 quit am Prompt ein und Sie können Ihr System ganz normal installieren. Sie sollten auf jeden Fall einen angepaßten Kernel zu kompilieren und installieren. Zukünftige Versionen werden hoffentlich eine passende Lösung für dieses Problem beinhalten. Sie können keine dangerously dedicated Platte auf einem HP Netserver verwenden. Lesen Sie weitere Informationen finden Sie in diesem Hinweis. Was ist mit diesem CMD640-Controller los? Er ist fehlerhaft. Er kann Befehle auf beiden Kanälen nicht simultan behandeln. Es gibt jetzt eine Abhilfe, die automatisch aktiviert wird, wenn Ihr System diesen Chip benutzt. Details finden Sie in der Manualpage zum Plattentreiber (man 4 wd). Wenn bei Ihnen bereits FreeBSD 2.2.1 oder 2.2.2 mit einem CMD640-Controller läuft und Sie den zweiten Kanal benutzen möchten, erstellen Sie einen neuen Kernel mit options "CMD640". Dies ist seit 2.2.5 Voreinstellung. Was bedeuten die ständigen Meldungen ed1: timeout? Dies wird meistens durch einen Interruptkonflikt verursacht (z.B., wenn zwei Karten den selben Interrupt benutzen). Vor 2.0.5R war FreeBSD diesbezüglich tolerant und die Treiber für Netzwerkkarten funktionierten auch bei IRQ-Konflikten. Seit 2.0.5R werden IRQ-Konflikte jedoch nicht länger toleriert. Booten Sie mit der Option -c und ändern Sie die Einträge zu ed0/de0/... Ihrem Board entsprechend. Wenn Sie den BNC-Anschluß Ihrer Netzwerkkarte benutzen, könnte es auch sein, daß es sich Geräte-Timeouts aufgrund fehlerhafter Terminierung handelt. Um dies zu überprüfen, verbinden Sie einen Terminator direkt mit der Netzwerkkarte (ohne Kabel) und beobachten Sie, ob die Fehlermeldungen verschwinden. Einige NE2000 kompatible Karten melden diesen Fehler, wenn keine Verbindung am UTP-Eingang existiert oder wenn das Kabel nicht eingesteckt ist. Wieso erhalte ich die Meldung Incorrect super block beim Mounten einer CDROM? Sie müssen &man.mount.8; mitteilen, was für ein Gerät Sie mounten wollen. Standardmäßig wird &man.mount.8; den Typ ufs annehmen. Sie wollen ein CDROM-Dateisystem mounten und das tun Sie, indem Sie die Option für &man.mount.8; benutzen. Natürlich unter der Annahme, daß die CDROM ein ISO 9660-Dateisystem enthält, wie bei den meisten CDROMs. Ab 1.1R versteht FreeBSD auch automatisch die Rock Ridge Erweiterungen (lange Dateinamen). Wenn sie zum Beispiel das CDROM-Gerät /dev/cd0c unter dem Dateinamen /mnt mounten wollen, müßten Sie: &prompt.root; mount -t cd9660 /dev/cd0c /mnt eingeben. Beachten Sie, daß Ihr Gerätename (/dev/cd0c in diesem Beispiel) abhängig von der CDROM-Schnittstelle unterschiedlich sein könnte. Die Option bewirkt lediglich, daß der Befehl &man.mount.cd9660.8; ausgeführt wird. Das obige Beispiel könnte also kürzer lauten: &prompt.root; mount_cd9660 /dev/cd0c /mnt Wieso erhalte ich die Meldung Device not configured, wenn ich eine CDROM mounte? Das bedeutet im allgemeinen, daß sich keine CDROM im Laufwerk befindet, oder, daß das Laufwerk auf dem Bus nicht sichtbar ist. Legen sie etwas ins Laufwerk ein und/oder überprüfen Sie den Master/Slave-Status des Laufwerks, falls es sich um ein IDE (ATAPI) Laufwerk handelt. Bei einem CDROM-Laufwerk kann es einige Sekunden dauern, bis ein eingelegter Datenträger erkannt wird. Haben Sie also Geduld. Manchmal kann ein SCSI-CDROM verfehlt werden, weil es nicht genügend Zeit hatte, auf einen Bus-Reset zu antworten. Falls Sie ein SCSI-CDROM besitzen, versuchen Sie, folgendes in Ihre Kernelkonfigurationsdatei einzufügen, und neu zu kompilieren: options "SCSI_DELAY=15" Wieso werden alle Sonderzeichen in den Dateinamen auf meinen CDs durch ? ersetzt, wenn ich die CD unter FreeBSD benutze? Wahrscheinlich werden auf der CDROM die Joilet Erweiterungen für die Speicherung von Datei- und Verzeichnisnamen benutzt. Diese Erweiterung verlangt, daß alle Dateinamen im Unicode-Format (mit zwei Bytes pro Zeichen) abgespeichert werden. Eine Unicode-Erweiterung für den FreeBSD-Kernel ist zwar in Arbeit; da diese Erweiterung aber noch nicht fertig ist, hat der CD9660-Treiber keine Möglichkeit, die Zeichen korrekt zu dekodieren. Für die Übergangszeit gibt es seit FreeBSD 4.3 eine Schnittstelle im CD9660-Treiber, über die zur Laufzeit eine passende Übersetzungstabelle geladen werden kann. Der Port sysutils/cd9660_unicode enthält passende Übersetzungstabelle für gängige Anwendungen. [Anmerkung des Übersetzers: Es geht hier nicht um die deutschen Sonderzeichen, da diese schon im normalen ISO8859-1 enthalten sind. Die Probleme treten auf, wenn man z.B. russische CDs (ISO8859-5) verwendet.] Mein Drucker ist unglaublich langsam. Was kann ich tun? Falls es sich um einen parallelen Drucker handelt und das einzige Problem ist, daß er schrecklich langsam ist, probieren Sie, den Druckerausgang in den gepollten Modus zu setzen: &prompt.root; lptcontrol -p Von einigen neueren HP-Druckern wird behauptet, daß sie im Interruptmodus nicht korrekt arbeiten, anscheinend wegen eines (noch nicht genau verstandenen) Timing-Problems. Wieso brechen meine Programme gelegentlich mit Signal 11-Fehlern ab? Das Signal 11 wird generiert, wenn ein Prozeß versucht, auf Speicher zuzugreifen, obwohl er vom Betriebssystem dazu nicht befugt wurde. Wenn Ihnen das scheinbar zufällig immer wieder passiert, sollten Sie der Sache einmal auf der Grund gehen. Das Problem hat in der Regel eine der folgenden Ursachen: Wenn das Problem nur in einer bestimmten Applikation auftritt, die Sie selbst entwickeln, dann ist es wahrscheinlich ein Fehler in Ihren Sourcen. Wenn das Problem in einem Teil von FreeBSD auftritt, könnte es natürlich auch ein Fehler sein; aber in der überwiegenden Zahl der Fälle werden diese Probleme gefunden und behoben, bevor die typischen Leser der FAQ (wir) diese Teile der Sourcen benutzen können (dafür gibt es schließlich -current). Wenn der Fehler auftritt, wenn Sie ein Programm compilieren aber dabei immer wieder an anderer Stelle auftritt, dann ist das ein ganz eindeutiger Hinweis, daß das Problem nicht bei FreeBSD liegt. Nehmen wir zum Beispiel an, daß Sie make buildworld ausführen und die Compilierung von ls.c in ls.o abbricht. Wenn Sie nochmal "make buildworld" durchführen und die Compilierung an der gleichen Stelle abbricht, handelt es sich um einen Fehler in den Sourcen. Aktualisieren Sie Ihre Sourcen und versuchen Sie es noch einmal. Wenn der Fehler jedoch an einer anderen Stelle auftritt, liegt das Problem mit an Sicherheit grenzender Wahrscheinlichkeit bei Ihrer Hardware. Was Sie tun sollten: Im ersten Fall können Sie einen Debugger wie z.B. gdb benutzen, um die Stelle im Programm zu finden, an der auf eine falsche Adresse zugegriffen wird und danach den Fehler beheben. Im zweiten Fall müssen Sie sicherstellen, daß das Problem nicht von Ihrer Hardware verursacht wird. Typische Ursachen dafür sind unter anderem: Es könnte sein, daß Ihren Festplatten zu warm wird: Überprüfen Sie, ob die Lüfter in Ihrem Gehäuse noch funktionieren, damit Ihre Festplatten (und andere Hardware) nicht heißlaufen. Der Prozessor überhitzt, weil Sie Ihn übertaktet haben oder der CPU-Kühler ausgefallen ist. Sie müssen sicherstellen, daß Sie Ihre Hardware unter den Bedingungen betreiben, für die sie spezifiziert ist, zumindestens während Sie versuchen, das Problem zu lösen. Mit anderen Worten: Betreiben Sie Ihre CPU mit der normalen Taktfrequenz. Wenn Sie übertakten, sollten Sie daran denken, daß ein langsames System deutlich billiger ist als ein defektes System. Die große Masse hat nicht sehr häufig Mitgefühl mit Problemen bei übertakteten System, auch wenn Sie es für ungefährlich halten. Unzuverlässiger Speicher: Wenn Sie mehr als ein SIMM/DIMM installiert haben, sollten Sie sie alle ausbauen und die Maschine testweise mit jedem SIMM oder DIMM einzeln betreiben. So können Sie feststellen, ob die Ursache ein einzelnes SIMM/DIMM oder auch eine Kombination von Modulen ist. Zu optimistische Einstellung des Mainboards: In Ihrem BIOS und mit den Jumpern auf dem Mainboard können Sie diverse Timings ändern. In den meisten Fällen reichen die Defaults aus, aber manchmal kann es durch zu wenig wait states, die Einstellung RAM Speed: Turbo oder ähnliches zu merkwürdigen Problemen kommen. Ein möglicher Ansatz ist, die BIOS defaults zu laden, allerdings könnte es sinnvoll sein, die aktuellen Einstellungen vorher zu notieren. Schlechte oder fehlerhafte Stromversorgung des Mainboards: Wenn Sie unbenutzte Steckkarten, Platten oder CDROMs in Ihrem System haben, sollten Sie sie testweise ausbauen oder die Stromversorgung abziehen. Dadurch können Sie prüfen, ob Ihr Netzteil eventuell mit einer geringeren Last besser zurechtkommt. Sie können auch testweise ein anderes, am besten ein leistungsfähigeres, Netzteil ausprobieren. Wenn Sie zur Zeit ein 250W-Netzteil benutzen, sollten Sie testweise ein 300W-Netzteil einbauen. Die sollten ebenfalls die SIG11 FAQ (unten aufgeführt) lesen, da sie gute Erklärungen für alle diese Probleme enthält (allerdings aus Linux-Sicht). Sie erklärt ebenfalls, warum sowohl Programme als auch Geräte zur Speicherprüfung fehlerhaften Speicher teilweise nicht erkennen. Wenn alle diese Schritte nicht helfen, ist es möglich, daß Sie einen Fehler in FreeBSD gefunden haben. Folgen Sie einfach den Anweisungen für die Erstellung eines Problem Reports. Es existiert eine ausführliche FAQ hierzu unter der SIG11-Problem-FAQ Wieso wird beim Booten der Bildschirm schwarz und reagiert nicht mehr? Dies ist ein bekanntes Problem mit der ATI Mach 64 Videokarte. Das Problem besteht darin, daß diese Karte die Adresse 2e8 benutzt und die vierte serielle Schnittstelle ebenfalls. Aufgrund eines Fehlers (einer Besonderheit?) im &man.sio.4;-Treiber wird diese Schnittstelle angesprochen, auch wenn Sie gar keine vierte serielle Schnittstelle besitzen und sogar, wenn sie sio3 (die vierte Schnittstelle), die normalerweise diese Adresse verwendet, deaktivieren. Bis der Fehler behoben ist, können Sie folgende Abhilfe verwenden: Geben Sie am Bootprompt ein. (Dies bringt den Kernel in den Konfigurationsmodus). Deaktivieren Sie sio0, sio1, sio2 und sio3 (alle). Auf diese Weise wird der sio-Treiber nicht aktiviert und das Problem tritt nicht mehr auf. Geben Sie exit ein, um den Bootvorgang fortzusetzen. Falls sie in der Lage sein wollen Ihre seriellen Schnittstellen zu benutzen, müssen Sie einen neuen Kernel mit folgenden Modifikationen erstellen: suchen Sie in /usr/src/sys/i386/isa/sio.c nach der Zeichenkette 0x2e8 und löschen Sie sie und das vorhergehende Komma (nicht das folgende Komma). Nun folgen Sie der normalen Prozedur zur Erstellung eines neuen Kernels. Auch nach Anwendung dieser Maßnahmen könnte es sein, daß Ihr X Windows-System nicht einwandfrei funktioniert. Wenn dies der Fall ist, stellen Sie sicher, daß es sich bei der von Ihnen benutzten X Windows-Version mindestens um XFree86 3.3.3 oder höher handelt. Diese Version und höhere besitzen eine integrierte Unterstützung für Mach64-Karten und sogar einen dedizierten X-Server für sie. Wieso verwendet FreeBSD nur 64 MB Hauptspeicher, obwohl in meinem Rechner 128 MB sind? Aufgrund der Art und Weise, wie FreeBSD die Hauptspeichergröße vom BIOS mitgeteilt bekommt, kann es lediglich 16-Bit Werte in kByte-Größe (65535 kByte = 64MB) erkennen (oder weniger... einige BIOSe setzen die Hauptspeichergröß auf 16MB). Falls Sie mehr als 64MB besitzen, wird FreeBSD versuchen, das zu erkennen, was aber nicht immer funktioniert. Um dieses Problem zu umgehen, müssen Sie die untenstehende Kerneloption verwenden. Es gibt einen Weg, vollständige Hauptspeicherinformationen vom BIOS zu erhalten, aber in den Bootblöcken ist nicht genügend Platz dafür vorhanden. Wenn der Platzmangel in den Bootblöcken eins Tages behoben ist, werden wir die erweiterten BIOS-Funktionen dazu nutzen, die vollständigen Hauptspeicherinformationen zu erhalten... aber zur Zeit sind wir auf die Kerneloption angewiesen. options "MAXMEM=n" Hierbei ist n Ihre Hauptspeichergröße in Kilobyte. Bei einer 128 MB-Maschine müßten Sie 131072 benutzen. Wieso stürzt FreeBSD 2.0 mit der Meldung kmem_map too small! ab? Die Nachricht kann auch mb_map too small! lauten. Diese Meldung zeigt an, daß der virtuelle Speicher für Netzwerkpuffer (spezieller mbuf-Cluster) aufgebraucht ist. Sie können die für mbuf verfügbare Größe an VM erhöhen, indem Sie options "NMBCLUSTERS=n" in Ihre Kernelkonfigurationsdatei einfügen, wobei n, abhängig davon, wieviele gleichzeitige TCP-Verbindungen Sie unterstützen müssen, eine Zahl aus dem Bereich 512-4096 ist. Ich würde Ihnen empfehlen, 2048 zu probieren - das sollte Sie von solchen Paniksituationen vollkommen befreien. Sie können die Anzahl der zugeordneten/benutzten mbuf-Cluster im System mit netstat -m beobachten. Der voreingestellte Wert für NMBCLUSTERS ist 512 + MAXUSERS * 16. Wieso erhalte ich die Meldung CMAP busy panic, wenn ich mein System mit einem neuen Kernel starte? Die Logik, die versucht, veraltete /var/db/kvm_*.db-Dateien zu erkennen, versagt manchmal und die Benutzung einer unpassenden Datei kann zu Paniksituationen führen. Falls das passiert, rebooten Sie im Single-User-Modus und löschen Sie die Dateien: &prompt.root; rm /var/db/kvm_*.db Was soll mir die Meldung ahc0: brkadrint, Illegal Host Access at seqaddr 0x0 sagen? Dies ist ein Konflikt mit einem Ultrastor SCSI Hostadapter. Rufen Sie während des Bootprozesses das Kernelkonfigurationsmenue auf und deaktivieren Sie uha0, welches das Problem verursacht. Wieso meldet Sendmail mail loops back to myself? Dies wird in der Sendmail-FAQ wie folgt beantwortet:- * Ich erhalte "Local configuration error" Meldungen, wie: 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error Wie kann ich dieses Problem lösen? Sie haben durch die Benutzung einer MX-Zeile eingestellt, daß Mail für die Domäne (z.B. domain.net) an einen speziellen Host (in diesem Fall relay.domain.net) weitergeleitet wird, aber der Relay-Host erkennt sich selbst nicht als domain.net. Fügen Sie domain.net in /etc/sendmail.cw (falls Sie FEATURE(use_cw_file) benutzen) oder "Cw domain.net" in /etc/sendmail.cf ein. Die aktuelle Version der Sendmail-FAQ wird nicht mehr mit dem Sendmail-Release verwaltet. Sie wird jedoch regelmäßig nach comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers und news.answers gepostet. Sie können auch eine Kopie per Email bekommen, indem Sie eine Mail mit dem Inhalt send usenet/news.answers/mail/sendmail-faq an mail-server@rtfm.mit.edu schicken. Wieso funktionieren Full-Screen-Applikationen beim Zugriff über ein Netzwerk nicht richtig? Die entfernte Maschine scheint den Terminaltyp auf etwas anderes als den Typ cons25, der von FreeBSD verlangt wird, zu setzen. Es gibt mehrere mögliche Abhilfen für dieses Problem: Setzen Sie die Shell-Variable TERM nach dem Einloggen auf der entfernten Maschine auf ansi oder sco, sofern die entfernte Maschine diese Terminaltypen kennt. Benutzen Sie einen VT100-Emulator wie screen auf der FreeBSD-Console. screen bietet Ihnen die Möglichkeit, mehrere gleichzeitige Sitzungen von einem Bildschirm aus laufen zu lassen. Es ist ein sehr nettes Programm. Jedes screen-Fenster verhält sich, wie ein VT100-Terminal, weshalb die Variable TERM am entfernten Ende auf vt100 gesetzt werden sollte. Installieren Sie den Eintrag cons25 in der Bildschirmdatenbank der entfernten Maschine. Wie das zu geschehen hat, hängt vom Betriebssystem der entfernten Maschine ab. Das Systemadministrationshandbuch für das entfernte System sollte Ihnen hierbei helfen können. Starten Sie einen X-Server auf der FreeBSD-Seite und benutzen Sie einen X-basierten Terminalemulator wie xterm oder rxvt, um sich auf der entfernten Maschine einzuloggen. Die Variable TERM auf dem entfernten Host sollte auf xterm oder vt100 gesetzt werden. Wieso meldet mein Rechner calcru: negative time...? Dies kann durch verschiedene Hardware- und/oder Softwareprobleme in Verbindung mit Interrupts verursacht werden. Das kann aufgrund von Fehlern sein, aber es kann auch durch die Eigenarten bestimmter Geräte passieren. TCP/IP über die parallele Schnittstelle mit einer großen MTU laufen zu lassen, ist ein sicherer Weg, um dieses Problem zu provozieren. Grafikbeschleuniger können es auch verursachen. In diesem Fall sollten Sie zunächst die Interrupteinstellungen der Karte überprüfen. Ein Seiteneffekt dieses Problems sind Prozesse, die mit der Meldung SIGXCPU exceeded cpu time limit abbrechen. Für FreeBSD 3.0 und spätere ab dem 29. Nov. 1998: Falls das Problem nicht anders gelöst werden kann, besteht die Lösung darin, diese sysctl-Variable zu setzen: &prompt.root; sysctl -w kern.timecounter.method=1 Das bedeutet zwar Performanceeinbußen, aber in Anbetracht der Ursache für dieses Problem werden Sie das wahrscheinlich nicht bemerken. Fall das Problem weiter bestehen bleibt, lassen sie die sysctl-Variable auf 1 stehen und setzen Sie die Option NTIMECOUNTER im Kernel auf immer höhere Werte. Wenn Sie irgendwann NTIMECOUNTER=20 erreicht haben sollten, ist das Problem nicht gelöst. Die Interrupts auf Ihrer Maschine sind für eine verläßliche Zeiterhaltung nicht zu gebrauchen. Ich erhalte die Meldung pcm0 not found oder meine Soundkarte wird als pcm1 eingebunden, obwohl in meiner Kernel-Konfiguration device pcm0 steht. Was ist passiert? Dieser Effekt tritt auf, wenn Sie FreeBSD 3.x und eine PCI Soundkarte haben. Das Gerät pcm0 ist für ISA Soundkarten reserviert; wenn Sie eine PCI Soundkarte haben, werden Sie diese Meldung erhalten und Ihre Karte wird als pcm1 eingebunden. Sie können das Problem nicht lösen, indem Sie einfach in der Konfigurationsdatei für Ihnen Kernel die Zeile device pcm1 eintragen. Wenn Sie dies tun, wird pcm1 für ISA-Karten reserviert und Ihre PCI-Karte wird zu pcm2. Zusätzlich erhalten Sie den Hinweis pcm1 not found. Wenn Sie eine PCI Sounkarte haben, müssen Sie das Gerät snd1 statt des üblichen snd0 verwenden: &prompt.root; cd /dev &prompt.root; ./MAKEDEV snd1 Dieses Problem tritt in FreeBSD 4.x nicht mehr auf, da große Anstrengungen unternommen wurden, diese Version PnP-orientiert zu machen. In FreeBSD 4.x ist das Gerät pcm0 nicht mehr für ISA-Karten reserviert. Warum wird meine PnP-Karte nicht mehr (oder nur noch als unknown) erkannt, seit ich FreeBSD 4.x benutze? FreeBSD 4.x ist deutlich PnP-orientierter und das führt leider dazu, daß einige PnP-Geräte (wie z.B. Soundkarten und interne Modems) nicht mehr funktionieren, obwohl Sie von FreeBSD 3.x noch erkannt wurden. Die Gründe für dieses Verhalten werden in der unten zitierten Mail von Mail von Peter Wemm erklärt. Diese Mail stammt von der Mailingliste freebsd-questions und war eine Antwort auf eine Frage bezüglich eines internen Modem, das nach dem Update auf FreeBSD 4.x nicht mehr erkannt wurde. Die Kommentare in [] wurden eingefügt, um an einigen Stellen die Bezüge klarstellen.
Das PnP-Bios hat es [das Modem] vorkonfiguriert und es dann im Adreßraum liegenlassen, daher haben es die alten ISA-Erkennungsroutinen [in 3.x] gefunden. In 4.0 sind die ISA-Routinen deutlich PnP-orientierter. Es war möglich [in 3.x], daß eine ISA-Erkennungsroutinen ein zugelaufenes Gerät fand; während die PnP-Treiber zwar die ID erkannten, das Gerät aber wegen des Ressourcekonfliktes nicht nutzen konnten. Daher werden die programmierbaren Karten zunächst einmal abgeschaltet, um diese doppelte Erkennung vermeiden zu können. Das bedeutet allerdings auch, daß die Treiber die PnP-ID kennen muß, um PnP-Hardware unterstützen zu können. Wir haben uns vorgenommen, den Benutzern eine einfachere Möglichkeit zur Manipulation dieser Informationen zur Verfügung zu stellen.
Damit Ihr Gerät wieder funktioniert, müssen Sie seine PnP-ID herausfinden und die ID in die Listen eintragen, die zur Erkennung von PnP-Geräten genutzten werden. Zu diesem Zweck wird das Gerät mit &man.pnpinfo.8; analysiert. Das Beispiel zeigt die Ausgaben von &man.pnpinfo.8; für ein internes Modem: &prompt.root; pnpinfo 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) [weitere TAG Zeilen gestrichen] 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 Sie benötigen die Information aus der Zeile Vendor ID ganz im Anfang. Die in Klammern ausgegebene Hexadezimale Zahl (0x3024a341 in diesem Beispiel) ist die PnP ID und die unmittelbar davor stehende Zeichenkette (PMC2430) ist eine eindeutige Herstellerkennung. Diese Informationen müssen in die Datei /usr/src/sys/isa/sio.c eingetragen werden. Sie sollten zunächst ein Backup von sio.c anlegen, falls irgendwas schiefgehen sollte. Sie werden auch einen Patch erzeugen müssen, um ihn zusammen mit Ihrem PR einzusenden. (Sie wollten doch einen PR schreiben, oder etwa nicht?) Öffnen Sie nun sio.c mit einem Editor und suchen Sie nach der Zeile static struct isa_pnp_id sio_ids[] = { und blättern Sie dann nach unten, um die passende Stelle für Ihr Gerät zu finden. Unten finden Sie Beispiel für die Einträge, diese sind nach der Herstellerkennung sortiert. Diese sollte in dem Kommentar auf der rechten Seite aufgenommen werden, dazu kommt die Gerätebeschreibung (Device Description) aus der Ausgabe von &man.pnpinfo.8;: {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 */ Fügen Sie die hexadezimale Gerätekennung an der richtigen Stelle ein, speichern Sie die Datei ab, erzeugen Sie einen neuen Kernel und starten Sie Ihr System neu. Ihr Gerät sollte nun wie bei FreeBSD 3.x als sio Gerät erkannt werden.
Warum erhalte ich die Meldung nlist failed, wenn ich Programme wie top oder systat benutze? Das Programm sucht nach einem speziellen Symbol im Kernel, kann es aber aus irgendeinem Grunde nicht finden. Dieser Fehler wird von einem dieser Probleme verursacht: Ihr Kernel und die sonstigen Programme (das userland) sind nicht mehr auf dem gleichen Stand. Mit anderen Worten, Sie haben zwar einen neuen Kernel erzeugt, aber kein installworld (oder umgekehrt); darum weicht die Symboltabelle von dem ab, was die Anwendung erwartet. Wenn dies der Fall, müssen Sie lediglich die noch fehlenden Schritte des Upgrades durchführen. Die richtige Vorgehensweise kann /usr/src/UPDATING entnommen werden. Um Ihren Kernel zu laden, benutzen Sie nicht /boot/loader, sondern laden ihn direkt mit boot2 (siehe &man.boot.8;). Es ist zwar nicht immer ein Fehler, /boot/loader zu umgehen; allerdings ist in der Regel besser dazu geeignet, die Symbole des Kernels für normale Anwendungen verfügbar zu machen. Wieso dauert es so lange, bis eine Verbindung (&man.ssh.1; oder &man.telnet.1;) aufgebaut wird? Das Symptom: Nach dem Aufbau des TCP-Verbindung vergeht einige Zeit, bis endlich die Abfrage des Paßwortes (bzw. der Login-Prompt bei Telnet) erscheint. Das Problem: In den meisten Fällen versucht der Server in der Zwischenzeit, die IP-Adresse des Clients in einen Rechnernamen zu übersetzen. Viele Server (darunter die Telnet und SSH Server von FreeBSD) machen das, um den Hostnamen z.B. für spätere Verwendung durch den Systemadministrator in eine Protokolldatei schreiben zu können. Die Lösung: wenn das Problem bei jedem Server auftritt, den Sie von Ihrem Computer (dem Client) ansprechen, dann wird das Problem vom Client verursacht. Wenn das Problem aber nur auftritt, wenn jemand Ihren Rechner (den Server) anspricht, dann liegt die Ursache beim Server. Wenn das Problem vom Client verursacht wird, müsssen Sie die Einträge im DNS korrigieren, damit der Server Ihre IP-Adresse übersetzen kann. Wenn das Problem in Ihrem lokalen Netzwerk auftritt, sollten Sie es als Problem des Servers behandeln und weiterlesen; wenn es allerdings im Internet auftritt, werden Sie sich wahrscheinlich an Ihrem ISP wenden müssen, damit dieser das Problem für Sie korrigiert. Wenn das Problem vom Server verursacht wird und Sie sich in einem lokalen Netzwerk befinden, dann müssen Sie Ihren Server so konfigurieren, daß er die lokal genutzen IP-Adressen in Rechnernamen übersetzen kann. Weitere Informationen erhalten Sie in den Onlinehilfen zu &man.hosts.5; and &man.named.8;. Wenn dieses Problem im Internet auftritt, könnte die Ursache auch darin liegen, daß die Namensauflösung auf dem Server nicht funktioniert. Versuchen Sie, einen anderen Hostnamen wie z.B. www.yahoo.com aufzulösen. Wenn das nicht funktioniert, liegt das Problem bei Ihrem System. Was bedeutet stray IRQ? Stray IRQs sind ein Zeichen für Probleme bei der Behandlung von Hardware-IRQs. Sie werden meistens von Geräten verursacht, die ihren Interrupt Request zurückziehen, obwohl gerade der interrupt request acknowledge-Zyklus läuft. Sie können drei Dinge tun: Ertragen Sie die Warnungen. Sie erhalten nur die ersten 5 für jeden IRQ, alle anderen werden unterdrückt. Eliminieren Sie die Meldungen, indem Sie in isa_strayintr() den Wert 5 auf 0 ändern, um alle Meldungen zu unterdrücken. Eliminieren Sie die Meldungen, indem Sie Hardware für den Parallelport installieren, die IRQ 7 nutzt und vom ppp Treiber verwendet wird (das passiert auf den meisten Systemen), und installieren Sie eine IDE-Platte oder andere Hardware sowie einen dazu passenden Treiber, um IRQ 15 zu nutzen. Warum sehe ich in der Ausgabe von dmesg häufig die Meldung file: table is full? Diese Fehlermeldung besagt, daß Sie die zur Verfügung stehenden File-Handles des Systems verbraucht haben. Die im Speicher stehende entsprechende Tabelle ist voll. Die Lösung: Erhöhen Sie den Wert der Kernel-Variable kern.maxfiles. &prompt.root; sysctl -w kern.maxfiles=n Wählen Sie ein für Ihre Anforderungen passendes n. Jede geöffnete Datei, jeder Socket und jeder FIFO verbrauchen je ein File-Handle. Ein großer Fileserver kann durchaus mehr als zehntausend (10.000+) File-Handles benötigen; dies hängt davon ab, welche und wie viele Dienste gleichzeitig genutzt werden. Die Voreinstellung für die Anzahl der File-Handles wird in der Kernel-Konfiguration festgelegt: maxusers 32 Wenn Sie den Wert der Variablen maxusers erhöhen, steigt kern.maxfiles proportional mit. Sie können den aktuellen Wert von kern.maxfiles mit dem folgenden Kommando abfragen: &prompt.root; sysctl kern.maxfiles kern.maxfiles: 1064 Warum ist die Uhrzeit auf meinem Laptop immer falsch? Ihr Laptop verfügt über mehr als eine Uhr und FreeBSD benutzt leider die falsche. Starten Sie &man.dmesg.8; und achten Sie auf die Zeilen, in denen das Wort Timecounter vorkommt. Die von FreeBSD benutzte Uhr steht in der letzten Zeile, mit an Sicherheit grenzender Wahrscheinlichkeit wird es TSC sein. &prompt.root; dmesg | grep Timecounter Timecounter "i8254" frequency 1193182 Hz Timecounter "TSC" frequency 595573479 Hz Sie können das überprüfen, indem Sie den Wert der Systemvariablen kern.timecounter.hardware abfragen. &prompt.root; sysctl kern.timecounter.hardware kern.timecounter.hardware: TSC Es ist durchaus möglich, daß das BIOS die TSC Uhr ändert, um beispielsweise den CPU-Takt zu während des Batteriebetrieb zu ändern, oder im Stromsparmodus; leider bemerkt FreeBSD diese Änderungen nicht und daher scheint die Uhr falsch zu gehen. In diesem Beispiel ist die Uhr i8254 ebenfalls verfügbar; um sie auszuwählen, muß ihr Name in die Systemvariable kern.timecounter.hardware geschrieben werden. &prompt.root; sysctl -w kern.timecounter.hardware=i8254 kern.timecounter.hardware: TSC -> i8254 Die Uhrzeit Ihres Laptops sollte nun genauer funktionieren. Damit diese Änderung automatisch beim Start des Systems durchgeführt wird, müssen Sie die folgende Zeile in die /etc/sysctl.conf eintragen. kern.timecounter.hardware=i8254 Wieso hängt sich FreeBSD nach dem BIOS-Bildschirm mit der Meldung Read error auf? Der Bootloader von FreeBSD erkennt die Geometrie Ihrer Festplatte nicht richtig. Sie müssen die Geometrie manuell festlegen, wenn sie mit fdisk FreeBSD-Bereiche erzeugen oder ändern. Die richtigen Werte für die Geometrie können Sie im BIOS des Rechners ablesen. Achten Sie auf die Anzahl der Zylinder, Köpfe und Sektoren für Ihre Festplatte. Im fdisk von &man.sysinstall.8; müssen Sie G eingeben, um die Geometrie zu definieren. Sie erhalten eine Dialogbox, in der Sie die Anzahl der Zylinder, Köpfe und Sektoren eingeben können. Verwenden Sie die Angaben des BIOS und setzen Sie Schrägstriche zwischen die Zahlen. 5000 Zylinder, 250 Köpfe and 60 Sektoren würden also als 5000/250/60 eingegeben. Schließen Sie die Eingabe mit Enter ab und drücken Sie W, um die neue Partitionstabelle auf die Festplatte schreiben zu lassen. Ein anderes Betriebssystem hat meinen Bootmanager zerstört. Wie kann ich ihn wiederherstellen? Starten Sie &man.sysinstall.8; und wählen Sie Configure, dann Fdisk. Wählen Sie die Platte, auf der sich der Boot Manager befand, mit der Leertaste aus. Drücken Sie W, um die Änderungen auf die Platten schreiben zu lassen. Nun erscheint eine Abfrage, welcher Bootmanager installiert werden soll. Wählen Sie diesen an und er wird wieder installiert.
Kommerzielle Anwendungen Dieser Abschnitt ist immer noch sehr dürftig, aber wir hoffen natürlich, daß Unternehmen einen Beitrag leisten werden! :) Die FreeBSD-Gruppe hat keinerlei finanzielle Interessen an einem der hier aufgelisteten Unternehmen, sondern listet sie lediglich als öffentlichen Service auf (und ist der Meinung, daß ein kommerzielles Interesse an FreeBSD sehr positive Einfluß auf ein langfristiges Bestehen von FreeBSD haben kann). Wir möchten Anbieter kommerzieller Software dazu aufrufen, ihren Eintrag hier aufnehmen zu lassen. Auf der Anbieter-Seite finden Sie eine längere Liste. Wo bekommen ich FreeBSD-Versionen der klassischen Büro-Anwendungen? Die FreeBSD Mall bietet eine FreeBSD-Version von VistaSource ApplixWare 5 an. ApplixWare ist eine umfassende Sammlung von Büroanwendungen, die eine Textverarbeitung, eine Tabellenkalkulation, ein Programm für Vorträge, ein Vektorzeichenprogramm und diverse andere Programme beinhaltet. Sie können die FreeBSD-Version von ApplixWare online bestellen. Die Linux-Version von StarOffice läuft unter FreeBSD problemlos. Die einfachste Möglichkeit zur Installation der Linux-Version von Staroffice ist die Benutzung der FreeBSD Ports. Zukünfte Versionen der im Sourcecode vorliegenden Variante OpenOffice sollten auch problemlos funktionieren. Woher kann ich Motif für FreeBSD bekommen? Der Quelltext für Motif 2.1.30 wurde von der Open Group herausgegeben. Sie können entweder das Package open-motif installieren oder es mit dem entsprechenden Port selbst compilieren. Weitere Informationen über die Benutzung der Ports erhalten Sie im Kapitel Ports des Handbuchs. Die Open Motif Distribution darf nur weitergegeben werden, wenn sie auf einem Open Source Betriebssystem benutzt wird. Weiterhin gibt es auch kommerzielle Motif-Paket, die zwar nicht kostenlos sind, aber dafür auch mit closed source Software benutzt werden dürfen. Um die günstigste ELF-Motiv 2.1.20 Distribution für FreeBSD (entweder i386 oder Alpha) zu bekommen, wenden Sie sich bitte an Apps2go. Es gibt zwei Distributionen, die developement edition und die runtime edition (wesentlich günstiger). Diese Distributionen enthalten: OSF/Motif manager, xmbind, panner, wsm. Development-Kit mit uil, mrm, xm, xmcxx, Include- und Imake-Dateien. Statische und dynamische ELF-Bibliotheken (zur Benutzung mit FreeBSD 3.0 und höher). Demonstrations-Applets. Achten Sie darauf, daß Sie bei der Bestellung angeben, daß Sie die FreeBSD-Version von Motif möchten (vergessen Sie auch nicht, die Architektur anzugeben)! Von Apps2go werden auch Versionen für NetBSD und OpenBSD verkauft. Dieses Produkt ist zur Zeit nur zum Download per FTP verfügbar. Weitere Informationen Apps2go Web-Seite oder sales@apps2go.com oder support@apps2go.com oder Telefon (817) 431 8775 oder +1 817 431-8775 Eine Motif 2.1-Distribution für FreeBSD im ELF- oder a.out-Format ist bei Metro Link erhältlich. Diese Distribution enthält: OSF/Motif manager, xmbind, panner, wsm. Development-Kit mit uil, mrm, xm, xmcxx, Include- und Imake-Dateien. Statische und dynamische Bibliotheken (verlangen Sie ELF zur Verwendung unter FreeBSD ab 3.0 und oder a.out zur Verwendung unter FreeBSD bis einschließlich 2.2.8). Demonstrations-Applets. Vorformatierte Manualpages. Achten Sie darauf, bei der Bestellung anzugeben, daß Sie die FreeBSD-Version von Motiv möchten! Metro Link vertreibt auch Versionen für Linux. Dieses Produkt ist entweder als CDROM oder zum Download per FTP erhätlich. Eine Motif 2.0 Distribution für FreeBSD im a.out-Format gibt es bei Xi Graphics. Diese Distribution enthält:/ OSF/Motif manager, xmbind, panner, wsm. Development-Kit mit uil, mrm, xm, xmcxx, Include- und Imake-Dateien. Statische und dynamische Bibliotheken (zur Verwendung unter FreeBSD 2.2.8 und frühere). Demonstrations-Applets. Vorformatierte Manualpages. Achten Sie darauf, bei der Bestellung anzugeben, daß Sie die FreeBSD-Version von Motiv möchten! Xi Graphics verkauft auch Versionen für BSDI und Linux. Dieses Produkt ist derzeit ein Satz von vier Disketten... zukünftig wird es eine einheitliche CD-Distribution geben, wie beim CDE. Woher kann ich CDE für FreeBSD bekommen? Xi Graphics hat einmal CDE für FreeBSD verkauft, tut es aber nicht mehr. KDE ist ein Open-Source X11-Desktop, das CDE in vielen Punkten ähnelt. Eventuell gefällt Ihnen auch das "Look and Feel" von xfce. KDE und xfce sind über das Ports-System von FreeBSD verfügbar. Gibt es irgendwelche kommerzielle leistungsfähige X-Server? Ja, Xi Graphics und Metro Link vertreiben beschleunigte X-Produkte für FreeBSD und andere Intel-basierte Systeme. Das Angebot von Metro Link besteht aus einem leistungsfähigen X-Server, der einfache Konfiguration unter Verwendung von Werkzeugen aus der FreeBSD-Paketsammlung und Unterstützung für den parallelen Einsatz mehrerer Videokarten bietet. Es wird nur in binärer Form über ein bequemes FTP-Download vertrieben. Ganz zu schweigen davon, daß das Angebot von Metro Link zum sehr günstigen Preis von 39 Dollar erhältlich ist. Metro Link bietet auch Motif für FreeBSD sowohl im ELF-, als auch im a.out-Format an (siehe oben). Weitere Informationen Metro Link Web-Seite oder sales@metrolink.com oder tech@metrolink.com oder Telefon (954) 938-0283 oder +1 954 938-0283 Das Angebot von Xi Graphics besteht aus einem leistungsfähigen X-Server, der einfache Konfiguration und Unterstützung für den parallelen Einsatz mehrerer Videokarten bietet. Es wird in binärer Form in einer einheitlichen Diskettendistribution für FreeBSD und Linux vertrieben. XI Graphics bietet auch leistungsfähige X-Server, die auf die Unterstützung von Laptops zugeschnitten sind. Es gibt ein kostenloses Kompatibilitäts-Demo der Version 5.0. Xi Graphics vertreibt auch Motif und CDE für FreeBSD (siehe oben). Weitere Informationen Xi Graphics Web-Seite oder sales@xig.com oder support@xig.com oder Telefon (800) 946 7433 oder +1 303 298-7478. Gibt es irgendwelche Datenbanksysteme für FreeBSD? Ja! Lesen Sie den Abschnitt kommerzielle Anbieter auf der FreeBSD-Web-Seite. Schauen Sie auch im Abschnitt Datenbanken der Ports-Sammlung nach. Kann ich Oracle unter FreeBSD laufen lassen? Ja. Die folgenden Seiten beschreiben genau, wie Linux-Oracle unter FreeBSD einzustellen ist: http://www.scc.nl/~marcel/howto-oracle.html http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd Benutzerprogramme Nun, wo sind die ganzen Benutzerprogramme? Werfen Sie bitte einen Blick auf die Ports-Seite, um Informationen über die nach FreeBSD portierten Softwarepakete zu erhalten. Die Liste enthält zur Zeit 3400 Einträge und wächst täglich. Schauen Sie hier also öfter nach oder melden Sie sich bei der Mailingliste freebsd-announce an, um sich regelmäßig über Änderungen zu informieren. Die meisten Ports sind für die Zweige 2.2, 3.0 und 4.x erhältlich; viele von ihnen sollten auch auf 2.1.x-Systemen laufen. Jedesmal, wenn ein FreeBSD-Release erstellt wird, wird auch ein Snapshot des Port-Baumes vom Zeitpunkt des Releases in das Verzeichnis ports/ eingefügt. Wir unterstützen auch das Konzept von Packages - im Grunde genommen nicht mehr als gezippte Binärdistributionen mit ein wenig zusätzlicher Intelligenz zur Ermöglichung angepaßter Installationen. Ein Package kann leicht installiert und wieder deinstalliert werden, ohne, daß man etwas über wissen muß, welche Dateien es enthält. Benutzen Sie das Paketinstallationsmenue in /stand/sysinstall (unter dem Menuepunkt post-configuration) oder führen Sie den Befehl &man.pkg.add.1; mit den speziellen Paketdateien aus, die Sie installieren möchten. Paketdateien können für gewöhnlich an der Endung .tgz erkannt werden und diejenigen, die über eine CDROM-Distribution verfügen, haben auf ihrer CD ein Verzeichnis packages/All, das solche Dateien enthält. Für verschiedene FreeBSD-Versionen können sie von folgenden Adressen auch über das Netz heruntergeladen werden: für 2.2.8-RELEASE/2.2.8-STABLE ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/ für 3.X-RELEASE/3.X-STABLE ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/ für 4.X-RELEASE/4-STABLE ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/ für 5.0-CURRENT ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/ oder von Ihrem nächstgelegenen Mirror. Beachten Sie, daß nicht alle Ports als Package verfügbar sind, da ständig neue hinzugefügt werden. Es ist immer eine gute Idee, sich regelmäßig auf der ftp.de.FreeBSD.org Masterseite darüber zu informieren, welche Packages verfügbar sind. Wo finde ich libc.so.3.0? Sie versuchen, ein Package für 2.2 oder neuer auf einem 2.1.x-System laufen zu lassen. Bitte lesen Sie den vorherigen Abschnitt und besorgen Sie sich den passenden Port/das passende Package für Ihr System. Wieso erhalte ich die Meldung Error: can't find libc.so.4.0? Sie haben versehentlich ein Package für ein 4.X- oder 5.X-System heruntergeladen und versucht, es auf einem 2.X- oder 3.X-System zu benutzen. Bitte besorgen Sie sich die für ihr System korrekte Version des Packages. Warum produziert ghostscript auf meinem 386/486SX so viele Fehlermeldungen? Sie haben keinen mathematischen Co-Prozessor, richtig? Sie werden den alternativen mathematischen Emulator zu Ihren Kernel hinzufügen müssen; tun Sie das, indem Sie die folgende Zeile in Ihre Kernelkonfigurationsdatei einfügen, wodurch der Emulator in den Kernel kompiliert wird: options GPL_MATH_EMULATE Sie müssen die Option MATH_EMULATE hierzu entfernen. Wieso werden mir Fehler bei socksys gemeldet, wenn ich eine SCO/iBCS2-Anwendung laufen lasse? (nur für FreeBSD 3.0 und ältere Systeme) Sie müssen zunächst den letzten Abschnitt der Datei /etc/sysconfig (oder /etc/rc.conf) editieren und die folgende Variable auf YES setzen: # Set to YES if you want ibcs2 (SCO) emulation loaded at startup ibcs2=NO Hierdurch wird das Kernelmodul ibcs2 beim Hochfahren geladen. Dann müssen Sie /compat/ibcs2/dev so einrichten: lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys -rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx socksys kann einfach auf /dev/null zeigen, um open & close eine reguläre Datei vorzutäuschen. Der code in -CURRENT wird sich um den Rest kümmern. Dieses Vorgehen ist wesentlich sauberer, als bisher. Falls Sie den Treiber spx für lokale Socket-X-Verbindungen möchten, definieren Sie SPX_HACK, wenn Sie das System kompilieren. Wie konfiguriere ich INN (Internet News) für meine Maschine? Ein idealer Startpunkt nach der Installation des Packages oder Ports INN ist Dave Barr's INN-Seite, wo Sie die INN-FAQ finden. Welche Version von Microsoft FrontPage sollte ich mir besorgen? Benutzen Sie den Port! Im Ports-Verzeichnis gibt es eine vorbereitete Version von Apache. Unterstützt FreeBSD Java? Ja. Schauen Sie bitte hier http://www.de.FreeBSD.org/java/ nach. Warum kann ich manche Ports auf meiner 3.X-STABLE-Machine nicht erstellen? Wenn Sie eine FreeBSD-Version benutzen, die deutlich älter als das aktuelle -CURRENT oder -STABLE ist, könnte es sein, daß Sie ein Ports-Upgrade-Kit von http://www.de.FreeBSD.org/ports/ benötigen. Wenn Sie auf dem neuesten Stand sind, könnte es sein, daß jemand eine Änderung des Ports durchgeführt hat, die für -CURRENT funktioniert, den Port für -STABLE aber unbrauchbar gemacht hat. Bitte senden Sie einen Fehlerbericht mit dem Befehl &man.send-pr.1;. Von der Ports-Sammlung wird nämlich erwartet, daß sie sowohl auf -CURRENT als auch auf -STABLE funktioniert. Wo finde ich ld.so? Wenn Sie aout-Anwendungen wie den Netscape-Navigator auf einer ELF-basierten Maschine wie 3.1-R oder spätere laufen lassen möchten, werden Sie /usr/libexec/ld.so und einige aout-Bibliotheken benötigen. Sie sind in der Distribution compat22 enthalten. Benutzen Sie /stand/sysinstall oder install.sh im Unterverzeichnis compat22, um sie zu installieren. Lesen Sie auch die ERRATAs für 3.1-R und 3.2-R. Ich habe die Sourcen aktualisiert, wie aktualisiere ich jetzt die installierten Ports? Leider gibt es keine einfache Methode, um die installierten Ports zu aktualisieren. Sie können mit &man.pkg.version.1; ein Script erzeugen, das die installieren Ports mit einer neueren Version aus der Ports-Sammlung ersetzt: &prompt.root; pkg_version > /tmp/myscript Das so erzeugte Script muß manuell geändert werden, bevor es benutzt wird. Die aktuelle Version von &man.pkg.version.1; erzwingt dies, indem sie ein &man.exit.1; an den Anfang des Scripts setzt. Sie sollten die Ausgaben des Scripts abspeichern, da sie Ihnen melden werden, welche Ports von den dem gerade aktualisierten Port abhängen. Es ist möglich, daß diese auch aktualisiert werden müssen. Der typische Fall, in dem ein Update erforderlich ist, ist eine Änderung der Versionsnummer einer shared library; in diesem Fall müssen die abhängigen Ports neu übersetzt werden, damit sie die neue Library nutzen. Wenn Ihr System rund um die Uhr läuft, kann es jede Woche automatisch eine Liste der Ports erzeugen, die wahrscheinlich aktualisert werden müssen. Fügen Sie dazu weekly_status_pkg_enable="YES" in /etc/periodic.conf ein. Warum ist /bin/sh so spartanisch? Warum benutzt FreeBSD nicht die bash oder eine ähnliche Shell? Weil der POSIX-Standard definiert, daß es so eine Shell geben muß. Die ausführlichere Antwort: Viele Leute müssen Shell-Programme schreiben, die auf vielen verschiedenen Systemen nutzbar sein müssen. Aus diesem Grund enthält der POSIX-Standard eine sehr detaillierte Definition der Shell und der Hilfsprogramme. Die meisten Programme werden für die Bourne Shell geschrieben; außerdem nutzen mehrere wichtige Schnittstellen (&man.make.1;, &man.system.3;, &man.popen.3; und ihre Entsprechungen in höheren Programmiersprachen wie Perl und Tcl) die Bourne Shell, um Befehle auszuführen. Da die Bourne Shell an so vielen Stellen und so häufig genutzt wird, muß sie die folgenden Anforderungen erfüllen: Schneller Start, ein klar definiertes Verhalten und ein möglichst geringer Speicherverbrauch. Wir haben bei der vorliegenden Implementierung versucht, möglichst viele dieser Anforderungen zu erfüllen. Um /bin/sh nicht zu groß werden zu lasen, haben wir viele der Annehmlichkeiten der anderen Shells weggelassen. Aus diesem Grund gibt es in den Ports die luxuriöseren Shells wie bash, scsh, tcsh und zsh. Vergleichen Sie einfach mal den Speicherverbrauch der verschiedenen Shells, indem Sie ps -u aufrufen und sich die Angaben in den Spalten VSZ und RSS ansehen. Kernelkonfiguration Ich möchte meinen Kernel anpassen. Ist das schwierig? Überhaupt nicht! Lesen Sie den Abschnitt zur Kernelkonfiguration im Handbuch. Sie sollten einen datierten Snapshot Ihres Kernels als kernel.YYMMDD zu erstellen, nachdem Sie alles zum Laufen gebracht haben. Auf diese Weise können Sie diesen Kernel hochfahren, anstatt den ganzen Weg zurück zu kernel.GENERIC gehen zu müssen, wenn Sie das nächste Mal mit Ihrer Konfiguration herumexperimentieren und dabei etwas falsch machen sollten. Das ist besonders wichtig, wenn Sie nun von einem Controller booten, der vom GENERIC-Kernel nicht unterstützt wird. Was kann ich machen, wenn meine Kernel-Kompilierungen fehlschlagen, weil _hw_float fehlt? Lassen Sie mich raten. Sie haben npx0 aus Ihrer Konfigurationsdatei entfernt, weil Sie keinen mathematischen Co-Prozessor besitzen, richtig? Falsch! :-) npx0 ist zwingend erforderlich. Auch, wenn Sie keinen mathematischen Co-Prozessor besitzen, müssen Sie das Gerät npx0 einbinden. Warum ist mein Kernel so groß (über 10 MByte)? Sie haben Ihren Kernel wahrscheinlich im Debug Modus erstellt. Ein Debug-Kernel enthält viele zusätzliche Informationen für die Fehlersuche, daher ist er so groß. Bitte beachten Sie, daß die Verwendung eines Debug-Kernels bei FreeBSD 3.0 und neueren Version die Performance des Systems nicht oder nur minimal reduziert; außerdem ist es für den Fall einer system panic sehr praktisch, einen Debug-Kernel zur Hand zu haben. Wenn Ihnen allerdings der Plattenplatz ausgeht oder Sie einfach rein prinzipiell keinen Debug-Kernel benutzen wollen, müssen die beiden folgenden Bedingungen erfüllt sein: Die Konfigurationsdatei für Ihren Kernel darf die folgende Zeile nicht enthalten: makeoptions DEBUG=-g Sie dürfen &man.config.8; nicht mit dem Parameter starten. Sollten Sie sich nicht an diese Einschränkungen halten, wird Ihr Kernel im Debug-Modus erstellt. Solange Sie sich an diese Einschränkungen halten, können Sie Ihren Kernel ganz normal erstellen und die Größe des Kernels sollte deutlich sinken. Ein normaler Kernel ist nur 1.5 MByte bis 2 MByte groß. Wieso erhalte ich Meldungen über Interrupt-Konflikte, wenn ich eine Karte mit mehreren seriellen Schnittstellen einsetzen will? Wenn ich einen Kernel mit Unterstützung für serielle Multi-Port-Schnittstellen kompiliere, bekomme ich den Hinweis, daß nur der erste Port geprüft wird und die restlichen auf Grund von Interrupt-Konflikten übersprungen werden. Wie kann ich das Beheben? Das Problem besteht darin, daß in FreeBSD Code integriert ist, um den Kernel vor Abstürzen aufgrund von Hardware- oder Software-Konflikten zu bewahren. Behoben wird es, indem die IRQ-Angaben für alle Ports, bis auf einen ausgelassen werden. Hier ist ein Beispiel: # # 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 Wieso kann ich nicht einmal den Standard-Kernel (GENERIC) bauen? Es gibt eine Reihe von möglichen Ursachen für dieses Problem: Sie benutzen die neuen Kommandos make buildkernel und make installkernel nicht, obwohl die Sourcen auf Ihrem System nicht zum laufenden System passen (z.B. benutzen Sie die Sourcen von 4.3-RELEASE auf einem System mit 4.0-RELEASE). Wenn Sie ein Upgrade durchführen wollen, sollten Sie /usr/src/UPDATING lesen, beachten Sie insbesondere den Abschnitt COMMON ITEMS gegen Ende des Dokuments. Sie benutzen zwar make buildkernel und make installkernel, aber Sie haben nicht darauf geachtet, daß vorher ein komplettes make buildworld durchgelaufen sein muß. Um seine Arbeit erledigen zu können, benötigt make buildkernel Dateien, die von make buildworld erzeugt werden. Auch wenn Sie FreeBSD-STABLE verwenden, ist es durchaus möglich, daß Sie die Sourcen genau zum falschen Zeitpunkt aktualisiert haben: Während Sie gerade modifiziert wurden oder kurzzeitig fehlerhaft waren. Eine absolute und vollständige Garantie, daß Sie die Sourcen compilieren können, gibt es nur für die Releases, bei FreeBSD-STABLE ist das nicht immer so. Wenn Sie es noch nicht versucht haben, sollten Sie ihre Source nochmals aktualisieren. Es ist denkbar, daß der von Ihnen genutzte Server zur Zeit Probleme hat, benutzten Sie daher testweise auch einmal einen anderen Server. Systemadministration Wo befinden sich die Konfigurationsdateien für den Systemstart? Für die Versionen 2.0.5R bis 2.2.1R heißt die primäre Konfigurationsdatei /etc/sysconfig. Alle Optionen müssen in dieser Datei angegeben werden und andere Dateien wie /etc/rc und /etc/netstart übernehmen sie einfach hieraus. Sehen Sie in die Datei /etc/sysconfig und ändern Sie die Werte entsprechend Ihrem System. Diese Datei enthält Kommentare, die die möglichen Einstellungen erklären. In den Versionen nach 2.2.1 und 3.0 erhielt /etc/sysconfig den aussagekräftigeren Namen &man.rc.conf.5; und die Syntax wurde bei dieser Gelegenheit auch etwas bereinigt. /etc/netstart wurde ebenfalls in /etc/rc.network umbenannt, so daß alle Dateien nun mit dem Befehl cp /usr/src/etc/rc* /etc kopiert werden können. Seit FreeBSD 3.1 ist rc.conf als /etc/defaults/rc.conf verfügbar. Ändern Sie diese Datei nicht! Wenn Sie den Wert einer der in /etc/defaults/rc.conf gesetzten Variablen ändern wollen, sollten Sie die entsprechende Zeile an die Datei /etc/rc.conf anfügen und sie dort ändern. Wenn Sie zum Beispiel den ab FreeBSD 3.1 mitgelieferten DNS Server named aktivieren wollen, müssen Sie lediglich das folgende Kommando eingeben: &prompt.root; echo named_enable="YES" >> /etc/rc.conf Wenn Sie in FreeBSD 3.1 und späteren Versionen lokale Server starten wollen, müssen Sie passende Shellscripts im Verzeichnis /usr/local/etc/rc.d/ ablegen. Die Dateien müssen als ausführbar markiert sein und die Endung .sh haben. Wenn Sie FreeBSD 3.0 oder eine noch ältere Version benutzen, müssen Sie die Datei /etc/rc.local ändern. Die Datei /etc/rc.serial dient zur Initialisierung serieller Schnittstellen (z.B. Einstellung der Schnittstelleneigenschaften usw.). Die Datei /etc/rc.i386 dient für Intel-spezifische Einstellungen wie iBCS2-Emulation oder Konfiguration der PC-Systemkonsole. Wie kann ich am Einfachsten einen Benutzer hinzufügen? Benutzen Sie den Befehl &man.adduser.8; und für kompliziertere Fälle den Befehl &man.pw.8;. Benutzen Sie den Befehl &man.rmuser.8;, um einen Benutzer wieder zu löschen. Sie können hierzu auch &man.pw.8; benutzen. Wie kann ich meine neue Festplatte in mein FreeBSD-System einbinden? Lesen Sie das Tutorial zur Festplattenformatierung unter www.de.FreeBSD.org. Ich habe ein Wechsellaufwerk. Wie benutze ich es? Ob es sich um ein Wechsellaufwerk handelt, um ein ZIP- oder ein EZ-Laufwerk (oder sogar ein Diskettenlaufwerk, wenn Sie es auf diese Weise benutzen möchten), oder um eine neue Festplatte - wenn es einmal installiert und vom System erkannt ist und Sie Ihre Kassete/Diskette/was_auch_immer eingelegt haben, ist das Vorgehen bei allen Geräten ziemlich ähnlich. (dieser Abschnitt basiert auf Mark Mayo's ZIP-FAQ) Wenn es sich um ein ZIP- oder Diskettenlaufwerk handelt, und sich bereits ein DOS-Dateisystem darauf befindet, können Sie einen Befehl wie diesen für eine Diskette benutzen: &prompt.root; mount -t msdos /dev/fd0c /floppy oder diesen: &prompt.root; mount -t msdos /dev/da2s4 /zip für eine ZIP-Disk mit der Herstellerkonfiguration. Benutzen Sie bei anderen Platten &man.fdisk.8; oder &man.sysinstall.8;, um herauszufinden, wie sie konfiguriert sind. Die restlichen Beispiele sind für ein ZIP-Laufwerk unter da2, der dritten SCSI-Platte. Wenn es sich nicht um eine Diskette oder eine Wechselplatte handelt, die Sie mit anderen Leuten austauschen wollen, ist es wahrscheinlich besser, ein BSD-Dateisystem darauf zu installieren. Hierdurch bekommen Sie Unterstützung für lange Dateinamen, eine mindestens doppelt so hohe Leistungsausnutzung und wesentlich höhere Stabilität. Zunächst müssen Sie die Partitionen/Dateisysteme auf DOS-Ebene nochmals erstellen. Sie können entweder &man.fdisk.8; oder /stand/sysinstall benutzen, oder, bei einem kleinen Laufwerk, dem Sie eine Unterstützung für mehrere Betriebssysteme nicht zumuten wollen, entfernen Sie einfach die komplette FAT Partitionstabelle (Slices) und benutzen Sie einfach die BSD-Partitionierung: &prompt.root; dd if=/dev/zero of=/dev/rda2 count=2 &prompt.root; disklabel -Brw da2 auto Sie können disklabel oder /stand/sysinstall benutzen, um mehrere BSD-Partitionen zu erstellen. Dies werden Sie sicherlich bei einer fest eingebauten Platte wollen, aber bei einem Wechsellaufwerk wie einem ZIP ist das wahrscheinlich irrelevant. Zum Schluß erstellen Sie ein neues Dateisystem - dieses befindet sich auf unserem ZIP-Laufwerk und belegt die gesamte Platte: &prompt.root; newfs /dev/rda2c anschließend mounten Sie es: &prompt.root; mount /dev/da2c /zip Und sicherlich ist es keine schlechte Idee, eine Zeile ähnlich der folgenden in die Datei /etc/fstab einzufügen, damit Sie in Zukunft nur mount /zip einzugeben brauchen: /dev/da2c /zip ffs rw,noauto 0 0 Warum erhalte ich Meldungen wie root: not found, nachdem ich meine crontab geändert habe? Die übliche Ursache dieses Problems ist, daß Sie die crontab des Systems (/etc/crontab) geändert und dann mit &man.crontab.1; installiert haben: &prompt.root; crontab /etc/crontab Diese Vorgehensweise ist falsch. Die crontab des Systems hat ein anderes Format als die crontabs für die einzelnen Benutzer, die mit &man.crontab.1; aktualisiert werden (genauere Informationen über die Unterschiede erhalten Sie in &man.crontab.5;). Wenn Sie so vorgegangen sind, ist die zweite crontab einfach nur eine Kopie von /etc/crontab, allerdings im falschen Format. Löschen Sie sie mit dem folgenden Befehl: &prompt.root; crontab -r Wenn Sie /etc/crontab wieder ändern müssen, sollten Sie einfach gar nichts tun, um &man.cron.8; über die Änderung zu informieren, er erkennt die Änderung automatisch. Wenn Sie ein Kommando jeden Tag, jede Woche oder jeden Monat ausführen lassen wollen, ist es wahrscheinlich einfacher, wenn Sie entsprechende Shell-Scripte in /usr/local/etc/periodic ablegen. Diese werden dann von &man.periodic.8; zusammen mit den anderen regelmäßigen Tätigkeiten ausgeführt. Der eigentliche Grund für den Fehler ist die Tatsache, daß die crontab des Systems ein zusätzliches Feld enthält; dieses Feld gibt an, mit welcher Benutzerkennung der Befehl ausgeführt werden soll. In der mitgelieferten crontab ist das bei allen Einträgen die Benutzerkennung root. Wenn diese Datei als die crontab des Benutzers username (die nicht mit der crontab des Systems identisch ist) verwendet wird, hält &man.cron.8; die Zeichenkette root für den Namen des zu startenden Programmes, aber dieses Programm gibt es nicht. Wieso meldet mir &man.su.1; you are not in the correct group to su root, wenn ich mit &man.su.1; root werden will? Das ist ein Sicherheits-Feature. Wenn Sie mit &man.su.1; zum Account root (oder jedem anderen Account mit Super-User-Privilegien) wechseln wollen, müssen Sie ein Mitglied der Gruppe wheel sein. Wenn es dieses Feature nicht gäbe, könnte jeder, der einen Account auf dem System hat und zufällig das Paßwort für root erfährt, mit Super-User-Rechten auf das System zugreifen. Durch dieses Feature ist die Lage anders, wenn Sie nicht Mitglied von wheel sind, können Sie nicht einmal versuchen, daß Paßwort einzugeben. Um einem Benutzer zu erlauben, mit &man.su.1; root zu werden, müssen Sie ihn nur in die Gruppe wheel eintragen. Ich habe einen Fehler in der rc.conf oder einer der anderen Dateien für den Systemstart und jetzt kann ich sie nicht ändern, weil das Dateisystem read-only ist. Was kann ich tun? Wenn Sie aufgefordert werden, den Pfadnamen der Shell einzugeben, drücken Sie einfach ENTER. Geben Sie danach mount / ein, um das root Dateisystem im Schreib/Lese-Modus zu mounten. Sie werden wahrscheinlich auch mount -a -t ufs ausführen müssen, um das Dateisystem mit Ihrem Lieblingseditor zu mounten. Wenn Ihr Lieblingseditor auf einem Netzwerklaufwerk liegt, müssen Sie entweder das Netzwerk von Hand konfigurieren oder einen Editor benutzen, der auf einem lokalen Laufwerk vorhanden ist, z.B. &man.ed.1;. Wenn Sie einen bildschirmorientierten Editor wie zum Beispiel &man.vi.1; oder &man.emacs.1; benutzen wollen, werden Sie auch den Befehl export TERM=cons25 ausführen müssen, damit diese Editoren die richtigen Einstellungen aus der Datenbank &man.termcap.5; übernehmen. Sobald Sie diese Schritte ausgeführt, können Sie den Fehler in der /etc/rc.conf ganz normal beheben. Die Fehlermeldungen, die Ihnen unmittelbar nach den Startmeldungen des Kernels angezeigt wurden, sollten Ihnen die Nummer der Zeile mit dem Fehler melden. Wie mounte ich eine erweiterte DOS-Partition? Die erweiterten DOS-Partitionen befinden sich hinter ALLEN primären Partitionen. Wenn sich zum Beispiel eine Partition E als sekundäre DOS-Partition auf Ihrem zweiten SCSI-Laufwerk befindet, müssen Sie die speziellen Dateien für Slice 5 im Verzeichnis /dev erstellen und dann /dev/da1s5 mouten: &prompt.root; cd /dev &prompt.root; ./MAKEDEV da1s5 &prompt.root; mount -t msdos /dev/da1s5 /dos/e Kann ich andere fremde Dateisysteme unter FreeBSD mounten? Digital UNIX UFS-CDROMs können unter FreeBSD direkt gemountet werden. Das Mounten von Partitionen von Digital UNIX und anderen Systemen, die UFS unterstützen, könnte schwieriger sein, abhängig von den Details der Plattenpartitionierung des betreffenden Betriebssystems. Linux FreeBSD unterstützt seit Version 2.2 ext2fs-Partitionen. Unter &man.mount.ext2fs.8; finden Sie weitere Informationen. NT Es gibt einen NTFS-Treiber, der nur Lesezugriffe gestattet. Weitere Informationen finden Sie im Tutorium von Mark Ovens unter http://ukug.uk.freebsd.org/~mark/ntfs_install.html. Für weitere Informationen zu diesem Thema wären wir sehr dankbar. Wie kann ich den NT-Loader zum Booten von FreeBSD verwenden? Diese Prozedur unterscheidet sich für die Systeme 2.2.x and 3.x (mit dem dreistufigen Bootprozeß) geringfügig. Das grundsätzliche Vorgehen besteht darin, daß Sie den ersten Sektor Ihrer eigentlichen FreeBSD-Rootpartition in eine Datei auf der DOS/NT-Partition kopieren. Angenommen, sie nennen die Datei etwa c:\bootsect.bsd (durch c:\bootsect.dos inspiriert), dann können Sie die Datei c:\boot.ini etwa wie folgt editieren: [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" Bei 2.2.x-Systemen wird für diese Prozedur angenommen, daß DOS, NT, FreeBSD oder was auch immer, in den entsprechenden Partitionen auf derselben Platte installiert wurden. Das untenstehende Beispiel wurde auf einem System getestet, auf dem DOS & NT in der ersten und FreeBSD in der zweiten fdisk-Partition installiert waren. Zusätzlich wurde FreeBSD so installiert, daß es von seiner Partition bootet, und nicht vom MBR. Mounten Sie eine DOS-formatierte Diskette (falls Sie nach NTFS gewechselt haben) oder die FAT-Partition z.B. unter /mnt. &prompt.root; dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1 Rebooten Sie mit DOS oder NT. Benutzer von NTFS kopieren nun die Dateien bootsect.bsd und/oder bootsect.lnx von der Diskette nach C:\. Ändern Sie die Attribute (Rechte) von boot.ini mit: C:\>attrib -s -r c:\boot.ini Editieren Sie nun die Datei und fügen Sie die entsprechenden Einträge aus dem obigen boot.ini-Beispiel hinzu und setzen dann wieder die alten Attribute: C:\>attrib +s +r c:\boot.ini Falls FreeBSD vom MBR bootet, restaurieren Sie den MBR mit dem DOS-Befehl fdisk, nachdem Sie FreeBSD so umkonfiguriert haben, daß es von seiner Partition bootet. Für die FreeBSD-Systeme 3.x ist die Prozedur etwas einfacher. Falls FreeBSD auf derselben Platte, wie die NT-Bootpartition installiert ist, kopieren Sie einfach /boot/boot1 nach C:\BOOTSECT.BSD. Falls FreeBSD auf einer anderen Platte installiert ist, wird /boot/boot1 nicht funktionieren; Sie brauchen in diesem Fall /boot/boot0. SIE DÜRFEN AUF GAR KEINEN FALL EINFACH /boot/boot0 STATT /boot/boot1 KOPIEREN. WENN SIE DAS DOCH TUN SOLLTEN, WIRD IHRE PARTITIONSTABELLE ÜBERSCHRIEBEN UND IHR RECHNER WIRD NICHT MEHR STARTEN! /boot/boot0 muß mit sysinstall installiert werden. Wählen Sie dazu den FreeBSD-Bootmanager aus, wenn Sie gefragt werden, ob sie einen Bootmanager installieren wollen. Dieser Schritt ist notwendig, weil /boot/boot0 eine leere Partitionstabelle enthält, die von sysinstall ausgefüllt wird, bevor /boot/boot0 in den MBR kopiert wird. Wenn der Bootmanager von FreeBSD gestartet wird, merkt er sich das zuletzt gestartet Betriebssystem, indem er dessen Partition als aktiv markiert. Danach kopiert er sich selbst (alle 512 Bytes) in den MBR. Wenn Sie also einfach /boot/boot0 nach C:\BOOTSECT.BSD kopieren, würde der Bootmanager eine leere Partitionstabelle (mit einem als aktiv markiertem Eintrag) in den MBR kopieren. Wie boote ich FreeBSD und Linux mit LILO? Falls sich FreeBSD und Linux auf derselben Platte befinden, folgen Sie einfach den Installationsanweisungen von LILO zum booten eines Nicht-Linux-Betriebssystems. Ganz knapp sind dies: Booten Sie Linux und fügen Sie die folgenden Zeilen in die Datei /etc/lilo.conf ein: other=/dev/hda2 table=/dev/hda label=FreeBSD (hierbei wird angenommen, daß Ihre FreeBSD-Partition Linux unter /dev/hda2 bekannt ist; ändern Sie dies entsprechend Ihren Einstellungen). Führen Sie nun als root den Befehl lilo aus und Sie sind fertig. Falls FreeBSD sich auf einer anderen Platte befindet, müssen Sie loader=/boot/chain.b zu den LILO-Angaben hinzufügen. Zum Beispiel: other=/dev/dab4 table=/dev/dab loader=/boot/chain.b label=FreeBSD In einigen Fällen könnte es sein, daß Sie beim FreeBSD-Bootloader die BIOS-Laufwerksnummer angeben müssen, um von der zweiten Platte booten zu können. Wenn Ihre FreeBSD-SCSI-Platte vom BIOS zum Beispiel als BIOS-Platte 1 erkannt wird, müssen Sie am Prompt des FreeBSD-Bootloaders eingeben: Boot: 1:da(0,a)/kernel Seit Version 2.2.5 können Sie &man.boot.8; so konfigurieren, daß das beim Booten automatisch geschieht. Das Linux+FreeBSD mini-HOWTO ist ein guter Ratgeber bei Fragen zur Interaktion von FreeBSD und Linux. Wie boote ich FreeBSD und Linux mit BootEasy? Installieren Sie LILO am Anfang Ihrer Linux-Bootpartition, anstatt im Master Boot Record. Sie können LILO dann von BootEasy aus booten. Wenn Sie Windows-95 und Linux benutzen, wird das ohnehin empfohlen, um es einfacher zu machen, Linux wieder zu booten, wenn es nötig werden sollte, daß Sie Windows95 neu installieren (Windows95 ist ein eifersüchtiges Betriebssystem, das kein anderes Betriebssystem im Master Boot Sektor duldet). Gefährdet eine dangerously dedicated Festplatte meine Gesundheit? Die Installationsprozedur bietet Ihnen zwei verschiedene Methoden, Ihre Festplatte(n) zu partitionieren. Die Standardmethode macht sie kompatibel zu anderen Betriebssystemen auf derselben Maschine, indem fdisk-Tabelleneinträge (unter FreeBSD slices genannt) mit einem FreeBSD-Eintrag, in dem eigene Partitionen untergebracht werden, benutzt werden. Optional kann ausgewählt werden, ob ein Boot-Selektor installiert werden soll, um zwischen den möglichen Betriebssystemen auf der/den Platte(n) wechseln zu können. Bei der zweiten Methode wird die gesamte Platte für FreeBSD genutzt und nicht versucht, kompatibel zu anderen Betriebssystemen zu sein. Nun, warum wird es gefährlich genannt? Eine Platte in diesem Modus enthält nichts, was von normalen PC-Hilfsprogrammen als gültige fdisk-Tabelle betrachtet werden würde. Abhängig von der Qualität ihres Designs werden sie sich bei Ihnen beschweren, sobald sie mit einer solchen Platte in Kontakt kommen, oder noch schlimmer, sie könnten den Bootstrap von FreeBSD beschädigen, ohne Sie zu fragen oder darauf hinzuweisen. Hinzu kommt, daß vom Layout von dangerously dedicated Platten bekannt ist, daß es viele BIOSe verwirrt, einschließlich solcher von AWARD (wie es z.B. im HP Netserver oder Micronics-Systemen, sowie vielen anderen zu finden ist) und Symbios/NCR (für die bekannte 53C8xx-Reihe von SCSI-Controllern). Dies ist keine vollständige Liste - es gibt weitere. Symptome für diese Verwirrung sind read error-Meldungen, die vom FreeBSD-Bootstrap ausgegeben werden, wenn es sich selbst nicht finden kann, sowie Systemabstürze beim Booten. Warum gibt es diesen Modus dann überhaupt? Es spart ein paar kByte an Plattenplatz und kann echte Probleme verursachen, die zu einer Neuinstallation führen. Die Ursprünge des Dangerously dedicated Modus liegen in der Absicht, eines der häufigsten Probleme, das Erstinstallierer von FreeBSD plagt, zu verhindern - die BIOS-Werte für die Geometrie einer Festplatte auf der Festplatte selbst anzupassen. Geometrie ist ein veraltetes Konzept, das aber immer noch die Grundlage für die Interaktion zwischen dem PC-BIOS und den Festplatten ist. Wenn das Installationsprogramm von FreeBSD Slices erstellt, muß es sich die Lage dieser Slices auf der Festplatte in einer Art merken, die damit übereinstimmt, wie das BIOS erwartet, sie zu finden. Wenn das falsch geschieht, werden Sie nicht in der Lage sein, zu booten. Durch den Dangerously dedicated Modus wird versucht, dies zu umgehen, indem das Problem vereinfacht wird. In einigen Fällen klappt das zwar, aber er ist eher als allerletzter Ausweg gedacht - in 99 von 100 Fällen gibt es bessere Möglichkeiten, das Problem zu lösen. Wie vermeiden Sie also die Notwendigkeit zum DD Modus, wenn Sie installieren? Beginnen Sie, indem Sie sich notieren, welche Geometrie das BIOS für Ihre Platten benutzt. Sie können erreichen, daß der Kernel sie beim Booten ausgibt, indem Sie an der Eingabeaufforderung boot: angeben, oder boot -v im Loader verwenden. Kurz bevor das Installationprogramm startet, wird der Kernel eine Liste mit den BIOS-Geometrien ausgeben. Keine Panik - warten Sie, bis das Installationsprogramm gestartet wurde und benutzen Sie Scrollback, um die Zahlen zu lesen. Typischerweise befinden sich die BIOS-Platten in derselben Reihenfolge, wie FreeBSD Ihre Platten auflistet - zuerst IDE, dann SCSI. Wenn Sie Ihre Festplatte in Slices unterteilen, überprüfen Sie, ob die Plattengeometrie, die im FDISK-Menue angegeben ist, korrekt ist (d.h. mit den Einstellungen im BIOS übereinstimmen). Falls die Werte nicht stimmen, benutzen Sie g, um sie zu korrigieren. Diese Schritte sind nötig, wenn sich absolut nichts auf der Festplatte befindet, oder, wenn die Festplatte vorher in einem anderen System benutzt worden ist. Beachten Sie, daß dies nur für die Festplatte nötig ist, von der Sie booten wollen. Mit weiteren vorhandenen Platten wird FreeBSD sich problemlos zurechtfinden. Wenn Sie es geschafft haben, daß das BIOS und FreeBSD in der Festplattengeometrie übereinstimmen, dann sind Ihre Probleme ziemlich sicher vorüber - ohne, daß es nötig gewesen wäre, den DD-Modus zu benutzen. Falls sie jedoch immer noch mit der gefürchteten read error-Meldung begrüßt werden sollten, wenn Sie versuchen, zu booten, wird es Zeit, daß Sie Ihre Finger kreuzen und es einfach versuchen - es gibt nichts mehr zu verlieren. Um eine dangerously dedicated Festplatte wieder für einen normalen PC brauchbar zu machen, gibt es zwei Möglichkeiten. Die erste ist, ausreichend viele NULL-Bytes in den MBR zu schreiben, um irgendwelche nachfolgenden Installation glauben zu machen, daß es sich um eine leere Festplatte handelt. Sie können das zum Beispiel so tun: &prompt.root; dd if=/dev/zero of=/dev/rda0 count=15 Alternativ installiert der undokumentierte DOS-Befehl C:\> fdisk /mbr einen neuen Master-Boot-Record, d.h. der BSD-Bootstrap wird zestört. Wie kann ich den Swap-Bereich vergrößern? Der beste Weg ist, Ihre Swap-Partition zu vergrößern, oder sie nutzen diese bequeme Ausrede, um eine weitere Festplatte einzubauen. Eine gebräuchliche Faustregel ist, einen etwa doppelt so großen Swap-Bereich zu nutzen, wie Hauptspeicher vorhanden ist. Falls Sie jedoch nur über sehr wenig Hauptspeicher verfügen, werden Sie wahrscheinlich einen größeren Swap-Bereich konfigurieren wollen. Es ist auch sinnvoll, genügend Swap-Bereich im Hinblick auf geplante zukünftige Hauptspeichererweiterungen zu konfigurieren, damit Sie sich später nicht mit der Konfiguration Ihres Swap-Bereiches herumärgern müssen. Das Hinzufügen eines Swap-Bereichs auf einer separaten Platte, ist effizienter, als einfach einen Swap-Bereich auf derselben Platte hinzuzufügen. Wenn Sie zum Beispiel Quellcode auf einer Platte kompilieren und der Swap-Bereich sich auf einer anderen Platte befindet, geschieht das viel schneller, als wenn beides, Swapping und Kompilierung auf derselben Platte stattfinden würden. Das trifft ganz besonders auf SCSI-Platten zu. Wenn Sie mehrere Festplatten besitzen, lohnt es sich für gewöhnlich, auf jeder einzelnen einen Swap-Bereich zu konfigurieren, auch, wenn das bedeutet, einen Swap-Bereich auf einer bereits verwendeten Platte einzurichten. Typischerweise sollte jede schnelle Platte in Ihrem System mit etwas Swap-Bereich konfiguriert werden. FreeBSD unterstützt standardmäßig bis zu vier interleaved Swap-Geräte. Bei der Konfiguration mehrerer Swap-Bereiche werden sie grundsätzlich alle mit derselben Größe anlegen wollen, aber manchmal verwenden Benutzer eine größere primäre Swap-Partition, um einen Hauptspeicherauszug vom Kernel darin aufnehmen zu können. Ihre primäre Swap-Partition muß mindestens so groß wie der Hauptspeicher sein, um einen Hauptspeicherauszug vom Kernel aufnehmen zu können. IDE-Laufwerke können keinen gleichzeitigen Zugriff auf beide Laufwerke auf demselben Kanal zuzulassen (FreeBSD unterstützt nicht den Modus 4, also ist jeglicher Lese-/Schreibzugriff auf IDE-Platten programmiert). Trotzdem ist es empfehlenswert, Ihren Swap-Bereich auf einem separaten Laufwerk anzulegen; die Laufwerke sind so günstig, daß es nicht lohnt, sich darüber Gedanken zu machen. Swapping über NFS ist nur zu empfehlen, wenn Sie keine lokale Platte zum Swappen besitzen. Bei FreeBSD-Versionen vor 4.x ist Swapping über NFS langsam und ineffizient, aber erstaunlich schnell bei Versionen größer oder gleich 4.0. Dennoch wird es durch die verfügbare Bandbreite des Netzes begrenzt sein und belastet den NFS-Server zusätzlich. Hier ist ein Beispiel für einen VN-Swap-Bereich von 64MB (/usr/swap0, Sie können natürlich jeden beliebigen Namen benutzen). Stellen Sie sicher, daß Ihr Kernel mit der Zeile pseudo-device vn 1 #Vnode driver (turns a file into a device) in Ihrer Konfigurationsdatei erstellt worden ist. Der Standard-Kernel enthält sie bereits. Erstellen Sie ein vn-Gerät &prompt.root; cd /dev &prompt.root; sh ./MAKEDEV vn0 Erstellen Sie eine Swap-Datei (/usr/swap0) &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 Setzen Sie geeignete Zugriffsrechte für (/usr/swap0) &prompt.root; chmod 0600 /usr/swap0 Aktivieren Sie die Swapdatei in /etc/rc.conf swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. Rebooten Sie die Maschine Um die Swapdatei direkt zu aktivieren, geben Sie folgendes ein: &prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swap Wieso habe ich habe Probleme, meinen Drucker einzurichten? Bitte sehen Sie im Handbucheintrag über Drucker nach. Es sollte die meisten Ihrer Probleme behandeln. Lesen sie den Handbucheintrag über Drucker. Einige Drucker benötigen einen auf dem Rechner laufenden Treiber, um drucken zu können. Diese sogenannten WinPrinter oder GDI-Drucker werden von FreeBSD nicht unterstützt und an diesem Zustand wird sich wohl auch nichts ändern. Wenn Ihr Drucker nicht unter DOS oder Windows NT 4.0 verwendet werden kann, handelt es sich um einen "WinPrinter" und wird in der Regel auch nicht unter FreeBSD funktionieren. Ihre einzige Chance, einen dieser Drucker nutzen können, ist der Port ports/print/pnm2ppa. Die Beschreibung enthält die Aussage:
Dieses programm nutzt zur Ausgabe das PPA (Printer Performance Architecture) Protokoll. Dieses Protokoll wird von einigen "nur-Windows"-Druckern von HP benutzt, zum Beispiel den Modellreihen HP Deskjet 820C, the HP DeskJet 720, and the HP DeskJet 1000.[...] WWW: http://pnm2ppa.sourceforge.net/
Wie kann ich die Tastaturbelegung meines Systems korrigieren? Das Programm kbdcontrol bietet eine Option zum Laden einer Tastaturzuordnungsdatei. Unter /usr/share/syscons/keymaps befinden sich einige Tastaturzuordnungsdateien. Wählen Sie die zu Ihrem System passende aus und laden Sie sie: &prompt.root; kbdcontrol -l uk.iso Die beiden Erweiterungen /usr/share/syscons/keymaps und .kbd werden von &man.kbdcontrol.1; angenommen. Dies kann in der Datei /etc/sysconfig (oder &man.rc.conf.5;) eingestellt werden. Lesen Sie die entsprechenden Hinweise in dieser Datei. Seit 2.0.5-RELEASE befindet sich alles, was mit Textfonts und Tastaturzuordnung zu tun hat, im Verzeichnis /usr/share/examples/syscons. Die folgenden Zuordnungen werden derzeit unterstützt: Belgisch ISO-8859-1 Brasilianische Tastatur 275 Codeseite 850 Brasilianische Tastatur 275 ISO-8859-1 Dänisch Codeseite 865 Dänisch ISO-8859-1 Französisch ISO-8859-1 Deutsch Codeseite 850 Deutsch ISO-8859-1 Italienisch ISO-8859-1 Japanisch 106 Japanisch 106x Lateinamerikanisch Norwegisch ISO-8859-1 Polnisch ISO-8859-2 (für Programmierer) Russisch Codeseite 866 (alternativ) Russisch koi8-r (shift) Russisch koi8-r Spanisch ISO-8859-1 Schwedisch Codeseite 850 Schwedisch ISO-8859-1 Schweizer Deutsch ISO-8859-1 Vereinigtes Königreich Codeseite 850 Vereinigtes Königreich ISO-8859-1 Vereinigte Staaten von Amerika ISO-8859-1 Vereinigte Staaten von Amerika dvorak Vereinigte Staaten von Amerika dvorakx Wieso erhalte ich beim Start des Systems Meldungen wie unknown: <PNP0303> can't assign resources? Die nachfolgende Erklärung stammt aus einer Mail auf der Mailingliste freebsd-current.
&a.wollman;, 24 April 2001 Die Geräte, für die can't assign resources-Meldungen ausgegeben werden, sind "Legacy ISA"-Geräte, für die ein nicht PNP-fähiger Treiber in den Kernel eingebunden wurde. Dabei handelt es sich um Geräte wie den Tastaturkontroller, den programmierbaren Interrupt-Kontroller und diverse andere Standardkomponenten. Die Ressourcen können nicht zugewiesen werden, weil es schon einen Treiber gibt, der diese Ressourcen benutzt.
Wieso funktionieren die Benutzer-Quotas nicht richtig? Benutzen Sie keine Quotas für /, Erstellen Sie die Quotas-Datei in dem Dateisystem, für das die Quotas gelten sollen, z.B.: Filesystem Quota file /usr /usr/admin/quotas /home /home/admin/quotas Was stimmt mit meinem ccd nicht? Das Symptom hierfür ist: &prompt.root; ccdconfig -C ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format Das geschieht für gewöhnlich, wenn Sie versuchen, die Partitionen c, die standardmäß vom Typ unbenutzt sind, zu verbinden. Der ccd-Treiber verlangt Partitionen vom Typ FS_BSDFFS. Editieren Sie den Plattenlabel der Platten, die Sie zu verknüpfen versuchen und ändern Sie die Typen der Partitionen in 4.2BSD. Warum kann ich den Plattenlabel meines ccd nicht editieren? Das Symptom hierfür ist: &prompt.root; disklabel ccd0 (hier wird etwas vernünftiges ausgegeben; versuchen wir nun, es zu editieren) &prompt.root; disklabel -e ccd0 (editiern, speichern, beenden) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label Der Grund ist, daß der von ccd zurückgelieferte Plattenlabel ein vorgetäuschter ist, der sich nicht wirklich auf der Platte befindet. Sie können das Problem beheben, indem Sie ihn explizit zurückschreiben, wie z.B. hier: &prompt.root; disklabel ccd0 > /tmp/disklabel.tmp &prompt.root; disklabel -Rr ccd0 /tmp/disklabel.tmp &prompt.root; disklabel -e ccd0 (nun wird es funktionieren) Unterstützt FreeBSD IPC-Grundfunktionen von System V? Ja, FreeBSD unterstützt IPC im Stil von System V einschließlich gemeinsamen Speicher, Nachrichten und Semaphoren. Zur Aktivierung müssen Sie die folgenden Zeilen in Ihre Kernelkonfigurationsdatei einfügen: options SYSVSHM options SYSVSHM # enable shared memory options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging Diese Variablen sind seit FreeBSD 3.2 schon im Standardkernel (GENERIC) gesetzt und sollte daher Beststandteil Ihres Systems sein. Kompilieren und installieren Sie einen neuen Kernel. Wie benutze ich sendmail zum Zustellen von Mails mit UUCP? Die sendmail-Konfiguration, die mit FreeBSD ausgeliefert wird, ist für Sites geeignet, die direkt ans Internet angeschlossen sind. Sites, die ihre Mail per UUCP austauschen wollen, müssen eine andere sendmail-Konfigurationsdatei installieren. Die manuelle Bearbeitung von /etc/sendmail.cf ist nur etwas für Puristen. Sendmail Version 8 bietet die neue Möglichkeit der Generierung von Konfigurationsdateien über eine Vorverarbeitung mit &man.m4.1;, wobei die tatsächliche, händische Konfiguration auf einer höheren Abstraktionsstufe stattfindet. Sie sollten die Konfigurationsdateien unter /usr/src/usr.sbin/sendmail/cf benutzen. Für den Fall, daß Sie Ihr System nicht mit dem kompletten Quellcode installiert haben, wurden die nötigen Dateien zur Konfiguration von sendmail in einer separaten Quelldistribution für Sie extrahiert. Wenn Sie Ihre CDROM gemountet haben, müssen Sie die folgenden Schritte ausführen: &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmail Keine Panik, das sind nur ein paar hundert Kilobyte. Die Datei README im Verzeichnis cf kann zur grundlegenden Einführung in die m4-Konfiguration dienen. Zur Zustellung über UUCP sind Sie am besten damit beraten, das mailertable-Feature zu nutzen. Es stellt eine Datenbank dar, auf deren Basis sendmail Entscheidungen zum Routing treffen kann. Zunächst müssen Sie Ihre .mc-Datei erstellen. Das Verzeichnis /usr/src/usr.sbin/sendmail/cf/cf ist die Basis für diese Dateien. Sehen Sie sich um, es gibt bereits einige Beispiele. Wenn Sie Ihre Datei foo.mc genannt haben, müssen Sie die folgenden Befehle ausführen, um sie in eine gültige sendmail.cf umzuwandeln, ist: &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/sendmail.cf Eine typische .mc-Datei könnte so aussehen: include(`../m4/cf.m4') VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(nodns) FEATURE(nocanonify) FEATURE(mailertable) define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP Die Einstellungen nodns und nocanonify werden die Benutzung von DNS bei der Zustellung von Mails verhindern. Die Klausel UUCP_RELAY wird aus seltsamen Gründen benötigt - fragen Sie nicht, warum. Setzen Sie dort einfach den Namen eines Hosts ein, der in der Lage ist, Adressen mit der Pseudodomäne .UUCP zu behandeln; wahrscheinlich werden Sie dort den Relayhost Ihres ISP eintragen. Wenn Sie soweit sind, müssen Sie die Datei /etc/mailertable erzeugen. Hierzu wieder ein typisches Beispiel: # # makemap hash /etc/mailertable.db < /etc/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Wie Sie sehen können, handelt es sich um einen Teil einer realen Datei. Die ersten drei Zeilen behandeln spezielle Fälle, in denen an Domänen adressierte Mails nicht über die Standard-Route versendet werden sollen, sondern zu einem UUCP-Nachbarn, um den Zustellweg abzukürzen. Die nächsten Zeilen behandeln Mails Rechner in der Domain, die im lokalen Ethernet verwendet wird. Diese Mails können direkt per SMTP zugestellt werden. Schließlich werden die UUCP-Nachbarn in der Notation mit der Pseudodomäne .UUCP aufgeführt, um die Standardregeln mit uucp-neighbour!recipient zu überschreiben. Die letzte Zeile besteht stets aus einem einzelnen Punkt, der als Ihr Universalgateway in die Welt dient. Alle Knoten hinter dem Schlüsselwort uucp-dom: müssen gültige UUCP-Nachbarn sein, was Sie mit dem Befehl uuname überprüfen können. Als Erinnerung daran, daß diese Datei in eine DBM-Datenbankdatei konvertiert werden muß, bevor sie benutzt werden kann, sollte der Befehl hierzu als Kommentar am Anfang der mailertable plaziert werden. Sie müssen den Befehl jedesmal ausführen, wenn Sie Ihre Mailertable geändert haben. Abschließender Hinweis: wenn Sie unsicher sind, ob bestimmte Mailrouten funktionieren, erinnern Sie sich an die Option von sendmail. Sie startet sendmail im Adreß-Testmodus; geben Sie einfach 0, gefolgt von der Adresse, für die Sie das Routing testen möchten, ein. Die letzte Zeile nennt Ihnen den benutzten Mailagenten, den Zielhost, mit dem dieser Agent aufgerufen wird und die (ggfs. übersetzte) Adresse. Verlassen Sie diesen Modus, indem Sie Control-D eingeben. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 foo@interface-business.de rewrite: ruleset 0 input: foo @ interface-business . de ... rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \ < @ interface-business . de > > ^D Wie richte ich das Mailsystem konfigurieren, wenn ich eine Wählverbindung zum Internet habe? Wenn Sie eine feste IP-Adresse haben, müssen Sie die Standardeinstellungen wahrscheinlich gar nicht ändern. Stellen Sie Ihren Hostnamen entsprechend Ihrem zugeordneten Internetnamen ein und sendmail übernimmt das übrige. Wenn Sie eine dynamische IP-Adresse haben und eine ppp-Wählverbindung zum Internet benutzen, bekommen Sie wahrscheinlich eine Mailbox auf dem Mailserver Ihres ISPs zugeordnet. Lassen Sie uns annehmen, die Domäne ihres ISPs sei myISP.com und Ihr Benutzername user; außerdem nehmen wir an, daß Sie Ihre Maschine bsd.home genannt haben und, daß Ihr ISP ihnen gesagt hat, daß Sie relay.myISP.com als Mail-Relayhost benutzen können. Um Mails aus Ihrer Mailbox abzuholen, müssen Sie einen entsprechenden Programm installieren. Fetchmail ist eine gute Wahl, weil es viele verschiedene Protokolle unterstützt. Für gewöhnlich wird von Ihrem ISP POP3 zur Verfügung gestellt werden. Falls sie sich dafür entschieden haben, user-ppp zu nutzen, können Sie durch folgenden Eintrag in der Datei /etc/ppp/ppp.linkup Ihre Mails automatisch abholen lassen, wenn eine Verbindung zum Netz aufgebaut wird: MYADDR: !bg su user -c fetchmail Falls Sie (wie unten gezeigt) sendmail benutzen, um Mails an nicht-lokale Benutzer zu versenden, fügen Sie den Befehl !bg su user -c "sendmail -q" nach dem oben gezeigten Eintrag ein. Das veranlaßt sendmail, Ihre ausgehenden Mails zu verarbeiten, sobald eine Verbindung zum Internet aufgebaut wird. Ich nehme an, daß auf bsd.home ein Benutzer user existiert; erstellen Sie auf bsd.home im Heimatverzeichnis von user eine Datei .fetchmailrc: poll myISP.com protocol pop3 fetchall pass MySecret; Ich brauche wohl nicht zu erwähnen, daß diese Datei für niemandem außer user lesbar sein sollte, weil sie das Passwort MySecret enthält. Um Mails mit dem richtigen from:-Header zu versenden, müssen Sie sendmail mitteilen, daß es user@myISP.com und nicht user@bsd.home benutzen soll. Evtl. möchten Sie auch, daß sendmail alle Mails über relay.myISP.com versendet, um eine schnellere Übertragung von Mails zu gewährleisten. Die folgende .mc-Datei sollte ausreichen: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`myISP.com')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.myISP.com') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl Im vorherigen Abschnitt finden Sie Details dazu, wie Sie aus dieser .mc-Datei eine Datei sendmail.cf erstellen können. Vergessen Sie auch nicht, sendmail neu zu starten, nachdem Sie sendmail.cf verändert haben. Woher kommt dieser Benutzer toor mit UID 0? Ist mein System gehackt worden? Keine Panik. toor ist ein alternativer Account für den Super-User (wenn man root rückwärts schreibt, erhält man toor). Früher wurde er nur erzeugt, wenn die Shell &man.bash.1; installiert wurde, heute wird er auf jeden Fall erzeugt. Dieser Account ist für die Verwendung mit einer alternativen Shell vorgesehen; damit ist es nicht mehr erforderlich, die Shell von root zu ändern. Dies ist wichtig, wenn eine Shell verwendet wird, die nicht zum Lieferumfang von FreeBSD gehört, zum Beispiel aus einem Port oder einem Package. Diese Shells werden in der Regel in /usr/local/bin installiert und dieses Verzeichnis liegt standardmäßig auf einem anderem Filesystem. Wenn die Shell von root in /usr/local/bin liegt und /usr (oder das Filesystem, auf dem /usr/local/bin liegt) nicht gemountet werden kann, kann sich root nicht mehr einloggen, um das Problem zu beheben. Es ist allerdings möglich, das System zu rebooten und das Problem im Single-User Modus zu lösen, da man hier gefragt wird, welche Shell benutzt werden soll. Einige Anwender benutzen toor mit einer alternativen Shell für die tägliche Arbeit und nutzen root (mit der Standard-Shell) für den Single-User Modus und für Notfälle. Standardmäßig kann man sich nicht als toor anmelden, da der Account kein gültiges Paßwort hat; Sie müssen sich also als root anmelden und ein Paßwort für toor setzen, wenn Sie diesen Account benutzen wollen. Was kann ich machen, wenn ich das Rootpasswort vergessen habe? Keine Panik! Starten Sie Ihr System einfach neu und geben Sie boot -s an der Eingabeaufforderung Boot: ein (bei FreeBSD-Versionen vor 3.2 nur -s), um in den Einzelbenutzermodus zu gelangen. Bei der Frage danach, welche Shell benutzt werden soll, drücken Sie einfach ENTER. Nun erscheint die Eingabeaufforderung &prompt.root;. Geben Sie mount -u / ein, um Ihr Root-Dateisystem für Lese- und Schreibzugriffe zu remounten und dann mount -a, um alle Dateisysteme zu remounten. Mit passwd root können Sie das Rootpasswort ändern und mit &man.exit.1; können Sie mit dem Booten fortfahren. Wie verhindere ich, daß das System mit Control-Alt-Delete rebootet werden kann? Falls Sie syscons (den Standard-Treiber für die Konsole) unter FreeBSD ab 2.2.7-RELEASE benutzen, erstellen und installieren Sie einen neuen Kernel mit der Zeile options SC_DISABLE_REBOOT in der Konfigurationsdatei. Falls Sie den Konsolen-Treiber PCVT unter FreeBSD seit 2.2.5-RELEASE benutzen, benutzen Sie stattdessen die folgende Kernelkonfigurationszeile: options PCVT_CTRL_ALT_DEL Editieren Sie bei älteren Versionen von FreeBSD die Tastenzuordnungsdatei, die Sie für die Konsole verwenden und ersetzen Sie die Schlüsselworte boot durch nop. Die standard Tastenzuordnungsdatei heißt /usr/share/syscons/keymaps/us.iso.kbd. Es könnte sein, daß Sie /etc/rc.conf explizit instruieren müssen, diese Tastenzuordnungsdatei zu laden, um die Änderungen wirksam werden zu lassen. Falls Sie eine andere Tastenzuordnung für Ihr Land verwenden, müssen Sie natürlich diese editieren. Wie ändere ich das Format von Textdateien von DOS nach Unix? Benutzen Sie einfach diesen Perl-Befehl: &prompt.user; perl -i.bak -npe 's/\r\n/\n/g' file ... file ist/sind die zu verarbeitende(n) Datei(en). Die Änderungen erfolgen in der Originaldatei, die zuvor mit der Erweiterung .bak gesichert wird. Alternativ können Sie den Befehl &man.tr.1; benutzen: &prompt.user; tr -d '\r' < dos-text-file > unix-file dos-text-file ist die Datei, die den Text im DOS-Format enthält und unix-file wird die konvertierte Ausgabe enthalten. Diese Möglichkeit könnte etwas schneller sein, als die Benutzung von Perl. Wie beende ich Prozesse namentlich? Benutzen Sie &man.killall.1;. Warum nervt su mich damit, daß ich nicht in der ACL von root bin? Der Fehler stammt vom verteilten Authentifizierungssystem Kerberos. Das Problem ist nicht ernsthaft, aber störend. Sie können entweder su mit der Option -K benutzen, oder Kerberos deinstallieren, wie in der nächsten Frage beschrieben. Wie deinstalliere ich Kerberos? Um Kerberos aus dem System zu entfernen, müssen Sie die bin-Distribution der von Ihnen benutzen RELEASE neu installieren. Wenn Sie die CDROM besitzen, können Sie sie mounten (wir nehmen an, unter /cdrom) und folgende Schritte ausführen: &prompt.root; cd /cdrom/bin &prompt.root; ./install.sh Alternativ können Sie alle Zeilen mit "MAKE_KERBEROS" aus der /etc/make.conf entfernen und dann ein make world durchführen. Wie füge ich Pseudo-Terminals zum System hinzu? Wenn Sie viele Benutzer von telnet, ssh, X oder screens haben, könnte es sein, daß Ihnen die Pseudo-Terminals ausgehen. So fügen Sie weitere hinzu: Erstellen und installieren Sie einen neuen Kernel mit der Zeile pseudo-device pty 256 in der Konfigurationsdatei. Führen Sie die Befehle &prompt.root; cd /dev &prompt.root; ./MAKEDEV pty{1,2,3,4,5,6,7} aus, um 256 Geräteeinträge für die neuen Terminals zu erstellen. Editieren Sie die Datei /etc/ttys und fügen Sie Zeilen für jeden der 256 Terminals ein. Sie sollten so aussehen, wie die existierenden Einträge, also etwa so: ttyqc none network Die Reihenfolge der Buchstabenzuordnung lautet mit einem regulären Ausdruck tty[pqrsPQRS][0-9a-v]. Starten Sie das System mit dem neuen Kernel erneut, wenn Sie bereit sind. Warum kann ich das Gerät snd0 nicht erstellen? Es gibt kein Gerät snd. Diese Bezeichnung ist nur ein Sammelbegriff für die diversen Geräte, die zusammen das Soundsystem von FreeBSD bilden, wie zum Beispiel mixer, sequencer, und dsp. So erzeugen Sie diese Geräte: &prompt.root; cd /dev &prompt.root; sh MAKEDEV snd0 Wie lade ich /etc/rc.conf und starte /etc/rc neu, ohne zu rebooten? Gehen Sie in den Einzelbenutzermodus und dann zurück in den Mehrbenutzermodus. Geben Sie auf der Konsole folgendes ein: &prompt.root; shutdown now (Hinweis: ohne -r oder -h) &prompt.root; return &prompt.root; exit Was ist ein Sandkasten (sandbox)? Sandkasten (sandbox) ist ein Ausdruck aus dem Bereich Sicherheit. Er hat zwei Bedeutungen: Ein Programm, das innerhalb virtueller Wände ausgeführt wird. Wenn ein Angreifer über eine Sicherheitslücke in diesen Programm einbricht, verhindern diese Wände ein tieferes Vordringen in das System. Man sagt: Der Prozeß kann innerhalb der Wände spielen, d.h. nichts, was der Prozeß in Bezug auf die Ausführung von Code tut, kann die Wände durchbrechen. Es ist also keine detailierte Revision des Codes erforderlich, um gewisse Aussagen über seine Sicherheit machen zu können. Die Wände könnten z.B. eine Benutzerkennung sein. Dies ist die Definition, die in den Manualpages security und named benutzt wird. Nehmen Sie zum Beispiel den Dienst ntalk (siehe auch /etc/inetd.conf). Dieser Dienst ist früher mit der Benutzerkennung root gelaufen; nun läuft er mit der Benutzerkennung tty. Der Benutzer tty ist ein Sandkasten, der dazu gedacht ist, es jemandem, der über ntalk erfolgreich in das System eingebrochen ist, schwer zu machen, über diese Benutzerkennung hinaus vorzudringen. Ein Prozeß, der sich innerhalb einer simulierten Maschine befindet. Dies ist etwas fortgeschrittener; grundsätzlich bedeutet es, daß jemand, der in der Lage ist, in einen Prozeß einzudringen, annehmen könnte, er könnte weiter in die Maschine eindringen, tatsächlich aber nur in eine Simulation der Maschine einbricht und keine echten Daten verändert. Der gängigste Weg, dies zu erreichen, ist, in einem Unterverzeichnis eine simulierte Umgebung zu erstellen und den Prozeß in diesem Verzeichnis mit chroot auszuführen (d.h. für diesen Prozeß ist / dieses Verzeichnis und nicht das echte / des Systems). Eine weitere gebräuchliche Anwendung ist, ein untergeordnetes Dateisystem nur mit Leserechten zu mounten, und dann darüber eine Dateisystemebene zu erstellen, die einem Prozeß einen scheinbar schreibberechtigten Blick in das Dateisystem gibt. Der Prozeß mag glauben, daß er in der Lage ist, diese Dateien zu verändern, aber nur der Prozeß sieht diesen Effekt - andere Prozeß im System natürlich nicht. Es wird versucht, diese Art von Sandkasten so transparent zu gestalten, daß der Benutzer (oder Hacker) nicht realisiert, daß er sich in ihm befindet. Unix implementiert zwei Arten von Sandkästen - eine auf Prozeßebene und die andere auf der Ebene der Benutzerkennung. Jeder Unix-Prozeß ist vollständig von jedem anderen Unix-Prozeß abgeschirmt. Ein Prozeß kann den Adreßraum eines anderen Prozesses nicht modifizieren. Das ist anders als bei Windows, wo ein Prozeß leicht den Adreßraum eines anderen überschreiben kann, was zu einem Absturz führt. Ein Unix-Prozeß gehört einer bestimmten Benutzerkennung. Falls die Benutzerkennung nicht die von root ist, dient sie dazu, den Prozeß von Prozessen anderer Benutzer abzuschirmen. Die Benutzerkennung wird außerdem dazu genutzt, Daten auf der Festplatte abzuschirmen. Was sind die Sicherheitsstufen? Die Sicherheitsstufen sind ein Sicherheitsmechanismus, der im Kernel angesiedelt ist. Wenn die Sicherheitsstufe einen positiven Wert hat, verhindert der Kernel die Ausführung bestimmter Tätigkeiten; nicht einmal der Super-User (also root) darf sie durchführen. Zur Zeit können über die Sicherheitsstufen unter anderem die folgenden Tötigkeiten geblockt werden: Änderungen bestimmter Dateiattribute, wie zum Beispiel schg (das "system immutable" Attribut) Schreibender Zugriff auf die Speicherbereiche des Kernels mittels /dev/mem und /dev/kmem. Laden von Kernel-Modulen. Änderungen an den Firewall-Regeln. Um die eingestellte Sicherheitstufe eines aktiven Systems abzufragen, reicht das folgende einfache Kommando: &prompt.root; sysctl kern.securelevel Die Ausgaben wird den Namen der &man.sysctl.8;-Variablen (in diesem Fall kern.securelevel) und eine Zahl enthalten. Die Zahl ist der aktuelle Wert der Sicherheitsstufe. Wenn die Zahl positiv (größer als Null) ist, sind zumindestens einige der Schutzmaßnahmen aktiviert. Sie können die Sicherheitsstufe eines laufenden Systems nicht verringern, da dies den Mechanismus wertlos machen würden. Wenn Sie eine Tätigkeit ausführen müssen, bei der die Sicherheitsstufe nicht-positiv sein muß (z.B. ein installworld oder eine Änderung der Systemzeit), dann müssen Sie die entsprechende Einstellung in /etc/rc.conf ändern (suchen Sie nach den Variablen kern_securelevel und kern_securelevel_enable) und das System rebooten. Weitere Informationen über die Sicherheitstufen und genaue Informationen, was die Einstellungen bewirken, können Sie der Online-Hilfe &man.init.8; entnehmen. Die Sicherheitsstufen sind kein magischer Zauberstab, der alle Ihre Problem löst; es gibt viele bekannte Probleme. Und in der Mehrzahl der Fälle vermitteln sie ein falsches Gefühl der Sicherheit. Eines der größten Probleme ist, daß alle für den Start des Systems benötigten Dateien geschützt sein müssen, damit die Sicherheitsstufe effektiv sein können. Wenn es ein Angreifer schafft, seine eigenen Programme ausführen zu lassen, bevor die Sicherheitsstufe gesetzt wird (was leider erst gegen Ende des Startvorgangs erfolgen kann, da viele der notwendigen Tätigkeiten für den Systemstart nicht mit einer gesetzten Sicherheitsstufe möglich wären), werden die Schutzmechanismen ausgehebelt. Es ist zwar nicht technisch unmöglich, alle beim Systemstart genutzten Dateien zu schützen; allerdings würde in einem so geschützten System die Administration zu einem Alptraum, da man das System neu starten oder in den Single-User Modus bringen müßte, um eine Konfigurationsdatei ändern zu können. Dieses und andere Probleme werden häufig auf den Mailinglisten diskutiert, speziell auf freebsd-security. Das hier verfügbare Archiv enthält ausgiebige Diskussionen. Einige Benutzer sind guter Hoffnung, daß das System der Sicherheitsstufen bald durch ein besser konfigurierbares System ersetzt wird, aber es gibt noch keine definitiven Aussagen. Fühlen Sie sich gewarnt. Wie lasse ich normale Benutzer Disketten, CDROMs und andere Wechseldatenträger mounten? Normale Benutzer können dazu berechtigt werden, Geräte zu mounten. Das geht so: Setzen Sie als root die sysctl-Variable vfs.usermount auf 1: &prompt.root; sysctl -w vfs.usermount=1 Ordnen Sie als root den Block-Geräten, die den Wechsellaufwerken zugeordnet sind, die entsprechenden Zugriffsrechte zu. Wenn Sie zum Beispiel den Benutzer den Zugriff auf das erste Diskettenlaufwerk zu erlauben wollen: &prompt.root; chmod 666 /dev/fd0 Um den Mitgliedern der Gruppe operator den Zugriff auf das CDROM zu gestatten: &prompt.root; chgrp operator /dev/cd0c &prompt.root; chmod 640 /dev/cd0c Fügen Sie zum Abschluß die Zeile ivfs.usermount=1 in die Datei /etc/sysctl.conf ein, damit die Einstellung bei einem Neustart des Systems automatisch erhalten bleibt. Alle Benutzer können nun /dev/fd0 auf ein Verzeichnis, das ihnen gehört, mounten: &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/fd0 ~/my-mount-point Die zur Gruppe operator gehörenden Benutzer können nun /dev/cd0c auf ein Verzeichnis, das ihnen gehört, mounten: &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/cd0c ~/my-mount-point Das Unmounten des Gerätes ist simpel: &prompt.user; umount ~/my-mount-point Die Aktivierung von vfs.usermount hat jedoch negative Auswirkungen auf Sicherheitsaspekte. Ein besserer Weg, um auf MSDOS-formatierte Datenträger zuzugreifen, ist die Benutzung des Packages mtools aus der Ports-Sammlung. Wie verschiebe ich mein System auf meine neue, große Platte. Die beste Methode ist, das Betriebssystem auf der neuen Platte neu zu installieren und danach die Daten zu verschieben. Wenn Sie -stable über eine Release hinaus genutzt haben oder eine Release aktualiert haben, ist das sehr empfehlenwert. Sie können auf beiden Platten &man.boot0cfg.8; installieren und die beiden Versionen so lange parallel betreiben, bis Ihnen die neue Konfiguation gefällt. Wenn Sie dies tun wollen, können Sie im übernächsten Absatz erfahren, wie sie Ihre Daten verschieben können. Falls Sie sich entscheiden, das nicht zu tun, müssen Sie Ihre neue Platte partitionieren und labeln. Benutzen Sie dafür entweder /stand/sysinstall oder &man.fdisk.8; und &man.disklabel.8;. Weiterhin sollten Sie mit &man.boot0cfg.8; auf beiden Platten booteasy installieren, damit Sie in der Lage sind, das alte und das neue System abwechselnd zu starten, nachdem der Kopiervorgang abgeschlossen ist. Im Formatting-Media Tutorial finden Sie weitere Informationen zu diesen Schritten. Nachdem Sie die neue Platte eingerichtet haben, können Sie Ihre Daten verschieben. Dummerweise können Sie die Daten nicht einfach. Dinge wie die Gerätedateien (in /dev) und Symbolische Links führen dazu, daß das in die Hose geht. Sie mützen Programme benutzen, die damit umgehen können, und das sind &man.dump.8; and &man.tar.1;. Es wird empfohlen, die Daten im single user mode zu verschieben, aber das ist nicht unbedingt notwendig. Sie sollten auf gar keinen Fall etwas anderes als &man.dump.8; und &man.restore.8; benutzen, um Ihr root file system zu verschieben. Es könnte auch mit &man.tar.1; funktionieren - oder auch nicht. Sie sollten ebenfalls &man.dump.8; und &man.restore.8; benutzen, wenn Sie eine komplette Partition auf eine andere, leere Partition verschieben. Um die Daten einer Partition mit dump auf eine andere Partition zu verschieben, müssen Sie die folgenden Schritte ausführen: Richten Sie in der neuen Partition mit newfs ein Dateisystem ein. Mounten Sie die Partition temporär an einer geeigneten Stelle. Wechseln Sie mit cd in dieses Verzeichnis. Lesen Sie die alte Partition mit dump aus und lenken Sie die Ausgabe auf die neue Partition um. Wenn Sie zum Beispiel root auf /dev/ad1s1a verschieben wollen und diese zur Zeit auf /mnt gemountet ist, bedeutet das: &prompt.root; newfs /dev/ad1s1a &prompt.root; mount /dev/ad1s1a &prompt.root; cd /mnt &prompt.root; dump 0uaf - / | restore xf - Wenn Sie Ihre Partitionen umorganisieren wollen, also zum Beispiel aus eine alte in zwei neue aufteilen wollen oder zwei alte zu einer neuen zusammenfassen wollen, dann wird es frührer oder später vorkommen, daß Sie nur einen Verzeichnisbaum verschieben wollen. Da &man.dump.8; nur ganze Dateisysteme bearbeitet, können Sie es dafür nicht nutzen. Hier sollten Sie &man.tar.1; verwenden. Um mit &man.tar.1; /old nach /new zu verschieben, müssen Sie diesen Befehl eingeben: &prompt.root; (cd /old; tar cf - .) | (cd /new; tar xpf -) Wenn unter /old andere Dateisysteme gemountet sind und Sie weder die Daten auf diesen Dateisystem verschieben noch die anderen Dateisysteme unmounten wollen, müssen das erste &man.tar.1; mit dem Parameter aufrufen: &prompt.root; (cd /old; tar clf - .) | (cd /new; tar xpf -). Eventuell gefallen Ihnen &man.cpio.1;, &man.pax.1; oder cpdup (ports/sysutils/cpdup) besser als &man.tar.1;. Ich wollte auf das aktuelle -STABLE updaten, und plötzlich läuft hier ein -RC oder -BETA. Was ist passiert? Kurze Antwort: Das ist nur ein anderer Name. RC ist die Abkürzung für Release Candidate. Es bedeutet, daß eine neue Release bevorsteht. Und -BETA bedeutet bei FreeBSD normalerweise, daß die Sourcen zur Vorbereitung auf eine Release eingefroren wurden. Ausführliche Antwort: Bei FreeBSD gibt es zwei Quellen für Releases. Die Major Releases wie 3.0-RELEASE und 4.0-RELEASE werden aus dem aktuellen Stand des Hauptzweiges der Entwicklung (besser und kürzer als -CURRENT bekannt) erzeugt. Minor Releases wie 3.1-RELEASE or 4.2-RELEASE stammen aus dem aktiven -STABLE Zweig. Seit 4.3-RELEASE gibt es es nun auch einen eigenen Zweig für jede Release, der für die Leute gedacht ist, die ein sehr konservativ weiterentwickeltes System benötigen (im Normalfall also nur Updates aus dem Bereich Sicherheit). Bevor in einem Zweig eine Release erfolgt, muß in diesem Zweig ein bestimmter Prozeß ablaufen. Ein Teil dieses Prozesses ist der code freeze, der Stop der Weiterentwicklung. Sobald dieser Schritt erfolgt ist, wird der Name des Zweiges geändert, um anzuzeigen, daß demnächst eine Release erfolgen wird. Wenn der Zweig zum Beispiel 4.0-STABLE genannt wurde, wird der Name in 4.1-BETA geändert, um dies zu verdeutlichen. Weiterhin ist das ein Zeichen, daß jetzt besonders intensiv getestet werden sollte. In dieser Phase können Fehler im Sourcecode noch korrigiert werden. Wenn der Sourcecode so weit gereift ist, daß eine Release erstellt werden kann, wird der Name in 4.1-RC geändert, um genau dies anzuzeigen. In dieser Phase können nur noch extrem wichtige Korrekturen aufgenommen werden. Sobald die Release (in diesem Beispiel 4.1-RELEASE) erfolgt ist, wird der Zweig in 4.1-STABLE umbenannt. Als ich versucht habe, einen neuen Kernel zu installieren, ist das chflags fehlgeschlagen. Was mache ich jetzt? Kurze Antwort: Ihre Sicherheitseinstellung (der securelevel) ist wahrscheinlich größer als 0. Sie müssen das System neu starten und den Kernel im Single-User Modus installierten. Ausführliche Antwort: Wenn die Sicherheitseinstellung größer als 0 ist, erlaubt Ihnen FreeBSD nicht, die Systemflags zu ändern. Um den aktuellen Securelevel zu ermitteln, können Sie das folgende Kommando benutzen: &prompt.root; sysctl kern.securelevel Sie können die Sicherheitseinstellung nicht verringern, Sie müssen das System neu starten und den Kernel im Single-User Mode installieren oder die Sicherheitseinstellung in /etc/rc.conf ändern und dann das System neu starten. Weitere Detail zur Sicherheitseinstellung erhalten Sie in &man.init.8;, weitere Informationen zur rc.conf erhalten Sie in /etc/defaults/rc.conf und &man.rc.conf.5;. Ich kann die Systemzeit nicht um mehr als eine Sekunde verstellen. Was mache ich jetzt? Kurze Antwort: Ihre Sicherheitseinstellung (der securelevel) ist wahrscheinlich größer als 1. Sie müssen das System neu starten und die Systemzeit im Single-User Modus verstellen. Ausführliche Antwort: Wenn die Sicherheitseinstellung größer als 1 ist, erlaubt Ihnen FreeBSD nicht, die Systemzeit zu ändern. Um den aktuellen Securelevel zu ermitteln, können Sie das folgende Kommando benutzen: &prompt.root; sysctl kern.securelevel Sie können die Sicherheitseinstellung nicht verringern, Sie müssen das System neu starten und die Systemzeit im Single-User Mode ändern oder die Sicherheitseinstellung in /etc/rc.conf ändern und dann das System neu starten. Weitere Detail zur Sicherheitseinstellung erhalten Sie in &man.init.8;, weitere Informationen zur rc.conf erhalten Sie in /etc/defaults/rc.conf und &man.rc.conf.5;. Warum braucht &man.rpc.statd.8; 256 MByte Speicher? Nein, das Programm hat keinen Fehler und es verbraucht auch nicht 256 MByte Speicher. Das Programm hat nur eine Vorliebe dafür, einen übertrieben großen Speicherbereich in seinen eigenen Adreßraum zu projizieren. Von einem rein technischen Standpunkt aus ist das nichts verwerfliches, allerdings verwirrt es Programme wie &man.top.1; und &man.ps.1;. &man.rpc.statd.8; projiziert seine Statusdatei (die in /var liegt) in seinen Adreßraum. Um die Probleme zu vermeiden, die bei einer Verößerung dieser Projektion entstehen könnte, wird gleich ein mölichst großer Speicherbereich benutzt. Dies kann man sehr schön im Sourcecode sehen: Die Längenangabe beim Aufruf von &man.mmap.2; ist 0x10000000, ein sechzehntel des Adreßraums bei IA32, oder genau 256 MByte. Warum kann ich das Dateiattribut schg nicht löschen? Sie betreiben Ihr System mit einer erhöhten Sicherheitsstufe. Senken Sie die Sicherheitsstufe und versuchen Sie es dann noch einmal. Weitere Informationen erhalten Sie im FAQ Eintrag über Sicherheitsstufen und in der Online-Hilfe &man.init.8;. Warum funktioniert die .shosts Authentifizierung von SSH in neueren Version von FreeBSD nicht mehr? Die .shosts Authentifizierung funktioniert nicht mehr, weil &man.ssh.1; in neueren Versionen von FreeBSD nicht mehr "suid root" installiert wird. Um dieses Problem zu lösen, gibt es die folgenden Möglichkeiten: Um das Problem für immer zu lösen, müssen Sie in /etc/make.conf die Variable ENABLE_SUID_SSH auf true setzen und ssh neu übersetzen (oder make world ausführen. Übergangsweise können Sie auch die Dateirechte von /usr/bin/ssh auf 4555 setzen, indem Sie den Befehl chmod 4755 /usr/bin/ssh als root ausführen. Fügen Sie anschließend ENABLE_SUID_SSH= true in die Datei /etc/make.conf ein, damit diese Änderung erhalten bleibt, wenn Sie das nöchste Mal make world ausführen.
Das X Window System und virtuelle Konsolen Ich möchte X benutzen, was muß ich tun? Der einfachste Weg ist der, daß Sie während der Installation angeben, daß Sie X benutzen möchten. Lesen Sie dann die Dokumentation zum Tool xf86config, das Sie bei der Konfiguration von XFree86(tm) speziell für Ihre Grafikkarte/Maus/etc. unterstützt. Evtl. möchten Sie sich auch den Xaccel-Server ansehen. Nähere Details finden Sie in den Abschnitten über Xi Graphics oder Metro Link. Ich habe versucht, X zu starten, aber wenn ich startx eingebe, erhalte ich die Fehlermeldung KDENABIO failed (Operation not permitted). Was soll ich jetzt machen? Sie haben die Sicherheitsstufe (den securelevel) ihres Systems erhört, richtig? Es ist tatsächlich nicht möglich, X zu starten, wenn die Sicherheitsstufe erhöht wurde. Warum das so ist, können Sie in &man.init.8; nachlesen. Die Frage ist also eigentlich, was Sie anders machen sollten. Sie haben zwei Möglichkeiten: Setzen Sie die Sicherheitstufe wieder zurück auf 0 (die Einstellung erfolgt in der Regel in /etc/rc.conf) oder starten Sie &man.xdm.1; während des Starts des Systems, bevor die Sicherheitsstufe erhöht wird. Der Abschnitt enthält Informationen darüber, wie Sie &man.xdm.1; beim Start des Systems starten können. Warum funktioniert meine Maus unter X nicht? Wenn Sie syscons (den Standard-Konsoltreiber) benutzen, können Sie FreeBSD so konfigurieren, daß auf jedem virtuellen Bildschirm ein Mauszeiger unterstützt wird. Um Konflikte mit X zu vermeiden, unterstützt syscons ein virtuelles Gerät mit dem Namen /dev/sysmouse. Über dieses virtuelle Gerät können andere Programme alle Mausbewegungen und Mausclicks im MouseSystems-Format mitlesen. Falls Sie Ihre Maus auf einer oder mehreren virtuellen Konsolen und X benutzen wollen, sollten Sie zunächst lesen und dann moused installieren. Die Datei /etc/XF86Config sollte die folgenden Einträge enthalten: Section Pointer Protocol "SysMouse" Device "/dev/sysmouse" ..... Diese Variante kann für XFree86 3.3.2 und neuere Versionen benutzt werden. Wenn Sie eine ältere Versionen verwenden, muß als Protocol dagegen MouseSystems benutzt werden. Einige Leute ziehen es vor, unter X /dev/mouse zu benutzen. Hierzu sollte /dev/mouse nach /dev/sysmouse gelinkt werden: &prompt.root; cd /dev &prompt.root; rm -f mouse &prompt.root; ln -s sysmouse mouse Kann ich meine Rad-Maus auch unter X benutzen? Ja. Allerdings müssen Sie die X-Anwendungen anpassen. Weitere Informationen erhalten Sie auf der Homepage von Colas Nahaboo (http://www.inria.fr/koala/colas/mouse-wheel-scroll/). Wenn Sie das Programm imwheel benutzen wollen, müssen Sie folgenden Arbeiten durchführen. Umsetzung der Rad-Bewegung Das Programm imwheel übersetzt die Maustasten 4 und 5 in normale Tastaturkommandos. Sie müssen also nur dafür sorgen, daß die Bewegung des Rades vom Maustreiber als Betätigung der Maustaten 4 und 5 übersetzt werden. Es gibt zwei Möglichkeiten, dieses Ziel zu erreichen. Zum einen kann die Übersetzung von &man.moused.8; durchgeführt werden, zum zweiten kann der X-Server diese Aufgabe übernehmen. Umsetzung durch &man.moused.8; Damit &man.moused.8; die Umsetzung vornimmt, müssen Sie ihn lediglich mit dem zusätzlichen Parametern starten. Wenn Sie zum Beispiel &man.moused.8; mit dem Befehl moused -p /dev/psm0 gestartet haben, würde der neue Befehl moused -p /dev/psm0 -z 4 lauten. Wenn Sie &man.moused.8; über einen Eintrag in der Datei /etc/rc.conf automatisch beim Start des Systems starten lassen, müssen Sie in der /etc/rc.conflediglich die Einstellung moused_flags um ergänzen. Nun müssen Sie X darüber informieren, daß Sie eine Maus mit 5 Tasten haben. Fügen sie dazu die Zeile Buttons 5 in den Abschnitt Pointer der Datei /etc/XF86Config ein. Das Beispiel zeigt, wie ein solcher Abschnitt aussehen könnte. Abschnitt <quote>Pointer</quote> für XFree86 3.3.x für Mäuse mit Rad und Umsetzung durch <command>moused</command> Section "Pointer" Protocol "SysMouse" Device "/dev/sysmouse" Buttons 5 EndSection Abschnitt <quote>InputDevice</quote> für Rad-Mäuse in der XF86Config von XFree86 4.X mit automatischer Protokollerkennung und Übersetzung der Maustasten Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psm0" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection <quote>.emacs</quote> Konfiguration für seitenweises Blättern mit einer Rad-Maus ;; wheel mouse (global-set-key [mouse-4] 'scroll-down) (global-set-key [mouse-5] 'scroll-up) Umsetzung durch den X-Server Wenn Sie &man.moused.8; nicht benutzen oder die Umsetzung nicht von &man.moused.8; vornehmen lassen wollen, kann diese Aufgabe auch vom X-Server übernommen werden. Dazu sind einige Änderungen an der Datei /etc/XF86Config notwendig. Zunächst müssen Sie das von Ihrer Maus verwendete Protokoll herausfinden. Die meisten Radmäuse verwenden das IntelliMouse Protokoll. XFree86 unterstützt allerdings auch andere Protokolle, zum Beispiel das von der Logitech Mouseman+ verwendete MouseManPlusPS/2. Wenn Sie das Protokoll ermittelt haben, müssen Sie eine entsprechende Protocol-Zeile in den Abschnitt Pointer aufnehmen. Zum zweiten müssen Sie dem X-Server mitteilen, daß er die Bewegung des Rades in Betätigungen der Tasten 4 und 5 umsetzen soll. Dazu dient die Option ZAxisMapping. Wenn Sie zum Beispiel &man.moused.8; nicht verwenden und eine IntelliMouse an den PS/2 Mausport angeschlossen haben, müßte in Ihrer /etc/XF86Config die folgenden Angaben stehen. Abschnitt <quote>Pointer</quote> der Datei <filename>XF86Config</filename> für eine Rad-Maus und Umsetzung durch den X-Server Section "Pointer" Protocol "IntelliMouse" Device "/dev/psm0" ZAxisMapping 4 5 EndSection Installation von imwheel Der nächste Schritt ist die Installation von imwheel über die Ports. Das Programm ist ein Teil der Kategorie x11. imwheel übersetzt die Bewegungen des Rades in Tastendrücken. Es könnte zum Beispiel Bild auf an ein Programm senden, wenn Sie das Rad nach vorne bewegen. Imwheel benutzt eine Konfigurationsdatei, die den Bewegungen des Rades die zu simulierenden Tastendrücke zuordnet. Damit ist es möglich, verschiedenen Anwendungen die jeweils "richtigen" Tastendrücke zu senden. Ein Prototyp der Konfigurationsdatei für imwheel wird unter dem Namen /usr/X11R6/etc/imwheelrc installiert. Wenn Sie die Konfiguration von imwheel an die von Ihnen verwendeten Programme anpassen wollen, erzeugen Sie eine Kopie der Datei mit dem Namen ~/.imwheelrc und tragen Sie ihre Anpassungen dort ein. Das Format der Datei wird in &man.imwheel.1; erklärt. Anpassung von Emacs an with Imwheel (Optional) Wenn Sie emacs oder Xemacs benutzen, müssen Sie einen kleinen Abschnitt in die Datei ~/.emacs einfügen. Für emacs müssen Sie die folgenden Zeilen anfügen: Nutzung von <application>Emacs</application> mit <application>Imwheel</application> ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines) (global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Wenn Sie Xemacs verwenden, müssen stattdessen die folgenden Zeilen an Ihre ~/.emacs anfügen: Nutzung von <application>Xemacs</application> mit <application>Imwheel</application> ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines) (define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Imwheel ausführen Sie brauchen nach der Installation einfach nur imwheel in einem xterm einzugben, um das Programm zu starten. Das Programm läuft dann im Hintergrund und ist sofort aktiv. Wenn Sie imwheel ständig benutzen wollen, sollten Sie es einfach in Ihre .xinitrc oder .xsession eintragen. Falls imwheel Warnungen über PID files ausgeben sollte, können Sie diese ignorieren, da Sie nur die Linux-Version von imwheel betreffen. Wieso funktioieren Menüs und Dialoge in X nicht richtig? Versuchen Sie, die Num-Lock-Taste auszustellen. Falls Ihre Num-Lock-Taste beim Booten standardmäßig eingeschaltet ist, sollten Sie die folgende Zeile in den Abschnitt Keyboard der Datei XF86Config einfügen: # Let the server do the NumLock processing. This should only be # required when using pre-R6 clients ServerNumLock Was ist eine virtuelle Konsole und wie erstelle ich mehr? Mit virtuellen Konsolen können Sie mehrere simultane Sitzungen auf einer Maschine laufen lassen, ohne so komplizierte Dinge wie die Einrichtung eines Netzwerkes oder die Benutzung von X zu benötigen. Wenn das System startet, wird es nach der Anzeige aller Bootmeldungen eine Eingabeaufforderung auf dem Bildschirm anzeigen. Sie können dann auf der ersten virtuellen Konsole Ihren Benutzernamen und das Passwort eingeben und anfangen, zu arbeiten (oder zu spielen!). Gelegentlich möchten Sie möglicherweise eine weitere Sitzung starten wollen, vielleicht, um die Dokumentation zu einem Programm, das Sie gerade benutzen, einzusehen, oder, um Ihre Mails zu lesen, während Sie auf das Ende einer FTP-Übertragung warten. Drücken Sie einfach Alt-F2 (halten Sie die Alt-Taste gedrückt und drücken Sie die Taste F2) und Sie gelangen zur Anmelde-Aufforderung auf der zweiten virtuellen Konsole! Wenn Sie zurück zur ersten Sitzung möchten, drücken Sie Alt-F1. Die standard Installation von FreeBSD bietet drei aktivierte virtuelle Konsolen (acht ab der Version 3.3) und Alt-F1, Alt-F2 und Alt-F3 wechseln zwischen diesen virtuellen Konsolen. Um mehr von ihnen zu aktivieren, editieren Sie /etc/ttys und fügen Einträge für ttyv4 bis zu ttyvc nach dem Kommentar zu virtuellen Terminals ein: # 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 Benutzen Sie so wenig oder soviele, wie Sie möchten. Je mehr virtuelle Terminals Sie benutzen, desto mehr Ressourcen werden gebraucht; das kann wichtig sein, wenn Sie 8MB RAM oder weniger besitzen. Sie können auch secure in insecure ändern. Wenn Sie einen X-Server benutzen möchten, müssen Sie mindestens ein virtuelles Terminal unbenutzt (oder ausgeschaltet) lassen damit der Server es benutzen kann. Das heißt, daß Sie Pech haben, wenn Sie für jede Ihrer 12 Alt-Funktionstasten eine Anmeldeaufforderung haben möchten - Sie können das nur für elf von ihnen tun, wenn Sie einen X-Server auf derselben Maschine laufen lassen möchten. Der einfachste Weg, eine Konsole zu deaktivieren, ist, sie auszuschalten. Wenn Sie zum Beispiel die oben erwähnte volle Zuordnung aller 12 Terminals hätten, müßten Sie die Einstellung für das virtuelle Terminal 12 von: ttyvb "/usr/libexec/getty Pc" cons25 on secure in: ttyvb "/usr/libexec/getty Pc" cons25 off secure ändern. Wenn Ihre Tastatur nur über zehn Funktionstasten verfügt, bedeutet das: ttyv9 "/usr/libexec/getty Pc" cons25 off secure ttyva "/usr/libexec/getty Pc" cons25 off secure ttyvb "/usr/libexec/getty Pc" cons25 off secure (Sie können diese Zeilen auch einfach löschen.) Nachdem Sie die Datei /etc/ttys geändert haben, besteht der nächste Schritt darin, sicherzustellen, daß Sie genügend Geräte für virtuelle Terminal haben. Der einfachste Weg, dies zu tun, ist: &prompt.root; cd /dev &prompt.root; ./MAKEDEV vty12 Die einfachste (und sauberste) Möglichkeit, die virtuellen Konsolen zu aktivieren, ist, zu rebooten. Wenn Sie jedoch auf keinen Fall rebooten möchten, können Sie auch einfach das X Window System herunterfahren und als root &prompt.root; kill -HUP 1 ausführen. Es ist unbedingt erforderlich, daß Sie das X Window System vollständig herunterfahren, falls es läuft. Falls Sie es nicht tun, könnte es sein, daß sich ihr System nach der Eingabe des kill-Befehls aufhängt. Wie greife ich von X aus auf virtuelle Konsolen zu? Benutzen Sie CtrlAltFn um auf eine virtuelle Konsole umzuschalten. Mit CtrlAltF1 würden Sie zur ersten virtuellen Konsole umschalten. Sobald Sie auf eine virtuelle Konsole umgeschaltet haben, können Sie ganz normal AltFn benutzen, um zwischen den einzelnen virtuellen Konsolen umzuschalten. Um zu Ihrer X-Sitzung zurückzukehren, müssen Sie auf die virtuelle Konsole umschalten, auf der X läuft. Wenn Sie X über der Eingabeaufforderung gestartet haben (z.B. mit startx), benutzt X die nächste freie virtuelle Konsole und nicht die Konsole, von der es gestartet wurde. Wenn Sie acht aktive virtuelle Konsole haben, dann wird X die neunte benutzen und Sie können mit AltF9 umschalten. Wie starte ich XDM beim Booten? Es gibt zwei Denkansätze, wie xdm zu starten ist. Bei dem einen wird xdm von /etc/ttys aus gestartet, wobei das mitgelieferte Beispiel benutzt wird, während xdm bei dem anderen Ansatz einfach in rc.local oder von einem Skript X.sh im Verzeichnis /usr/local/etc/rc.d aus gestartet wird. Beide Ansätze sind gleichwertig und der eine wird in Situationen funktionieren, in denen der andere es nicht tut. In beiden Fällen ist das Ergebnis das gleiche: X liefert eine graphische Anmeldeaufforderung. Die ttys-Methode hat den Vorteil, daß dokumentiert ist, auf welchem vty X gestartet wird und der Neustart des X-Servers beim Abmelden an init übergeben wird. Die rc.local-Methode erleichtert ein Killen von xdm, falls Probleme beim Start des X-Servers auftreten sollten. Beim Laden von rc.local sollte xdm ohne irgendwelche Argumente (d.h. als Daemon) gestartet werden. xdm muß gestartet werden NACHDEM getty läuft, andernfalls entsteht ein Konflikt zwischen getty und xdm und die Konsole bleibt gesperrt. Der beste Weg, um dies zu vermeiden, ist, das Skript für etwa zehn Sekunden anzuhalten und dann xdm zu starten. Wenn Sie xdm durch einen Eintrag in /etc/ttys starten lassen, kann es zu einem Konflikt zwischen xdm und &man.getty.8; kommen. Um dieses Problem zu vermeiden, sollten Sie die Nummer des vt in die Datei /usr/X11R6/lib/X11/xdm/Xservers eintragen. :0 local /usr/X11R6/bin/X vt4 Diese Zeile führt dazu, daß der X Server /dev/ttyv3 nutzt. Die beiden Zahlen weichen voneinander ab: Der X-Server beginnt die Zählung der vty bei 1, während der FreeBSD-Kernel bei 0 beginnt. Wieso erhalte ich die Meldung Couldn't open console, wenn ich xconsole benutze? Wenn Sie X mit startx starten, werden die Zugriffsrechte für /dev/console leider nicht geändert, was dazu führt, daß Dinge wie xterm -C und xconsole nicht funktionieren. Das hängt damit zusammen, wie die Zugriffsrechte für die Konsole standardmäßig gesetzt sind. Auf einem Mehrbenutzersystem möchte man nicht unbedingt, daß jeder Benutzer einfach auf die Systemkonsole schreiben kann. Für Benutzer, die sich auf einer Maschine direkt mit einem VTY anmelden, existiert die Datei &man.fbtab.5;, um derartige Probleme zu lösen. In Kürze: sorgen Sie dafür, daß sich eine nicht auskommentierte Zeile der Form /dev/ttyv0 0600 /dev/console in der Datei /etc/fbtab befindet. Das sorgt dafür, daß wer auch immer sich auf /dev/ttyv0 anmeldet, auch die Konsole besitzt. Früher konnte ich XFree86 als normaler User starten. Warum sagt mir das System jetzt, daß ich root sein muß? Alle X-Server müssen mit der ID root laufen, um direkt auf die Videohardware zuzugreifen. Die älteren Versionen von XFree86 (bis einschließlich 3.3.6) installierten alle mitgelieferten Server so, daß sie automatisch unter ID root ausgeführt werden (setuid to root). Dies stellt natürlich eine Gefahrenquelle dar, da die X-Server große, komplexe Programme sind. Alle neueren Version von XFree86 installieren die Server aus genau diesem Grund nicht mehr "setuid root". Es ist natürlich nicht tragbar, den X-Server immer mit der ID root laufen zu lassen; auch aus Gründen der Sicherheit ist es keine gute Idee. Es gibt zwei Möglichkeiten, um X auch als normaler Benutzer starten zu können. Die erste ist die Verwendung von xdm oder eines ähnlichen Programms; die zweite ist die Benutzer von Xwrapper. xdm ist ein ständig laufendes Programm, mit dem Logins über eine graphische Benutzeroberfläche sind. Es wird normalerweise beim Systemstart initialisiert und für die Authentifizierung der Benutzer und den Start ihrer Sitzungen verantwortlich. Es ist also die graphische Entsprechnung von &man.getty.8; und &man.login.1;. Weitere Informationen zum Thema xdm finden Sie in der XFree86 Dokumentation und dem entsprechenden FAQ-Eintrag. Xwrapper ist eine Hülle für den X-Server. Mit diesem kleinen Utility ist es möglich, manuell den X-Server zu starten und weiterhin eine annehmbare Sicherheit zu haben. Das Tools prüft, ob die per Kommandozeile übergebenen Argumente halbwegs sinnvoll sind. Wenn dies der Fall ist, startet es den entsprechenden X-Server. Wenn Sie (aus welchem Grund auch immer) keine graphische Anmeldung wollen, ist Xwrapper die optimale Lösung. Wenn Sie die vollständige Ports-Sammlung installiert haben, finden Sie das Tool im Verzeichnis /usr/ports/x11/wrapper. Warum funktioniert meine PS/2-Maus nicht richtig? Ihre Maus und der Maustreiber sind etwas aus der Synchronisation geraten. Bis einschließlich Version 2.2.5 sorgt ein Wechsel von X zu einer virtuellen Konsole und wieder zurück für eine erneute Synchronisation. Falls das Problem öfter auftritt, können Sie die folgende Zeile in Ihre Kernelkonfigurationsdatei einfügen und den Kernel neu erstellen. options PSM_CHECKSYNC Lesen Sie den Abschnitt über die Erstellung eines Kernels, falls Sie keine Erfahrung mit der Erstellung eines Kernels haben. Mit dieser Option sollten geringere Chancen für Synchronisationsprobleme zwischen der Maus und dem Treiber bestehen. Falls sie jedoch weiterhin auf das Problem stoßen, drücken Sie eine der Maustasten, während Sie die Maus nicht bewegen, um die Maus und den Treiber neu zu synchronisieren. Beachten Sie, daß diese Option leider nicht auf allen Systemen funktioniert und das tap Merkmal eines am PS/2-Mausanschluß angeschlossenen ALPS GlidePoint Gerätes beeinträchtigt. Ab Version 2.2.6 erfolgt die Überprüfung der Synchronisation etwas besser und ist ein Standard im PS/2-Maustreiber. Es sollte sogar mit GlidePoint funktionieren. (Da der Code zur Überprüfung ein standard Merkmal geworden ist, gibt es die Option PSM_CHECKSYNC in diesen Versionen nicht mehr.) In seltenen Fällen kann es jedoch sein, daß der Treiber fälschlicherweise Synchronisationsprobleme meldet und Sie in den Kernelmeldungen folgendes sehen: psmintr: out of sync (xxxx != yyyy) und Ihre Maus nicht richtig zu funktionieren scheint. Falls das passiert, deaktivieren Sie den Code zur Überprüfung der Synchronisation, indem Sie die Treiberangaben für den PS/2-Maustreiber auf 0x100 setzen. Rufen Sie UserConfig durch Angabe der Option am Boot-Prompt auf: boot: -c Geben sie dann in der Kommandozeile von UserConfig folgendes ein: UserConfig> flags psm0 0x100 UserConfig> quit Meine PS/2-Maus von MouseSystems scheint nicht zu funktionieren. Es wurde berichtet, daß einige Modelle der PS/2-Mäuse von MouseSystems nur funktionieren, wenn sie im hochauflösenden Modus betrieben werden. Andernfalls springt der Mauszeiger sehr oft in die linke obere Ecke des Bilschirms. Leider gibt es hierzu keine Abhilfe für die Versionen 2.0.X und 2.1.X. Verwenden Sie bei den Versionen 2.2 bis 2.2.5 den folgenden Patch für die Datei /sys/i386/isa/psm.c und erstellen Sie den Kernel neu. Lesen Sie den Abschnitt über die Erstellung eines Kernels, falls Sie keine Erfahrung mit der Erstellung eines Kernels haben. diff -u psm.c.orig psm.c @@ -766,6 +766,8 @@ if (verbose >= 2) log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n", unit, i); + set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH); + #if 0 set_mouse_scaling(sc->kbdc); /* 1:1 scaling */ set_mouse_mode(sc->kbdc); /* stream mode */ Spezifizieren Sie ab Version 2.2.6 das Flag 0x04 für den Maustreiber, um die Maus in den hochauflösenden Modus zu bringen. Rufen Sie UserConfig durch Angabe der Option am Boot-Prompt auf: boot: -c Geben sie dann in der Kommandozeile von UserConfig folgendes ein: UserConfig> flags psm0 0x04 UserConfig> quit Lesen Sie den vorigen Abschnitt über eine andere mögliche Ursache für Probleme mit der Maus. Wenn ich eine X-Applikation erstellen will, kann imake die Datei Imake.tmpl nicht finden. Wo befindet sie sich? Imake.tmpl ist Teil des Imake-Paketes, ein Standardwerkzeug zur Erstellung von X-Applikationen. Imake.tmpl ist ebenso, wie viele Header-Dateien, die zur Erstellung von X-Applikationen benötigt werden, in der Distribution xprog enthalten. Sie können Sie per sysinstall oder aber manuell mit den X Distributionsdateien installieren. Wie vertausche ich die Maustasten? Benutzen Sie den Befehl xmodmap -e "pointer = 3 2 1" in Ihrer .xinitrc oder .xsession. Wie installiere ich einen Splash-Screen und wo finde ich sie? Kurz vor der Herausgabe von FreeBSD 3.1 wurde ein neues Feature eingefügt, das die Anzeige von Splash-Screens während der Bootmeldungen erlaubt. Die Splash-Screens dürfen derzeit nur Bitmaps mit 256-Farben (*.BMP) oder ZSoft-PCX-Dateien *.PCX) sein. Damit sie mit normalen VGA-Karten dargestellt werden können, darf die Größe 320x200 Bildpunkte nicht überschreiten. Wenn Sie in ihrem Kernel die VESA-Unterstützung eingebunden haben, beträgt die maximale Größe 1024x768 Pixel. Beachten Sie, daß die VESA-Unterstützung die Kerneloption VM86 benötigt, um in den Kernel eingebunden werden zu können. Die derzeitige VESA-Unterstützung kann entweder direkt durch die Kernelkonfigurationsoption VESA in den Kernel eingebunden werden, oder durch das Laden des VESA-Moduls kld während des Bootens. Um eine Splash-Screen zu benutzen, müssen Sie die Startdateien, die den Bootprozeß von FreeBSD kontrollieren, modifizieren. Diese Dateien haben sich vor der Herausgabe von FreeBSD 3.2 geändert, so daß nun zwei Möglichkeiten zum Laden einer Splash-Screen existieren: FreeBSD 3.1 Der erste Schritt besteht darin, eine Bitmap-Version Ihrer Splash-Screen zu finden. Von Version 3.1 werden nur Windows-Bitmap Splash-Screens unterstützt. Wenn Sie die Splash-Screen Ihrer Wahl gefunden haben, kopieren Sie sie nach /boot/splash.bmp. Als nächstes benötigen Sie eine Datei /boot/loader.rc, die die folgenden Zeilen enthält: load kernel load -t splash_image_data /boot/splash.bmp load splash_bmp autoboot seit FreeBSD 3.2 Außer der zusätzlichen Unterstützung von PCX Splash-Screens bietet FreeBSD 3.2 eine einfachere Möglichkeit, den Bootprozeß zu konfigurieren. Wenn Sie möchten, können Sie auch die obige Methode für FreeBSD 3.1 benutzen. Falls Sie das tun und PCX verwenden möchten, dann ersetzen Sie splash_bmp durch splash_pcx. Falls Sie aber die neuere Bootkonfiguration benutzen möchten, müssen Sie eine Datei /boot/loader.rc erstellen, die die folgenden Zeilen enthält: include /boot/loader.4th start und eine Datei /boot/loader.conf, die die folgenden Zeilen enthält: splash_bmp_load="YES" bitmap_load="YES" Dies setzt voraus, daß Sie /boot/splash.bmp als Ihren Splash-Screen benutzen. Wenn Sie lieber eine PCX-Datei benutzen wollen, dann kopieren Sie sie nach /boot/splash.pcx, erstellen Sie eine Datei /boot/loader.rc, wie oben beschrieben und eine Datei /boot/loader.conf, die folgendes enthält: splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" Alles, was Sie nun brauchen, ist ein Splash-Screen. Hierzu können Sie durch die Gallerie bei http://www.baldwin.cx/splash/ surfen. Kann ich die Windows(tm)-Tasten unter X nutzen? Ja, Sie müssen lediglich mit &man.xmodmap.1; festlegen, welche Aktion diese Tasten auslösen sollen. Unter der Annahme, daß alle Windows(tm) Tastaturen dem Standard entsprechen, lauten die Keycodes für die drei Tasten 115 - Windows(tm) Taste zwischen den Alt- und Strg-Tasten auf der linken Seite 116 - Windows(tm) Taste rechts von der Alt-Gr-Taste 117 - Menü-Taste, links von der rechten Strg-Taste Nach der folgenden Anweisung erzeugt die linke Windows(tm)-Taste ein Komma. &prompt.root; xmodmap -e "keycode 115 = comma" Sie werden Ihren Window Manager wahrscheinlich neu starten müssen, damit diese Einstellung wirksam wird. Um die neue Belegung der Windows(tm)-Tasten automatisch beim Start von X zu erhalten, könnten Sie entsprechende xmodmap Anweisungen in ihre ~/.xinitrc einfügen. Die bevorzugte Variante ist aber, eine Datei mit dem Namen ~/.xmodmaprc zu erzeugen, die nur die Parameter für den Aufruf von xmodmap enthält. Wenn Sie mehrere Tasten umdefinieren wollen, muß jede Definition in eine eigene Zeile gesetzt werden. Weiterhin müssen Sie in Ihrer ~/.xinitrc noch die folgende Zeile einfügen: xmodmap $HOME/.xmodmaprc Sie könnten die drei Tasten zum Beispiel mit den Funktionen F13, F14 und F15 belegen. Dadurch ist es sehr einfach, diese Tasten mit nützlichen Funktionen eines Programmes oder Desktops zu verknüpfen. Falls Sie das auch tun wollen, sollten in Ihrer ~/.xmodmaprc die folgenden Anweisungen stehen. keycode 115 = F13 keycode 116 = F14 keycode 117 = F15 Falls Sie zum Beispiel fvwm2 benutzen, können Sie ihn so einstellen, daß F13 das Fenster unter dem Mauszeiger minimiert bzw. maximiert. F14 holt das Fenster unter dem Mauszeiger in den Vordergrund bzw. ganz nach hinten, wenn es bereits im Vordergrund ist. F15 öffnet das Arbeitsplatz (Programme) Menü, auch wenn der Cursor nicht auf den Hintergrund zeigt. Dies ist extrem praktisch, wenn der gesamte Bildschirm von Fenster belegt wird; als kleiner Bonus gibt es sogar einen Zusammenhang zwischem dem Symbol auf der Taste und der durchgeführten Aktion. Dieses Verhalten kann man mit den folgenden Einträgen in der Datei ~/.fvwmrc erhalten: Key F13 FTIWS A Iconify Key F14 FTIWS A RaiseLower Key F15 A A Menu Workplace Nop Netzwerke Woher kann ich Informationen über Diskless Booting bekommen? Diskless Booting bedeutet, daß die FreeBSD-Maschine über ein Netzwerk gebootet wird und die notwendigen Dateien von einem Server anstatt von der Festplatte liest. Vollständige Details finden Sie im Handbucheintrag über Diskless Booting Kann eine FreeBSD-Maschine als Netzwerkrouter genutzt werden? Internetstandards und gute Ingenieurtechniken verbieten uns, in FreeBSD standardmäßig eine Paketweiterleitung zu aktivieren. Sie können dieses Feature aber aktivieren, indem Sie in /etc/rc.conf die folgende Variable auf YES setzen: gateway_enable=YES # Set to YES if this host will be a gateway Diese Option setzt die sysctl-Variable net.inet.ip.forwarding auf 1. In den meisten Fällen werden Sie auch einen Routing-Dæmon laufen lassen müssen, um andere Systeme in Ihrem Netzwerk über Ihren Router zu informieren. FreeBSD enthält den standard Routing-Daemon &man.routed.8;, für komplexere Situationen möchten Sie evtl. GaTeD ausprobieren (erhältlich von http://www.gated.org/), der FreeBSD vom Stand 3_5Alpha7 unterstützt. Wir müssen sie allerdings warnen, daß FreeBSD selbst in dieser Konfiguration nicht alle Internet-Standards für Router erfüllt. Für normale Anwendungszwecke kommt es diesen Standard aber ausreichend nahe. Kann ich meine Win95-Maschine über FreeBSD ans Internet anbinden? Personen, die diese Frage stellen, haben typischerweise zwei PCs zu Hause: einen mit FreeBSD und einen mit Win95; die Idee ist, die FreeBSD-Maschine an das Internet anzubinden und dann in der Lage zu sein, von der Windows95-Maschine aus über die FreeBSD-Maschine auf das Internet zuzugreifen. Das ist tatsächlich nur ein Spezialfall der vorherigen Frage. ... und die Antwort ist JA! Das user-mode ppp von FreeBSD kennt die Option . Wenn Sie ppp mit der Option starten, in /etc/rc.conf die Variable gateway_enable auf YES setzen und ihre Windows-Maschine korrekt konfigurieren, sollte das hervorragend funktionieren. Ausführlichere Informationen zur Konfiguration finden Sie im Pedantic PPP Primer von Steve Sims. Wenn Sie Kernel-Mode PPP verwenden oder ihre Verbindung zum Internet über Ethernet realisiert wurde, müssen Sie &man.natd.8; verwenden. Weitere Informationen dazu finden Sie im Abschnitt über natd. Warum mißlingt die Neukompilierung des neuesten BIND von ISC? Es existiert ein Konflikt zwischen der Datei cdefs.h in der Distribution und der, die mit FreeBSD ausgeliefert wird. Löschen Sie compat/include/sys/cdefs.h einfach. Unterstützt FreeBSD SLIP und PPP? Ja. Lesen Sie die Manualpages &man.slattach.8;, &man.sliplogin.8;, &man.pppd.8; und &man.ppp.8;. &man.ppp.8; und &man.pppd.8; liefern Unterstützung sowohl für eingehende, als auch ausgehende Verbindungen. &man.sliplogin.8; behandelt ausschließlich eingehende Verbindungen und &man.slattach.8; behandelt ausschließlich ausgehende Verbindungen. Diese Programme werden im Abschnitt PPP und SLIP des Handbuchs beschrieben. Falls Sie nur durch einen Shell-Account Zugang zum Internet haben, sehen Sie sich einmal das Package slirp an. Es kann Ihnen (eingeschränkten) Zugang zu Diensten wie ftp und http direkt von Ihrer lokalen Maschine aus ermöglichen. Unterstützt FreeBSD NAT oder Masquerading? Falls Sie ein lokales Subnetz (oder mehrere lokale Maschinen) besitzen, aber von Ihrem Internetprovider nur eine einzige (evtl. auch dynamisch zugeteilte) IP-Adresse zugewiesen bekommen haben, sehen Sie sich einmal das Programm &man.natd.8; an. &man.natd.8; ermöglicht es Ihnen, ein vollständiges Subnetz mit nur einer einzigen IP-Adresse an das Internet anzubinden. Das Programm &man.ppp.8; verfügt mit der eingebauten Option über eine ähnliche Funktionalität. In beiden Fällen wird die Alias-Bibliothek &man.libalias.3; verwendet. Wie verbinde ich zwei FreeBSD-Maschinen mit PLIP über die parallele Schnittstelle? Besorgen Sie sich ein Laplink-Kabel. Stellen Sie sicher, daß Sie einen Kernel mit lpt-Treiberunterstützung haben. &prompt.root; dmesg | grep lp lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven lp0: TCP/IP capable interface Schließen Sie das Kabel an die parallelen Schnittstellen an. Konfigurieren Sie die Netzwerkschnittstellenparameter für lp0 auf beiden Seiten als root. Falls Sie z.B. die Rechner max und moritz miteinander verbinden wollen max <-----> moritz IP-Adresse 10.0.0.1 10.0.0.2 Auf max geben Sie ein &prompt.root; ifconfig lp0 10.0.0.1 10.0.0.2 Auf moritz geben Sie ein &prompt.root; ifconfig lp0 10.0.0.2 10.0.0.1 Das ist alles! Lesen Sie bitte auch die Manuals &man.lp.4; und &man.lpt.4;. Sie sollten die Rechner auch in die Datei /etc/hosts eintragen 127.0.0.1 localhost.my.domain localhost 10.0.0.1 max.my.domain max 10.0.0.2 moritz.my.domain moritz So überprüfen, Sie, ob es funktioniert: auf max: &prompt.root; ifconfig lp0 lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 &prompt.root; netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire moritz max UH 4 127592 lp0 &prompt.root; ping -c 4 moritz PING moritz (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- moritz ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms Wieso kann ich das Gerät /dev/ed0 nicht erstellen? Bei Berkley-basierten Netzwerkimplementationen kann nur vom Kernel-Code aus direkt auf Netzwerkkarten zugegriffen werden. Zur weiteren Information lesen Sie bitte die Datei /etc/rc.network und die Manualpages zu den unterschiedlichen Netzwerkprogrammen, die dort erwähnt werden. Falls Sie danach total verwirrt sind, sollten Sie sich ein Buch besorgen, das die Netzwerkadministration auf einem anderen BSD-ähnlichen Betriebssystem beschreibt; mit wenigen signifikanten Ausnahmen gleicht die Netzwerkadministration auf FreeBSD im Grunde der auf SunOS 4.0 oder Ultrix. Wie kann ich Ethernet-Aliase einrichten? Benutzen Sie netmask 0xffffffff in Ihrer ifconfig-Befehlszeile, wie z.B.: &prompt.root; ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff Wie bringe ich meine 3C503 dazu, den anderen Anschluß zu benutzen? Wenn Sie die anderen Anschlüsse benutzen möchten, müssen Sie einen zusätzlichen Parameter in der &man.ifconfig.8;-Befehlszeile spezifizieren. Der Standard-Anschluß ist link0. Um den AUI-Anschluß anstelle des BNC-Anschlusses zu verwenden, benutzen Sie link2. Diese Angaben sollten durch Benutzung der Variablen ifconfig_* in der Datei /etc/rc.conf spezifiziert werden. Warum habe ich Probleme mit NFS und FreeBSD? Gewisse PC-Netzwerkkarten sind (um es gelinde auszudrücken) besser als andere und können manchmal Probleme mit netzwerkintensiven Anwendungen wie NFS verursachen. Weitere Informationen zu diesem Thema finden Sie im Handbucheintrag zu NFS. Warum kann ich per NFS nicht von einer Linux-Maschine mounten? Einige Versionen des NFS-Codes von Linux akzeptieren Mount-Requests nur von einem privilegierten Port. Versuchen Sie &prompt.root; mount -o -P linuxbox:/blah /mnt Warum kann ich per NFS nicht von einer Sun-Maschine mounten? Sun Workstations mit SunOS 4.X akzeptieren Mount-Requests nur von einem privilegierten Port. Versuchen Sie &prompt.root; mount -o -P sunbox:/blah /mnt Warum meldet mir mountd auf meinem FreeBSD NFS-Server ständig can't change attributes und bad exports list? Die häufigste Ursache für dieses Problem ist, daß Sie die folgende Passage aus &man.exports.5; nicht oder nicht richtig verstanden haben:
Jede Zeile in dieser Datei (außer den mit einem # beginnenden Kommentarzeilen) definiert den Mount Point und die Einstellungen für den Export innerhalb eines Dateisystems auf dem Server, für einen oder mehrere andere Rechner (Anmerkung des Übersetzers: Clients). Jeder Rechner darf für jedes lokale Dateisystem nur ein mal erwähnt werden und es darf für jedes Dateisystem des Servers nur einen Defaulteintrag geben, der dann für alle anderen Rechner gilt.
Um dies zu verdeutlichen, folgt ein Beispiel eines typischen Fehlers. Wenn alles oberhalb von /usr Teil eines einzigen Dateisystems ist (es also keine Mounts oberhalb von /usr gibt), ist die folgende Datei nicht korrekt: /usr/src client /usr/ports client Es gibt zwei Zeilen, die Einstellungen für das gleiche Dateisystem (/usr) und den gleichen Host (client) definieren. Die richtige Variante wäre: /usr/src /usr/ports client Um die zitiere Passage anders auszudrücken: Die Einstellungen für den Export eines Filesystems an einen anderen Host (globale Exporte werden wie ein anderer Host behandelt) müssen alle in einer Zeile erfolgen. Ja, das schränkt ihre Möglichkeiten für den Export von Dateisystemen ein, wenn Sie keine häßlichen Krücken einbauen wollen. Für die meisten Benutzer ist dies allerdings kein Problem. Es folgt ein Beispiel einer legalen Export-Datei; dabei sind /usr und /exports lokale Dateisysteme: # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=0 client01 /usr/src /usr/ports client02 # The "client" machines have root and can mount anywhere # up /exports. The world can mount /exports/obj read-only /exports -alldirs -maproot=0 client01 client02 /exports/obj -ro
Warum habe ich Probleme, per PPP mit NeXTStep-Maschinen zu kommunizieren? Versuchen Sie, die TCP-Erweiterung in /etc/rc.conf zu deaktivieren, indem Sie die folgende Variable auf NO setzen: tcp_extensions=NO Xylogic's Annex-Maschinen arbeiten hier auch fehlerhaft und Sie müssen die obige Änderung benutzen, um über Sie Verbindungen herzustellen. Wie aktiviere ich die Unterstützung für IP-Multicast? Multicast-Host-Funktionen werden seit FreeBSD 2.0 standardmäßig voll unterstützt. Wenn Sie Ihre Maschine als Multicast-Router betreiben wollen, müssen Sie Ihren Kernel mit der Option MROUTING rekompilieren und &man.mrouted.8; starten. Seit Version 2.2 startet FreeBSD &man.mrouted.8; beim Booten, wenn die Variable mrouted_enable in der Datei /etc/rc.conf auf "YES" gesetzt ist. MBONE-Tools sind in ihrer eigenen Ports-Kategorie mbone verfügbar. Schauen Sie dort nach, wenn Sie die Konferenztools vic und vat suchen! Weitere Informationen finden Sie im Mbone Information Web. Welche Netzwerkkarten basieren auf dem DEC-PCI-Chipsatz? Hier ist eine von Glen Foster gfoster@driver.nsta.org zusammengetragene Liste mit einigen aktuellen Ergänzungen: Network cards based on the DEC PCI chipset Vendor Model ASUS PCI-L101-TB Accton ENI1203 Cogent EM960PCI Compex ENET32-PCI D-Link DE-530 Dayna DP1203, DP2100 DEC DE435, DE450 Danpex EN-9400P3 JCIS Condor JC1260 Linksys EtherPCI Mylex LNP101 SMC EtherPower 10/100 (Modell 9332) SMC EtherPower (Model 8432) TopWare TE-3500P Znyx (2.2.x) ZX312, ZX314, ZX342, ZX345, ZX346, ZX348 Znyx (3.x) ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd)
Warum muß ich für Hosts auf meiner Site den FQDN benutzen? Sie werden wahrscheinlich feststellen, daß der Host sich tatsächlich in einer anderen Domäne befindet; wenn Sie sich zum Beispiel in foo.bar.edu befinden und einen Host namens mumble in der Domäne bar.edu erreichen wollen, werden Sie den fully-qualified Domainnamen mumble.bar.edu, anstatt nur mumble benutzen müssen. Traditionell war dies bei BSD-BIND-Resolvern erlaubt. Die aktuelle Version von bind, die mit FreeBSD ausgeliefert wird, ermöglicht jedoch nicht mehr die standardmäßige Abkürzung von nicht-fully-qualified Domainnamen für andere als ihre eigene Domäne. Ein nicht-qualifizierter Host mumble muß also entweder als mumble.foo.bar.edu gefunden werden, oder er wird in der Hauptdomäne gesucht. Dies unterscheidet sich vom vorherigen Verhalten, wo die Suche über mumble.bar.edu und mumble.edu fortgesetzt wurde. Werfen Sie einen Blick in RFC 1535, um zu erfahren, warum dies als schlechter Stil oder sogar als eine Sicherheitslücke betrachtet wurde. Als Abhilfe können Sie die Zeile search foo.bar.edu bar.edu anstelle der vorherigen domain foo.bar.edu in Ihre Datei /etc/resolv.conf einfügen. Stellen Sie jedoch sicher, daß die Suchreihenfolge nicht über die Grenze zwischen lokaler und öffentlicher Administration, wie RFC 1535 sie nennt, hinausreicht. Wieso erhalte ich bei allen Netzwerkoperationen die Meldung Permission denied? Dieses Problem kann auftreten, wenn Sie einen Kernel mit der Option IPFIREWALL erstellt haben. Während der Entwicklung von FreeBSD 2.1.7 wurde die Semantik dieser Option geändert: Seit dieser Version ist alles verboten, was nicht explizit erlaubt ist. Falls sie Ihr System unbeabsichtigt als Firewall fehlkonfiguriert haben, können Sie die Netzwerkfunktionalität wiederherstellen, indem Sie als root folgendes eingeben: &prompt.root; ipfw add 65534 allow all from any to any Sie können in /etc/rc.conf auch firewall_type="open" setzen. Weitere Informationen über die Konfiguration einer FreeBSD-Firewall finden Sie im Handbuch-Abschnitt. Wieviele Einbußen zieht IPFW nach sich? Die Antwort auf diese Frage hängt hauptsächlich von Ihrem Rule-Set und der Prozessorgeschwindigkeit ab. Für die meisten Anwendungen, die mit Ethernet und kleinen Rule-Sets arbeiten, ist die Antwort: unbedeutend. Diejenigen, die tatsächliche Messungen zur Befriedigung ihrer Neugierde brauchen, sollten weiterlesen. Die folgenden Messungen wurden mit 2.2.5-STABLE auf einem 486-66 durchgeführt. IPFW wurde modifiziert, um die Zeit zu messen, die in der Routine ip_fw_chk verbracht wurde. Das Ergebnis wurde nach jeweils 1000 Paketen auf der Konsole ausgegeben. Getestet wurden zwei Regelsätze mit jeweils 1000 Regeln. Der erste Satz wurde zur Demonstration eines Szenarios im schlimmsten Fall zusammengestellt, indem die folgende Regel wiederholt wurde: &prompt.root; ipfw add deny tcp from any to any 55555 Dies demonstriert den schlimmsten Fall, indem dafür gesorgt wird, daß die meisten von IPFW's Paketüberprüfungsroutinen ausgeführt werden, bevor letztlich entschieden wird, daß die Regel für das Paket nicht zutrifft (wegen der virtuellen Portnummer). Auf die 999. Iteration dieser Regel folgte ein allow ip from any to any. Der zweite Regelsatz wurde so zusammengestellt, daß die Überprüfung der Regeln schnell abbricht: &prompt.root; ipfw add deny ip from 1.2.3.4 to 1.2.3.4 Die nichtzutreffende IP-Adresse für die obige Regel sorgt dafür, daß diese Regeln sehr schnell übersprungen werden. Wie zuvor war die 1000. Regel ein allow ip from any to any. Der Verarbeitungsmehraufwand pro Paket im ersten Fall war ungefähr 2,703 ms/Paket, oder grob 2,7 Mikrosekunden pro Regel. Das theoretische Limit für die Verarbeitung von Paketen liegt also etwa bei 370 Paketen pro Sekunde. Bei einem 10Mbps Ethernet und einer Paketgröße von ~1500 Byte könnte man nur eine 55,5% ige Ausnutzung der Bandbreite erreichen. Im letzteren Fall wurde jedes Paket in ungefähr 1,172 ms verarbeitet, oder grob 1,2 Mikrosekunden pro Regel. Das theoretische Limit für die Verarbeitung von Paketen läge hier bei etwa 853 Paketen pro Sekunde, was ein 10Mbps Ethernet auslasten könnte. Die übermäßige Anzahl der getesteten Regeln und die Beschaffenheit dieser Regeln liefern kein realistisches Szenario -- sie wurden lediglich benutzt, um die hier vorgestellten Meßergebnisse zu generieren. Hier sind einige Dinge, die bei der Erstellung eines effizienten Regelsatzes beachtet werden sollten: Setzen Sie frühzeitig eine established-Regel, um den Großteil des TCP-Verkehrs abzufangen. Setzen Sie keine allow tcp-Anweisungen vor diese Regel. Plazieren Sie häufig angestoßene Regeln im Regelsatz vor solche, die weniger häufig benutzt werden (natürlich, ohne die Toleranz der Firewall zu verändern). Sie können herausfinden, welche Regeln am häufigsten benutzt werden, indem Sie die Paketstatistik mit ipfw -a l untersuchen. Warum kann ich bei &man.ipfw.8; einen Dienst nicht mit fwd auf eine andere Maschine umlenken? Der wahrscheinlichste Grund ist, daß Sie Network Address Translation (NAT) brauchen und nicht die einfache Weiterleitung von Pakete. Die fwd Anweisung macht genau das, was da steht: Sie leitet Pakete weiter; die Daten in den Paketen werden aber nicht verändert. Ein Beispiel: 01000 fwd 10.0.0.1 from any to foo 21 Wenn ein Paket mit dem Ziel foo die Maschine mit dieser Regel erreicht, wird das Paket an 10.0.0.1 weitergeleitet; die Zieladresse im Paket lautet aber immer noch foo! Die Zieladresse wird nicht in 10.0.0.1 geändert. Die meisten Rechner werden allerdings Pakete verwerfen, wenn die Zieladresse des Paketes nicht mit der Adresse des Rechners übereinstimmt. Das ist der Grund, warum eine fwd Regel oft nicht den Effekt hat, den der Benutzer wollte. Dieses Verhalten ist aber kein Fehler, sondern erwünscht. Wenn Sie einen Dienst auf eine andere Maschine umleiten wollen, sollten Sie sich den FAQ-Eintrag über die Umleitung von Diensten oder die Online-Hilfe zu &man.natd.8; durchlesen. Auch in der Ports Sammlung sind diverse Hilfsprogramme für diesen Zweck enthalten. Wie kann ich Service-Requests von einer Maschine auf eine andere umleiten? Sie können FTP-Requests (und andere Dienste) mit dem Package socket umleiten, das im Ports-Tree in der Kategorie sysutils verfügbar ist. Ersetzen sie die Befehlszeile für den Dienst einfach so, daß stattdessen socket aufgerufen wird, zum Beispiel so: ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.foo.com ftp wobei ftp.foo.com und ftp entsprechend der Host und der Port sind, wohin umgeleitet werden soll. Woher kann ich ein Bandbreiten-Managementtool bekommen? Für FreeBSD gibt es drei Bandbreiten-Managementtools. &man.dummynet.4; ist in FreeBSD (um genau zu sein, in &man.ipfw.4;) integriert. ALTQ gibt es umsonst; Bandwidth Manager von Emerging Technologies ist ein kommerzielles Produkt. BIND (named) wartet sowohl auf Port 53 als auch auf einem hohen Port auf Anfragen. Ist meine Maschine gehackt worden? Wahrscheinlich nicht. FreeBSD benutzt seit Version 3.0 eine Version von BIND, die einen Port mit einer hohen, zufälligen Nummer für den Versand von Anfragen nutzt. Wenn Sie Port 53 für abgehende Anfragen nutzen wollen, um durch eine Firewall zu kommen oder sich einfach nur besser zu fühlen, können die folgenden Zeilen in /etc/namedb/named.conf eintragen. options { query-source address * port * 53; }; Wenn Sie möchten, können Sie statt * auch eine einzelne IP-Adresse eintragen, um die Dinge noch weiter einzuschränken. Ach übrigens, herzlichen Glückwunsch. Es ist eine sehr gute Angewohnheit, die Ausgaben von &man.sockstat.1; durchzusehen und auf merkwürdige Dinge zu achten. Warum erhalte ich /dev/bpf0: device not configured? Der Berkeley-Paket-Filter (&man.bpf.4;) muß in den Kernel eingebunden werden, bevor er von einem Programme aus genutzt werden kann. Fügen Sie folgendes zu Ihrer Kernelkonfigurationsdatei hinzu und erstellen Sie einen neuen Kernel: pseudo-device bpf # Berkeley Packet Filter Zweitens müssen Sie nach dem Rebooten den Device Node erstellen. Führen Sie dazu die folgenden Befehle aus: &prompt.root; cd /dev &prompt.root; sh MAKEDEV bpf0 Weitere Informationen zur Erstellung von Geräten finden Sie im Handbucheintrag über Device Nodes. Habe ich, analog zum smbmount von Linux, eine Möglichkeit, auf ein freigegebenes Laufwerk einer Windows-Maschine in meinem Netzwerk zuzugreifen. Benutzen Sie das Package sharity light aus der Ports-Sammlung. Was bedeutet die Meldung icmp-response bandwidth limit 300/200 pps in meinen Logfiles? Mit dieser Meldung teilt Ihnen der Kernel mit, daß irgend jemand versucht, ihn zur Generierung von zu vielen ICMP oder TCP reset (RST) Antworten zu provozieren. ICMP Antworten sind oft das Ergebnis von Verbindungsversuchen zu unbenutzen UDP ports. TCP resets werden generiert, wenn jemand versucht, eine Verbindung zu einem ungenutzten TCP Port aufzubauen. Die Meldungen können unter anderem durch die folgenden Ereignisse ausgelöst werden: Denial of Service (DoS) Angriffe mit der Brechstange (und nicht durch Angriffe mit einzelnen Paketen, die gezielt eine Schwachstelle des Systems ausnutzen sollen). Port Scans, bei denen versucht wird, Verbindungen zu einer großen Anzahl von Ports (und nicht nur einigen bekannten Ports) herzustellen. Die erste Zahl gibt an, wieviele Pakete vom Kernel ohne das Limit versendet worden wären; die zweite Zahl gibt das Limit an. Sie können das Limit mit Hilfe der sysctl-Variable net.inet.icmp.icmplim einstellen. Im Beispiel wird das Limit auf 300 Packete pro Sekunde gesetzt: &prompt.root; sysctl -w net.inet.icmp.icmplim=300 Wenn Sie zwar die Begrenzung nutzen möchten, aber die Meldungen nicht in Ihren Logfiles sehen möchten, können Sie die Meldungen mit der sysctl-Variable net.inet.icmp.icmplim_output abschalten: &prompt.root; sysctl -w net.inet.icmp.icmplim_output=0 Falls Sie die Begrenzung ganz abschalten wollen, können Sie die Sysctl-Variable net.inet.icmp.icmplim auf 0. Wir raten Ihnen aus den oben genannten Gründen dringend von diesem Schritt ab.
PPP Ich bekomme &man.ppp.8; nicht zum Laufen. Was mache ich falsch? Sie sollten zuerst &man.ppp.8; (die Manualpage zu ppp) und den Abschnitt zu ppp im Handbuch lesen. Aktivieren Sie das Logging mit folgendem Befehl: set log Phase Chat Connect Carrier lcp ipcp ccp command Dieser Befehl kann an der Eingabeaufforderung von ppp eingegeben oder in die Konfigurationsdatei /etc/ppp/ppp.conf eingetragen werden (der beste Ort hierfür ist der Anfang des Abschnitts default. Stellen Sie sicher, daß die Datei /etc/syslog.conf die folgenden Zeilen enthält: !ppp *.* /var/log/ppp.log und, daß die Datei /var/log/ppp.log existiert. Sie können nun über die Logfiles eine Menge darüber herausfinden, was geschieht. Es macht nichts, wenn die Einträge in den Logfiles Ihnen gar nichts sagen. Wenn Sie jemandem um Hilfe bitten müssen, könnten sie für ihn von Nutzen sein. Falls Ihre ppp-Version den set log Befehl nicht versteht, sollten Sie sich die neueste Version herunterladen. Sie kann auf Freebsd-Version 2.1.5 und höher erstellt werden. Warum hängt sich ppp auf, wenn ich es benutze? Das liegt meistens daran, daß Ihr Rechnername nicht aufgelöst werden kann. Um dieses Problem zu lösen, müssen Sie sicherstellen, daß die Datei /etc/hosts von Ihrem Resolver zuerst genutzt wird. Dazu muß in der Datei /etc/host.conf der Eintrag hosts an die erste Stelle gesetzt werden. Erstellen Sie dann einfach für Ihren lokalen Rechner einen Eintrag in der Datei /etc/hosts. Falls Sie kein lokales Netzwerk besitzen, ändern Sie die localhost-Zeile: 127.0.0.1 foo.bar.com foo localhost Andernfalls fügen Sie einfach einen weiteren Eintrag für Ihren lokalen Recher hinzu. Weitere Details finden Sie in den betreffenden Manualpages. Wenn Sie fertig sind sollten Sie ping -c1 `hostname` erfolgreich ausführen können. Warum wählt &man.ppp.8; im -auto-Modus nicht? Überprüfen Sie zunächst, ob Sie einen Standard-Gateway eingestellt haben. Wenn Sie netstat -rn ausführen, sollten Sie zwei Einträge ähnlich den folgenden sehen: 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 Hier wird angenommen, daß Sie die Adressen aus dem Handbuch, der Manualpage oder aus der Datei ppp.conf.sample benutzt haben. Falls Sie keine Standardroute haben, kann es daran liegen, daß Sie eine alte Version von ppp benutzen, die das Wort HISADDR in der Datei ppp.conf nicht versteht. Falls Ihre ppp-Version älter als 2.2.5 ist, ändern Sie die Zeile add 0 0 HISADDR in add 0 0 10.0.0.2 Ein weiterer Grund dafür, daß die Zeile für die Standardroute fehlt, könnte der sein, daß Sie fälschlicherweise eine Standardroute in der Datei /etc/rc.conf (diese Datei hieß vor Version 2.2.2 /etc/sysconfig) eingetragen und die folgende Zeile in ppp.conf ausgelassen haben: delete ALL Lesen Sie in diesem Fall den Abschnitt Abschließende Systemkonfiguration des Handbuchs. Was bedeutet No route to host? Dieser Fehler beruht für gewöhnlich auf einem fehlenden Abschnitt MYADDR: delete ALL add 0 0 HISADDR in Ihrer Datei /etc/ppp/ppp.linkup. Er ist nur notwendig, wenn Sie eine dynamische IP-Adresse besitzen oder die Adresse Ihres Gateways nicht kennen. Wenn Sie den interaktiven Modus benutzen, können Sie folgendes eingeben, nachdem Sie in den packet mode gelangt sind (den Paket Modus erkennen Sie an PPP im Prompt): delete ALL add 0 0 HISADDR Weitere Details finden Sie im Abschnitt PPP und Dynamische IP-Adressen des Handbuchs. Wieso werden meine Verbindungen nach ca. drei Minuten beendet? Der Standardtimeout für ppp beträgt drei Minuten. Er kann durch die Zeile set timeout NNN eingestellt werden, wobei NNN die Inaktivität in Sekunden, bevor die Verbindung geschlossen wird, angibt. Falls NNN Null ist, wird die Verbindung niemals aufgrund eines Timeouts geschlossen. Es ist möglich, diesen Befehl in die Datei ppp.conf einzubinden, oder ihn an der Eingabeaufforderung im interaktiven Modus einzugeben. Durch eine Verbindung zum Server-Socket von ppp über &man.telnet.1; oder &man.pppctl.8; ist es auch möglich, den Timeout bei aktiver Verbindung anzupassen. Weitere Details finden Sie in der Manualpage &man.ppp.8;. Wieso bricht meine Verbindung bei hoher Auslastung ab? Falls Sie Link-Quality-Reporting (LQR) konfiguriert haben, ist es möglich, daß zu viele LQR-Pakete zwischen Ihrer Maschine und dem verbundenen Rechner verloren gehen. ppp folgert daraus, daß die Verbindung nicht in Ordnung ist und schließt sie. Vor FreeBSD Version 2.2.5 war LQR standardmäßig aktiviert; nun ist es standardmäßig deaktiviert. Es kann durch folgende Zeile deaktiviert werden: disable lqr Warum brechen meine Verbindungen nach unbestimmter Zeit zusammen? Wenn die Qualität Ihrer Telefonleitung zu schlecht oder bei Ihrem Anschluß die Option (Telekomdeutsch: das Leistungsmerkmal) Anklopfen aktiviert ist, kann es manchmal vorkommen, daß Ihr Modem auflegt, weil es (fälschlicherweise) annimmt, daß es das Trägersignal verloren hat. Bei den meisten Modems gibt es eine Einstellmöglichkeit, um anzugeben, wie tolerant es gegenüber vorübergehenden Verlusten des Trägersignals sein soll. Bei einem USR Sportster wird dies zum Beispiel im Register S10 in Zehntelsekunden angegeben. Um Ihr Modem toleranter zu machen, können Sie zu Ihrem Wählbefehl die folgende Sende-Empfangs-Sequenz hinzufügen: set dial "...... ATS10=10 OK ......" Weitere Information sollten Sie dem Handbuch Ihres Modems entnehmen können. Warum hängen meine Verbindung nach einer unbestimmten Zeit? Viele Leute machen Erfahrungen mit hängenden Verbindungen ohne erkennbaren Grund. Als erstes muß festgestellt werden, welche Seite der Verbindung hängt. Wenn Sie ein externes Modem benutzen, können Sie einfach versuchen, &man.ping.8; zu benutzen, um zu sehen, ob die TD-Anzeige aufleuchtet, wenn Sie Daten übertragen. Falls sie aufleuchtet (und die RD-Anzeige nicht), liegt das Problem am anderen Ende. Falls TD nicht aufleuchtet, handelt es sich um ein lokales Problem. Bei einem internen Modem müssen Sie den Befehl set server in Ihrer Datei ppp.conf benutzen. Stellen Sie über pppctl eine Verbindung zu ppp her, wenn die Verbindung hängt. Falls Ihre Netzwerkverbindung plötzlich wieder funktioniert (ppp wurde durch die Aktivität auf dem Diagnose-Socket wiederbelebt) oder Sie keine Verbindung bekommen (vorausgesetzt, der Befehl set socket wurde beim Start erfolgreich ausgeführt), handelt es sich um ein lokales Problem. Falls Sie eine Verbindung bekommen und die externe Verbindung weiterhin hängt, aktivieren Sie lokales asynchrones Logging mit set log local async und benutzen Sie &man.ping.8; von einem anderen Fenster oder Bildschirm aus, um die externe Verbindung zu benutzen. Das asynchrone Logging zeigt Ihnen, welche Daten über die Verbindung gesendet und empfangen werden. Falls Daten hinausgehen, aber nicht zurückkommen, handelt es sich um ein externes Problem. Wenn Sie festgestellt haben, ob es sich um ein lokales oder um ein externes Problem handelt, haben Sie zwei Möglichkeiten: Was kann ich machen, wenn die Gegenstelle nicht antwortet? Hier können Sie wenig tun. Die meisten ISPs werden ablehnen, Ihnen zu helfen, wenn Sie kein Betriebssystem von Microsoft benutzen. Sie können enable lqr in Ihrer Datei ppp.conf angeben, wodurch ppp ermöglicht wird, ein externes Versagen zu erkennen und aufzulegen, aber diese Erkennung ist relativ langsam und deshalb nicht besonders nützlich. Evtl. sagen Sie Ihrem ISP nicht, daß Sie ein eigenes ppp benutzen... Versuchen Sie zunächst, jegliche Datenkompression auszuschalten, indem Sie folgendes zu Ihrer Konfiguration hinzufügen: disable pred1 deflate deflate24 protocomp acfcomp shortseq vj deny pred1 deflate deflate24 protocomp acfcomp shortseq vj Stellen Sie nun wieder eine Verbindung her, um festzustellen, ob sich etwas geändert hat. Falls es nun besser läuft oder falls das Problem vollständig behoben ist, versuchen Sie durch schrittweises Ändern der Einstellungen festzustellen, welche Einstellung den Unterschied bewirkt. Hierdurch erhalten Sie schlüssige Fakten fuer ein Gespräch mit Ihrem ISP (andererseits wird hierdurch offensichtlich, daß Sie kein Microsoft-Produkt benutzen). Aktivieren Sie asynchrones Logging und warten Sie, bis die Verbindung wieder hängt, bevor Sie sich an Ihren ISP wenden. Hierzu kann einiges an Plattenplatz nötig sein. Die Daten, die als letztes von dem Port gelesen wurden, könnten von Interesse sein. Für gewöhnlich handelt es sich um ASCII-Text, der sogar den Fehler beschreiben kann (Memory fault, core dumped). Falls Ihr ISP hilfsbereit ist, sollte er in der Lage sein, an seinem Ende das Logging zu aktivieren und wenn das nächste Mal die Verbindung abbricht, könnte er Ihnen mitteilen, worin das Problem auf seiner Seite besteht. Gerne können Sie Details auch an &a.brian; schicken, oder Ihren ISP bitten, sich direkt an ihn zu wenden. Was kann ich tun, wenn sich &man.ppp.8; aufhängt? In diesem Fall erstellen Sie am besten ppp neu, indem Sie CFLAGS+=-g und STRIP= am Ende des Makefiles einfügen und dann make clean && make && make install ausführen. Suchen Sie die Prozeßnummer von ppp mit ps ajxww | fgrep ppp, wenn ppp sich aufhängt und führen Sie gdb ppp PID aus. Am gdb-Prompt können Sie bt benutzen, um einen Auszug von Stack zu erhalten. Senden Sie die Ergebnisse an brian@Awfulhak.org. Warum passiert nach der Nachricht Login OK! nichts? Bei Freebsd-Versionen vor 2.2.5 wartete &man.ppp.8; darauf, daß der Partner das Line Control Protocol (LCP) initiiert. Viele ISPs starten nicht mit der Initiierung, sondern erwarten dies vom Client. Benutzen Sie die folgende Zeile, um ppp zu veranlassen, LCP zu initiieren: set openmode active Für gewöhnlich schadet es nicht, wenn beide Seiten versuchen, Verhandlungen einzuleiten. Deshalb ist openmode nun standardmäßig aktiv. Im nächsten Abschnitt wird allerdings erklärt, in welchen Fällen es doch schadet. Ich sehe ständig Fehlermeldungen über gleiche "Magic Numbers". Was heißt das? Nach dem Aufbau einer Verbindung kann es sein, daß Sie in der Logdatei gelegentlich Meldungen mit dem Hinweis magic is the same sehen. Manchmal sind diese Meldungen harmlos und manchmal bricht die eine oder andere Seite die Verbindung ab. Die meisten Implementationen von ppp können dieses Problem nicht handhaben und Sie werden wiederholte Konfigurationsanforderungen und -bestätigungen in der Logdatei finden, bis ppp schließlich aufgibt und die Verbindung beendet. Dies geschieht normalerweise auf Servern mit langsamen Festplatten, bei denen ein getty auf dem Port ausgeführt und ppp nach dem Einloggen von einem Login-Skript oder einem Programm aus gestartet wird. Ich habe auch davon gehört, daß dies bei der Benutzung von slirp regelmäßig auftritt. Der Grund hierfür ist, daß das ppp auf der Client-Seite in der Zeit, die benötigt wird, getty zu beenden und ppp zu starten, bereits beginnt, Line Control Protocol (LCP) Pakete zu senden. Da ECHO auf dem Serverport weiterhin eingeschaltet ist, werden diese Pakete zum ppp auf der Client-Seite reflektiert. Ein Teil der LCP-Verhandlungen ist die Einrichtung einer "magic Number" für jede Seite der Verbindung, damit Echos erkannt werden können. Das Protokoll besagt, daß, wenn der Partner versucht, die gleiche "Magic Number" auszuhandeln, ein NAK zurückgesendet und eine neue "Magic Number" gewählt werden soll. Während der Server das ECHO eingeschaltet hat, sendet der Client LCP Pakete, sieht die gleiche "Magic Number" im reflektierten Paket und erzeugt ein NAK. Er sieht auch das reflektierte NAK (was bedeutet, daß ppp seine "Magic Number" ändern muß). Hierdurch wird eine Vielzahl von Änderungen der "Magic Number" hervorgerufen, die sich allesamt im tty-Puffer des Servers ansammeln. Sobald ppp auf dem Server startet, wird es mit Änderungen der "Magic Number" überflutet und entscheidet, daß es sich zur Genüge mit den LCP-Verhandlungen beschäftigt hat und gibt auf. Und während sich der Client noch darüber freut, daß er keine weiteren Reflexionen sieht, wird ihm gemeldet, daß der Server auflegt. Dies kann verhindert werden, indem dem Parter durch die folgende Zeile in der Datei ppp.conf erlaubt wird, mit der Verhandlung zu beginnen: set openmode passive Hierdurch wird ppp mitgeteilt, darauf zu warten, daß der Server mit den LCP-Verhandlungen beginnt. Einige Server starten jedoch nie mit der Verhandlungen; falls dies der Fall ist, können Sie folgendes tun: set openmode active 3 Hierdurch bleibt ppp für drei Sekunden passiv und fängt dann erst an, LCP-Anforderungen zu senden. Falls der Partner während dieser Zeit beginnt, Anforderungen zu senden, wird ppp direkt antworten und nicht erst, nachdem die drei Sekunden abgelaufen sind. Die LCP-Verhandlungen dauern an, bis die Verbindung geschlossen wird. Was mache ich falsch? Es gibt eine Fehlfunktion in der Implementierung von ppp, die darin besteht, daß LCP-, CCP- & IPCP-Antworten nicht mit den ursprünglichen Anforderungen assoziiert werden. Für den Fall, daß eine Implementation von ppp mehr als sechs Sekunden langsamer ist, als die andere Seite, resultiert das darin, daß die andere Seite zwei weitere LCP-Konfigurationsanforderungen sendet, was fatale Auswirkungen hat. Stellen Sie sich vor, wir hätten es mit zwei Implementierungen A und B zu tun. A beginnt unmittelbar nach der Verbindung, LCP-Anforderungen zu senden und B benötigt sieben Sekunden, zu starten. Wenn B startet, hat A bereits drei LCP-Anforderungen gesendet. Wir nehmen an, daß ECHO ausgeschaltet ist; andernfalls würden wir Probleme mit der "Magic Number" beobachten, wie bereits im vorherigen Abschnitt beschrieben. B sendet eine Anforderung und anschließend eine Bestätigung der ersten Anforderung von A. Dies führt dazu, daß A in den Zustand OPENED übergeht und eine Bestätigung (die erste) zurück an B sendet. In der Zwischenzeit sendet B zwei weitere Bestätigungen als Antwort auf die zusätzlichen Anforderungen, die von A gesendet worden sind, bevor B gestartet ist. B empfängt dann die erste Bestätigung von A und geht in den Zustand OPENED über. A empfängt die zweite Bestätigung von B, geht zurück in den Zustand REQ-SENT und sendet eine weitere (vierte) Anforderung entsprechend dem RFC. A empfängt dann die dritte Bestätigung und geht in den Zustand OPENED über. In der Zwischenzeit empfängt B die vierte Anforderung von A, wechselt in den Zustand ACK-SENT und sendet eine weitere (zweite) Anforderung und (vierte) Bestätigung entsprechend dem RFC. A erhält die Anforderung, geht in den Zustand REQ-SENT über, sendet eine weitere Anforderung, erhält unverzüglich die nächste Bestätigung und geht in OPENED über. Das geht so weiter, bis eine Seite erkennt, daß man zu keinem Ergebnis gelangt und aufgibt. Am besten verhindert man solche Situationen, indem man eine Seite als passiv konfiguriert, d.h. dafür sorgt, daß eine Seite darauf wartet, daß die andere mit den Verhandlungen beginnt. Das kann durch den Befehl set openmode passive geschehen. Diese Option sollten Sie mit Vorsicht genießen. Folgenden Befehl sollten Sie benutzen, um die Wartezeit auf den Beginn der Verhandlungen des Partners von ppp zu begrenzen: set stopped N Alternativ kann der Befehl set openmode active N (wobei N die Wartezeit in Sekunden vor Beginn der Verhandlungen angibt) benutzt werden. Weitere Details finden Sie in den Manualpages. Warum hängt sich &man.ppp.8; kurz nach Aufbau der Verbindung weg? Bei FreeBSD-Versionen vor 2.2.5 konnte es passieren, daß Ihre Verbindung kurz nach dem Aufbau deaktiviert wurde, weil ppp die Verhandlungen der Kompression Predictor1 falsch handhabte. Das passiert nur dann, wenn beide Seiten versuchen, ein unterschiedliches Kompressionsprotokoll (Compression Control Protocol (CCP)) auszuhandeln. Dieses Problem ist bereits behoben, falls Sie aber noch eine alte Version von ppp verwenden, können Sie es mit Hilfe der folgenden Zeile umgehen: disable pred1 Warum reagiert &man.ppp.8; nicht mehr, wenn ich es mit shell verlassen habe? Wenn Sie den Befehl shell oder ! benutzen, führt ppp eine Shell aus (falls Sie Argumente übergeben haben, führt ppp diese Argumente aus). ppp wartet auf die Beendigung des Befehls, bevor es seine Arbeit fortsetzt. Falls Sie versuchen, die ppp-Verbindung während der Programmausführung zu benutzen, wird es so aussehen, als wäre die Verbindung eingefroren. Das liegt daran, daß ppp auf die Beendigung des Befehls wartet. Falls Sie solche Befehle verwenden möchten, benutzen Sie stattdessen den Befehl !bg. Hierdurch wird der angegebene Befehl im Hintergrund ausgeführt und ppp kann fortfahren, die Verbindung zu bedienen. Warum wird &man.ppp.8; niemals beendet, wenn ich es über ein Null-Modem-Kabel benutze? Es gibt keine Möglichkeit für ppp, automatisch festzustellen, ob eine direkte Verbindung beendet worden ist. Das liegt an den Leitungen, die bei einem seriellen Null-Modem-Kabel benutzt werden. Wenn Sie diese Art der Verbindung verwenden, sollte LQR immer aktiviert werden: enable lqr LQR wird standardmäßig akzeptiert, wenn es vom Partner ausgehandelt wird. Warum wählt ppp im Modus -auto ohne Grund? Falls ppp unerwarteterweise wählt, müssen Sie den Grund herausfinden und Wählfilter (dfilters) einsetzen, um dies zu verhindern. Benutzen Sie die folgende Zeile, um den Grund herauszufinden: set log +tcp/ip Dadurch wird jeglicher Verkehr über die Verbindung geloggt. Wenn das nächste mal unerwartet eine Verbindung hergestellt wird, werden Sie den Grund zusammen mit einer hilfreichen Zeitangabe in der Logdatei finden. Sie können nun das Wählen aufgrund dieser Bedingungen verhindern. Normalerweise wird diese Art von Problemen durch Anfragen an den DNS verursacht. Um zu verhindern, daß DNS-Anfragen den Aufbau der Verbindung hervorrufen (das verhindert nicht, daß Pakete über eine bestehende Verbindung gesendet werden), benutzen Sie die folgenden Zeilen: set dfilter 1 deny udp src eq 53 set dfilter 2 deny udp dst eq 53 set dfilter 3 permit 0/0 0/0 Dies ist nicht immer brauchbar, weil es effektiv Ihre Fähigkeit, auf Anforderung wählen zu können einschränkt - die meisten Programme müssen eine DNS-Anfrage durchführen, bevor Sie andere, das Netzwerk betreffenden Dinge tun können. Im Fall von DNS sollten Sie versuchen, herauszufinden, welches Programm tatsächlich versucht, einen Hostnamen aufzulösen. Sehr oft handelt es sich hier um &man.sendmail.8;. Sie sollten sicherstellen, daß Sie sendmail in der Konfigurationsdatei sagen, daß keine DNS-Anfragen durchführen soll. Lesen Sie den Abschnitt zur Mail-Konfiguration, um Details zur Erstellung Ihrer eigenen Konfigurationsdatei und darüber, was dort angegeben werden sollte, zu erfahren. Sie könnten z.B. die folgende Zeile in Ihre .mc-Datei einfügen: define(`confDELIVERY_MODE', `d')dnl Das veranlaßt sendmail dazu, alles in eine Warteschlange einzureihen, bis die Warteschlange verarbeitet wird (normalerweise wird sendmail mit aufgerufen, was besagt, daß die Warteschlange alle 30 Minuten abgearbeitet wird) oder, bis ein sendmail -q ausgeführt wird (z.B. aus Ihrer Datei ppp.linkup heraus). Was bedeuten diese CCP-Fehler? Ich sehe ständig folgende Fehler in meiner Logdatei: CCP: CcpSendConfigReq CCP: Received Terminate Ack (1) state = Req-Sent (6) Das liegt daran, daß ppp versucht, die Komprimierung Predictor1 auszuhandeln und der Partner über keinerlei Komprimierung verhandeln will. Die Meldungen sind harmlos, aber wenn Sie sie beseitigen möchten, können Sie die Komprimierung Predictor1 auch lokal ausschalten: disable pred1 Warum hängt sich &man.ppp.8; während einer Dateiübertragung mit IO-Fehlern auf? Unter FreeBSD 2.2.2 und frühere gab es einen Bug im Tun-Treiber, der ankommende Pakete die größer als die MTU der Tun-Schnittstelle sind, ablehnt. Der Empfang eines Paketes größer der MTU resultiert in einem IO-Fehler, der über syslogd geloggt wird. Die ppp-Spezifikation besagt, daß eine MTU von 1500 immer als Minimum akzeptiert werden sollte, ungeachtet aller LCP-Verhandlungen. Es ist deshalb möglich, daß Sie die MTU auf unter 1500 herabsetzen, Ihr ISP wird trotzdem Pakete der Größe 1500 übertragen und Sie werden auf diese Fehlfunktion stoßen, die Ihre Verbindung lahmlegt. Das Problem kann umgangen werden, indem unter FreeBSD 2.2.2 und früher niemals eine MTU von weniger als 1500 gesetzt wird. Warum loggt ppp die Geschwindigkeit meiner Verbindung nicht? Um alle Zeilen Ihrer Modemkonversation mitzuloggen, müssen Sie folgendes einstellen: set log +connect Dies veranlaßt &man.ppp.8; dazu, alles bis zur letzten angeforderten expext-Zeile mitzuloggen. Falls Sie die Geschwindigkeit Ihrer Verbindung erfahren möchten und PAP oder CHAP (und deshalb nach dem CONNECT im Wählskript nichts mehr zu chatten haben - kein set login-Skript), müssen Sie sicherstellen, daß Sie ppp anweisen, die gesamte CONNECT-Zeile zu erwarten, etwa so: set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n" Hier bekommen wir unser CONNECT, senden nichts, erwarten dann einen Line-Feed, der ppp zwingt, die gesamte CONNECT-Antwort zu lesen. Warum ignoriert &man.ppp.8; das Zeichen \ in meinem Chat-Skript? ppp analysiert jede Zeile in Ihrer Konfigurationsdatei, damit es Zeichenketten wie z.B. set phone "123 456 789" korrekt interpretieren kann (und erkennen, daß es sich bei der Nummer tatsächlich nur um ein Argument handelt). Um das Zeichen " anzugeben, müssen Sie ihm einen Backslash (\) voranstellen. Wenn der Chat-Interpreter jedes Argument analysiert, reinterpretiert er die Argumente, um irgendwelche speziellen Escape-Sequenzen wie z.B. \P oder \T (sehen Sie in die Manualpage) zu finden. Das Ergebnis dieser Doppelanalyse ist, daß Sie daran denken müssen, die richtige Anzahl an Escape-Zeichen zu verwenden. Falls Sie tatsächlich das Zeichen \ z.B. zu Ihrem Modem senden möchten, brauchen Sie etwas ähnliches, wie: set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK" woraus sich folgende Zeichen ergeben: ATZ OK AT\X OK oder set phone 1234567 set dial "\"\" ATZ OK ATDT\\T" was folgende Zeichen ergibt: ATZ OK ATDT1234567 Warum gibt es die Datei ppp.core nicht, wenn &man.ppp.8; einen Segmentation Fault erzeugt hat? Weder ppp noch andere Programme sollten Core-Dumps erzeugen. Da ppp mit der effektiven Benutzerkennung 0 ausgeführt wird, wird das Betriebssystem ppp's Coreimage nicht auf die Festplatte schreiben, bevor es ppp beendet hat. Falls ppp jedoch tatsächlich aufgrund einer Speicherverletzung abbricht und Sie die aktuellste Version (siehe Anfang dieses Kapitels) benutzen, dann sollten Sie folgendes tun: &prompt.user; tar xfz ppp-*.src.tar.gz &prompt.user; cd ppp*/ppp &prompt.user; echo STRIP= >>Makefile &prompt.user; echo CFLAGS+=-g >>Makefile &prompt.user; make clean all &prompt.user; su &prompt.root; make install &prompt.root; chmod 555 /usr/sbin/ppp Nun ist die installierte Version von ppp mit einem Debugger ausführbar. Sie können ppp nun nur noch als root ausführen, da alle vorherigen Zugriffsrechte aufgehoben worden sind. Achten Sie darauf, in welchem Verzeichnis Sie sich gerade befinden, wenn Sie ppp starten. Wenn nun wieder eine Speicherverletzung auftreten sollte, wird ppp einen Speicherauszug erzeugen, den Sie in der Datei ppp.core finden. Sie sollten dann folgendes tun: &prompt.user; su &prompt.root; gdb /usr/sbin/ppp ppp.core (gdb) bt ..... (gdb) f 0 .... (gdb) i args .... (gdb) l ..... Mit Hilfe all dieser Informationen sollte es möglich sein, das Problem zu diagnostizieren. Falls Sie mit dem Umgang mit gdb vertraut sind, könnten Sie weitere Einzelheiten herausfinden, z.B. wodurch der Fehler tatsächlich hervorgerufen wurde und die Adressen & Werte der betreffenden Variablen. Warum bekommt das Programm, das eine automatische Anwahl ausgelöst hat, keine Verbindung? Dies war ein bekanntes Problem bei ppp-Konfigurationen, bei denen automatisch dynamische, lokale IP-Adressen mit dem Partner ausgehandelt werden. In der aktuellsten Version ist das Problem behoben - suchen Sie in den Manualpages nach iface. Das Problem bestand darin, daß, wenn das erste Programm &man.connect.2; aufruft, die IP-Adresse der tun-Schnittstelle dem Socketendpunkt zugeordnet wird. Der Kernel erstellt das erste ausgehende Paket und schreibt es in das tun-Gerät. ppp liest dann das Paket und baut eine Verbindung auf. Falls die Schnittstellenadresse sich nun aufgrund ppp's dynamischer Adreßzuordnung ändert, wird der originale Socketendpunkt ungültig. Alle weiteren Pakete, die zum Partner gesendet werden, werden für gewöhnlich verworfen. Selbst wenn sie nicht verworfen werden würden, würden alle Antworten nicht an den betreffenden Rechner gelangen, weil die IP-Adresse nicht mehr zu diesem Rechner gehört. Theoretisch gibt es mehrere Möglichkeiten, dieses Problem anzugehen. Am schönsten wäre es, wenn der Partner die gleiche IP-Adresse wieder zuordnen würde, wenn möglich :-) Die derzeitige Version von ppp tut das, aber die meisten anderen Implementierungen nicht. Die einfachste Maßnahme von unserer Seite wäre die, niemals die IP-Adresse der tun-Schnittstelle zu ändern, sondern stattdessen alle ausgehenden Pakete so zu ändern, daß als Absender-IP-Adresse anstelle der IP-Adresse der Schnittstelle die ausgehandelte IP-Adresse gesetzt wird. Das ist im wesentlichen das, was durch die Option iface-alias in der aktuellsten Version von ppp bewirkt wird (mit Unterstützung von &man.libalias.3; und ppp's Schalter) - alle Schnittstellenadressen werden beibehalten und auf die letzte ausgehandelte Adresse umgesetzt. Eine andere Alternative (und wahrscheinlich die zuverlässigste) wäre die, einen Systemaufruf zu implementieren der die IP-Adressen aller verbundenen Sockets von einer Adresse in eine andere ändert. ppp würde diesen Aufruf benutzen, um die Sockets aller laufenden Programme zu ändern, nachdem eine neue IP-Adresse ausgehandelt worden ist. Der gleiche Systemaufruf könnte von DHCP-Clients benutzt werden, wenn sie gezwungen werden, einen re-bind() auf ihren Sockets auszuführen. Noch eine andere Möglichkeit wäre die, das Aktivieren von Schnittstellen ohne IP-Adresse zu erlauben. Ausgehende Paketen würde die IP-Adressee 255.255.255.255 gegeben, bis der erste ioctl() mit SIOCAIFADDR erfolgt. Dies würde in der vollständigen Verbindung des Sockets resultieren. Es wäre die Aufgabe von ppp, die Absender-IP-Adresse zu ändern, allerdings nur dann, wenn sie 255.255.255.255 lautet und nur die IP-Adresse und IP-Prüfsumme müßten geändert werden. Dies wäre allerdings keine besonders elegante Lösung, da der Kernel fehlerhafte Pakete an eine unzureichend konfigurierte Schnittstelle senden würde, in der Annahme, daß andere Mechanismen in der Lage sind, diese Dinge rückwirkend zu beheben. Warum laufen die meisten Spiele mit dem -nat Schalter nicht? Der Grund dafür, daß Spiele und andere Programme nicht funktionieren, wenn libalias benutzt wird, ist der, daß der Rechner außerhalb des lokalen Netzes versucht, eine Verbindung aufzubauen und (unaufgefordert) UDP-Pakete an den Rechner innerhalb des lokalen Netzes zu senden. Die Software, die für die NAT zuständig ist, weiß nicht, daß sie diese Pakete an den internen Rechner weiterleiten soll. Um dies zu beheben, stellen Sie zunächst sicher, daß die Software, mit der Sie Probleme haben, die einzige ist, die gerade läuft. Benutzen Sie dann entweder tcpdump auf der tun-Schnittstelle des Gateways oder aktivieren Sie auf dem Gateway das Logging von TCP/IP (set log +tcp/ip) unter ppp. Wenn Sie nun das betreffende Programm starten, sollten Sie sehen, wie Pakete den Gateway-Rechner passieren. Wenn von außen etwas zurückkommt, wird es ignoriert (das ist das Problem). Merken Sie sich die Portnummer dieser Pakete und beenden Sie das betreffende Programm. Wiederholen Sie diesen Schritt einige Male, um festzustellen, ob die Portnummern konsistent sind. Falls dem so ist, wird die folgende Zeile im entsprechenden Abschnitt von /etc/ppp/ppp.conf dafür sorgen, daß das Programm funktioniert: nat port proto internalmachine:port port wobei für proto entweder tcp oder udp zu setzen ist, internalmachine den Rechner bezeichnet, an den die Pakete geschickt werden sollen und port die betreffende Portnummer. Sie können das Programm nicht auf einem anderen Rechner benutzen, ohne die obige Zeile abzuändern und die Benutzung des Programms auf zwei internen Rechnern steht außer Frage - schließlich sieht die Außenwelt Ihr gesamtes internes Netz so, als wäre es ein einzelner Rechner. Falls die Portnummern nicht konsistent sind, gibt es drei weitere Optionen: Ermöglichen Sie die Unterstützung durch libalias. Beispiele für spezielle Fälle finden Sie in /usr/src/lib/libalias/alias_*.c (alias_ftp.c ist ein schöner Prototyp). Hierzu gehört für gewöhnlich das Lesen bestimmter, erkannter, ausgehender Pakete, die Identifizierung der Instruktion, die den entfernten Rechner dazu veranlaßt, auf einem bestimmten (wahlfreien) Port eine Verbindung zurück zum lokalen Rechner herzustellen, sowie das Erstellen einer Route in der Aliastabelle, so daß nachfolgende Pakete wissen, wohin sie gehören. Dieses ist zwar die komplizierteste Lösung, aber die beste, die auch dafür sorgt, daß die Software auf mehreren Rechnern funktioniert. Benutzen Sie einen Proxy. Die Applikation könnte z.B. socks5 unterstützen, oder (wie im Fall von cvsup) eine Option passiv besitzen, die stets verhindert, daß verlangt wird, daß der Partner eine Verbindung zurück zur lokalen Maschine aufbaut. Leiten Sie mit nat addr alles zur lokalen Maschine um. Dieses Vorgehen ähnelt dem mit einem Vorschlaghammer. Hat jemand eine Liste mit nützlichen Portnummern erstellt? Noch nicht, aber hieraus könnte eine solche entstehen (falls Interesse besteht). In jedem Beispiel sollte internal durch die IP-Adresse der Maschine ersetzt werden, auf der das Spiel laufen soll. Asheron's Call nat port udp internal:65000 65000 Konfigurieren Sie das Spiel manuell auf Port 65000 um. Wenn Sie von mehreren Rechner aus spielen wollen, weisen Sie jedem eine eindeutige Portnummer zu (also 65001, 65002, u.s.w.) und fügen Sie für jede Maschine eine eigene nat port Zeile ein. Half Life nat port udp internal:27005 27015 PCAnywhere 8.0 nat port udp internal:5632 5632 nat port tcp internal:5631 5631 Quake nat port udp internal:6112 6112 Alternativ können sie wegen Proxyunterstützung für Quake unter www.battle.net nachsehen. Quake 2 nat port udp internal:27901 27910 nat port udp internal:60021 60021 nat port udp internal:60040 60040 Red Alert nat port udp internal:8675 8675 nat port udp internal:5009 5009 Was sind FCS-Fehler? FCS steht für Frame Check Sequence. Jedes ppp-Paket besitzt eine Checksumme, um sicherzustellen, daß die empfangenen Daten dieselben sind, wie die versendeten. Falls die FCS eines ankommenden Paketes fehlerhaft ist, wird das Paket verworfen und der Zähler HDLC FCS wird erhöht. Der HDLC-Fehlerwert kann durch den Befehl show hdlc angezeigt werden. Falls Ihre Leitung schlecht ist (oder falls Ihr serieller Treiber Pakete verwirft), werden sie gelegentliche FCS-Fehler sehen. Normalerweise lohnt es sich nicht, sich hierüber Gedanken zu machen, obwohl das Kompressionsprotokoll hierdurch wesentlich langsamer wird. Wenn Sie ein externes Modem besitzen, stellen Sie sicher, daß Ihr Kabel ausreichend gegen Interferenzen abgeschirmt ist - das könnte das Problem beseitigen. Falls Ihre Leitung einfriert, sobald die Verbindung steht, und viele FCS-Fehler auftreten, könnte das daran liegen, daß Ihre Leitung nicht 8-Bit-rein ist. Stellen Sie sicher, daß Ihr Modem keinen Software-Flow-Control (XON/XOFF) verwendet. Falls Ihre Datenschnittstelle Software-Flow-Control verwenden muß, benutzen Sie den Befehl set accmap 0x000a0000, um ppp zu sagen, daß es die Zeichen ^Q und ^S maskieren soll. Ein weiterer Grund dafür, daß zu viele FCS-Fehler auftreten, könnte der sein, daß das andere Ende aufgehört hat, ppp zu sprechen. Aktivieren Sie async Logging, um festzustellen, ob es sich bei den eingehenden Daten tatsächlich um einen login- oder Shell-Prompt handelt. Wenn Sie am anderen Ende einen Shell-Prompt haben, ist es möglich, durch den Befehl close lcp ppp zu beenden, ohne die Verbindung zu beenden (ein folgender term-Befehl wird Sie wieder mit der Shell auf dem entfernten Rechner verbinden. Falls nichts in Ihrer Logdatei darauf hindeutet, warum die Verbindung beendet wurde, sollten Sie den Administrator des externen Rechners (Ihren ISP?) fragen, warum die Sitzung beendet worden ist. Wieso hängen die Verbindungen meiner MacOS- und Windows98(tm)-Maschinen, wenn auf meinem Gateway PPPoE läuft? Vielen Dank an Michael Wozniak mwozniak@netcom.ca für die Erklärung und an Dan Flemming danflemming@mac.com für die Lösung für MacOS Die Ursache des Problems ist ein sogenannter Black Hole Router. MacOS und Windows 98 (und wahrscheinlich auch die anderen Betriebssysteme von Microsoft) senden TCP Pakete, bei denen zum einen die angeforderte Segmentgröße zu groß für einen PPPoE-Rahmen ist (die Default-MTU für Ethernet beträgt 1500 Byte) und bei denen das don't fragment Bit gesetzt ist (das ist bei TCP allerdings Standard). Außerdem sendet der Router beim Provider nicht die eigentlich notwendigen must fragment-Meldungen zu dem Webserver, von dem Sie gerade eine Seite laden wollen. Es ist auch möglich, daß diese Meldung zwar erzeugt, aber danach von einem Firewall vor dem Webserver abgefangen wird. Wenn Ihnen dieser Webserver nun ein Paket schickt, das nicht in einen PPPoE-Rahmen paßt, dann verwirft der Router dieses Paket und die Seite wird nicht geladen (einige Seiten/Grafiken werden geladen, weil ihre Größe kleiner ist als die MSS). Dies scheint leider der Normalfall zu sein (wenn die Leute doch nur wüßten, wie man einen Router konfiguriert... stöhn...) Eine der möglichen Lösungen für dieses Problem ist die Erzeugung des folgenden Schlüssels in der Registry des Windows-Clients: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU Der Schlüssels sollte vom Typ String sein und den Wert 1436 haben, da einige ADSL-Router nicht mit grösseren Paketen umgehen können. Wenn Sie Windows 2000 verwenden, müssen Sie dagegen den Schlüssel Tcpip\Parameters\Interfaces\ID der Netzwerkkarte\MTU benutzen, außerdem müssen Sie als Typ DWORD verwenden. Die Knowledge Base von Microsoft enthält weitere Informationen darüber, wie sie die MTU einer Windows-Maschine ändern, damit diese mit einem NAT-Router korrekt zusammenarbeitet. Vom besonderen Interesse sind die Artikel Q158474 - Windows TCPIP Registry Entries und Q120642 - TCPIP & NBT Configuration Parameters for Windows NT. Bei Windows 2000 können Sie alternativ auch, wie im Artikel 120642 beschrieben, mit regedit das DWORD Tcpip\Parameters\Interfaces\ID der Netzwerkkarte\EnablePMTUBHDetect auf 1 setzen. Mit den Bordmitteln von MacOS ist es leider nicht möglich, die TCP/IP-Einstellungen zu verändern. Es gibt jedoch kommerzielle Lösungen wie zum Beispiel OTAdvancedTuner (OT steht für OpenTransport, den TCP/IP-Stack von MacOS) von Sustainable Softworks, mit denen man die TCP/IP-Einstellungen bearbeiten kann. Wenn Sie als MacOS-Anwender NAT benutzen, sollten Sie im entsprechenden drop-down Menü den Punkt ip_interface_MTU auswählen und in der Dialogbox 1450 statt 1500 eingeben. Aktivieren Sie den Punkt Save as Auto Configure und klicken Sie danach auf Make Active. ppp kennt seit Version 2.3 den Befehl enable tcpmssfixup, mit dem die MSS automatisch korrigiert wird. Wenn Sie einen ältere Version von ppp benutzen müssen, könnte der Port tcpmssd für Sie interessant sein. Nichts von alledem hilft - ich bin verzweifelt! Was soll ich machen? Falls alles andere fehlschlägt, senden Sie möglichst umfangreiche Informationen, einschließlich Ihrer Konfigurationsdateien, wie Sie ppp starten, die relevanten Teile Ihrer Logdateien und die Ausgabe des Befehls netstat -rn (vor und nach Aufbau der Verbindung) an die &a.de.questions; oder die Newsgroup de.comp.os.unix.bsd. Irgend jemand sollte Ihnen dann weiterhelfen. Serielle Verbindungen Dieses Kapitel beantwortet häufig gestellte Fragen zu seriellen Verbindungen mit FreeBSD. PPP und SLIP werden in behandelt. Wie kann ich feststellen, ob FreeBSD meine seriellen Schnittstellen gefunden hat? Wenn der FreeBSD Kernel bootet, testet er die seriellen Schnittstellen, für die er konfiguriert wurde. Sie können entweder Ihrem System aufmerksam beim Booten zusehen und die angezeigten Nachrichten lesen, oder Sie führen den Befehl &prompt.user; dmesg | grep sio aus, nachdem Ihr System hochgefahren ist und läuft. Hier ist ein Beispiel einer Ausgabe nach dem oben genannten Befehl: si0: at 0x3f8-0x3ff irq 4 on isa si0: type 16550A si1: at 0x2f8-0x2ff irq 3 on isa si1: type 16550A Es zeigt zwei serielle Schnittstellen. Die erste verwendet Port-Adresse 0x3f8, IRQ 4 und hat einen 16550A UART Chip. Die zweite benutzt ebenfalls einen 16550A UART, jedoch Port-Adresse 0x2f8 und IRQ 3. Modemkarten werden wie serielle Schnittstellen behandelt. Der einzige Unterschied ist, daß an diesen Schnittstellen immer ein Modem angeschlossen ist. Der GENERIC Kernel beinhaltet Unterstützung für zwei serielle Schnittstellen, die den im Beispiel genannten Port und IRQ verwenden. Wenn diese Einstellungen nicht richtig für Ihr System sind, Sie Modemkarten hinzugefügt oder mehr serielle Schnittstellen haben als Ihre Kernel-Konfiguration zuläßt, konfigurieren Sie Ihren Kernel einfach neu. In dem Kapitel über die Kernelkonfiguration finden Sie mehr Details. Wie kann ich feststellen, ob FreeBSD meine Modemkarten gefunden hat? Die vorherige Frage sollte darauf eine Antwort geben. Ich habe gerade auf 2.0.5 geupdatet und meine tty0X fehlen! Wie kann ich das Problem lösen? Keine Sorge, die wurden mit den ttydX Geräten zusammengeführt. Sie müssen allerdings die alten Konfigurationsdateien ändern. Wie kann ich auf die seriellen Schnittstellen in FreeBSD zugreifen? Die dritte serielle Schnittstelle, sio2 (bekannt als COM3 in DOS/Windows), ist /dev/cuaa2 für Geräte mit abgehenden Verbindungen und /dev/ttyd2 für Geräte mit eingehenden Verbindungen. Was ist der Unterschied zwischen den beiden Geräteklassen? Sie benutzen ttydX für eingehende Verbindungen. Wird /dev/ttydX im blockierenden Modus geöffnet, wartet ein Prozeß darauf, daß das entsprechende cuaaX Gerät inaktiv und der Empfangssignalpegel Mit Empfangssignalpegel oder Trägersignalerkennung wird hier die carrier detect Leitung bezeichnet. aktiv ist. Wird das cuaaX Gerät geöffnet, vergewissert es sich, daß die serielle Schnittstelle nicht bereits von dem ttydX Gerät in Gebrauch ist. Sollte die Schnittstelle verfügbar sein, stiehlt es sie von dem ttydX Gerät. Das cuaaX Gerät kümmert sich nicht um Trägersignalerkennung. Mit diesem Schema und einem automatisch antwortenden Modem, können sich Benutzer von außen einloggen, Sie können weiterhin mit dem selben Modem wählen und das System kümmert sich um die Konflikte. Wie kann ich die Unterstützung für eine Karte mit mehreren seriellen Schnittstellen aktivieren? Die Sektion über die Kernelkonfiguration bietet Informationen darüber, wie Sie Ihren Kernel konfigurieren. Für eine Karte mit mehreren seriellen Schnittstellen, schreiben Sie eine &man.sio.4; Zeile für jede serielle Schnittstelle auf der Karte in die Kernel-Konfigurationsdatei. Aber achten Sie darauf, den IRQ und die Verktorbezeichnung nur in einem der Einträge zu plazieren. Alle seriellen Schnittstellen auf der Karte sollten sich einen IRQ teilen. Daher sollten Sie den IRQ nur beim letzten Eintrag angeben. Aktivieren Sie auch die COM_MULTIPORT Option. Das folgende Beispiel ist geeignet für eine AST Karte mit 4 seriellen Schnittstellen, die IRQ 7 benutzt: 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 Die Flags zeigen an, daß die Master-Schnittstelle die Minor-Nummer 7 (0x700) hat, Diagnosen während des Bootens ermöglicht sind (0x080), und daß sich alle Schnittstellen einen IRQ teilen (0x001). Kann FreeBSD mehrere Karten mit mehreren seriellen Schnittstellen mit den gleichen IRQs verwalten? Noch nicht. Sie müssen für jede Karte einen anderen IRQ verwenden. Kann ich die vorgegebenen seriellen Parameter für eine Schnittstelle einstellen? Das ttydX (oder cuaaX) Gerät ist das reguläre Gerät, das man in Anwendungen öffnet. Wenn ein Prozeß es öffnet, hat es die voreingestellten Terminal Eingabe/Ausgabe-Einstellungen. Sie können diese Einstellungen mit dem Befehl &prompt.root; stty -a -f /dev/ttyd1 ansehen. Wenn Sie die Einstellungen für dieses Gerät ändern, sind die Einstellungen gültig, bis das Gerät geschlossen wird. Wird es danach geöffnet, hat es wieder die vorgegebenen Einstellungen. Um Änderungen an den vorgegebenen Einstellungen vorzunehmen, können Sie das Anfangsstatus-Gerät öffnen und dessen Einstellungen anpassen. Um zum Beispiel den CLOCAL Modus, 8 Bits und XON/XOFF Datenflußkontrolle als Standard für ttyd5 einzustellen, geben Sie &prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff ein. Eine gute Stelle um dies zu tun ist in /etc/rc.serial. Jetzt hat eine Anwendung diese Einstellungen als Standardwerte, wenn sie ttyd5 öffnet. Die Anwendung kann die Einstellungen jedoch immer noch nach Belieben verändern. Man aber kann auch bestimme Einstellungen davor schützen, von einer Anwendung verändert zu werden, indem man Veränderungen am lock state Gerät vornimmt. Um beispielsweise die Geschwindigkeit von ttyd5 auf 57600 bps festzusetzen: &prompt.root; stty -f /dev/ttyld5 57600 Wenn jetzt eine Anwendung ttyd5 öffnet und versucht die Geschwindigkeit zu verändern, wird diese bei 57600 bps bleiben. Natürlich sollten Sie das Schreiben auf die Anfangsstatus- und lock state-Geräte nur root erlauben. Das &man.MAKEDEV.8; Skript tut dies nicht, wenn es die Geräte-Einträge erstellt. Wie kann ich Einwahl-Logins über mein Modem aktivieren? Also Sie wollen ein Internet Service Provider werden, ja? Als erstes brauchen Sie eines oder mehrere Modems, die automatisches Antworten beherrschen. Ihr Modem sollte auf Trägersignalerkennung reagieren und nicht fortlaufend die Leitung offen halten. Es muß auflegen und sich neu initialisieren können, wenn die Data Terminal Ready (DTR) Leitung ausgeschaltet wird. Es sollte wahrscheinlich RTS/CTS oder gar keine lokale Datenflußkontrolle benutzen. Zuletzt muß es eine konstante Geschwindigkeit zwischen dem Computer und sich selbst verwenden, aber es sollte (um die Anrufer freundlich zu behandeln) eine Geschwindigkeit zwischen sich und dem entfernten Modem aushandeln können. Für viele Modems, die mit dem Hayes Befehlssatz kompatibel sind, erzeugt der folgende Befehl diese Einstellungen und legt sie im nicht-flüchtigen Speicher ab: AT &C1 &D3 &K3 &Q6 S0=1 &W Die Sektion über das Senden von AT-Befehlen bietet weitere Informationen, wie man diese Einstellungen vornimmt, ohne zu einem MS-DOS Terminal Programm zu flüchten. Als nächstes erstellen Sie einen Eintrag in /etc/ttys für das Modem. Diese Datei listet alle Schnittstellen auf, auf denen das Betriebssystem Einlogversuche erwartet. Fügen Sie eine solche Zeile hinzu: ttyd1 "/usr/libexec/getty std 57600" dialup on insecure Diese Zeile bedeutet, daß an der zweiten seriellen Schnittstelle (/dev/ttyd1) ein Modem angeschlossen ist, das mit 57600 bps läuft und keine Parität besitzt (std.57600 aus /etc/gettytab). Der Terminal-Typ für diese Schnittstelle ist dialup (Einwahl). Die Schnittstelle ist eingeschaltet (on) und unsicher (unsecure) -- das bedeutet, man kann sich über diese Schnittstelle nicht als root einloggen. Für Einwahlanschlüsse wie diesen, benutzen Sie den ttydX Eintrag. Es ist relativ geläufig, dialup als Terminal-Typ zu verwenden. Viele Benutzer richten in ihren .profile oder .login Dateien eine Abfrage für das eigentliche Terminal ein, wenn der Start-Typ dialup ist. Das Beispiel zeigt die Schnittstelle als unsicher und um über diese Schnittstelle root zu werden, müssen Sie sich als normaler Benutzer einloggen und &man.su.1;. Wenn sie secure (sicher) als Einstellung verwenden, kann sich root direkt einloggen. Nachdem Sie Modifikationen in /etc/ttys vorgenommen haben, müssen Sie ein hangup oder HUP Signal an &man.init.8; senden: &prompt.root; kill -HUP 1 Das bringt &man.init.8; dazu, die Datei /etc/ttys neu einzulesen. init startet dann an allen als eingeschaltet (on) markierten Schnittstellen die getty-Prozesse. Sie können herausfinden ob noch Logins für Ihre Schnittstelle verfügbar sind, wenn Sie folgendes eingeben: &prompt.user; ps -ax | grep '[t]tyd1' Sie sollten etwas sehen, das so ähnlich aussieht wie: 747 ?? I 0:00:04 /usr/libexec/getty std.57600 ttyd1 Wie kann ich ein Hardware-Terminal mit meiner FreeBSD Box verbinden? Wenn Sie einen anderen Computer als Terminal für Ihr FreeBSD System verwenden wollen, verbinden Sie die beiden seriellen Schnittstellen mit einem Nullmodem-Kabel. Wenn Sie ein echtes (Hardware-)Terminal benutzen, lesen Sie die Begleitinformationen. Ändern Sie /etc/ttys wie oben angegeben. Wenn Sie zum Beispiel ein WYSE-50 Terminal mit der fünften seriellen Schnittstelle verbinden wollen, schreiben Sie einen Eintrag wie diesen: ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure Das Beispiel zeigt, daß die Schnittstelle an /dev/ttyd4 mit einem wyse50 Terminal mit 38400 bps und ohne Parität (std.38400 aus /etc/gettytab) verbunden ist und root Logins möglich sind (secure). Warum kann ich tip oder cu nicht laufen lassen? Vielleicht sind auf Ihrem System die Programme &man.tip.1; und &man.cu.1; nur von uucp und der Gruppe dialer ausführbar. Sie können die Gruppe dialer verwenden, um zu kontrollieren wer Zugriff auf Ihr Modem oder entfernte Systeme hat. Fügen Sie sich einfach selbst zur Gruppe dialer hinzu. Als Alternative können Sie jeden Benutzer auf Ihrem System &man.tip.1; und &man.cu.1; verwenden lassen, dazu müssen Sie das folgende eingeben: &prompt.root; chmod 4511 /usr/bin/cu &prompt.root; chmod 4511 /usr/bin/tip Mein Hayes Modem wird nicht unterstützt -- was kann ich tun? Eigentlich ist die Onlinehilfe für &man.tip.1; nicht mehr aktuell. Es gibt einen eingebauten, allgemeinen Hayes Wähler. Verwenden Sie einfach at=hayes in /etc/remote. Der Hayes Treiber ist nicht schlau genug, um ein paar der erweiterten Merkmale von neueren Modems zu erkennen -- Nachrichten wie BUSY, NO DIALTONE oder CONNECT 115200 verwirren ihn nur. Sie sollten diese Nachrichten mit Hilfe von ATX0&W abschalten, wenn Sie tip benutzen. Das Anwahl-Timeout von &man.tip.1; beträgt 60 Sekunden. Ihr Modem sollte weniger verwenden, oder tip denkt, daß ein Kommunikationsfehler vorliegt. Versuchen Sie es mit ATS7=45&W. Tatsächlich unterstützt die ausgelieferte Version von &man.tip.1; es noch nicht vollständig. Die Lösung ist tipconf.h im Verzeichnis /usr/src/usr.bin/tip/tip zu editieren. Dafür benötigen Sie natürlich die Quellcode Distribution. Editieren Sie die Zeile #define HAYES 0 in #define HAYES 1 um. Dann führen Sie make und make install aus. Es sollte jetzt funktionieren. Wie soll ich die AT Befehle eingeben? Erstellen Sie einen sogenannten direct Eintrag in /etc/remote. Wenn Ihr Modem zum Beispiel an der ersten seriellen Schnittstelle, /dev/cuaa0, angeschlossen ist, dann fügen Sie die folgende Zeile hinzu: cuaa0:dv=/dev/cuaa0:br#19200:pa=none Verwenden Sie die höchste bps Rate, die Ihr Modem in der br Fähigkeit unterstützt. Geben Sie dann tip cuaa0 ein und Sie sind mit Ihrem Modem verbunden. Wenn auf Ihrem System keine /dev/cuaa0 Datei existiert, geben Sie folgendes ein: &prompt.root; cd /dev &prompt.root; sh MAKEDEV cuaa0 Oder benutzen Sie cu als root mit dem folgenden Befehl &prompt.root; cu -lline -sspeed line steht für die serielle Schnittstelle (/dev/cuaa0) und speed für die Geschwindigkeit (57600). Wenn Sie mit dem Eingeben der AT Befehle fertig sind, beenden Sie mit ~.. Wieso funktioniert das <@> Zeichen für die pn Fähigkeit nicht? Das <@> Zeichen in der Telefonnummerfähigkeit sagt tip, daß es in der Datei /etc/phones nach einer Nummer suchen soll. Aber <@> ist auch ein spezielles Zeichen in den Dateien, in denen Fähigkeiten beschrieben werden, wie /etc/remote. Schreiben Sie es mit einem '\' (backslash): pn=\@ Wie kann ich von der Kommandozeile eine Telefonnummer wählen? Stellen Sie einen allgemeinen Eintrag in /etc/remote. Zum Beispiel: 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: Mit einem Befehl wie tip -115200 5551234 können Sie dann wählen. Sollten Sie &man.cu.1; im Gegensatz zu &man.tip.1; bevorzugen, verwenden Sie einen allgemeinen cu-Eintrag: cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du: Zum Wählen können Sie dann cu 5551234 -s 115200 eingeben. Muß ich dabei jedes Mal die bps Rate angeben? Schreiben Sie einen tip1200 oder einen cu1200 Eintrag, aber geben Sie auch die bps Rate an, die Ihr Modem wirklich unterstützt. Leider denkt &man.tip.1;, daß 1200 bps ein guter Standardwert ist und deswegen sucht es nach einem tip1200-Eintrag. Natürlich müssen Sie nicht wirklich 1200 bps benutzen. Wie kann ich möglichst komfortabel über einen Terminal-Server auf verschiedene Rechner zugreifen? Sie müssen nicht warten bis Sie verbunden sind, und jedesmal CONNECT Rechner eingeben, benutzen Sie tip's cm Fähigkeit. Sie können diese Einträge in /etc/remote verwenden: 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: Mit den Befehlen tip pain oder tip muffin können Sie eine Verbindungen zu den Rechnern pain oder muffin herstellen; mit tip deep13 verbinden Sie sich mit dem Terminal Server. Kann tip mehr als eine Verbindung für jede Seite testen? Das ist oft ein Problem, wenn eine Universität mehrere Telefonleitungen hat und viele tausend Studenten diese benutzen wollen. Erstellen Sie einen Eintrag für Ihre Universität in /etc/remote und benutzen Sie <\@> für die pn Fähigkeit: big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none: Listen Sie die Telefonnummern für die Universitäten in /etc/phones auf: big-university 5551111 big-university 5551112 big-university 5551113 big-university 5551114 &man.tip.1; testet jede der Nummern in der aufgelisteten Reihenfolge und gibt dann auf. Möchten Sie, daß tip beim Versuchen eine Verbindung herzustellen nicht aufgibt, lassen Sie es in einer while-Schleife laufen. Warum muß ich zweimal CTRL-P tippen um ein CTRL-P zu senden? CTRL-P ist das voreingestellte Zeichen, mit dem eine Übertragung erzwungen werden kann und wird benutzt, um &man.tip.1; zu sagen, daß das nächste Zeichen direkt gesendet werden soll und nicht als Fluchtzeichen interpretiert werden soll. Mit Hilfe der ~s Fluchtsequenz, mit der man Variablen setzen kann, können Sie jedes andere Zeichen als force-Zeichen definieren. Geben Sie ~sforce=zeichen ein und drücken sie Enter. Für zeichen können Sie ein beliebiges einzelnes Zeichen einsetzen. Wenn Sie zeichen weglassen, ist das force-Zeichen nul, das Sie mit CTRL-2 oder CTRL-SPACE eingeben können. Ein guter Wert für zeichen ist SHIFT+CTRL+6, welches ich erst auf ein paar Terminal-Servern in Benutzung gesehen habe. Sie können das force-Zeichen auch bestimmen, indem Sie in $HOME/.tiprc das folgende einstellen: force=single-char Warum ist auf einmal alles was ich schreibe in GROSSBUCHSTABEN?? Sie müssen CTRL-A eingegeben haben, das raise-Zeichen von &man.tip.1; das speziell für Leute mit defekten caps-lock Tasten eingerichtet wurde. Benutzen Sie ~s wie oben und setzen Sie die Variable raisechar auf etwas, das Ihnen angemessen erscheint. Tatsächlich kann die Variable auf das gleiche Zeichen wie das force-Zeichen gesetzt werden, wenn Sie diese Fähigkeiten niemals benutzen wollen. Hier ist ein Muster der .tiprc Datei, perfekt für emacs Benutzer die oft CTRL-2 und CTRL-A tippen müssen: force=^^ raisechar=^^ Das ^^ steht für SHIFT-CTRL-6. Wie kann ich Dateien mit tip übertragen? Wenn Sie mit einem anderen Unix-System kommunizieren, können Sie Dateien senden und empfangen -- mit ~p (put) und ~t (take). Diese Befehle lassen &man.cat.1; und &man.echo.1; auf dem entfernten System laufen, um Dateien zu akzeptieren und zu senden. Die Syntax ist: ~p <local-file> [<remote-file>] ~t <remote-file> [<local-file>] Es gibt keine Fehlerkontrolle, deshalb sollten Sie besser ein anderes Protokoll benutzen, wie zmodem. Wie kann ich zmodem mit tip laufen lassen? Zuerst installieren Sie ein zmodem Programm aus der Ports-Sammlung (eines der beiden aus der comms-Kategorie, lrzsz oder rzsz). Um Dateien zu empfangen, starten Sie das Programm zum Senden auf dem entfernten Computer. Drücken Sie dann Enter gefolgt von ~C rz (oder ~C lrz, wenn Sie lrzsz installiert haben), um diese lokal zu empfangen. Um Dateien zu senden, starten Sie das Programm zum empfangen auf dem entfernten Computer. Drücken Sie dann Enter gefolgt von ~C sz Dateien (oder ~C lsz Dateien), um sie zum entfernten System zu senden. Wieso kann FreeBSD meine seriellen Schnittstellen nicht erkennen, auch wenn die Einstellungen korrekt sind? Hauptplatinen und Karten mit Acer UARTs werden im FreeBSD sio test nicht richtig erkannt. Sie erhalten einen Patch von www.lemis.com, mit dem Sie das Problem beheben können. Verschiedene Fragen FreeBSD benutzt viel mehr Swap-Speicher als Linux. Warum? Es sieht nur so aus, als ob FreeBSD mehr Swap benutzt, als Linux. Tatsächlich ist dies nicht der Fall. In dieser Hinsicht besteht der Hauptunterschied zwischen FreeBSD und Linux darin, daß FreeBSD vorbeugend vollkommen untätige, unbenutzte Seiten aus dem Hauptspeicher in den Swap-Bereich auslagert, um mehr Hauptspeicher für die aktive Nutzung zur Verfügung zu stellen. Linux tendiert dazu, nur als letzten Ausweg Seiten in den Swap-Bereich auszulagern. Die spürbar höhere Nutzung des Swap-Speichers wird durch die effizientere Nutzung des Hauptspeichers wieder ausgeglichen. Beachten Sie, daß FreeBSD in dieser Hinsicht zwar vorbeugend arbeitet, es entscheidet jedoch nicht willkürlich, Seiten auszulagern, wenn das System vollkommen untätig ist. Deshalb werden Sie feststellen, daß nicht alle Seiten Ihres Systems ausgelagert wurden, wenn Sie morgens aufstehen, nachdem das System eine Nacht lang nicht benutzt worden ist. Warum zeigt mir &man.top.1; so wenig freien Speicher an, obwohl nur wenige Programme laufen? Die Antwort ist ganz einfach: Freier Speicher ist verschwendeter Speicher. Der FreeBSD Kernel verwendet den von den Programmen nicht genutzten Speicher automatisch für den Plattencache. Die in &man.top.1; für Inact, Cache und Buf gemeldeten Werte stehen alle für zwischengespeicherte Daten mit unterschiedlichem Alter. Wenn das System wiederholt auf Daten zugreifen muß, braucht es nicht auf die langsame Platte zuzugreifen, da die Daten noch zwischengespeichert sind. Dadurch erhöht sich die Performance. Ganz generell ist es ein gutes Zeichen, wenn &man.top.1; einen kleinen Wert bei Free anzeigt, solange der Wert nicht extrem klein ist. Anmerkung des Übersetzers: Mit extrem klein sind hier Werte unterhalb 512 KByte gemeint. Warum benutzt man (was sind) die Formate a.out und ELF für ausführbare Dateien? Um zu verstehen, warum FreeBSD das Format ELF benutzt, müssen Sie zunächst etwas über die drei gegenwärtig dominanten ausführbaren Formate für Unix wissen: FreeBSD-Version 1.x und 2.x benutzten das Format a.out. &man.a.out.5; Das älteste und klassische Unix-Objektformat. Es benutzt einen kurzen, kompakten Header mit einer magischen Nummer am Anfang, die oft benutzt wird, um das Format zu charakterisieren (weitere Details finden Sie unter &man.a.out.5;). Es enthält drei geladene Segmente: .text, .data und .bss, sowie eine Symboltabelle und eine Stringtabelle. COFF Das Objektformat von SVR3. Der Header enthält nun eine "Sectiontable". Man kann also mit mehr als nur den Sections .text, .data und .bss arbeiten. ELF Der Nachfolger von COFF. Kennzeichnend sind mehrere Sections und mögliche 32-Bit- oder 64-Bit-Werte. Ein wesentlicher Nachteil: ELF wurde auch unter der Annahme entworfen, daß es nur ein ABI (Application Binary Interface) pro Systemarchitektur geben wird. Tatsächlich ist diese Annahme falsch - nicht einmal für die kommerzielle SYSV-Welt (in der es mindestens drei ABIs gibt: SVR4, Solaris, SCO) trifft sie zu. FreeBSD versucht, dieses Problem zu umgehen, indem ein Utility bereitgestellt wird, um ausführbare Dateien im ELF-Format mit Informationen über die ABI zu versehen, zu der sie passen. Weitere Informationen finden Sie in der Manualpage &man.brandelf.1;. FreeBSD kommt aus dem klassischen Lager und verwendete traditionell das Format &man.a.out.5;, eine Technologie, die bereits über viele BSD-Releases hinweg eingesetzt und geprüft worden ist. Obwohl es bereits seit einiger Zeit möglich war, auf einem FreeBSD-System auch Binaries (und Kernel) im ELF-Format zu erstellen und auszuführen, wiedersetzte FreeBSD sich anfangs dem Druck, auf ELF als Standardformat umzusteigen. Warum? Nun, als das Linux-Lager die schmerzhafte Umstellung auf ELF durchführte, ging es nicht so sehr darum, dem ausführbaren Format a.out zu entkommen, als dem unflexiblen, auf Sprungtabellen basierten Mechanismus für "Shared Libraries", der die Konstruktion von Shared Libraries für Hersteller und Entwickler gleichermaßen sehr kompliziert machte. Da die verfügbaren ELF-Werkzeuge eine Lösung für das Problem mit den Shared Libraries anboten und ohnehin generell als ein Schritt vorwärts angesehen wurden, wurde der Auffand für die Umstellung als notwendig akzeptiert und die Umstellung wurde durchgeführt. Im Fall von FreeBSD ist der Mechanismus von Shared Libraries enger an den Mechanismus im Stil von Sun's SunOS angelehnt und als solcher sehr einfach zu verwenden. Seit Version 3.0 unterstützt FreeBSD ELF-Binaries jedoch offiziell als das Standardformat. Obwohl das ausführbare Format a.out uns gute Dienste geleistet hat, hat das GNU-Team, das den von uns verwendeten Compiler erstellt, die Unterstützung des a.out-Formats eingestellt. Dies zwang uns dazu, abweichende Versionen der Compiler und Linker beizubehalten und hinderte uns daran, Nutzen aus den aktuellen Entwicklungsergebnisen von GNU zu ziehen. Auch die Anforderungen von ISO-C++, besonders Konstruktoren und Destruktoren, haben zur Unterstützung von ELF in zukünftigen Versionen von FreeBSD geführt. Ja aber warum gibt es so viele unterschiedliche Formate? In alter, grauer Vorzeit gab es simple Hardware. Diese simple Hardware unterstützte ein einfaches, kleines System. a.out war absolut passend für die Aufgabe, Binaries auf diesem simplen System (eine PDP-11) darzustellen. Als Unix von diesem simplen System portiert wurde, wurde auch das a.out-Format beibehalten, weil es für die frühen Portierungen auf Architekturen wie den Motorola 68000, VAXe usw. ausreichte. Dann dachte sich ein schlauer Hardware-Ingenieur, daß wenn er Software zwingen könnte, einige Tricks anzustellen, es ihm möglich wäre, ein paar Gatter im Design zu sparen, und seinen CPU-Kern schneller zu machen. Obgleich es dazu gebracht wurde, mit dieser neuen Art von Hardware (heute als RISC bekannt) zu arbeiten, war a.out für diese Hardware schlecht geeignet. Deshalb wurde viele neue Formate entwickelt, um eine bessere Leistung auf dieser Hardware zu erreichen, als mit dem begrenzten, simplen a.out-Format. Dinge wie COFF, ECOFF und einige andere obskure wurden erdacht und ihre Grenzen untersucht, bevor die Dinge sich in Richtung ELF entwickelten. Hinzu kam, daß die Größe von Programmen gewaltig wurden und Festplatten (und physikalischer Speicher) immer noch relativ klein waren. Also wurde das Konzept von Shared Libraries geboren. Das VM-System wurde auch immer fortgeschrittener. Obwohl bei jedem dieser Fortschritte das a.out-Format benutzt worden ist, wurde sein Nutzen mit jedem neuen Merkmal mehr und mehr gedehnt. Zusätzlich wollte man Dinge dynamisch zur Ausführungszeit laden, oder Teile ihres Programms nach der Initialisierung wegwerfen, um Hauptspeicher und/oder Swap-Speicher zu sparen. Programmiersprachen wurden immer fortschrittlicher und man wollte, daß Code automatisch vor der main-Funktion aufgerufen wird. Das a.out-Format wurde oft überarbeitet, um alle diese Dinge zu ermöglichen und sie funktionierten auch für einige Zeit. a.out konnte diese Probleme nicht ohne ein ständiges Ansteigen eines Overheads im Code und in der Komplexität handhaben. Obwohl ELF viele dieser Probleme löste, wäre es sehr aufwendig, ein System umzustellen, das im Grunde genommen funktionierte. Also mußte ELF warten, bis es aufwendiger war, bei a.out zu bleiben, als zu ELF überzugehen. Im Laufe der Zeit haben sich die Erstellungswerkzeuge, von denen FreeBSD seine Erstellungswerkzeuge abgeleitet hat (speziell der Assembler und der Loader), in zwei parallele Zweige entwickelt. Im FreeBSD-Zweig wurden Shared Libraries hinzugefügt und einige Fehler behoben. Das GNU-Team, das diese Programme ursprünglich geschrieben hat, hat sie umgeschrieben und eine simplere Unterstützung zur Erstellung von Cross-Compilern durch beliebiges Einschalten verschiedener Formate usw. hinzugefügt. Viele Leute wollten Cross-Compiler für FreeBSD erstellen, aber sie hatten kein Glück, denn FreeBSD's ältere Sourcen für as und ld waren hierzu nicht geeignet. Die neuen GNU-Werkzeuge (binutils) unterstützen Cross-Compilierung, ELF, Shared Libraries, C++-Erweiterungen usw. Weiterhin geben viele Hersteller ELF-Binaries heraus und es ist gut, wenn FreeBSD sie ausführen kann. Und wenn es ELF-Binaries ausführt, warum dann auch noch a.out behalten? Es ist ein müdes, altes Pferd, daß sich für eine lange Zeit als nützlich erwiesen hat, aber es ist an der Zeit, es für seine langen, treuen Dienstjahre auf die Weide zu schicken. ELF ist ausdrucksfähiger als a.out und gestattet eine bessere Erweiterbarkeit des Basissystems. Die ELF-Werkzeuge werden besser gewartet und bieten Unterstützung von Cross-Compilierung, was für viele Leute wichtig ist. ELF mag etwas langsamer sein, als a.out, aber zu versuchen, das zu messen, könnte schwierig werden. Es gibt unzählige Details, in denen sich die beiden Formate unterscheiden, wie sie Pages abbilden, Initialisierungscode handhaben usw. Keins davon ist sehr wichtig, aber es sind Unterschiede. Irgendwann wird die Unterstützung für Programme im a.out-Format aus dem GENERIC Kernel entfernt werden. Wenn es dann keinen oder kaum noch Bedarf für die Unterstützung dieses Formates gibt, werden die entsprechenden Routinen ganz entfernt werden. Warum ändert chmod die Zugriffsrechte auf symbolische Links nicht? Für symbolische Links gibt es keine separaten Zugriffsrechte und standardmäßig folgt &man.chmod.1; dem Link nicht; die Zugriffsrechte für die Datei, auf die der symbolische Link zeigt, werden also nicht verändert. Wenn Sie eine Datei mit dem Namen foo und einen auf diese Datei zeigenden symbolischen Link mit dem Namen bar haben, wird das folgende Kommando niemals einen Fehler melden. &prompt.user; chmod g-w bar Trotzdem werden die Zugriffsrechte für foo nicht geändert. Hierzu müssen Sie entweder oder zusammen mit der Option benutzen. Weitere Informationen finden Sie in den Manualpages &man.chmod.1; und &man.symlink.7;. Die Option bewirkt ein REKURSIVES &man.chmod.1; Seien Sie vorsichtig, wenn Sie bei &man.chmod.1; Verzeichnisse oder symbolische Links zu Verzeichnissen angeben. Wenn Sie die Zugriffsrechte eines Verzeichnisses ändern möchten, das durch einen symbolischen Link referenziert wird, benutzen Sie &man.chmod.1; ohne irgendwelche Optionen und folgen dem symbolischen Link durch einen abschliessenden Schrägstrich (/). Falls z.B. foo ein symbolischer Link zum Verzeichnis bar ist und Sie die Zugriffsrechte von foo (tatsächlich bar) ändern möchten, dann benutzen Sie etwas ähnliches wie: &prompt.user; chmod 555 foo/ Durch den abschliessenden Schrägstrich folgt &man.chmod.1; dem symbolischen Link foo, um die Zugriffsrechte für das Verzeichnis bar zu ändern. Warum sind Loginnamen immer noch auf acht Zeichen begrenzt? Sie denken vielleicht, daß es leicht sein sollte, UT_NAMESIZE zu ändern, das ganze System neu zu erstellen und das dann alles funktionieren müßte. Unglücklicherweise gibt es oft dutzende Applikationen und Utilities (einschließlich Systemwerkzeuge), bei denen kleine Zahlen (nicht immer 8 oder 9, sondern auch sonderbare, wie 15 und 20) in Strukturen und Puffern fest codiert sind. Hierdurch erhalten Sie nicht nur unbrauchbare Logdateien (weil variabel lange Sätze ausgegeben werden, wo Sätze fester Länge erwartet werden), sondern es kann dazu führen, daß Sun's NIS-Clients nicht mehr funktionieren und möglicherweise andere Probleme bei der Interaktion mit anderen Unix-Systemen verursachen. In FreeBSD 3.0 und späteren wurde die maximale Länge für Namen auf 16 Zeichen erweitert und die unterschiedlichen Utilities mit fest codierten Namenslängen wurden gefunden und bereinigt. Die Tatsache, daß hiervon so viele Bereiche des Systems betroffen waren, ist der Grund, warum diese Änderung nicht vor 3.0 durchgeführt worden ist. Wenn Sie sich absolut sicher sind, daß Sie diese Art von Problemen selbst finden und bereinigen können, wenn und falls sie auftreten, dann können Sie die Länge von Loginnamen in früheren Versionen ändern, indem Sie /usr/include/utmp.h editieren und UT_NAMESIZE entsprechend ändern. Sie müssen MAXLOGNAME in /usr/include/sys/param.h auch entsprechend der Änderung von UT_NAMESIZE ändern. Schließlich, vergessen Sie nicht, daß /usr/include jedesmal aktualisiert wird, wenn Sie von den Sourcen aus Erstellen! Ändern Sie stattdessen die entsprechen Dateien in /usr/src/... Kann ich DOS-Programme unter FreeBSD ausführen? Ja, ab Version 3.0 können Sie die DOS-Emulation doscmd der Firma BSDi benutzen, die integriert und erweitert wurde. Schicken Sie eine Mail an die &a.emulation;, wenn Sie daran interessiert sind, an den laufenden Bemühungen teilzunehmen! Für Systeme vor 3.0 gibt es ein nettes Utility pcemu in der Ports-Sammlung, das einen 8088 und genug BIOS-Dienste emuliert, um DOS-Applikationen im Textmodus auszuführen. Hierzu wird das X Window-System benötigt (erhältlich als XFree86). Was muß ich tun, um die FreeBSD-Dokumentation in meine Muttersprache zu übersetzen? Informationen zu diesem Thema finden Sie in der FAQ des FreeBSD German Documentation Project. Wo kann ich einen freien FreeBSD-Account bekommen? Das FreeBSD-Projekt bietet zwar keinen freien Zugang zu seinen Servern an; andere Firmen bieten jedoch frei zugängliche Unix-Systeme. Die Kosten variieren und es kann sein, daß nicht alle Dienste zur Verfügung stehen. Arbornet, Inc, auch als M-Net bekannt, bietet seit 1983 uneingeschränkten Zugang zu Unix-Systemen. Zunächst wurde eine Altos-Maschine mit System III benutzt, 1991 erfolgte dann der Wechsel zu BSD/OS. Im Juni 2000 erfolgte ein erneuter Wechsel, diesmal zu FreeBSD. M-Net bietet Zugang mit Telnet und SSH und den Zugang zur gesammten Software von FreeBSD. Allerdings ist der Zugriff auf das Netzwerk auf Mitglieder und Gönner beschränkt, die eine Spende an die nicht-kommerzielle Organisation geleistet haben. M-Net stellt zusätzlich ein Mailbox-System und einen interaktiven Chat zur Verfügung. Grex bietet ein ganz ähnlichen Dienst wie M-Net an, dazu gehören auch das Mailbox-System und der interaktive Chat. Allerdings wird eine SUN4M mit SunOS benutzt. Was ist sup und wie benutze ich es? Der Name SUP steht für Software Update Protocol und wurde von der CMU (Carnegie Mellon University) entwickelt, um ihre Entwicklungszweige zu synchronisieren. Wir haben es benutzt, um entfernte Sites mit unseren zentralen Quellcodeentwicklungen zu synchronisieren. SUP ist nicht sehr bandbreitenfreundlich und wurde abgelöst. Die derzeit empfohlene Methode, um Ihren Quellcode auf dem neuesten Stand zu halten ist Handbucheintrag zu CVSup. Wie cool ist FreeBSD? Q. Hat irgend jemand Temperaturmessungen durchgeführt, während FreeBSD läuft? Ich weiß, daß Linux cooler läuft, als DOS, aber niemals gesehen, daß FreeBSD erwähnt wurde. Es scheint sehr heiß zu laufen. A. Nein, aber wir haben zahlreiche Geschmackstests mit verblendeten Freiwilligen durchgeführt, denen ausßerdem zuvor 250 Mikrogramm LSD-25 verabreicht wurden. 35% der Freiwilligen sagte, daß FreeBSD nach Orange schmeckte, Linux hingegen schmecke wie purple haze (Anm. d. Übersetzers: Song von Jimmy Hendrix und LSD-Marke). Keine der Gruppen hat besondere Abweichungen der Temperatur erwähnt. Eventuell hätten wir sämtliche Ergebnisse dieser Untersuchung fortwerfen sollen, als wir festgestellt haben, daß zu viele der Freiwillingen den Raum während der Tests verlassen haben und dadurch die Ergebnisse verfälscht haben. Wir glauben, daß die meisten der Freiwilligen nun bei Apple sind und an ihrer neuen scratch and sniff Oberfläche arbeiten. Es ist ein lustiges, altes Geschäft, in dem wir uns befinden! Ernsthaft, FreeBSD und Linux benutzen beide die Instruktion HLT (halt), wenn das System untätig ist, wodurch der Energieverbrauch und dadurch die produzierte Wärme reduziert wird. Falls Sie auch noch APM (advanced power management) konfiguriert haben, kann FreeBSD Ihre CPU auch in einen Low-Power-Modus bringen. Wer kratzt in meinen Speicherbänken?? Q. Gibt es irgend etwas seltsames, das FreeBSD tut, wenn ich den Kernel kompiliere, das dazu führt, daß der Speicher ein kratzendes Geräusch macht? Bei der Kompilierung (und auch für einen kurzen Moment nach der Erkennung des Floppy-Laufwerks beim Hochfahren), kommt ein seltsames kratzendes Geräusch von etwas das die Speicherbänke zu sein scheinen. A. Ja! In der BSD-Dokumentation finden Sie häufige Verweise auf Daemons und was die meisten Leute nicht wissen, ist, daß diese sich auf echte, nicht-körperlichen Wesen beziehen, die Besitz von Ihrem Computer ergriffen haben. Das kratzende Geräusch, das von Ihrem Speicher kommt, ist in Wirklichkeit hochtöniges Flüstern, das unter den Daemons ausgetauscht wird, während Sie entscheiden, wie Sie die verschiedenen Systemadministrationsaufgaben, am besten erledigen. Wenn Sie das Geräusch stört, wird ein fdisk /mbr sie vertreiben, aber wundern Sie sich nicht, wenn sie feindlich reagieren und versuchen, Sie aufzuhalten. Wenn Sie während der Ausführung zu irgendeinem Zeitpunkt die teuflische Stimme von Bill Gates aus dem eingebauten Lautsprecher kommen hören, laufen Sie weg und sehen Sie sich auf keinen Fall um! Befreit von dem ausgleichenden Einfluß der BSD Dämonen sind die beiden Dämonen von DOS und Windows oft dazu in der Lage, die totale Kontrolle über Ihre Maschine für die ewige Verdammung Ihrer Seele zurückzuerlangen. Da Sie jetzt die Wahrheit kennen, würden Sie es vorziehen, sich an die Geräsche zu gewöhnen, wenn Sie die Wahl hätten. Was bedeutet MFC? MFC ist ein Acronym für Merged From -Current. Es wird in den CVS-Logs benutzt, um zu kennzeichnen, wenn eine Änderung vom CURRENT-Zweig in den STABLE-Zweig übernommen worden ist. Was bedeutet BSD? Es steht für etwas in einer geheimen Sprache, das nur Mitglieder wissen können. Es kann nicht wörtlich übersetzt werden, aber wir können Ihnen sagen, daß die Übersetzung von BSD etwas zwischen Formel-1 Team, Pinguine sind ein leckerer Imbiß und Wir haben einen besseren Sinn für Humor als Linux ist :-) Ernsthaft, BSD ist ein Acronym für Berkley Software Distribution. Das ist der Name, den die Berkley CSRG (Computer Systems Research Group) damals für ihre Unix-Distribution gewählt hat. Was ist eine repo-copy? Eine repo-copy (die Kurzform von repository copy) bedeutet, daß Dateien direkt innerhalb des CVS repository kopiert wurden. Wenn eine Datei an einen anderen Ort im Repository kopiert oder verschoben werden müsste, würde ein Comitter ohne repo-copy die neue Datei mit cvs add hinzufügen und die alte ggfs. mit cvs rm löschen. Damit würden allerdings die Einträge in der History (die Einträge im CVS-Logfile) nicht mit übertragen. Da das FreeBSD Projekt diese Informationen allerdings für äußerst nützlich hält, wird eine repository copy durchgeführt. Bei diesem Vorgang wird einer der CVS-Meister die Dateien direkt innerhalb des Repository verschieben, statt das Programm &man.cvs.1; zu benutzen. Warum sollte mich die Farbe des Fahrradschuppens interessieren? Die ganz, ganz kurze Antwort ist überhaupt nicht. Die etwas längere Antwort lautet: Nur weil Sie in der Lage sind, einen Fahrradschuppen zu bauen, müssen Sie noch lange nicht andere davon abhalten, nur weil Ihnen die Farbe gefällt. Dies ist natürlich eine Metapher dafür, daß Sie nicht eine Diskussion über jede kleine Änderung beginnen sollen, nur weil Sie das können. Einige Leute behaupten sogar, daß die Anzahl der (nutzlosen) Kommentare über eine Änderung umgekehrt proportional zu Ihrer Komplexität der Änderung ist. Die noch längere und vollständigere Antwort ist, daß &a.phk; nach einen langen Diskussion über das Thema "Soll &man.sleep.1; Sekundenbruchteile als Parameter akzeptieren?" eine lange Mail mit dem Titel A bike shed (any colour will do) on greener grass... schrieb. Die einschlägigen Teile der Nachricht lauteten:
&a.phk; in freebsd-hackers, 2.10.1999 Einige von Euch haben mich gefragt, Was meinst Du mit dem Fahrradschuppen? Es ist eine lange oder eigentlich eher eine sehr alte und doch sehr kurze Geschichte. C. Northcote Parkinson schrieb in den führen sechzigern ein Buch mit dem Namen Parkinson's Law, das viele Einblick in die Beziehungen innerhalb des Managements gibt. [ein paar Kommentare zum Buch gestrichen] In dem Beispiel mit dem Fahrradschuppen ist die andere wichtige Komponente ein Kernkraftwerk. Ich glaube, daß zeigt schon, wie alt dieses Buch ist. Parkinson zeigte, daß man zum Vorstand gehen kann und die Genehmigung für ein mehrere Millionen oder sogar Milliarden Dollar teures Kernkraftwerk bekommt; wenn man aber einen Fahrradschuppen bauen will, wird man in endlose Diskussionen verwickelt. Laut Parkinson liegt das daran, daß ein Kernkraftwerk so groß, so teuer und so kompliziert ist, daß die Leute es nicht verstehen. Und bevor sie versuchen, es zu verstehen, verlassen Sie sich lieber darauf, daß irgend jemand sicherlich die ganzen Details geprüft hat, bevor das Projekt bis zum Vorstand gekommen ist. Im Buch von Richard P. Feynmann finden sich einige interessante und sehr passende Beispiele aus dem Gebiet von Los Alamos. Ein Fahrradschuppen ist was anderes. Jeder kann an seinem freien Wochenende einen bauen und hat trotzdem noch genug Zeit für die Sportschau. Daher ist es unwichtig, wie gut man sich vorbereitet und wie sinnvoll der eigene Vorschlag ist. Irgend jemand wird die Möglichkeit nutzen und zeigen, daß er seine Arbeit tut, daß er aufmerksam ist, daß er da ist. In Dänemark nennen wir dieses Verhalten Seine Fingerabdrücke hinterlassen. Es geht um persönlichen Stolz und Prestige; die Chance, auf irgend etwas zu zeigen und zu sagen zu können: Da! Das habe Ich getan. Politiker leiden sehr stark darunter, aber viele Leute verhalten sich so, wenn sie die Chance haben. Denkt einfach mal an Fußabdrücke in feuchtem Zement.
Wieviele FreeBSD-Hacker braucht man, um eine Glühbirne auszuwechseln? Eintausendeinhundertundzweiundsiebzig: Dreiundzwanzig, die sich bei -CURRENT beschweren, daß das Licht aus ist; Vier, die behaupten, daß es sich um ein Konfigurationsproblem handelt und daß solche Dinge wirklich nach -questions gehören; Drei, die PRs hierzu einreichen, einer von ihnen wird falsch unter DOC abgelegt und fristet sein Dasein im Dunkeln; Einen, der eine ungetestete Glühbirne einreicht, wonach buildworld nicht mehr funktioniert, und sie dann fünf Minuten später wieder herausnimmt; Acht, die die PR-Erzeuger beschimpfen, weil sie zu ihren PRs keine Patche hinzugefügt haben; Fünf, die sich darüber beschweren, daß buildworld nicht mehr funktioniert; Einunddreißig, die antworten, daß es bei ihnen funktioniert und daß sie cvsup wohl zu einigem ungünstigen Zeitpunkt durchgeführt haben; Einen, der einen Patch für eine neue Glühbirne an -hackers schickt; Einen, der sich beschwert, daß es vor drei Jahren Patches hierfür hatte, aber als er sie nach -CURRENT schickte, sind sie einfach ignoriert worden und er hatte schlechte Erfahrungen mit dem PR-System; nebenbei ist die vorgeschlagene Glühbirne nicht reflexiv; Siebenunddreißig, die schreien, daß Glühbirnen nicht ins Basissystem gehören, daß Committer nicht das Recht haben, solche Dinge durchzuführen, ohne die Gemeinschaft zu konsultieren und WAS GEDENKT -CORE HIER ZU TUN!? Zweihundert, die sich über die Farbe des Fahrradschuppens beschweren; Drei, die darauf hinweisen, daß der Patch nicht mit &man.style.9; übereinstimmt; Siebzehn, die sich beschweren, daß die vorgeschlagene neue Glühbirne der GPL unterliegt; Fünfhundertundsechsundachtzig, die sich in einen Streit über die vergleichbaren Vorteile der GPL, der BSD-Lizenz, der MIT-Lizenz, der NPL und der persönlichen Hygiene nichtgenannter FSF-Gründer verwickeln; Sieben, die unterschiedliche Teile des Threads nach -chat und -advocacy weiterleiten; Einer, der die vorgeschlagene Glühbirne einbaut, obwohl sie dunkler leuchtet, als die alte; Zwei, die sie wieder ausbauen, und in einer wütenden Nachricht argumentieren, daß FreeBSD besser ganz im Dunkeln dasteht, als mit einer dämmerigen Glühbirne; Sechsundvierzig, die sich lärmend wegen des Wiederausbaus der dämmerigen Glühbirne streiten und eine Erklärung von -core verlangen; Elf, die eine kleinere Glühbirne beantragen, damit sie in ihr Tamagotchi paßt, falls wir irgendwann beschließen, FreeBSD auf diese Plattform zu portieren; Dreiundsiebzig, die sich über die SNR auf -hackers und -chat beschweren und aus Protest abmelden; Dreizehn, die "unsubscribe", "How do I unsubscribe?", oder "Please remove me from the list", gefolgt von der üblichen Fußzeile abschicken; Einen, der eine funktionierende Glühbirne einbaut, während alle zu beschäftigt damit sind, mit jedem zu streiten, um es zu bemerken; Einunddreiß, die herausstellen, daß die neue Glühbirne 0,364% heller leuchten würde, wenn sie mit TenDRA kompiliert werden würde (obwohl sie ein einen Würfel umgeformt werden müßte) und daß FreeBSD deshalb nach TenDRA, anstatt nach EGCS wechseln sollte; Einen, der sich beschwert, daß bei der neuen Glühbirne die Verkleidung fehlt; Neun (einschließlich der PR-Ersteller), die fragen "Was ist MFC?"; Siebenundfünfzig, die sich zwei Wochen, nachdem die Birne gewechselt worden ist, darüber beschweren, daß das Licht aus war. &a.nik; hat hinzugefügt: Ich habe ziemlich hierüber gelacht. Und dann dachte ich: "Halt, sollte in dieser Liste nicht irgendwo 'Einer, der es dokumentiert' sein?" Und dann wurde ich erleuchtet :-) This entry is Copyright (c) 1999 &a.des;. Please do not reproduce without attribution.
Weiterführende Themen Was sind SNAPs und RELEASEs? Derzeit existieren drei aktive/halbaktive Zweige im FreeBSD-CVS-Repository (im Zweig RELENG_2 erfolgen vielleicht noch zwei Änderungen pro Jahr, daher gibt es nur drei aktive Entwicklungszwenige: RELENG_2_2 bzw. 2.2-STABLE RELENG_3 bzw. 3.X-STABLE RELENG_4 bzw. 4-STABLE HEAD bzw. -CURRENT oder 5.0-CURRENT HEAD ist keine wirkliche Bezeichnung für einen Zweig, wie die anderen beiden. Es ist lediglich eine symbolische Konstante für den aktuellen, nicht verzweigten Entwicklungsstrom, auf den wir uns einfach als -CURRENT beziehen. Zur Zeit ist -CURRENT der 5.0 Entwicklungsstrom und der 4-STABLE-Zweig RELENG_4 wurde im März 2000 von -CURRENT abgespalten. Der 2.2-STABLE-Zweig RELENG_2_2 verließ -CURRENT im November 1996, die Weiterentwicklung wurde fast vollständig eingestellt. Wie kann ich meine eigene, angepaßtes Release erstellen? Um ein Release zu erstellen, müssen Sie drei Dinge tun: erstens müssen Sie einen Kernel benutzen, der das Gerät &man.vn.4; enthält. Fügen Sie folgendes in ihre Kernelkonfigurationsdatei ein und erstellen Sie einen neuen Kernel: pseudo-device vn #Vnode driver (verwandelt eine Datei in ein Gerät) Zweitens müssen Sie das vollständige CVS-Repository zur Hand haben. Sie können hierzu CVSUP benutzen. Sie müssen in den Konfigurationsdateien für cvsup als Release cvs verwenden und alle evtl. vorhandenen tag= und date= Zeilen entfernen: *default prefix=/home/ncvs *default base=/a *default host=cvsup.FreeBSD.org *default release=cvs *default delete compress use-rel-suffix ## Main Source Tree src-all src-eBones src-secure # Other stuff ports-all www doc-all Benutzen Sie dann cvsup -g supfile, um all die guten Bits auf Ihren Rechner zu saugen... Schließlich brauchen Sie eine Menge freien Plattenplatz für die Erstellung. Angenommen, er befindet sich unter /some/big/filesystem und entsprechend dem obigen Beispiel befindet sich das CVS-Repository unter /home/ncvs: &prompt.root; setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; cd /usr/src/release &prompt.root; make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release Es ist nicht notwendig, make buildworld auszuführen, wenn Sie über ein aktuelles /usr/obj verfügen. Ein vollständiges Release wird nun unter /some/big/filesystem/release erstellt. Wenn der Vorgang abgeschlossen ist, finden Sie unter /some/big/filesystem/release/R/ftp eine vollständige FTP-fähige Installlation. Falls Sie Ihren SNAP von einem anderen Zweig als -CURRENT erstellen wollen, können Sie auch RELEASETAG=SOMETAG zu der obigen Befehlszeile "make release" hinzufügen, z.B. würde RELEASETAG=RELENG_2_2 einen minutenaktuellen Schnappschuß von 2.2-STABLE erstellen. Wie erstelle ich eine angepaßte Installationsdiskette? Der gesamte Prozeß zur Erstellung von Installationsdisketten und Quell- und Binärarchiven ist durch verschiedene Targets in /usr/src/release/Makefile automatisiert. Die dortigen Informationen sollten für einen Einstieg ausreichen. Es sollte jedoch erwähnt werden, daß dies ein make world einschließt und daher sehr viel Zeit und Plattenplatz in Anspruch nimmt. Wieso überschreibt make world das installierte System? Das ist beabsichtigt. Wie der Name schon andeutet, erstellt make world alle Systemdateien von Grund auf neu. Sie können also sicher sein, am Ende eine saubere, konsistente Umgebung zu haben (das ist der Grund, warum es so lange dauert). Falls die Umgebungsvariable DESTDIR während der Ausführung von make world oder make install definiert ist, werden die neu erstellten Binaries unter ${DESTDIR} in einem zum installierten identischen Verzeichnisbaum abgelegt. Einige zufällige Kombinationen von Änderungen von Shared Libraries und Neuerstellungen von Programmen können hierbei jedoch ein Scheitern von make world verursachen. Warum meldet mein System (bus speed defaulted) beim Start? Die Adaptec 1542 SCSI Hostadapter erlauben dem Benutzer die Buszugriffsgeschwindigkeit per Software zu konfigurieren. Ältere Versionen des 1542-Treibers versuchten, die schnellstmögliche Geschwindigkeit herauszufinden und konfigurierten den Adapter entsprechend. Wir haben festgestellt, daß dies auf einigen Systemen nicht funktioniert, weshalb Sie nun die Kernelkonfigurationsoption TUNE_1542 definieren müssen, um es zu aktivieren. Die Benutzung auf Systemen, auf denen es funktioniert, könnte Ihre Platten schneller machen, aber auf den Systemen, auf denen es nicht funktioniert, könnten Ihre Daten beschädigt werden. Kann ich -CURRENT mit begrenztem Internetzugang folgen? Ja, Sie können das tun, ohne den gesamten Quellbaum herunterzuladen, indem Sie die Einrichtung CTM benutzen. Wie haben Sie die Distribution in 240k-Dateien aufgespalten? Bei neueren BSD-basierten Systemen gibt es eine Option zu split, die das Splitten von Dateien an willkürlichen Bytegrenzen erlaubt. Hier ist ein Beispiel aus /usr/src/Makefile. bin-tarball: (cd ${DISTDIR}; \ tar cf - . \ gzip --no-name -9 -c | \ split -b 240640 - \ ${RELEASEDIR}/tarballs/bindist/bin_tgz.) Ich habe eine Kernelerweiterung geschrieben. An wen sende ich sie? Lesen Sie bitte den Handbucheintrag über das Einreichen vom Code. Und Danke, daß Sie darüber Nachdenken! Wie werden Plug&Play ISA-Karten erkannt und initialisiert? Von: Frank Durda IV uhclem@nemesis.lonestar.org Kurz gesagt gibt es nur wenige I/O-Ports über die PnP-Karten antworten, wenn der Host fragt, ob jemand da ist. Wenn die PnP-Erkennungsroutine startet, fragt sie, ob irgendwelche PnP-Karten vorhanden sind und alle PnP-Karten antworten mit ihrer Modellnummer auf demselben Port, von dem sie auch gelesen haben. Die Erkennungsroutine erhält also ein geodertes Ja auf diese Frage. Mindestens ein Bit wird bei dieser Antwort gesetzt sein. Die Erkennungsroutine ist dann in der Lage, dafür zu sorgen, daß Karten mit Modellnummern (zugeordnet von Microsoft/Intel) kleiner als X off-line gesetzt werden. Sie prüft dann, ob immer noch Karten da sind, die auf die Frage antworten. Falls die Antwort 0 war, sind keine Karten mit IDs größer X vorhanden. Nun prüft die Erkennungsroutine, ob Karten unterhalb X vorhanden sind. Dann setzt die Erkennungsroutine alle Karten größer als X-(limit/4) off-line und wiederholt die Frage. Wenn diese halbbinäre Suche nach IDs in Folge genügend oft wiederholt worden ist, wird die Erkennungsroutine schließlich alle in einem Rechner befindlichen PnP-Karten identifiziert haben und das mit einer Iterationszahl sehr viel kleiner als 2^64. Die IDs bestehen aus zwei 32-Bit-Feldern (daher 2^64) + acht Bit Prüfsumme. Die ersten 32 Bit sind die Herstellerkennung. Es wurde zwar nicht bestätigt, aber es wird angenommen, daß unterschiedliche Kartentypen desselben Herstellers unterschiedliche 32-Bit Herstellerkennungen besitzen können. 32 Bit nur für eindeutige Hersteller zu benötigen, scheint etwas übertrieben. Die niedrigen 32 Bit sind eine Seriennummer, Ethernetadresse - etwas, das die betreffende Karte einzigartig macht. Die Hersteller dürfen niemals eine zweite Karte mit denselben niedrigen 32 Bit herstellen, es sei denn, die höheren 32 Bit sind unterschiedlich. Sie können also mehrere Karten des selben Typs im Rechner haben und die gesamten 64 Bit bleiben stets eindeutig. Die 32-Bit-Gruppen können niemals nur aus Nullen bestehen. Das erlaubt es, bei der binären Suche zu Beginn nur auf von Null verschiedene Bits zu achten. Wenn das System alle vorhandenen Karten-IDs identifiziert hat, reaktiviert es jede Karte - eine nach der anderen (über dieselben I/O-Ports) und ermittelt, welche Ressourcen von der jeweiligen Karte benötigt werden, welche Wahlmöglichkeiten für Interrupts bestehen usw. Alle Karten werden abgefragt, um diese Informationen zusammenzustellen. Diese Informationen werden dann mit Informationen aus allen ECU-Dateien auf der Festplatte oder mit im MLB-Bios verdrahteten Informationen verknüpft. Die ECU- und BIOS-PnP-Unterstützung für Hardware auf dem MLB ist für gewöhnlich künstlich und was die Peripheriegeräte tun ist nicht wirklich echtes PnP. Durch die Untersuchung der BIOS-Informationen und der ECU-Informationen können die Erkennungsroutinen jedoch die von PnP-Geräten benutzten Ressourcen so ändern, daß vermieden wird, daß bereits von anderen Geraeten benutzte Ressourcen verwendet werden. Dann werden die PnP-Geräte nochmals besucht und ihre I/O, DMA, IRQ und Memory-Map-Adressen werden zugeordnet. Die Geräte werden an diesen Stellen sichtbar werden und dort bis zum nächsten Reboot verbleiben. Allerdings hindert Sie auch nichts daran, sie zu verschieben, wohin Sie wollen. Im obigen Teil wurde sehr viel vereinfacht, aber die grundlegende Idee sollte klar geworden sein. Microsoft hat einige der primären Druckerstatusports für PnP übernommen, da keine Karte diese Adressen für die entgegengesetzten I/O-Zyklen decodiert. Ich habe während der frühen Überprüfungsperiode des PnP-Vorschlags eine echte IBM Druckerkarte gefunden, die Schreibzugriffe auf dem Statusport decodiert hat, aber MS hat nur tough gesagt. Also schreiben sie auf den Druckerstatusport, um Adressen zu setzen, benutzen zusätzlich diese Adresse + 0x800 und einen dritten I/O-Port zum Lesen, der irgendwo zwischen 0x200 und 0x3ff liegen kann. Wie bekommen ich eine major number für einen Gerätetreiber, den ich geschrieben habe? Das hängt davon ab, ob Sie beabsichtigen, den Treiber frei verfügbar zu machen, oder nicht. Falls dem so ist, senden Sie uns bitte eine Kopie der Treiber-Sourcen und zusätzlich die entsprechenden Änderungen der Datei files.i386, ein Beispiel für einen Eintrag in der Konfigurationsdatei und den entsprechenden Code für &man.MAKEDEV.8; um spezielle Geräte zu erstellen, die Ihr Gerät benutzt. Falls Sie nicht beabsichtigen, den Treiber frei verfügbar zu machen, oder es aufgrund von Lizenzbeschränkungen nicht können, dann ist die major number 32 für zeichenorientierte und die major number 8 für blockorientierte Geräte speziell für diesen Zweck reserviert. In jedem Fall würden wir uns freuen, in der &a.hackers; etwas über Ihren neuen Treiber zu hören. Gibt es alternative Layoutverfahren für Verzeichnisse? Als Antwort auf die Frage nach alternativen Layoutverfahren für Verzeichnisse ist das Schema, das derzeit benutzt wird, unverändert von dem, das ich 1983 geschrieben habe. Ich habe das Vorgehen für das originale Fast-Filesystem geschrieben und es niemals überarbeitet. Es funktioniert gut, wenn es darum geht, zu verhindern, daß Zylindergruppen volllaufen. Wie viele von Ihnen angemerkt haben, funktioniert es schlecht für find. Die meisten Dateisysteme werden von Archiven erstellt, die mit einer Tiefensuche (also ftw) erstellt wurden. Diese Verzeichnisse werden über die Zylindergruppen hinweg entfaltet und erzeugen denkbar ungünstigste Voraussetzungen für zukünftige Tiefensuchen. Falls man die Gesamtzahl der zu erstellenden Verzeichnisse wüsste, wäre die Lösung die, (gesamt / fs_ncg) pro Zylindergruppe zu erstellen, bevor fortgefahren wird. Offensichtlich müßte man eine Heuristik erstellen, um die Zahl zu schätzen. Sogar die Benutzung einer kleinen, fixen Zahl, z.B. 10, würde eine Verbesserung um Größenordnungen ausmachen. Um Wiederherstellungen von normalem Betrieb (wo der derzeitige Algorithmus vermutlich sinnvoller ist) zu unterscheiden, könnten Sie die Clusterung von bis zu 10 benutzen, wenn sie alle innerhalb eines 10-Sekunden-Fensters durchgeführt würden. Jedenfalls ist mein Schluss, daß dies ein fruchtbares Gebiet für Experimente ist. Kirk McKusick, September 1998 Wie kann ich optimalen Nutzen aus einer kernel panic ziehen? [Dieser Abschnitt wurde von &a.des;, der einige Tippfehler korrigiert und die Kommentare in eckigen Klammern hinzugefügt hat, aus einer Mail von &a.wpaul; in der Mailingliste freebsd-current entnommen.] From: Bill Paul <wpaul@skynet.ctr.columbia.edu> Subject: Re: the fs fun never stops To: ben@rosengart.com Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT) Cc: current@FreeBSD.org [<ben@rosengart.com> sendete die folgende Panik-Meldung] > 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 [Wenn] Sie eine Meldung wie diese sehen, reicht es nicht, sie einfach zu reproduzieren und sie einzusenden. Der Wert des Instruktionszeigers, den ich oben hervorgehoben habe, ist wichtig; leider ist er auch konfigurationsabhängig. Mit anderen Worten variieren die Werte abhängig von dem Kernel-Image, das Sie tatsächlich benutzen. Wenn Sie ein GENERIC Kernelimage von einem der Snapshots benutzen, dann ist es für jemand anderen möglich, die fehlerhafte Instruktion herauszufinden, aber wenn Sie einen angepaßten Kernel benutzen, können nur Sie uns sagen, wo der Fehler auftrat. Was Sie tun sollten, ist folgendes: Notieren Sie sich den Wert des Instruktionszeigers. Beachten Sie, daß der Teil 0x8: am Anfang in diesem Fall nicht von Bedeutung ist; der Teil 0xf0xxxxxx ist der, den wir wollen. Tun Sie folgendes, wenn das System rebootet: &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxxx wobei 0xf0xxxxxx der Wert des Instruktionszeigers ist. Es besteht die Möglichkeit, daß Sie keinen exakten Treffer erzielen, weil die Symbole in der Symboltabelle des Kernels Funktionseinstiegspunkte sind und die Adresse des Instruktionszeiger irgendwo innerhalb einer Funktion liegen wird und nicht am Anfang. Falls sie keinen exakten Treffer erzielen, lassen Sie den letzten Teil des Werts des Instruktionszeigers weg und versuchen es nocheinmal, z.B.: &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxx Falls das kein Ergebnis liefert, hacken Sie eine weitere Ziffer ab. Wiederholen Sie die Schritte, bis Sie irgendeine Ausgabe erhalten. Das Ergebnis wird eine Liste möglicher Funktionen sein, die die Panik verursacht haben. Das ist zwar kein absolut genauer Mechanismus, um die Fehlerursache ausfindig zu machen, aber es ist besser als gar nichts. Ich sehe ständig Leute, die Panik-Meldungen wie diese zeigen, aber ich sehe kaum jemanden, der sich die Zeit nimmt, den Instruktionszeiger einer Funktion aus der Symboltabelle des Kernel zuzuordnen. Der beste Weg, den Grund für eine Panik herauszufinden, ist der, einen Crash-Dump festzuhalten und dann &man.gdb.1; zu benutzen, um den Stack im Crash-Dump zurückzuverfolgen. Jedenfalls ist die Methode, die ich normalerweise benutze, folgende: Richten Sie eine Kernelkonfigurationsdatei ein, fügen Sie optional options DDB hinzu, falls Sie glauben, daß Sie den Kerneldebugger benötigen. (Ich benutze ihn hauptsächlich zum Setzen von Haltepunkten, wenn ich eine Endlosschleife irgendeiner Art vermute.) Benutzen Sie config -g KERNELCONFIG, um das Erstellungsverzeichnis einzurichten. cd /sys/compile/KERNELCONFIG; make Warten Sie, bis der Kernel fertig kompiliert ist. make install reboot Der &man.make.1;-Prozeß wird zwei Kernel erstellt haben: kernel und kernel.debug. kernel wurde als /kernel installiert, während kernel.debug als Quelle für Debuggersymbole für &man.gdb.1; benutzt werden kann. Um sicherzustellen, daß ein Crash-Dump erhalten bleibt, müssen Sie /etc/rc.config editieren und dumpdev so setzen, daß es auf Ihre Swap-Partition zeigt. Das bewirkt, daß die &man.rc.8;-Skripte den Befehl &man.dumpon.8; benutzen, um Crash-Dumps zu ermöglichen. Sie können &man.dumpon.8; auch manuell ausführen. Nach einer Panik kann der Crash-Dump mit &man.savecore.8; wiederhergestellt werden; wenn dumpdev in /etc/rc.conf gesetzt ist, werden die &man.rc.8;-Skripte &man.savecore.8; automatisch ausführen und den Crash-Dump unter /var/crash ablegen. Crash-Dumps von FreeBSD sind für gewöhnlich genauso groß wie der physikalische Hauptspeicher Ihres Rechners. D.h., wenn Sie 64MB RAM haben, werden sie einen 64MB Crash-Dump erhalten. Deshalb müssen Sie dafür sorgen, daß genügend Speicherplatz in /var/crash zur Verfügung steht, um den Dump aufnehmen zu können. Alternativ führen Sie &man.savecore.8; manuell aus und lassen es den Crash-Dump in einem anderen Verzeichnis wiederherstellen, in dem Sie mehr Platz haben. Es ist möglich, die Größe des Crash-Dumps zu begrenzen, indem options MAXMEM=(foo) benutzt wird, um den Speicher, den der Kernel benutzt, auf einen etwas vernünftigeren Wert zu setzen. Wenn Sie z.B. 128MB RAM haben, können Sie die Speicherbenutzung des Kernels auf 16MB begrenzen, so daß die Größe Ihres Crash-Dumps 16MB anstatt 128MB beträgen wird. Wenn Sie den Crash-Dump wiederhergestellt haben, können Sie den Stack mit &man.gdb.1; so zurückverfolgen: &prompt.user; gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0 (gdb) where Beachten Sie, daß es mehrere Seiten mit wertvollen Informationen geben könnte; idealerweise sollten Sie &man.script.1; benutzen, um sie alle festzuhalten. Wenn Sie das vollständige Kernelimage mit allen Debugginginformationen benutzen, müßten Sie exakt die Zeile des Kernel-Sourcecodes finden, wo die Panik aufgetreten ist. Für gewöhnlich müssen Sie den Stack von unten an zurückverfolgen, um die genaue Ereignisabfolge, die zum Crash führte, zurückzuverfolgen. Sie können &man.gdb.1; auch zum Ausdrucken der Inhalte verschiedener Variablen oder Strukturen benutzen, um den Systemstatus zum Zeitpunkt des Absturzes zu untersuchen. Wenn Sie nun wirklich verrückt sind und einen zweiten Computer haben, können Sie &man.gdb.1; auch für entferntes Debugging konfigurieren, so daß Sie &man.gdb.1; auf einem System benutzen können, um den Kernel auf einem anderen System zu debuggen, einschließlich dem Setzen von Haltepunkten und dem Bewegen in Einzelschritten durch den Kernelcode, genauso, wie Sie es mit einem normalen Benutzerprogramm tun können. Ich habe noch nicht damit gespielt weil ich nicht oft Gelegenheit habe, zwei Rechner nebeneinander für Debuggingzwecke einzurichten. [Bill hat hinzugefügt: "Ich vergaß, etwas zu erwähnen: wenn Sie DDB aktiviert haben und der Kernel im Debugger landet, können Sie eine Panik (und einen Crash-Dump) erzwingen, indem Sie einfach 'panic' am ddb-Prompt eingeben. Er könnte während der Panikphase wieder im Debugger stoppen. Falls er das tut, geben Sie 'continue' ein, dann wird er den Crash-Dump beenden." -ed] Wieso funktioniert dlsym() nicht mehr für ELF-Executables? Die ELF-Werkzeuge machen die in einem Executable definierten Symbole dem dynamischen Linker nicht standardmäßig sichtbar. Konsequenterweise werden dlsym()-Suchen nach Handlern aus Aufrufen von dlopen(NULL, flags) diese Symbole nicht finden können. Wenn Sie mit dlsym() nach im Hauptexecutable eines Prozesses vorhandenen Symbolen suchen wollen, müssen Sie das Executable mit der Option von &man.ld.1; linken. Wie kann ich den Adreßraum des Kernels vergrössern oder verkleinern? Standardmäßig beträgt der Adreßraum des Kernels 256MB (FreeBSD 3.x) bzw. 1 GB (FreeBSD 4.x). Wenn Sie einen netzwerkintensiven Server (z.B. einen großen FTP- oder HTTP-Server) betreiben, kann es sein, daß Sie der Meinung sind, daß 256MB nicht ausreichen. Wie also erhöhen Sie den Adreßraum? Hier gibt es zwei Aspekte. Erstens müssen Sie dem Kernel sagen, daß er einen grösseren Anteil des Adreßraums für sich selbst reservieren soll. Da der Kernel am oberen Ende des Adreßraums geladen wird, müssen Sie zweitens die Ladeadresse verringern, damit er mit dem Kopf nicht gegen die Obergrenze stößt. Das erste Ziel erreicht man, indem man den Wert von NKPDE in src/sys/i386/include/pmap.h erhöht. Für einen Adreßraum von 1 GB sieht das so aus: #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 Dividieren Sie die gewünschte Adreßraumgröße (in Megabyte) durch vier und subtrahieren Sie dann eins für UP und zwei für SMP, um den korrekten Wert für NKPDE zu finden. Um das zweite Ziel zu erreichen müssen Sie die korrekte Ladeadresse berechnen: subtrahieren Sie einfach die Größe des Adreßraums (in Byte) von 0x100100000; für einen Adreßraum von 1 GB lautet das Ergebnis 0xc0100000. Setzen Sie LOAD_ADDRESS in src/sys/i386/conf/Makefile.i386 auf diesen Wert; setzen Sie dann den Location-Counter am Anfang der Abschnittsliste in src/sys/i386/conf/kernel.script auf denselben Wert: 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) } Konfigurieren und erstellen Sie Ihren Kernel dann neu. Sie werden vermutlich Probleme mit &man.ps.1;, &man.top.1; und ähnlichen Programmen haben. Ein make world sollte diese beheben; alternativ können Sie die gepatchte pmap.h in das Verzeichnis /usr/include/vm kopieren und danach libkvm, &man.ps.1; und &man.top.1; neu erzeugen. Hinweis: die Größe des Kernel-Adreßraums muß ein Vielfaches von vier Megabyte betragen. [&a.dg; fügt hinzu: Ich glaube, der Kerneladreßraum muß eine Zweierpotenz sein, aber ich bin mir dessen nicht sicher. Der alte (ältere) Bootcode pflegte die oberen Adreßbits zu mißbrauchen und ich glaube, er erwartete mindestens 256MB Granularität.] Danksagung
FreeBSD Core Team Falls Sie ein Problem in dieser FAQ entdecken, oder einen Eintrag einsenden möchten, senden Sie uns bitte eine Mail an &a.faq; Wir schätzen Ihr Feedback und können diese FAQ ohne Ihre Hilfe nicht verbessern!
Originalversion &a.jkh; Gelegentliche Anpassungen von Umstrukturierungen der FAQ und Aktualisierung. &a.dwhite; Dienste über Pflichtbesuche in freebsd-questions hinaus &a.joerg; Dienste über Pflichtbesuche im Usenet hinaus &a.wollman; Netzwerke und Formatierung Jim Lowe Multicast-Informationen &a.pds; Schreibmaschinenknecht der FreeBSD-FAQ Das FreeBSD-Team Nörgeln, Stöhnen, Einsenden von Daten Folgende Personen haben durch die Beantwortung von Fragen, sowie durch Hinweise und Kommentare an der Entstehung der deutschen Übersetzung mitgewirkt: Ross Alexander &a.jhb; &a.nik; Glen Foster Oliver Fromme Frank Gruender Chris Hill James Howard &a.jkh; &a.alex; &a.jmas; Mike Meyer Dan O'Connor Eric Ogren &a.de.pierau; Oliver Schneider Christoph Sold Und an alle anderen, an die wir nicht gedacht haben. Entschuldigung und herzlichen Dank!
Bibliographie 4.4BSD System Manager's Manual Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1. Ausgabe Juni 1994 804 Seiten ISBN 1-56592-080-5 4.4BSD User's Reference Manual Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1. Ausgabe Juni 1994 905 Seiten ISBN 1-56592-075-9 4.4BSD User's Supplementary Documents Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1. Ausgabe Juni 1994 712 Seiten ISBN 1-56592-076-7 4.4BSD Programmer's Reference Manual Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1. Ausgabe Juni 1994 866 Seiten ISBN 1-56592-078-3 4.4BSD Programmer's Supplementary Documents Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1. Ausgabe Juni 1994 596 Seiten ISBN 1-56592-079-1 The Design and Implementation of the 4.4BSD Operating System M. K. McKusick Kirk Marshall Keith Bostic Michael J Karels John Quarterman Addison-Wesley
Reading MA
1996 ISBN 0-201-54979-4
Unix System Administration Handbook Evi Nemeth Garth Snyder Scott Seebass Trent R. Hein John Quarterman Prentice-Hall 3. Ausgabe 2000 ISBN 0-13-020601-6 The Complete FreeBSD Greg Lehey Walnut Creek 3. Ausgabe Juni 1999 773 Seiten ISBN 1-57176-246-9 The FreeBSD Handbook FreeBSD Documentation Project BSDi 1st Edition November 1999 489 pages ISBN 1-57176-241-8 McKusick et al, 1994 Berkeley Software Architecture Manual, 4.4BSD Edition M. K. McKusick M. J. Karels S. J. Leffler W. N. Joy R. S. Faber 5:1-42
diff --git a/en_US.ISO8859-1/articles/committers-guide/article.sgml b/en_US.ISO8859-1/articles/committers-guide/article.sgml index 0c29d406a3..433a63076b 100644 --- a/en_US.ISO8859-1/articles/committers-guide/article.sgml +++ b/en_US.ISO8859-1/articles/committers-guide/article.sgml @@ -1,2378 +1,2381 @@ %man; %freebsd; %authors; + +%teams; + %mailing-lists; ]>
Committer Guide The FreeBSD Documentation Project $FreeBSD$ 1999 2000 2001 The FreeBSD Documentation Project This document provides information for the FreeBSD committer community. All new committers should read this document before they start, and existing committers are strongly encouraged to review it from time to time. Administrative Details Main Repository Host freefall.FreeBSD.org Login Methods &man.ssh.1; Main CVSROOT /home/ncvs Main CVS Repository Meisters &a.peter; and &a.markm;, as well as &a.joe; and &a.asami; for ports/ Mailing List developers@FreeBSD.org, cvs-committers@FreeBSD.org Noteworthy CVS Tags RELENG_3 (3.x-STABLE), RELENG_4 (4.x-STABLE), HEAD (-CURRENT) It is required that you use &man.ssh.1; or &man.telnet.1; with Kerberos 5 to connect to the repository hosts. These are generally more secure than plain &man.telnet.1; or &man.rlogin.1; since credential negotiation will always be encrypted. All traffic is encrypted by default with &man.ssh.1;. With utilities like &man.ssh-agent.1; and &man.scp.1; also available, &man.ssh.1; is also far more convenient. If you do not know anything about &man.ssh.1;, please see . CVS Operations It is assumed that you are already familiar with the basic operation of CVS. The CVS Repository Meisters (Peter Wemm and John Polstra) are the owners of the CVS repository and are responsible for any and all direct modification of it for the purposes of cleanup or fixing some grievous abuse of CVS by a committer. No one else should attempt to touch the repository directly. Should you cause some repository accident, say a bad cvs import or tag operation, do not attempt to fix it yourself! Mail or call John or Peter immediately and report the problem to one of them instead. The only ones allowed to directly fiddle the repository bits are the repomeisters. Satoshi Asami is also a repomeister for the ports/ portion of the tree. CVS operations are usually done by logging into freefall, making sure the CVSROOT environment variable is set to /home/ncvs, and then doing the appropriate check-out/check-in operations. If you wish to add something which is wholly new (like contrib-ified sources, etc), a script called easy-import is also provided for making the process easier. It automatically adds the new module entry, does the appropriate thing with cvs import, etc. – just run it without arguments and it will prompt you for everything it needs to know. Note that when you use CVS on freefall, you should set your umask to 2, as well as setting the CVSUMASK environment variable to 2. This ensures that any new files created by cvs add will have the correct permissions. If you add a file or directory and discover that the file in the repository has incorrect permissions (specifically, all files in the repository should be group writable by group ncvs), contact one of the repository meisters as described below. If you are familiar with remote CVS and consider yourself pretty studly with CVS in general, you can also do CVS operations directly from your own machine and local working sources. Just remember to set CVS_RSH to ssh so that you are using a relatively secure and reliable transport. If you have no idea what any of the above even means, on the other hand, then please stick with logging into freefall and applying your diffs with &man.patch.1;. If you need to use CVS add and delete operations in a manner that is effectively a mv operation, then a repository copy is in order rather than your CVS add and delete. In a repository copy, a CVS Meister will copy the file(s) to their new name and/or location and let you know when it is done. The purpose of a repository copy is to preserve file change history, or logs. We in the FreeBSD Project greatly value the change history CVS gives to the project. CVS reference information, tutorials, and FAQs can also be found at: http://www.cvshome.org/docs/, and the information in Karl Fogel's chapters from Open Source Development with CVS are also very useful. &a.des; also supplied the following mini primer for CVS. Check out a module with the co or checkout command. &prompt.user; cvs checkout shazam This checks out a copy of the shazam module. If there is no shazam module in the modules file, it looks for a top-level directory named shazam instead. Useful <command>cvs checkout</command> options Do not create empty directories Check out a single level, no subdirectories Check out revision, branch or tag rev Check out the sources as they were on date date
Practical FreeBSD examples: Check out the miscfs module, which corresponds to src/sys/miscfs: &prompt.user; cvs co miscfs You now have a directory named miscfs with subdirectories CVS, deadfs, devfs, and so on. One of these (linprocfs) is empty. Check out the same files, but with full path: &prompt.user; cvs co src/sys/miscfs You now have a directory named src, with subdirectories CVS and sys. src/sys has subdirectories CVS and miscfs, etc. Check out the same files, but prunes empty directories: &prompt.user; cvs co -P miscfs You now have a directory named miscfs with subdirectories CVS, deadfs, devfs... but note that there is no linprocfs subdirectory, because there are no files in it. Check out the directory miscfs, but none of the subdirectories: &prompt.root; cvs co -l miscfs You now have a directory named miscfs with just one subdirectory named CVS. Check out the miscfs module as it is in the 4.x branch: &prompt.user; cvs co -rRELENG_4 miscfs You can modify the sources and commit along this branch. Check out the miscfs module as it was in 3.4-RELEASE. &prompt.user; cvs co -rRELENG_3_4_0_RELEASE miscfs You will not be able to commit modifications, since RELENG_3_4_0_RELEASE is a point in time, not a branch. Check out the miscfs module as it was on Jan 15 2000. &prompt.user; cvs co -D'01/15/2000' miscfs You will not be able to commit modifications. Check out the miscfs module as it was one week ago. &prompt.user; cvs co -D'last week' miscfs You will not be able to commit modifications. Note that cvs stores metadata in subdirectories named CVS. Arguments to and are sticky, which means cvs will remember them later, e.g. when you do a cvs update.
Check the status of checked-out files with the status command. &prompt.user; cvs status shazam This displays the status of the shazam file or of every file in the shazam directory. For every file, the status is given as one of: Up-to-date File is up-to-date and unmodified. Needs Patch File is unmodified, but there is a newer revision in the repository. Locally Modified File is up-to-date, but modified. Needs Merge File is modified, and there is a newer revision in the repository. File had conflicts on merge There were conflicts the last time this file was updated, and they have not been resolved yet. You will also see the local revision and date, the revision number of the newest applicable version (newest applicable because if you have a sticky date, tag or branch, it may not be the actual newest revision), and any sticky tags, dates or options. Once you have checked something out, update it with the update command. &prompt.user; cvs update shazam This updates the shazam file or the contents of the shazam directory to the latest version along the branch you checked out. If you checked out a point in time, does nothing unless the tags have moved in the repository or some other weird stuff is going on. Useful options, in addition to those listed above for checkout: Check out any additional missing directories. Update to head of main branch. More magic (see below). If you checked out a module with or , running cvs update with a different or argument or with will select a new branch, revision or date. The option clears all sticky tags, dates or revisions whereas and set new ones. Theoretically, specifying HEAD as argument to will give you the same result as , but that is just theory. The option is useful if: somebody has added subdirectories to the module you have checked out after you checked it out. you checked out with , and later change your mind and want to check out the subdirectories as well. you deleted some subdirectories and want to check them all back out. Watch the output of the cvs update with care. The letter in front of each file name indicates what was done with it: U The file was updated with no trouble. P The file was updated with no trouble (you will only see this when working against a remote repo). M The file had been modified, and was merged with no conflicts. C The file had been modified, and was merged with conflicts. Merging is what happens if you check out a copy of some source code, modify it, then someone else commits a change, and you run cvs update. CVS notices that you have made local changes, and tries to merge your changes with the changes between the version you originally checked out and the one you updated to. If the changes are to separate portions of the file, it will almost always work fine (though the result might not be syntactically or semantically correct). CVS will print an M in front of every locally modified file even if there is no newer version in the repository, so cvs update is handy for getting a summary of what you have changed locally. If you get a C, then your changes conflicted with the changes in the repository (the changes were to the same lines, or neighboring lines, or you changed the local file so much that cvs can not figure out how to apply the repository's changes). You will have to go through the file manually and resolve the conflicts; they will be marked with rows of <, = and > signs. For every conflict, there will be a marker line with seven < signs and the name of the file, followed by a chunk of what your local file contained, followed by a separator line with seven = signs, followed by the corresponding chunk in the repository version, followed by a marker line with seven > signs and the revision number you updated to. The option is slightly voodoo. It updates the local file to the specified revision as if you used , but it does not change the recorded revision number or branch of the local file. It is not really useful except when used twice, in which case it will merge the changes between the two specified versions into the working copy. For instance, say you commit a change to shazam/shazam.c in &os.current; and later want to MFC it. The change you want to MFC was revision 1.15: Check out the &os.stable; version of the shazam module: &prompt.user; cvs co -rRELENG_4 shazam Apply the changes between rev 1.14 and 1.15: &prompt.user; cvs update -j1.14 -j1.15 shazam/shazam.c You will almost certainly get a conflict because - of the $Id: article.sgml,v 1.93 2002-01-28 21:59:59 jim Exp $ (or in FreeBSD's case, + of the $Id: article.sgml,v 1.94 2002-02-06 17:05:45 phantom Exp $ (or in FreeBSD's case, $FreeBSD$) lines, so you will have to edit the file to resolve the conflict (remove the marker lines and - the second $Id: article.sgml,v 1.93 2002-01-28 21:59:59 jim Exp $ line, leaving the original - $Id: article.sgml,v 1.93 2002-01-28 21:59:59 jim Exp $ line intact). + the second $Id: article.sgml,v 1.94 2002-02-06 17:05:45 phantom Exp $ line, leaving the original + $Id: article.sgml,v 1.94 2002-02-06 17:05:45 phantom Exp $ line intact). View differences between the local version and the repository version with the diff command. &prompt.user; cvs diff shazam shows you every modification you have made to the shazam file or module. Useful <command>cvs diff</command> options Uses the unified diff format. Shows missing or added files.
You always want to use , since unified diffs are much easier to read than almost any other diff format (in some circumstances, context diffs may be better, but they are much bulkier). A unified diff consists of a series of hunks. Each hunk begins with a line that starts with two @ signs and specifies where in the file the differences are and how many lines they span. This is followed by a number of lines; some (preceded by a blank) are context; some (preceded by a - sign) are outtakes and some (preceded by a +) are additions. You can also diff against a different version than the one you checked out by specifying a version with or as in checkout or update, or even view the diffs between two arbitrary versions (with no regard for what you have locally) by specifying two versions with or .
View log entries with the log command. &prompt.user; cvs log shazam If shazam is a file, this will print a header with information about this file, such as where in the repository this file is stored, which revision is the HEAD for this file, what branches this file is in, and any tags that are valid for this file. Then, for each revision of this file, a log message is printed. This includes the date and time of the commit, who did the commit, how many lines were added and/or deleted, and finally the log message that the committer who did the change wrote. If shazam is a directory, then the log information described above is printed for each file in the directory in turn. Unless you give the to log, the log for all subdirectories of shazam is printed too, in a recursive manner. Use the log command to view the history of one or more files, as it is stored in the CVS repository. You can even use it to view the log message of a specific revision, if you add the to the log command: &prompt.user; cvs log -r1.2 shazam This will print only the log message for revision 1.2 of file shazam if it is a file, or the log message for revision 1.2 of each file under shazam if it is a directory. See who did what with the annotate command. This command shows you each line of the specified file or files, along with which user most recently changed that line. &prompt.user; cvs annotate shazam Add new files with the add command. Create the file, cvs add it, then cvs commit it. Similarly, you can add new directories by creating them and then cvs adding them. Note that you do not need to commit directories. Remove obsolete files with the remove command. Remove the file, then cvs rm it, then cvs commit it. Commit with the commit or checkin command. Useful <command>cvs commit</command> options Force a commit of an unmodified file. Specify a commit message on the command line rather than invoking an editor.
Use the option if you realize that you left out important information from the commit message. Good commit messages are important. They tell others why you did the changes you did, not just right here and now, but months or years from now when someone wonders why some seemingly illogical or inefficient piece of code snuck into your source file. It is also an invaluable aid to deciding which changes to MFC and which not to MFC. Commit messages should be clear, concise and provide a reasonable summary to give an indication of what was changed and why. Commit messages should provide enough information to enable a third party to decide if the change is relevant to them and if they need to read the change itself. Avoid committing several unrelated changes in one go. It makes merging difficult, and also makes it harder to determine which change is the culprit if a bug crops up. Avoid committing style or whitespace fixes and functionality fixes in one go. It makes merging difficult, and also makes it harder to understand just what functional changes were made. Avoid committing changes to multiple files in one go with a generic, vague message. Instead, commit each file (or small groups of files) with tailored commit messages. Before committing, always: verify which branch you are committing to, using cvs status. review your diffs, using cvs diff Also, ALWAYS specify which files to commit explicitly on the command line, so you do not accidentally commit other files than the ones you intended - cvs commit with no arguments will commit every modification in your current working directory and every subdirectory.
Additional tips and tricks: You can place commonly used options in your ~/.cvsrc, like this: cvs -z3 diff -Nu update -Pd checkout -P This example says: always use compression level 3 when talking to a remote server. This is a life-saver when working over a slow connection. always use the (show added or removed files) and (unified diff format) options to &man.diff.1;. always use the (prune empty directories) and (check out new directories) options when updating. always use the (prune empty directories) option when checking out. Use Eivind Eklund's cdiff script to view unidiffs. It is a wrapper for &man.less.1; that adds ANSI color codes to make hunk headers, outtakes and additions stand out; context and garbage are unmodified. It also expands tabs properly (tabs often look wrong in diffs because of the extra character in front of each line). http://people.FreeBSD.org/~eivind/cdiff Simply use it instead of &man.more.1; or &man.less.1;: &prompt.user; cvs diff -Nu shazam | cdiff Alternatively some editors like &man.vim.1; (ports/editors/vim5) have color support and when used as a pager with color syntax highlighting switched on will highlight many types of file, including diffs, patches, and cvs/rcs logs. &prompt.user; echo "syn on" >> ~/.vimrc &prompt.user; cvs diff -Nu shazam | vim - &prompt.user; cvs log shazam | vim - CVS is old, arcane, crufty and buggy, and sometimes exhibits non-deterministic behavior which some claim as proof that it is actually merely the Newtonian manifestation of a sentient transdimensional entity. It is not humanly possible to know its every quirk inside out, so do not be afraid to ask the resident AI (cvs@FreeBSD.org) for help when you screw up. Do not leave the cvs commit command in commit message editing mode for too long (more than 2-3 minutes). It locks the directory you are working with and will prevent other developers from committing into the same directory. If you have to type a long commit message, type it before executing cvs commit, and insert it into the commit message.
Conventions and Traditions As a new committer there are a number of things you should do first. Add yourself to the Developers section of the Contributors List and remove yourself from the Additional Contributors section. This is a relatively easy task, but remains a good first test of your CVS skills. Add an entry for yourself to www/en/news/news.xml. Look for the other entries that look like A new committer and follow the format. If you have a PGP or GnuPG key, you may want to add it to doc/en_US.ISO8859-1/books/handbook/pgpkeys. &a.des; has written a shell script to make this extremely simple. See the README file for more information. Some people add an entry for themselves to ports/astro/xearth/files/freebsd.committers.markers. Some people add an entry for themselves to src/usr.bin/calendar/calendars/calendar.freebsd. Introduce yourself to the other committers, otherwise no one will have any idea who you are or what you are working on. You do not have to write a comprehensive biography, just write a paragraph or two about who you are and what you plan to be working on as a committer in FreeBSD. Email this to developers@FreeBSD.org and you will be on your way! Log into hub.FreeBSD.org and create a /var/forward/user (where user is your username) file containing the e-mail address where you want mail addressed to yourusername@FreeBSD.org to be forwarded. This includes all of the commit messages as well as any other mail addressed to cvs-committers@FreeBSD.org and developers@FreeBSD.org. Really large mailboxes which have taken up permanent residence on hub often get accidently truncated without warning, so forward it or read it and you will not lose it. All new committers also have a mentor assigned to them for the first few months. Your mentor is more or less responsible for explaining anything which is confusing to you and is also responsible for your actions during this initial period. If you make a bogus commit, it is only going to embarrass your mentor and you should probably make it a policy to pass at least your first few commits by your mentor before committing it to the repository. All commits should go to &os.current; first before being merged to &os.stable;. No major new features or high-risk modifications should be made to the &os.stable; branch. Developer Relations If you are working directly on your own code or on code which is already well established as your responsibility, then there is probably little need to check with other committers before jumping in with a commit. If you see a bug in an area of the system which is clearly orphaned (and there are a few such areas, to our shame), the same applies. If, however, you are about to modify something which is clearly being actively maintained by someone else (and it is only by watching the cvs-committers mailing list that you can really get a feel for just what is and is not) then consider sending the change to them instead, just as you would have before becoming a committer. For ports, you should contact the listed MAINTAINER in the Makefile. For other parts of the repository, if you are unsure who the active maintainer might be, it may help to scan the output of cvs log to see who has committed changes in the past. &a.fenner; has written a nice shell script that can help determine who the active maintainer might be. It lists each person who has committed to a given file along with the number of commits each person has made. It can be found on freefall at ~fenner/bin/whodid. If your queries go unanswered or the committer otherwise indicates a lack of proprietary interest in the area affected, go ahead and commit it. If you are unsure about a commit for any reason at all, have it reviewed by -hackers before committing. Better to have it flamed then and there rather than when it is part of the CVS repository. If you do happen to commit something which results in controversy erupting, you may also wish to consider backing the change out again until the matter is settled. Remember – with CVS we can always change it back. GNATS The FreeBSD Project utilizes GNATS for tracking bugs and change requests. Be sure that if you commit a fix or suggestion found in a GNATS PR, you use edit-pr pr-number on freefall to close it. It is also considered nice if you take time to close any PRs associated with your commits, if appropriate. You can also make use of &man.send-pr.1; yourself for proposing any change which you feel should probably be made, pending a more extensive peer-review first. You can find out more about GNATS at: http://www.cs.utah.edu/csinfo/texinfo/gnats/gnats.html http://www.FreeBSD.org/support.html http://www.FreeBSD.org/send-pr.html &man.send-pr.1; You can run a local copy of GNATS, and then integrate the FreeBSD GNATS tree in to it using CVSup. Then you can run GNATS commands locally, or use other interfaces, such as tkgnats. This lets you query the PR database without needing to be connected to the Internet. Using a local GNATS tree If you are not already downloading the GNATS tree, add this line to your supfile, and re-sup. Note that since GNATS is not under CVS control it has no tag, so if you are adding it to your existing supfile it should appear before any tag= entry as these remain active once set. gnats release=current prefix=/usr This will place the FreeBSD GNATS tree in /usr/gnats. You can use a refuse file to control which categories to receive. For example, to only receive docs PRs, put this line in /usr/local/etc/cvsup/sup/refuse The precise path depends on the *default base setting in your supfile. . gnats/[a-ce-z]* The rest of these examples assume you have only supped the docs category. Adjust them as necessary, depending on the categories you are synching. Install the GNATS port from ports/databases/gnats. This will place the various GNATS directories under $PREFIX/share/gnats. Symlink the GNATS directories you are supping under the version of GNATS you have installed. &prompt.root; cd /usr/local/share/gnats/gnats-db &prompt.root; ln -s /usr/gnats/docs Repeat as necessary, depending on how many GNATS categories you are synching. Update the GNATS categories file with these categories. The file is $PREFIX/share/gnats/gnats-db/gnats-adm/categories. # This category is mandatory pending:Category for faulty PRs:gnats-admin: # # FreeBSD categories # docs:Documentation Bug:nik: Run $PREFIX/libexec/gnats/gen-index to recreate the GNATS index. The output has to be redirected to $PREFIX/share/gnats/gnats-db/gnats-adm/index. You can do this periodically from &man.cron.8;, or run &man.cvsup.1; from a shell script that does this as well. &prompt.root; /usr/local/libexec/gnats/gen-index \ > /usr/local/share/gnats/gnats-db/gnats-adm/index Test the configuration by querying the PR database. This command shows open docs PRs. &prompt.root; query-pr -c docs -s open Other interfaces, like ports/databases/tkgnats should also work nicely. Pick a PR and close it. This procedure only works to allow you to view and query the PRs locally. To edit or close them you will still have to log in to freefall and do it from there. Who's Who Besides Peter Wemm and John Polstra, the repository meisters, there are other FreeBSD project members whom you will probably get to know in your role as a committer. Briefly, and by no means all-inclusively, these are: &a.nik; Nik oversees the Doc. Project. As well as writing documentation he put together the infrastructure under doc/share/mk and the stylesheets and related code under doc/share/sgml. If you have got questions about these you are encouraged to send them via the doc@FreeBSD.org mailing list. Committers interested in contributing to the documentation should familiarise themselves with the Documentation Project Primer. &a.ru; Ruslan is Mister &man.mdoc.7;. If you are writing a man page and need some advice on the structure, or the markup, ask Ruslan. &a.bde; Bruce is the Style Police-Meister. When you do a commit that could have been done better, Bruce will be there to tell you. Be thankful that someone is. Bruce is also very knowledgeable on the various standards applicable to FreeBSD. &a.gallatin; &a.mjacob; &a.dfr; &a.obrien; These are the primary developers and overseers of the DEC Alpha AXP platform. &a.dg; David is the overseer of the VM system. If you have a VM system change in mind, coordinate it with David. &a.murray; &a.steve; &a.rwatson; &a.jhb; These are the members of the &a.re;. This team is responsible for setting release deadlines and controlling the release process. During code freezes, the release engineers have final authority on all changes to the system for whichever branch is pending release status. If there is something you want merged from &os.current; to &os.stable; (whatever values those may have at any given time), these are the people to talk to about it. &a.bmah; Bruce is keeper of the release notes (src/release/texts/* or src/release/doc/*, as appropriate). If you commit a change that you think is worthy of mention in the release notes, please make sure Bruce knows about it. Better still, send him a patch with your suggested commentary for the release notes. &a.obrien; David is the unofficial src/contrib-Meister. If you have something significant you would like to do there, you should probably coordinate it with David first. Please consult him before importing into src/contrib if you have never done this before in the FreeBSD CVS repository. Also if you need to commit to something you do not maintain in src/contrib and it is unclear who the maintainer / point of contact is. (It is also not a bad idea to consult David if you need to make a non-import commit to something you maintain in src/contrib and you are new to how FreeBSD does things.) &a.brian; Official maintainer of /usr/sbin/ppp. &a.wollman; If you need advice on obscure network internals or are not sure of some potential change to the networking subsystem you have in mind, Garrett is someone to talk to. Garrett is also very knowledgeable on the various standards applicable to FreeBSD. &a.committers; cvs-committers is the entity that CVS uses to send you all your commit messages. You should never send email directly to this list. You should only send replies to this list when they are short and are directly related to a commit. &a.developers; developers is all committers. This list was created to be a forum for the committers community issues. Examples are Core voting, announcements, etc... developers@FreeBSD.org is not intended as a place for code reviews or a replacement for arch@FreeBSD.org or audit@FreeBSD.org. In fact using it as such hurts the FreeBSD Project as it gives a sense of a closed list where general decisions affecting all of the FreeBSD using community are made with out being open. SSH Quick-Start Guide If you are using FreeBSD 4.0 or later, OpenSSH is included in the base system. If you are using an earlier release, update and install one of the SSH ports. In general, you will probably want to get OpenSSH from the port in /usr/ports/security/openssh. You may also wish to check out the original ssh1 in /usr/ports/security/ssh, but make certain you pay attention to its license. Note that both of these ports cannot be installed at the same time. If you do not wish to type your password in every time you use &man.ssh.1;, and you use RSA keys to authenticate, &man.ssh-agent.1; is there for your convenience. If you want to use &man.ssh-agent.1;, make sure that you run it before running other applications. X users, for example, usually do this from their .xsession or .xinitrc file. See &man.ssh-agent.1; for details. Generate a key pair using &man.ssh-keygen.1;. The key pair will wind up in the $HOME/.ssh directory. Send your public key ($HOME/.ssh/identity.pub) to the person setting you up as a committer so it can be put into your authorized_keys file in your home directory on freefall (i.e. $HOME/.ssh/authorized_keys). Now you should be able to use &man.ssh-add.1; for authentication once per session. This will prompt you for your private key's pass phrase, and then store it in your authentication agent (&man.ssh-agent.1;). If you no longer wish to have your key stored in the agent, issuing ssh-add -d will remove it. Test by doing something such as ssh freefall.FreeBSD.org ls /usr. For more information, see /usr/ports/security/openssh, &man.ssh.1;, &man.ssh-add.1;, &man.ssh-agent.1;, &man.ssh-keygen.1;, and &man.scp.1;. The FreeBSD Committers' Big List of Rules Respect other committers. Respect other contributors. Discuss any significant change before committing. Respect existing maintainers (if listed in the MAINTAINER field in Makefile or in the MAINTAINER file in the top-level directory). Never touch the repository directly. Ask a Repomeister. Any disputed change must be backed out pending resolution of the dispute if requested by a maintainer. Security related changes may override a maintainer's wishes at the Security Officer's discretion. Changes go to &os.current; before &os.stable; unless specifically permitted by the release engineer or unless they are not applicable to &os.current;. Any non-trivial or non-urgent change which is applicable should also be allowed to sit in &os.current; for at least 3 days before merging so that it can be given sufficient testing. The release engineer has the same authority over the &os.stable; branch as outlined for the maintainer in rule #6. Do not fight in public with other committers; it looks bad. If you must strongly disagree about something, do so only in private. Respect all code freezes and read the committers mailing list in a timely manner so you know when a code freeze is in effect. When in doubt on any procedure, ask first! Test your changes before committing them. Do not commit to anything under the src/contrib, src/crypto, and src/sys/contrib trees without explicit approval from the respective maintainer(s). As noted, breaking some of these rules can be grounds for suspension or, upon repeated offense, permanent removal of commit privileges. Three or more members of core acting in unison, have the power to temporarily suspend commit privileges until -core as a whole has the chance to review the issue. In case of an emergency (a committer doing damage to the repository), a temporary suspension may also be done by the repository meisters or any other member of core who may happen to be awake at the time. Only core as a whole has the authority to suspend commit privileges for any significant length of time or to remove them permanently, the latter generally only being done after consultation with committers. This rule does not exist to set core up as a bunch of cruel dictators who can dispose of committers as casually as empty soda cans, but to give the project a kind of safety fuse. If someone is seriously out of control, it is important to be able to deal with this immediately rather than be paralyzed by debate. In all cases, a committer whose privileges are suspended or revoked is entitled to a hearing, the total duration of the suspension being determined at that time. A committer whose privileges are suspended may also request a review of the decision after 30 days and every 30 days thereafter (unless the total suspension period is less than 30 days). A committer whose privileges have been revoked entirely may request a review after a period of 6 months have elapsed. This review policy is strictly informal and, in all cases, core reserves the right to either act on or disregard requests for review if they feel their original decision to be the right one. In all other aspects of project operation, core is a subset of committers and is bound by the same rules. Just because someone is in core does not mean that they have special dispensation to step outside of any of the lines painted here; core's special powers only kick in when it acts as a group, not on an individual basis. As individuals, we are all committers first and core second. Details Respect other committers. This means that you need to treat other committers as the peer-group developers that they are. Despite our occasional attempts to prove the contrary, one does not get into committers by being stupid and nothing rankles more than being treated that way by one of your peers. Whether we always feel respect for one another or not (and everyone has off days), we still have to treat other committers with respect at all times or the whole team structure rapidly breaks down. Being able to work together long term is this project's greatest asset, one far more important than any set of changes to the code, and turning arguments about code into issues that affect our long-term ability to work harmoniously together is just not worth the trade-off by any conceivable stretch of the imagination. To comply with this rule, do not send email when you are angry or otherwise behave in a manner which is likely to strike others as needlessly confrontational. First calm down, then think about how to communicate in the most effective fashion for convincing the other person(s) that your side of the argument is correct, do not just blow off some steam so you can feel better in the short term at the cost of a long-term flame war. Not only is this very bad energy economics, but repeated displays of public aggression which impair our ability to work well together will be dealt with severely by the project leadership and may result in suspension or termination of your commit privileges. That is never an option which the project's leadership enjoys in the slightest, but unity comes first. No amount of code or good advice is worth trading that away. Respect other contributors. You were not always a committer. At one time you were a contributor. Remember that at all times. Remember what it was like trying to get help and attention. Do not forget that your work as a contributor time was very important to you. Remember what it was like. Do not discourage, belittle, or demean contributors. Treat them with respect. They are our committers in waiting. They are every bit as important to the project as committers. Their contributions are as valid and as important as your own. After all, you made many contributions before you became a committer. Always remember that. Consider the points raised under and apply them also to contributors. Discuss any significant change before committing. The CVS repository is not where changes should be initially submitted for correctness or argued over, that should happen first in the mailing lists and then committed only once something resembling consensus has been reached. This does not mean that you have to ask permission before correcting every obvious syntax error or man page misspelling, simply that you should try to develop a feel for when a proposed change is not quite such a no-brainer and requires some feedback first. People really do not mind sweeping changes if the result is something clearly better than what they had before, they just do not like being surprised by those changes. The very best way of making sure that you are on the right track is to have your code reviewed by one or more other committers. When in doubt, ask for review! Respect existing maintainers if listed. Many parts of FreeBSD are not owned in the sense that any specific individual will jump up and yell if you commit a change to their area, but it still pays to check first. One convention we use is to put a maintainer line in the Makefile for any package or subtree which is being actively maintained by one or more people; see http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/policies.html for documentation on this. Where sections of code have several maintainers, commits to affected areas by one maintainer need to be reviewed by at least one other maintainer. In cases where the maintainer-ship of something is not clear, you can also look at the CVS logs for the file(s) in question and see if someone has been working recently or predominantly in that area. Other areas of FreeBSD fall under the control of someone who manages an overall category of FreeBSD evolution, such as internationalization or networking. See http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/contributors/staff-who.html for more information on this. Never touch the repository directly. Ask a Repomeister. This is pretty clear - you are not allowed to make direct modifications to the CVS repository, period. In case of difficulty, ask one of the repository meisters by sending mail to cvs@FreeBSD.org and simply wait for them to fix the problem and get back to you. Do not attempt to fix the problem yourself! If you are thinking about putting down a tag or doing a new import of code on a vendor branch, you might also find it useful to ask for advice first. A lot of people get this wrong the first few times and the consequences are expensive in terms of files touched and angry CVSup/CTM folks who are suddenly getting a lot of changes sent over unnecessarily. Any disputed change must be backed out pending resolution of the dispute if requested by a maintainer. Security related changes may override a maintainer's wishes at the Security Officer's discretion. This may be hard to swallow in times of conflict (when each side is convinced that they are in the right, of course) but CVS makes it unnecessary to have an ongoing dispute raging when it is far easier to simply reverse the disputed change, get everyone calmed down again and then try and figure out how best to proceed. If the change turns out to be the best thing after all, it can be easily brought back. If it turns out not to be, then the users did not have to live with the bogus change in the tree while everyone was busily debating its merits. People very very rarely call for back-outs in the repository since discussion generally exposes bad or controversial changes before the commit even happens, but on such rare occasions the back-out should be done without argument so that we can get immediately on to the topic of figuring out whether it was bogus or not. Changes go to &os.current; before &os.stable; unless specifically permitted by the release engineer or unless they are not applicable to &os.current;. Any non-trivial or non-urgent change which is applicable should also be allowed to sit in &os.current; for at least 3 days before merging so that it can be given sufficient testing. The release engineer has the same authority over the &os.stable; branch as outlined in rule #6. This is another do not argue about it issue since it is the release engineer who is ultimately responsible (and gets beaten up) if a change turns out to be bad. Please respect this and give the release engineer your full cooperation when it comes to the &os.stable; branch. The management of &os.stable; may frequently seem to be overly conservative to the casual observer, but also bear in mind the fact that conservatism is supposed to be the hallmark of &os.stable; and different rules apply there than in &os.current;. There is also really no point in having &os.current; be a testing ground if changes are merged over to &os.stable; immediately. Changes need a chance to be tested by the &os.current; developers, so allow some time to elapse before merging unless the &os.stable; fix is critical, time sensitive or so obvious as to make further testing unnecessary (spelling fixes to man pages, obvious bug/typo fixes, etc.) In other words, apply common sense. Do not fight in public with other committers; it looks bad. If you must strongly disagree about something, do so only in private. This project has a public image to uphold and that image is very important to all of us, especially if we are to continue to attract new members. There will be occasions when, despite everyone's very best attempts at self-control, tempers are lost and angry words are exchanged, and the best we can do is try and minimize the effects of this until everyone has cooled back down. That means that you should not air your angry words in public and you should not forward private correspondence to public mailing lists or aliases. What people say one-to-one is often much less sugar-coated than what they would say in public, and such communications therefore have no place there - they only serve to inflame an already bad situation. If the person sending you a flame-o-gram at least had the grace to send it privately, then have the grace to keep it private yourself. If you feel you are being unfairly treated by another developer, and it is causing you anguish, bring the matter up with core rather than taking it public. We will do our best to play peace makers and get things back to sanity. In cases where the dispute involves a change to the codebase and the participants do not appear to be reaching an amicable agreement, core may appoint a mutually-agreeable 3rd party to resolve the dispute. All parties involved must then agree to be bound by the decision reached by this 3rd party. Respect all code freezes and read the committers mailing list on a timely basis so you know when they are. Committing changes during a code freeze is a really big mistake and committers are expected to keep up-to-date on what is going on before jumping in after a long absence and committing 10 megabytes worth of accumulated stuff. People who abuse this on a regular basis will have their commit privileges suspended until they get back from the FreeBSD Happy Reeducation Camp we run in Greenland. When in doubt on any procedure, ask first! Many mistakes are made because someone is in a hurry and just assumes they know the right way of doing something. If you have not done it before, chances are good that you do not actually know the way we do things and really need to ask first or you are going to completely embarrass yourself in public. There is no shame in asking how in the heck do I do this? We already know you are an intelligent person; otherwise, you would not be a committer. Test your changes before committing them. This may sound obvious, but if it really were so obvious then we probably would not see so many cases of people clearly not doing this. If your changes are to the kernel, make sure you can still compile both GENERIC and LINT. If your changes are anywhere else, make sure you can still make world. If your changes are to a branch, make sure your testing occurs with a machine which is running that code. If you have a change which also may break another architecture, be sure and test on all supported architectures. Currently, this is only the x86 and the Alpha so it is pretty easy to do. If you need to test on the AXP, your account on beast.FreeBSD.org will let you compile and test Alpha binaries/kernels/etc. As other architectures are added to the FreeBSD supported platforms list, the appropriate shared testing resources will be made available. Do not commit to anything under the src/contrib, src/crypto, and src/sys/contrib trees without explicit approval from the respective maintainer(s). The trees mentioned above are for contributed software usually imported onto a vendor branch. Committing something there, even if it does not take the file off the vendor branch, may cause unnecessary headaches for those responsible for maintaining that particular piece of software. Thus, unless you have explicit approval from the maintainer (or you are the maintainer), do not commit there! Please note that this does not mean you should not try to improve the software in question; you are still more than welcome to do so. Ideally, you should submit your patches to the vendor. If your changes are FreeBSD-specific, talk to the maintainer; they may be willing to apply them locally. But whatever you do, do not commit there by yourself! Contact the &a.core; if you wish to take up maintainership of an unmaintained part of the tree. Other Suggestions When committing documentation changes, use a spell checker before committing. :) For all SGML docs, you should also verify that your formatting directives are correct by running make lint. For all on-line manual pages, run manck (from ports) over the man page to verify all of the cross references and file references are correct and that the man page has all of the appropriate MLINKs installed. Do not mix style fixes with new functionality. A style fix is any change which does not modify the functionality of the code. Mixing the changes obfuscates the functionality change when using cvs diff, which can hide any new bugs. Do not include whitespace changes with content changes in commits to doc/ or www/. The extra clutter in the diffs makes the translators' job much more difficult. Instead, make any style or whitespace changes in separate commits that are clearly labeled as such in the commit message. Deprecating Features When it is necessary to remove functionality from software in the base system the following guidelines should be followed whenever possible: Mention is made in the manual page and possibly the release notes that the option, utility, or interface is deprecated. Use of the deprecated feature generates a warning. The option, utility, or interface is preserved until the next major (point zero) release. The option, utility, or interface is removed and no longer documented. It is now obsolete. It is also generally a good idea to note its removal in the release notes. Ports Specific FAQ Adding a New Port How do I add a new port? First, please read the section about repository copy. The easiest way to add a new port is to use the addport script on freefall. It will add a port from the directory you specify, determining the category automatically from the port Makefile. It will also add an entry to the CVSROOT/modules file and the port's category Makefile. It was written by &a.mharo; and &a.will;, but Will is the current maintainer so please send questions/patches about addport to him. Any other things I need to know when I add a new port? Check the port, preferably to make sure it compiles and packages correctly. This is the recommended sequence: &prompt.root; make install &prompt.root; make package &prompt.root; make deinstall &prompt.root; pkg_add package you built above &prompt.root; make deinstall &prompt.root; make reinstall &prompt.root; make package The Porters Handbook contains more detailed instructions. Use &man.portlint.1; to check the syntax of the port. You do not necessarily have to eliminate all warnings but make sure you have fixed the simple ones. If the port came from a submitter who has not contributed to the project before, add that person's name to the Additional Contributors section of the FreeBSD Contributors List. Close the PR if the port came in as a PR. To close a PR, just do edit-pr PR# on freefall and change the state from open to closed. You will be asked to enter a log message and then you are done. Repository Copies When do we need a repository copy? When you want to add a port that is related to any port that is already in the tree in a separate directory, please send mail to the ports manager asking about it. Here related means it is a different version or a slightly modified version. Examples are print/ghostscript* (different versions) and x11-wm/windowmaker* (English-only and internationalized version). Another example is when a port is moved from one subdirectory to another, or when you want to change the name of a directory because the author(s) renamed their software even though it is a descendant of a port already in a tree. When do we not need a repository copy? When there is no history to preserve. If a port is added into a wrong category and is moved immediately, it suffices to simply cvs remove the old one and addport the new one. What do I need to do? Send mail to the ports manager, who will do a copy from the old location/name to the new location/name. You will then get a notice, at which point you are expected to perform the following: cvs remove the old port (if necessary) Adjust the parent (category) Makefile Update CVSROOT/modules If other ports depend on the updated port, change their Makefiles' dependency lines If the port changed categories, modify the CATEGORIES line of the port's Makefile accordingly Ports Freeze What is a ports freeze? Before a release, it is necessary to restrict commits to the ports tree for a short period of time while the packages and the release itself are being built. This is to ensure consistency among the various parts of the release, and is called the ports freeze. How long is a ports freeze? Usually an hour or two. What does it mean to me? During the ports freeze, you are not allowed to commit anything to the tree without explicit approval from the ports manager. Explicit approval here means either of the following: You asked the ports manager and got a reply saying, Go ahead and commit it. The ports manager sent a mail to you or the mailing lists during the ports freeze pointing out that the port is broken and has to be fixed. Note that you do not have implicit permission to fix a port during the freeze just because it is broken. How do I know when the ports freeze starts? The ports manager will send out warning messages to the freebsd-ports@FreeBSD.org and cvs-committers@FreeBSD.org mailing lists announcing the start of the impending release, usually two or three weeks in advance. The exact starting time will not be determined until a few days before the actual release. This is because the ports freeze has to be synchronized with the release, and it is usually not known until then when exactly the release will be rolled. When the freeze starts, there will be another announcement to the cvs-committers@FreeBSD.org list, of course. How do I know when the ports freeze ends? A few hours after the release, the ports manager will send out a mail to the freebsd-ports@FreeBSD.org and cvs-committers@FreeBSD.org mailing lists announcing the end of the ports freeze. Note that the release being cut does not automatically end the freeze. We have to make sure there will not be any last minute snafus that result in an immediate re-rolling of the release. Miscellaneous Questions How do I know if my port is building correctly or not? First, go check http://bento.FreeBSD.org/~asami/errorlogs/. There you will find error logs from the latest package building runs on 3-stable, 4-stable and 5-current. However, just because the port does not show up there does not mean it is building correctly. (One of the dependencies may have failed, for instance.) Here are the relevant directories on bento, so feel free to dig around. /a/asami/portbuild/3/errors error logs from latest 3-stable run /logs all logs from latest 3-stable run /packages packages from latest 3-stable run /bak/errors error logs from last complete 3-stable run /bak/logs all logs from last complete 3-stable run /bak/packages packages from last complete 3-stable run /4/errors error logs from latest 4-stable run /logs all logs from latest 4-stable run /packages packages from latest 4-stable run /bak/errors error logs from last complete 4-stable run /bak/logs all logs from last complete 4-stable run /bak/packages packages from last complete 4-stable run /5/errors error logs from latest 5-current run /logs all logs from latest 5-current run /packages packages from latest 5-current run /bak/errors error logs from last complete 5-current run /bak/logs all logs from last complete 5-current run /bak/packages packages from last complete 5-current run Basically, if the port shows up in packages, or it is in logs but not in errors, it built fine. (The errors directories are what you get from the web page.) I added a new port. Do I need to add it to the INDEX? No. The ports manager will regenerate the INDEX and commit it every few days. Are there any other files I am not allowed to touch? Any file directly under ports/, or any file under a subdirectory that starts with an uppercase letter (Mk/, Tools/, etc.). In particular, the ports manager is very protective of ports/Mk/bsd.port*.mk so do not commit changes to those files unless you want to face his wra(i)th. Miscellaneous Questions Why are trivial or cosmetic changes to files on a vendor branch a bad idea? From now on, every new vendor release of that file will need to have patches merged in by hand. From now on, every new vendor release of that file will need to have patches verified by hand. The option does not work very well. Ask &a.obrien; for horror stories. How do I add a new file to a CVS branch? To add a file onto a branch, simply checkout or update to the branch you want to add to and then add the file using cvs add as you normally would. For example, if you wanted to MFC the file src/sys/alpha/include/smp.h from HEAD to RELENG_4 and it does not exist in RELENG_4 yet, you would use the following steps: MFC'ing a New File &prompt.user; cd sys/alpha/include &prompt.user; cvs update -rRELENG_4 cvs update: Updating . U clockvar.h U console.h ... &prompt.user; cvs update -kk -Ap smp.h > smp.h =================================================================== Checking out smp.h RCS: /usr/cvs/src/sys/alpha/include/smp.h,v VERS: 1.1 *************** &prompt.user; cvs add smp.h cvs add: scheduling file `smp.h' for addition on branch `RELENG_4' cvs add: use 'cvs commit' to add this file permanently &prompt.user; cvs commit What meta information should I include in a commit message? As well as including an informative message with each commit you may need to include some additional information as well. This information consists of one or more lines containing the the key word or phrase, a colon, tabs for formatting, and then the additional information. The key words or phrases are: PR: The problem report (if any) which is affected (typically, by being closed) by this commit. Submitted by: The name and e-mail address of the person that submitted the fix. Reviewed by: The name and e-mail address of the person or people that reviewed the change. If a patch was submitted to a mailing list for review, and the review was favourable, then just include the list name. Approved by: The name and e-mail address of the person or people that approved the change. It is customary to get prior approval for a commit if it is to an area of the tree to which you do not usually commit. In addition, during the run up to a new release all commits must be approved by the release engineer. If these are your first commits then you should have passed them past your mentor first for approval, and you should list your mentor. Obtained from: The name of the project (if any) from which the code was obtained. MFC after: If you wish to receive an e-mail reminder to MFC at a later date, specify the number of days, weeks, or months after which an MFC is planned. Commit log for a commit based on a PR You want to commit a change based on a PR submitted by John Smith containing a patch. The end of the commit message should look something like this. ... PR: foo/12345 Submitted by: John Smith <John.Smith@example.com> Commit log for a commit needing review You want to change the virtual memory system. You have posted patches to the appropriate mailing list (in this case, freebsd-arch) and the changes have been approved. ... Reviewed by: -arch Commit log for a commit needing approval You want to commit a change to a section of the tree with a MAINTAINER assigned. You have collaborated with the listed MAINTAINER, who has told you to go ahead and commit. ... Approved by: abc Where abc is the account name of the person who approved. Commit log for a commit bringing in code from OpenBSD You want to commit some code based on work done in the OpenBSD project. ... Obtained from: OpenBSD Commit log for a change to &os.current; with a planned commit to &os.stable; to follow at a later date. You want to commit some code which will be merged from &os.current; into the &os.stable; branch after two weeks. ... MFC after: 2 weeks Where 2 is the number of days, weeks, or months after which an MFC is planned. The weeks option may be day, days, week, weeks, month, months, or may be left off (in which case, days will be assumed). In some cases you may need to combine some of these. Consider the situation where a user has submitted a PR containing code from the NetBSD project. You are looking at the PR, but it is not an area of the tree you normally work in, so you have decided to get the change reviewed by the arch mailing list. Since the change is complex, you opt to MFC after one month to allow adequate testing. The extra information to include in the commit would look something like PR: foo/54321 Submitted by: John Smith <John.Smith@example.com> Reviewed by: -arch Obtained from: NetBSD MFC after: 1 month
diff --git a/en_US.ISO8859-1/articles/contributors/article.sgml b/en_US.ISO8859-1/articles/contributors/article.sgml index a3f8efc542..36ead6da59 100644 --- a/en_US.ISO8859-1/articles/contributors/article.sgml +++ b/en_US.ISO8859-1/articles/contributors/article.sgml @@ -1,7261 +1,7263 @@ %man; %authors; + +%teams; ]>
Contributors to FreeBSD $FreeBSD$ This article lists individuals and organizations who have made a contribution to FreeBSD. Donors Gallery The FreeBSD Project is indebted to the following donors and would like to publicly thank them here! Contributors to the central server project: The following individuals and businesses made it possible for the FreeBSD Project to build a new central server machine to eventually replace freefall.FreeBSD.org by donating the following items: &a.mbarkah and his employer, Hemisphere Online, donated a Pentium Pro (P6) 200MHz CPU ASA Computers donated a Tyan 1662 motherboard. Joe McGuckin joe@via.net of ViaNet Communications donated a Kingston ethernet controller. Jack O'Neill jack@diamond.xtalwind.net donated an NCR 53C875 SCSI controller card. Ulf Zimmermann ulf@Alameda.net of Alameda Networks donated 128MB of memory, a 4 Gb disk drive and the case. Direct funding: The following individuals and businesses have generously contributed direct funding to the project: Annelise Anderson ANDRSN@HOOVER.STANFORD.EDU &a.dillon; Blue Mountain Arts Epilogue Technology Corporation &a.sef; Global Technology Associates, Inc Don Scott Wilde Gianmarco Giovannelli gmarco@masternet.it Josef C. Grosch joeg@truenorth.org Robert T. Morris &a.chuckr; Kenneth P. Stox ken@stox.sa.enteract.com of Imaginary Landscape, LLC. Dmitry S. Kohmanyuk dk@dog.farm.org Laser5 of Japan (a portion of the profits from sales of their various FreeBSD CDROMs). Fuki Shuppan Publishing Co. donated a portion of their profits from Hajimete no FreeBSD (FreeBSD, Getting started) to the FreeBSD and XFree86 projects. ASCII Corp. donated a portion of their profits from several FreeBSD-related books to the FreeBSD project. Yokogawa Electric Corp has generously donated significant funding to the FreeBSD project. BuffNET Pacific Solutions Siemens AG via Andre Albsmeier andre.albsmeier@mchp.siemens.de Chris Silva ras@interaccess.com Hardware contributors: The following individuals and businesses have generously contributed hardware for testing and device driver development/support: BSDi for providing the Pentium P5-90 and 486/DX2-66 EISA/VL systems that are being used for our development work, to say nothing of the network access and other donations of hardware resources. TRW Financial Systems, Inc. provided 130 PCs, three 68 GB file servers, twelve Ethernets, two routers and an ATM switch for debugging the diskless code. Dermot McDonnell donated the Toshiba XM3401B CDROM drive currently used in freefall. &a.chuck; contributed his floppy tape streamer for experimental work. Larry Altneu larry@ALR.COM, and &a.wilko;, provided Wangtek and Archive QIC-02 tape drives in order to improve the wt driver. Ernst Winter ewinter@lobo.muc.de contributed a 2.88 MB floppy drive to the project. This will hopefully increase the pressure for rewriting the floppy disk driver. Tekram Technologies sent one each of their DC-390, DC-390U and DC-390F FAST and ULTRA SCSI host adapter cards for regression testing of the NCR and AMD drivers with their cards. They are also to be applauded for making driver sources for free operating systems available from their FTP server ftp://ftp.tekram.com/scsi/FreeBSD/. Larry M. Augustin contributed not only a Symbios Sym8751S SCSI card, but also a set of data books, including one about the forthcoming Sym53c895 chip with Ultra-2 and LVD support, and the latest programming manual with information on how to safely use the advanced features of the latest Symbios SCSI chips. Thanks a lot! Christoph Kukulies kuku@FreeBSD.org donated an FX120 12 speed Mitsumi CDROM drive for IDE CDROM driver development. Special contributors: BSDi (formerly Walnut Creek CDROM) has donated almost more than we can say (see the History section of the FreeBSD Handbook for more details). In particular, we would like to thank them for the original hardware used for freefall.FreeBSD.org, our primary development machine, and for thud.FreeBSD.org, a testing and build box. We are also indebted to them for funding various contributors over the years and providing us with unrestricted use of their T1 connection to the Internet. The interface business GmbH, Dresden has been patiently supporting &a.joerg; who has often preferred FreeBSD work over paid work, and used to fall back to their (quite expensive) EUnet Internet connection whenever his private connection became too slow or flaky to work with it... Berkeley Software Design, Inc. has contributed their DOS emulator code to the remaining BSD world, which is used in the doscmd command. The FreeBSD Core Team The FreeBSD core team constitutes the project's Board of Directors, responsible for deciding the project's overall goals and direction as well as managing specific areas of the FreeBSD project landscape. (in alphabetical order by last name): &a.dg; &a.jkh; &a.grog; &a.imp; &a.dfr; &a.msmith; &a.rwatson; &a.peter; The FreeBSD Developers These are the people who have commit privileges and do the engineering work on the FreeBSD source tree. All core team members are also developers. (in alphabetical order by last name): &a.akiyama; &a.jmas; &a.ambrisko; &a.will; &a.ugen; &a.toshi; &a.babkin; &a.dbaker; &a.jhb; &a.dmlb; &a.mike; &a.mbarkah; &a.rvb; &a.dougb; &a.tobez; &a.stb; &a.pb; &a.abial; &a.jb; &a.nbm; &a.mbr; &a.torstenb; &a.mb; &a.jmb; &a.wilko; &a.jake; &a.dburr; &a.adrian; &a.dwcjr; &a.charnier; &a.jon; &a.luoqi; &a.ache; &a.ejc; &a.kjc; &a.cjh; &a.cjc; &a.nik; &a.archie; &a.chris; &a.alc; &a.cracauer; &a.dec; &a.pds; &a.adam; &a.davidc; &a.brooks; &a.bsd; &a.jwd; &a.pdeuskar; &a.dillon; &a.mdodd; &a.dd; &a.iedowse; &a.robert; &a.gad; &a.dufault; &a.uhclem; &a.tegge; &a.deischen; &a.eivind; &a.julian; &a.rse; &a.ue; &a.ru; &a.se; &a.bde; &a.jasone; &a.sef; &a.jedgar; &a.green; &a.fenner; &a.lioux; &a.jfieber; &a.jfitz; &a.petef; &a.scrappy; &a.lars; &a.dirk; &a.sf; &a.shige; &a.billf; &a.furuta; &a.gallatin; &a.patrick; &a.tg; &a.gibbs; &a.brandon; &a.gioria; &a.graichen; &a.cg; &a.rgrimes; &a.jmg; &a.znerd; &a.hanai; &a.roger; &a.mharo; &a.dannyboy; &a.thepish; &a.jhay; &a.sheldonh; &a.mikeh; &a.helbig; &a.ghelmer; &a.erich; &a.chm; &a.nhibma; &a.flathill; &a.orion; &a.pho; &a.horikawa; &a.hosokawa; &a.jeh; &a.hsu; &a.foxfair; &a.tom; &a.mph; &a.imura; &a.shin; &a.itojun; &a.iwasaki; &a.mjacob; &a.keith; &a.gj; &a.trevor; &a.phk; &a.tomsoft; &a.joe; &a.cokane; &a.kato; &a.kris; &a.keramida; &a.fjoe; &a.kiri; &a.andreas; &a.lkoeller; &a.motoyuki; &a.jkoshy; &a.kuriyama; &a.alex; &a.chern; &a.reg; &a.jlemon; &a.truckman; &a.pat; &a.ijliao; &a.lile; &a.clive; &a.kevlo; &a.scottl; &a.ade; &a.mwlucas; &a.jmacd; &a.smace; &a.bmah; &a.dwmalone; &a.nobutaka; &a.matusita; &a.mckay; &a.mckusick; &a.eric; &a.ken; &a.dinoex; &a.hm; &a.sanpei; &a.bmilekic; &a.mita; &a.non; &a.jim; &a.marcel; &a.amorita; &a.dan; &a.tmm; &a.amurai; &a.markm; &a.rich; &a.knu; &a.nakai; &a.max; &a.yoichi; &a.newton; &a.anders; &a.rnordier; &a.davidn; &a.obrien; &a.danny; &a.okazaki; &a.olgeni; &a.ljo; &a.onoe; &a.marko; &a.gpalmer; &a.fsmp; &a.smpatel; &a.cp; &a.wpaul; &a.mp; &a.alfred; &a.roam; &a.wes; &a.cpiazza; &a.pirzyk; &a.jdp; &a.bp; &a.rpratt; &a.steve; &a.mpp; &a.markp; &a.darrenr; &a.csgr; &a.greid; &a.mr; &a.arr; &a.martin; &a.benno; &a.luigi; &a.paul; &a.roberto; &a.chuckr; &a.jesusr; &a.guido; &a.groudier; &a.dima; &a.asmodai; &a.ps; &a.sada; &a.hrs; &a.wsanchez; &a.nsayer; &a.sos; &a.wosch; &a.cy; &a.schweikh; &a.dick; &a.jseger; &a.gshapiro; &a.shiba; &a.tshiozak; &a.simokawa; &a.vanilla; &a.silby; &a.shafeeq; &a.demon; &a.jesper; &a.skv; &a.msmith; &a.ben; &a.nsouch; &a.issei; &a.des; &a.sobomax; &a.dcs; &a.brian; &a.mks; &a.stark; &a.murray; &a.sumikawa; &a.gsutter; &a.unfurl; &a.nyan; &a.tanimura; &a.taoka; &a.mtaylor; &a.dt; &a.mi; &a.yar; &a.cwt; &a.pst; &a.uch; &a.ume; &a.semenu; &a.rv; &a.hoek; &a.logo; &a.nectar; &a.jayanth; &a.wjv; &a.bean; &a.swallace; &a.takawata; &a.naddy; &a.assar; &a.dwhite; &a.nate; &a.wollman; &a.keichii; &a.joerg; &a.kbyanc; &a.yokota; &a.andy; &a.zarzycki; &a.phantom; &a.jmz; The FreeBSD Documentation Project The FreeBSD Documentation Project is responsible for a number of different services, each service being run by an individual and his deputies (if any): Documentation Project Architect &a.nik; Handbook Editor &a.jim; FAQ Editor &a.faq; News Editor &a.jim; In the Press Editor &a.jkoshy; FreeBSD Really-Quick NewsLetter Editor Chris Coleman chrisc@vmunix.com Gallery Editor &a.phantom; Commercial Editor nobody yet ]]> Web Changes Editor &a.www; ]]> User Groups Editor &a.grog; FreeBSD Projects and Tasklist Editor &a.asmodai; FreeBSD Java Project &a.patrick; LinuxDoc to DocBook conversion &a.nik; Who is Responsible for What Documentation Project Manager &a.nik; CVSup Mirror Site Coordinator &a.jdp; Internationalization &a.ache; Postmaster &a.jmb; Release Coordination &a.re; headed by &a.murray; Public Relations & Corporate Liaison &a.jkh; Security Officers &a.security-officer; headed by &a.nectar; Source Repository Managers Principal: &a.peter; Assistants: &a.markm;, &a.joe Ports Manager &a.portmgr; Standards &a.wollman; XFree86 Project, Inc. Liaison &a.rich; GNATS Administrator &a.steve; Bugmeister &a.des; Core Team Alumni core team The following people were members of the FreeBSD core team during the periods indicated. We thank them for their past efforts in the service of the FreeBSD project. In rough chronological order: &a.asami (1993 - 2001) &a.ache (1993 - 2000) &a.jmb (1993 - 2000) &a.bde (1992 - 2000) &a.gibbs (1993 - 2000) &a.rich (1994 - 2000) &a.phk (1992 - 2000) &a.gpalmer (1993 - 2000) &a.sos (1993 - 2000) &a.wollman (1993 - 2000) &a.joerg (1995 - 2000) &a.jdp (1997 - 2000) &a.guido (1995 - 1999) &a.dyson (1993 - 1998) &a.nate (1992 - 1996) &a.rgrimes (1992 - 1995) Andreas Schulz (1992 - 1995) &a.csgr (1993 - 1995) &a.paul (1992 - 1995) &a.smace (1993 - 1994) Andrew Moore (1993 - 1994) Christoph Robitschko (1993 - 1994) J. T. Conklin (1992 - 1993) Development Team Alumni development team The following people were members of the FreeBSD development team during the periods indicated. We thank them for their past efforts in the service of the FreeBSD project. In rough chronological order: &a.tedm (???? - 2000) &a.karl (???? - 2000) &a.gclarkii (1993 - 2000) &a.jraynard (???? - 2000) &a.jgreco (???? - 1999) &a.ats (???? - 1999) Jamil Weatherby (1997 - 1999) meganm (???? - 1998) &a.dyson (???? - 1998) Amancio Hasty (1997 - 1998) Drew Derbyshire (1997 - 1998) Derived Software Contributors This software was originally derived from William F. Jolitz's 386BSD release 0.1, though almost none of the original 386BSD specific code remains. This software has been essentially re-implemented from the 4.4BSD-Lite release provided by the Computer Science Research Group (CSRG) at the University of California, Berkeley and associated academic contributors. There are also portions of NetBSD and OpenBSD that have been integrated into FreeBSD as well, and we would therefore like to thank all the contributors to NetBSD and OpenBSD for their work. Additional FreeBSD Contributors (in alphabetical order by first name): ABURAYA Ryushirou rewsirow@ff.iij4u.or.jp AMAGAI Yoshiji amagai@nue.org Aaron Bornstein aaronb@j51.com Aaron Smith aaron@mutex.org Achim Patzner ap@noses.com Ada T Lim ada@bsd.org Adam Baran badam@mw.mil.pl Adam Glass glass@postgres.berkeley.edu Adam Herzog adam@herzogdesigns.com Adam Kranzel adam@alameda.edu Adam McDougall mcdouga9@egr.msu.edu Adam Strohl troll@digitalspark.net Adam Weinberger monkey@crackula.com Adoal Xu adoal@iname.com Adrian Colley aecolley@ois.ie Adrian Hall ahall@mirapoint.com Adrian Mariano adrian@cam.cornell.edu Adrian Steinmann ast@marabu.ch Adrian T. Filipi-Martin atf3r@agate.cs.virginia.edu Ajit Thyagarajan unknown Akira SAWADA unknown Akira Watanabe akira@myaw.ei.meisei-u.ac.jp Akito Fujita fujita@zoo.ncl.omron.co.jp Alain Kalker A.C.P.M.Kalker@student.utwente.nl Alan Bawden alan@curry.epilogue.com Alan Eldridge alane@geeksrus.net Alec Wolman wolman@cs.washington.edu Aled Morris aledm@routers.co.uk Aleksandr A Babaylov .@babolo.ru Alex G. Bulushev bag@demos.su Alex D. Chen dhchen@Canvas.dorm7.nccu.edu.tw Alex Le Heux alexlh@funk.org Alex Kapranoff kappa@zombie.antar.bryansk.ru Alex Perel veers@disturbed.net Alex Semenyaka alex@rinet.ru Alex Varju varju@webct.com Alex Zepeda garbanzo@hooked.net Alexander B. Povolotsky tarkhil@mgt.msk.ru Alexander Gelfenbain mail@gelf.com Alexander Leidinger Alexander+FBSD@Leidinger.net Alexandre Peixoto alexandref@tcoip.com.br Alexandre Snarskii snar@paranoia.ru Alexey V. Neyman alex.neyman@auriga.ru Alistair G. Crooks agc@uts.amdahl.com Allan Bowhill bowhill@bowhill.vservers.com Allan Saddi asaddi@philosophysw.com Allen Campbell allenc@verinet.com Amakawa Shuhei amakawa@hoh.t.u-tokyo.ac.jp Amancio Hasty hasty@star-gate.com Amir Farah amir@comtrol.com Amir Shalem amir@boom.org.il Amy Baron amee@beer.org The Anarcat beaupran@iro.umontreal.ca Anatoly A. Orehovsky tolik@mpeks.tomsk.su Anatoly Vorobey mellon@pobox.com Anders Andersson anders@codefactory.se Anders Thulin Anders.X.Thulin@telia.se Andras Olah olah@cs.utwente.nl Andre Albsmeier Andre.Albsmeier@mchp.siemens.de Andre Goeree abgoeree@uwnet.nl Andre Oppermann andre@pipeline.ch Andreas Haakh ah@alman.robin.de Andreas Kohout shanee@rabbit.augusta.de Andreas Lohr andreas@marvin.RoBIN.de Andreas Schulz unknown Andreas Wetzel mickey@deadline.snafu.de Andreas Wrede andreas@planix.com Andres Vega Garcia unknown Andrew Atrens atreand@statcan.ca Andrew Boothman andrew@cream.org Andrew Gillham gillham@andrews.edu Andrew Gordon andrew.gordon@net-tel.co.uk Andrew Herbert andrew@werple.apana.org.au Andrew J. Korty ajk@purdue.edu Andrew P. Lentvorski bsder@allcaps.org Andrew L. Moore alm@mclink.com Andrew L. Neporada andrew@chg.ru Andrew McRae amcrae@cisco.com Andrew Stevenson andrew@ugh.net.au Andrew Timonin tim@pool1.convey.ru Andrew V. Stesin stesin@elvisti.kiev.ua Andrew Webster awebster@dataradio.com Andrey Novikov andrey@novikov.com Andrey Simonenko simon@comsys.ntu-kpi.kiev.ua Andrey Tchoritch andy@venus.sympad.net Andy Farkas andyf@speednet.com.au Andy Sparrow spadger@best.com Andy Valencia ajv@csd.mot.com Andy Whitcroft andy@sarc.city.ac.uk Angel Todorov todorov_bg@gmx.net Angelo Turetta ATuretta@stylo.it Anthony C. Chavez magus@xmission.com Anthony Yee-Hang Chan yeehang@netcom.com Anton N. Bruesov antonz@library.ntu-kpi.kiev.ua Anton Voronin anton@urc.ac.ru Antti Kaipila anttik@iki.fi arci vega@sophia.inria.fr Are Bryne are.bryne@communique.no Ari Suutari ari@suutari.iki.fi Arindum Mukerji rmukerji@execpc.com Arjan de Vet devet@IAEhv.nl Arne Henrik Juul arnej@Lise.Unit.NO Arun Sharma adsharma@sharmas.dhs.org Arnaud S. Launay asl@launay.org Ashley Penney ashp@unloved.org Ask Bjoern Hansen ask@valueclick.com Atsushi Furuta furuta@sra.co.jp Atsushi Murai amurai@spec.co.jp Atushi Sakauchi sakauchi@yamame.to Bakul Shah bvs@bitblocks.com Barry Bierbauch pivrnec@vszbr.cz Barry Lustig barry@ictv.com Ben Hutchinson benhutch@xfiles.org.uk Ben Jackson unknown Ben Walter bwalter@itachi.swcp.com Benjamin Lewis bhlewis@gte.net Berend de Boer berend@pobox.com Bernd Rosauer br@schiele-ct.de Bill Kish kish@osf.org Bill Trost trost@cloud.rain.com Blaz Zupan blaz@amis.net Bob Van Valzah Bob@whitebarn.com Bob Wilcox bob@obiwan.uucp Bob Willcox bob@luke.pmr.com Boris Staeblow balu@dva.in-berlin.de Boyd Faulkner faulkner@mpd.tandem.com Boyd R. Faulkner faulkner@asgard.bga.com Brad Chapman chapmanb@arches.uga.edu Brad Hendrickse bradh@uunet.co.za Brad Karp karp@eecs.harvard.edu Bradley Dunn bradley@dunn.org Brad Jones brad@kazrak.com Brandon Fosdick bfoz@glue.umd.edu Brandon Gillespie brandon@roguetrader.com &a.wlloyd; Brent J. Nordquist bjn@visi.com Brett Lymn blymn@mulga.awadi.com.AU Brett Taylor brett@peloton.runet.edu Brian Campbell brianc@pobox.com Brian Clapper bmc@willscreek.com Brian Cully shmit@kublai.com Brian Handy handy@lambic.space.lockheed.com Brian Litzinger brian@MediaCity.com Brian McGovern bmcgover@cisco.com Brian Moore ziff@houdini.eecs.umich.edu Brian R. Haug haug@conterra.com Brian Tao taob@risc.org Brion Moss brion@queeg.com Bruce Albrecht bruce@zuhause.mn.org Bruce Gingery bgingery@gtcs.com Bruce J. Keeler loodvrij@gridpoint.com Bruce Murphy packrat@iinet.net.au Bruce Walter walter@fortean.com Carey Jones mcj@acquiesce.org Carl Fongheiser cmf@netins.net Carl Mascott cmascott@world.std.com Casper casper@acc.am Castor Fu castor@geocast.com Chain Lee chain@110.net Charles Hannum mycroft@ai.mit.edu Charles Henrich henrich@msu.edu Charles Mott cmott@scientech.com Charles Owens owensc@enc.edu Chet Ramey chet@odin.INS.CWRU.Edu Chia-liang Kao clkao@CirX.ORG Chiharu Shibata chi@bd.mbn.or.jp Chip Norkus unknown Chris Csanady cc@tarsier.ca.sandia.gov Chris Dabrowski chris@vader.org Chris Dillon cdillon@wolves.k12.mo.us Chris Shenton cshenton@angst.it.hq.nasa.gov &a.cshumway; Chris Stenton jacs@gnome.co.uk Chris Timmons skynyrd@opus.cts.cwu.edu Chris Torek torek@ee.lbl.gov Christian Gusenbauer cg@fimp01.fim.uni-linz.ac.at Christian Haury Christian.Haury@sagem.fr Christoph P. Kukulies kuku@FreeBSD.org Christoph Robitschko chmr@edvz.tu-graz.ac.at Christoph Weber-Fahr wefa@callcenter.systemhaus.net Christopher G. Demetriou cgd@postgres.berkeley.edu Christopher N. Harrell cnh@ivmg.net Christopher Preston rbg@gayteenresource.org Christopher T. Johnson cjohnson@neunacht.netgsi.com Chrisy Luke chrisy@flix.net Chuck Hein chein@cisco.com Cliff Rowley dozprompt@onsea.com Colman Reilly careilly@tcd.ie Conrad Sabatier conrads@home.com Coranth Gryphon gryphon@healer.com Cornelis van der Laan nils@guru.ims.uni-stuttgart.de Cove Schneider cove@brazil.nbn.com Craig Leres leres@ee.lbl.gov Craig Loomis unknown Craig Metz cmetz@inner.net Craig Spannring cts@internetcds.com Craig Struble cstruble@vt.edu Cristian Ferretti cfs@riemann.mat.puc.cl Curt Mayer curt@toad.com Cyrille Lefevre clefevre@citeweb.net Cyrus Rahman cr@jcmax.com Dai Ishijima ishijima@tri.pref.osaka.jp Daisuke Watanabe NU7D-WTNB@asahi-net.or.jp Damian Hamill damian@cablenet.net Dan Cross tenser@spitfire.ecsel.psu.edu Dan Langille dan@freebsddiary.org Dan Lukes dan@obluda.cz Dan Nelson dnelson@emsphone.com Dan Papasian bugg@bugg.strangled.net Dan Piponi wmtop@tanelorn.demon.co.uk Dan Walters hannibal@cyberstation.net Daniel Hagan dhagan@acm.vt.edu Daniel O'Connor doconnor@gsoft.com.au Daniel Poirot poirot@aio.jsc.nasa.gov Daniel Rock rock@cs.uni-sb.de Daniel W. McRobb dwm@caimis.com Danny Egen unknown Danny J. Zerkel dzerkel@phofarm.com Dave Adkins adkin003@tc.umn.edu Dave Andersen angio@aros.net Dave Blizzard dblizzar@sprynet.com Dave Bodenstab imdave@synet.net Dave Burgess burgess@hrd769.brooks.af.mil Dave Chapeskie dchapes@ddm.on.ca Dave Cornejo dave@dogwood.com Dave Edmondson davided@sco.com Dave Glowacki dglo@ssec.wisc.edu Dave Marquardt marquard@austin.ibm.com Dave Tweten tweten@FreeBSD.org David A. Adkins adkin003@tc.umn.edu David A. Bader dbader@eece.unm.edu David Borman dab@bsdi.com David Bremner bremner@unb.ca David Dawes dawes@XFree86.org David Filo unknown David Holland dholland@eecs.harvard.edu David Holloway daveh@gwythaint.tamis.com David Horwitt dhorwitt@ucsd.edu David Hovemeyer daveho@infocom.com David Jones dej@qpoint.torfree.net David Kelly dkelly@tomcat1.tbe.com David Kulp dkulp@neomorphic.com David L. Nugent davidn@blaze.net.au David Leonard d@scry.dstc.edu.au David Muir Sharnoff muir@idiom.com David S. Miller davem@jenolan.rutgers.edu David Sugar dyfet@gnu.org David Wolfskill david@catwhisker.org David Yeske dyeske@yahoo.com Dean Gaudet dgaudet@arctic.org Dean Huxley dean@fsa.ca Denis Fortin unknown Denis Shaposhnikov dsh@vlink.ru Dennis Glatting dennis.glatting@software-munitions.com Denton Gentry denny1@home.com der Mouse mouse@Collatz.McRCIM.McGill.EDU Derek Inksetter derek@saidev.com DI. Christian Gusenbauer cg@scotty.edvz.uni-linz.ac.at Diane Bruce db@db.net Dirk Keunecke dk@panda.rhein-main.de Dirk Nehrling nerle@pdv.de Dishanker Rajakulendren draj@oceanfree.net Dmitry A. Yanko fm@astral.ntu-kpi.kiev.ua Dmitry Karasik dmitry@karasik.eu.org Dmitry Khrustalev dima@xyzzy.machaon.ru Dmitry Kohmanyuk dk@farm.org Dmitry Morozovsky marck@rinet.ru Dom Mitchell dom@myrddin.demon.co.uk Domas Mituzas midom@dammit.lt Dominik Brettnacher domi@saargate.de Dominik Rothert dr@domix.de Don Croyle croyle@gelemna.ft-wayne.in.us Donn Miller dmmiller@cvzoom.net Dan Pelleg dpelleg+unison@cs.cmu.edu &a.whiteside; Don Morrison dmorrisn@u.washington.edu Don Yuniskis dgy@rtd.com Donald Maddox dmaddox@conterra.com Douglas Carmichael dcarmich@mcs.com Douglas Crosher dtc@scrooge.ee.swin.oz.au Drew Derbyshire ahd@kew.com Dustin Sallings dustin@spy.net Eckart "Isegrim" Hofmann Isegrim@Wunder-Nett.org Ed Gold vegold01@starbase.spd.louisville.edu Ed Hudson elh@p5.spnet.com Edward Chuang edwardc@firebird.org.tw Edward Wang edward@edcom.com Edwin Groothus edwin@mavetju.org Edwin Mons e@ik.nu Ege Rekk aagero@aage.priv.no Eiji-usagi-MATSUmoto usagi@clave.gr.jp Eike Bernhardt eike.bernhardt@gmx.de ELISA Font Project Elmar Bartel bartel@informatik.tu-muenchen.de Eoin Lawless eoin@maths.tcd.ie Eric A. Griff eric@talesfromthereal.com Eric Blood eblood@cs.unr.edu Eric D. Futch efutch@nyct.net Eric J. Haug ejh@slustl.slu.edu Eric J. Schwertfeger eric@cybernut.com Eric L. Hernes erich@lodgenet.com Eric P. Scott eps@sirius.com Eric Sprinkle eric@ennovatenetworks.com Erich Stefan Boleyn erich@uruk.org Erich Zigler erich@tacni.net Erik H. Bakke erikhb@bgnett.no Erik E. Rantapaa rantapaa@math.umn.edu Erik H. Moe ehm@cris.com Ernst Winter ewinter@lobo.muc.de Espen Skoglund esk@ira.uka.de Eugene M. Kim astralblue@usa.net Eugene Radchenko genie@qsar.chem.msu.su Eugeny Kuzakov CoreDumped@coredumped.null.ru Evan Champion evanc@synapse.net Fanying Jen fanying@fynet.com Faried Nawaz fn@Hungry.COM Flemming Jacobsen fj@batmule.dk Fong-Ching Liaw fong@juniper.net Francis M J Hsieh mjshieh@life.nthu.edu.tw Francisco Reyes fjrm@yahoo.com Frank Bartels knarf@camelot.de Frank Chen Hsiung Chan frankch@waru.life.nthu.edu.tw Frank Durda IV uhclem@nemesis.lonestar.org Frank MacLachlan fpm@n2.net Frank Nobis fn@Radio-do.de Frank ten Wolde franky@pinewood.nl Frank van der Linden frank@fwi.uva.nl Frank Volf volf@oasis.IAEhv.nl Fred Cawthorne fcawth@jjarray.umn.edu Fred Gilham gilham@csl.sri.com Fred Templin templin@erg.sri.com Frederick Earl Gray fgray@rice.edu FUJIMOTO Kensaku fujimoto@oscar.elec.waseda.ac.jp FURUSAWA Kazuhisa furusawa@com.cs.osakafu-u.ac.jp Fuyuhiko Maruyama fuyuhik8@is.titech.ac.jp &a.stanislav; Gabor Kincses gabor@acm.org Gabor Zahemszky zgabor@CoDe.hu Gareth McCaughan gjm11@dpmms.cam.ac.uk Gary A. Browning gab10@griffcd.amdahl.com Gary Howland gary@hotlava.com Gary J. garyj@rks32.pcs.dec.com Gary Kline kline@thought.org Gary W. Swearingen swear@aa.net Gaspar Chilingarov nightmar@lemming.acc.am Gea-Suan Lin gsl@tpts4.seed.net.tw Gene Raytsin pal@paladin7.net Geoff Rehmet csgr@alpha.ru.ac.za Georg Wagner georg.wagner@ubs.com Gerald Pfeifer pfeifer@dbai.tuwien.ac.at Gianlorenzo Masini masini@uniroma3.it Gianmarco Giovannelli gmarco@giovannelli.it Gil Kloepfer Jr. gil@limbic.ssdl.com Gilad Rom rom_glsa@ein-hashofet.co.il Giles Lean giles@nemeton.com.au Ginga Kawaguti ginga@amalthea.phys.s.u-tokyo.ac.jp Glen Foster gfoster@gfoster.com Glenn Johnson gljohns@bellsouth.net Godmar Back gback@facility.cs.utah.edu Goran Hammarback goran@astro.uu.se Gord Matzigkeit gord@enci.ucalgary.ca Gordon Greeff gvg@uunet.co.za Graham Wheeler gram@cdsec.com Greg A. Woods woods@zeus.leitch.com Greg Ansley gja@ansley.com Greg Lewis glewis@eyesbeyond.com Greg Robinson greg@rosevale.com.au Greg Troxel gdt@ir.bbn.com Greg Ungerer gerg@stallion.oz.au Gregory Bond gnb@itga.com.au Gregory D. Moncreaff moncrg@bt340707.res.ray.com Guy Harris guy@netapp.com Guy Helmer ghelmer@cs.iastate.edu HAMADA Naoki hamada@astec.co.jp Hammurabi Mendes hmendes_br@yahoo.com Hannu Savolainen hannu@voxware.pp.fi Hans Huebner hans@artcom.de Hans Petter Bieker zerium@webindex.no Hans Zuidam hans@brandinnovators.com Harlan Stenn Harlan.Stenn@pfcs.com Harold Barker hbarker@dsms.com Harry Newton harry_newton@telinco.co.uk Havard Eidnes Havard.Eidnes@runit.sintef.no Heath Nielson heath@cs.byu.edu Heikki Suonsivu hsu@cs.hut.fi Heiko W. Rupp unknown Helmut F. Wirth hfwirth@ping.at Henrik Vestergaard Draboel hvd@terry.ping.dk Herb Peyerl hpeyerl@NetBSD.org Hideaki Ohmon ohmon@tom.sfc.keio.ac.jp Hidekazu Kuroki hidekazu@cs.titech.ac.jp Hideki Yamamoto hyama@acm.org Hideyuki Suzuki hideyuki@sat.t.u-tokyo.ac.jp Hirayama Issei iss@mail.wbs.ne.jp Hiroaki Sakai sakai@miya.ee.kagu.sut.ac.jp Hiroharu Tamaru tamaru@ap.t.u-tokyo.ac.jp Hironori Ikura hikura@kaisei.org Hiroshi Nishikawa nis@pluto.dti.ne.jp Hiroya Tsubakimoto unknown HIYAMA Takeshi gibbon@cocoa.freemail.ne.jp Holger Lamm holger@eit.uni-kl.de Holger Veit Holger.Veit@gmd.de Holm Tiffe holm@geophysik.tu-freiberg.de HONDA Yasuhiro honda@kashio.info.mie-u.ac.jp Horance Chou horance@freedom.ie.cycu.edu.tw Horihiro Kumagai kuma@jp.FreeBSD.org HOSOBUCHI Noriyuki hoso@buchi.tama.or.jp HOTARU-YA hotaru@tail.net Hr.Ladavac lada@ws2301.gud.siemens.co.at Hubert Feyrer hubertf@NetBSD.ORG Hugh F. Mahon hugh@nsmdserv.cnd.hp.com Hugh Mahon h_mahon@fc.hp.com Hung-Chi Chu hcchu@r350.ee.ntu.edu.tw Ian Holland ianh@tortuga.com.au Ian Struble ian@broken.net Ian Vaudrey i.vaudrey@bigfoot.com Igor Khasilev igor@jabber.paco.odessa.ua Igor Roshchin str@giganda.komkon.org Igor Serikov bt@turtle.pangeatech.com Igor Sviridov siac@ua.net Igor Vinokurov igor@zynaps.ru Ikuo Nakagawa ikuo@isl.intec.co.jp Ilia Chipitsine ilia@jane.cgu.chel.su Ilya V. Komarov mur@lynx.ru IMAI Takeshi take-i@ceres.dti.ne.jp IMAMURA Tomoaki tomoak-i@is.aist-nara.ac.jp Itsuro Saito saito@miv.t.u-tokyo.ac.jp IWASHITA Yoji shuna@pop16.odn.ne.jp J. Bryant jbryant@argus.flash.net J. David Lowe lowe@saturn5.com J. Han hjh@photino.com J. Hawk jhawk@MIT.EDU J.T. Conklin jtc@cygnus.com Jack jack@zeus.xtalwind.net Jacob Bohn Lorensen jacob@jblhome.ping.mk Jagane D Sundar jagane@netcom.com Jake Hamby jehamby@anobject.com James Clark jjc@jclark.com James D. Stewart jds@c4systm.com James da Silva jds@cs.umd.edu James Jegers jimj@miller.cs.uwm.edu James Raynard fhackers@jraynard.demon.co.uk James T. Liu jtliu@phlebas.rockefeller.edu Jamie Heckford jamie@jamiesdomain.co.uk Jan Conard charly@fachschaften.tu-muenchen.de Jan Jungnickel Jan@Jungnickel.com Jan Koum jkb@FreeBSD.org Jan L. Peterson jlp@flipdog.com Janick Taillandier Janick.Taillandier@ratp.fr Janusz Kokot janek@gaja.ipan.lublin.pl Jarle Greipsland jarle@idt.unit.no Jason DiCioccio geniusj@ods.org Jason Garman init@risen.org Jason R. Mastaler jason-freebsd@mastaler.com Jason Thorpe thorpej@NetBSD.org Jason Wright jason@OpenBSD.org Jason Young doogie@forbidden-donut.anet-stl.com Javier Martin Rueda jmrueda@diatel.upm.es Jay Fenlason hack@datacube.com Jay Krell jay.krell@cornell.edu Jaye Mathisen mrcpu@cdsnet.net Jean-Sebastien Roy js@jeannot.org Jean-Yves Lefort jylefort@brutele.be Jeff Bartig jeffb@doit.wisc.edu Jeff Brown jabrown@caida.org Jeff Forys jeff@forys.cranbury.nj.us Jeff Kletsky Jeff@Wagsky.com Jeff Palmer scorpio@drkshdw.org Jeffrey Evans evans@scnc.k12.mi.us Jeffrey Wheat jeff@cetlink.net Jeremy Allison jallison@whistle.com Jeremy Chadwick yoshi@parodius.com Jeremy Chatfield jdc@xinside.com Jeremy Karlson karlj000@unbc.ca Jeremy Prior unknown Jeremy Shaffner jeremy@external.org Jesse McConnell jesse@cylant.com Jesse Rosenstock jmr@ugcs.caltech.edu Jian-Da Li jdli@csie.nctu.edu.tw Jim Babb babb@FreeBSD.org Jim Binkley jrb@cs.pdx.edu Jim Bloom bloom@acm.org Jim Carroll jim@carroll.com Jim Flowers jflowers@ezo.net Jim Leppek jleppek@harris.com Jim Lowe james@cs.uwm.edu Jim Mattson jmattson@sonic.net Jim Mercer jim@komodo.reptiles.org Jim Sloan odinn@atlantabiker.net Jim Wilson wilson@moria.cygnus.com Jimbo Bahooli griffin@blackhole.iceworld.org Jin Guojun jin@george.lbl.gov Joachim Kuebart kuebart@mathematik.uni-ulm.de Joao Carlos Mendes Luis jonny@jonny.eng.br Jochen Pohl jpo.drs@sni.de Joe "Marcus" Clarke marcus@marcuscom.com Joe Abley jabley@automagic.org Joe Halpin joe.halpin@attbi.com Joe Jih-Shian Lu jslu@dns.ntu.edu.tw Joe Orthoefer j_orthoefer@tia.net Joe Traister traister@mojozone.org Joel Faedi Joel.Faedi@esial.u-nancy.fr Joel Ray Holveck joelh@gnu.org Joel Sutton jsutton@bbcon.com.au Jordan DeLong fracture@allusion.net Joseph Mallett jmallett@xMach.org Joseph Scott joseph@randomnetworks.com Johan Granlund johan@granlund.nu Johan Karlsson k@numeri.campus.luth.se Johan Larsson johan@moon.campus.luth.se Johann Tonsing jtonsing@mikom.csir.co.za Johannes 5 Joemann joemann@beefree.free.de Johannes Helander unknown Johannes Stille unknown John Beckett jbeckett@southern.edu John Beukema jbeukema@hk.super.net John Brezak unknown John Capo jc@irbs.com John F. Woods jfw@jfwhome.funhouse.com John Goerzen jgoerzen@alexanderwohl.complete.org John Heidemann johnh@isi.edu John Hood cgull@owl.org John Kohl unknown John Lind john@starfire.mn.org John Mackin john@physiol.su.oz.au John Merryweather Cooper jmcoopr@webmail.bmi.net John P johnp@lodgenet.com John Perry perry@vishnu.alias.net John Preisler john@vapornet.com John Reynolds jjreynold@home.com John Rochester jr@cs.mun.ca John Sadler john_sadler@alum.mit.edu John Saunders john@pacer.nlc.net.au John Wehle john@feith.com John Woods jfw@eddie.mit.edu Johny Mattsson lonewolf@flame.org Jon Morgan morgan@terminus.trailblazer.com Jonathan Belson jon@witchspace.com Jonathan H N Chin jc254@newton.cam.ac.uk Jonathan Hanna jh@pc-21490.bc.rogers.wave.ca Jonathan Pennington john@coastalgeology.org Jorge Goncalves j@bug.fe.up.pt Jorge M. Goncalves ee96199@tom.fe.up.pt Jos Backus jbackus@plex.nl Jose Marques jose@nobody.org Josef Grosch jgrosch@superior.mooseriver.com Joseph Stein joes@wstein.com Josh Gilliam josh@quick.net Josh Tiefenbach josh@ican.net Jostein Trondal jostein.trondal@sikkerhet.no Juergen Lock nox@jelal.hb.north.de Juha Inkari inkari@cc.hut.fi Jukka A. Ukkonen jau@iki.fi Julian Assange proff@suburbia.net Julian Coleman j.d.coleman@ncl.ac.uk &a.jhs; Julian Jenkins kaveman@magna.com.au Junichi Satoh junichi@jp.FreeBSD.org Junji SAKAI sakai@jp.FreeBSD.org Junya WATANABE junya-w@remus.dti.ne.jp Justas justas@mbank.lv Justin Stanford jus@security.za.net K.Higashino a00303@cc.hc.keio.ac.jp Kai Vorma vode@snakemail.hut.fi Kaleb S. Keithley kaleb@ics.com Kaneda Hiloshi vanitas@ma3.seikyou.ne.jp Kang-ming Liu gugod@gugod.org Kapil Chowksey kchowksey@hss.hns.com Karl Denninger karl@mcs.com Karl Dietz Karl.Dietz@triplan.com Karl Lehenbauer karl@NeoSoft.com KATO Tsuguru tkato@prontomail.ne.jp Kawanobe Koh kawanobe@st.rim.or.jp Kees Jan Koster kjk1@ukc.ac.uk Keith Bostic bostic@bostic.com Keith E. Walker kew@icehouse.net Keith Moore unknown Keith Sklower unknown Ken Hornstein unknown Ken Key key@cs.utk.edu Ken Mayer kmayer@freegate.com Kenji Saito marukun@mx2.nisiq.net Kenji Tomita tommyk@da2.so-net.or.jp Kenneth Furge kenneth.furge@us.endress.com Kenneth Monville desmo@bandwidth.org Kenneth R. Westerback krw@tcn.net Kenneth Stailey kstailey@gnu.ai.mit.edu Kent Talarico kent@shipwreck.tsoft.net Kent Vander Velden graphix@iastate.edu Kentaro Inagaki JBD01226@niftyserve.ne.jp Kevin Bracey kbracey@art.acorn.co.uk Kevin Day toasty@dragondata.com Kevin Lahey kml@nas.nasa.gov Kevin Meltzer perlguy@perlguy.com Kevin Street street@iname.com Kevin Van Maren vanmaren@fast.cs.utah.edu Killer killer@prosalg.no Kim Scarborough sluggo@unknown.nu Kimura Fuyuki fuyuki@mj.0038.net Kiril Mitev kiril@ideaglobal.com Kiroh HARADA kiroh@kh.rim.or.jp Klaus Herrmann klaus.herrmann@gmx.net Klaus Klein kleink@layla.inka.de Klaus-J. Wolf Yanestra@t-online.de Koichi Sato copan@ppp.fastnet.or.jp Konrad Heuer kheuer@gwdu60.gwdg.de Konstantin Chuguev Konstantin.Chuguev@dante.org.uk Kostya Lukin lukin@okbmei.msk.su Kouichi Hirabayashi kh@mogami-wire.co.jp Kris Dow kris@vilnya.demon.co.uk KUNISHIMA Takeo kunishi@c.oka-pu.ac.jp Kurt D. Zeilenga Kurt@Boolean.NET Kurt Olsen kurto@tiny.mcs.usu.edu L. Jonas Olsson ljo@ljo-slip.DIALIN.CWRU.Edu Larry Altneu larry@ALR.COM Lars Bernhardsson lab@fnurt.net Lars Köller Lars.Koeller@Uni-Bielefeld.DE Laurence Lopez lopez@mv.mv.com Lauri Watts lauri@kde.org Lee Cremeans lcremean@tidalwave.net Leo Kim leo@florida.sarang.net Leo Serebryakov lev@serebryakov.spb.ru Liang Tai-hwa avatar@www.mmlab.cse.yzu.edu.tw Lon Willett lon%softt.uucp@math.utah.edu Louis A. Mamakos louie@TransSys.COM Louis Mamakos loiue@TransSys.com Lowell Gilbert lowell@world.std.com Lucas James Lucas.James@ldjpc.apana.org.au Lyndon Nerenberg lyndon@orthanc.ab.ca M. L. Dodson bdodson@scms.utmb.EDU M.C. Wong unknown Magnus Enbom dot@tinto.campus.luth.se Mahesh Neelakanta mahesh@gcomm.com Makoto WATANABE watanabe@zlab.phys.nagoya-u.ac.jp Makoto YAMAKURA makoto@pinpott.spnet.ne.jp Malte Lance malte.lance@gmx.net Manu Iyengar iyengar@grunthos.pscwa.psca.com Marc Frajola marc@dev.com Marc Ramirez mrami@mramirez.sy.yale.edu Marc Slemko marcs@znep.com Marc van Kempen wmbfmk@urc.tue.nl Marc van Woerkom van.woerkom@netcologne.de Marcin Cieslak saper@system.pl Mark Andrews unknown Mark Cammidge mark@gmtunx.ee.uct.ac.za Mark Diekhans markd@grizzly.com Mark Huizer xaa@stack.nl Mark J. Taylor mtaylor@cybernet.com Mark Knight markk@knigma.org Mark Krentel krentel@rice.edu Mark Mayo markm@vmunix.com Mark Thompson thompson@tgsoft.com Mark Tinguely tinguely@plains.nodak.edu Mark Treacy unknown Mark Valentine mark@thuvia.org Markus Holmberg saska@acc.umu.se Martin Birgmeier unknown Martin Blapp blapp@attic.ch Martin Hinner mhi@linux.gyarab.cz Martin Ibert mib@ppe.bb-data.de Martin Kammerhofer dada@sbox.tu-graz.ac.at Martin Matuska matuska@wu-wien.ac.at Martin Minkus diskiller@cnbinc.com Martin Renters martin@tdc.on.ca Martti Kuparinen martti.kuparinen@ericsson.com Masachika ISHIZUKA ishizuka@isis.min.ntt.jp Masahiro Sekiguchi seki@sysrap.cs.fujitsu.co.jp Masahiro TAKEMURA mastake@msel.t.u-tokyo.ac.jp Masanobu Saitoh msaitoh@spa.is.uec.ac.jp Masanori Kanaoka kana@saijo.mke.mei.co.jp Masanori Kiriake seiken@ARGV.AC Masatoshi TAMURA tamrin@shinzan.kuee.kyoto-u.ac.jp Mats Lofkvist mal@algonet.se Matt Bartley mbartley@lear35.cytex.com Matt Heckaman matt@LUCIDA.QC.CA Matt Thomas matt@3am-software.com Matt White mwhite+@CMU.EDU Matthew C. Mead mmead@Glock.COM Matthew Cashdollar mattc@rfcnet.com Matthew Emmerton root@gabby.gsicomp.on.ca Matthew Flatt mflatt@cs.rice.edu Matthew Fuller fullermd@futuresouth.com Matthew Stein matt@bdd.net Matthew West mwest@uct.ac.za Matthias Pfaller leo@dachau.marco.de Matthias Scheler tron@netbsd.org Matthias Schündehütte msch@snafu.de Mattias Gronlund Mattias.Gronlund@sa.erisoft.se Mattias Pantzare pantzer@ludd.luth.se Maurice Castro maurice@planet.serc.rmit.edu.au Max Euston meuston@jmrodgers.com Maxim Bolotin max@rsu.ru Maxim Konovalov maxim@macomnet.ru Maxime Henrion mhenrion@cybercable.fr Micha Class michael_class@hpbbse.bbn.hp.com Michael Alyn Miller malyn@strangeGizmo.com Michael Lyngbøl michael@lyngbol.dk Michael Butler imb@scgt.oz.au Michael Butschky butsch@computi.erols.com Michael Clay mclay@weareb.org Michael Galassi nerd@percival.rain.com Michael Hancock michaelh@cet.co.jp Michael Hohmuth hohmuth@inf.tu-dresden.de Michael Perlman canuck@caam.rice.edu Michael Petry petry@netwolf.NetMasters.com Michael Sardo jaeger16@yahoo.com Michael Searle searle@longacre.demon.co.uk Michael Schout mschout@gkg.net Michael Urban murban@tznet.com Michael Vasilenko acid@stu.cn.ua Michal Listos mcl@Amnesiac.123.org Michal Pasternak doc@lublin.t1.pl Michio Karl Jinbo karl@marcer.nagaokaut.ac.jp Miguel Angel Sagreras msagre@cactus.fi.uba.ar Mihoko Tanaka m_tonaka@pa.yokogawa.co.jp Mika Nystrom mika@cs.caltech.edu Mikael Hybsch micke@dynas.se Mikael Karpberg karpen@ocean.campus.luth.se Mike Bristow mike@urgle.com Mike Del repenting@hotmail.com Mike Durian durian@plutotech.com Mike Durkin mdurkin@tsoft.sf-bay.org Mike E. Matsnev mike@azog.cs.msu.su Mike Evans mevans@candle.com Mike Futerko mike@LITech.lviv.ua Mike Grupenhoff kashmir@umiacs.umd.edu Mike Harding mvh@ix.netcom.com Mike Hibler mike@marker.cs.utah.edu Mike Karels unknown Mike McGaughey mmcg@cs.monash.edu.au Mike Meyer mwm@mired.org Mike Mitchell mitchell@ref.tfs.com Mike Murphy mrm@alpharel.com Mike Peck mike@binghamton.edu Mike Sherwood mike@fate.com Mike Spengler mks@msc.edu Mikhail A. Sokolov mishania@demos.su Ming-I Hseh PA@FreeBSD.ee.Ntu.edu.TW Mitsuru Yoshida mitsuru@riken.go.jp Monte Mitzelfelt monte@gonefishing.org Morgan Davis root@io.cts.com MOROHOSHI Akihiko moro@race.u-tokyo.ac.jp Mostyn Lewis mostyn@mrl.com Motomichi Matsuzaki mzaki@e-mail.ne.jp Motoyuki Kasahara m-kasahr@sra.co.jp N.G.Smith ngs@sesame.hensa.ac.uk Nadav Eiron nadav@barcode.co.il NAGAO Tadaaki nagao@cs.titech.ac.jp NAKAJI Hiroyuki nakaji@tutrp.tut.ac.jp NAKAMURA Kazushi nkazushi@highway.or.jp NAKAMURA Motonori motonori@econ.kyoto-u.ac.jp NAKATA, Maho chat95@mbox.kyoto-inet.or.jp Nanbor Wang nw1@cs.wustl.edu Naofumi Honda honda@Kururu.math.sci.hokudai.ac.jp Naoki Hamada nao@tom-yam.or.jp Narvi narvi@haldjas.folklore.ee Nathan Dorfman nathan@rtfm.net Neal Fachan kneel@ishiboo.com Niall Smart rotel@indigo.ie Nicholas Esborn nick@netdot.net Nick Barnes Nick.Barnes@pobox.com Nick Handel nhandel@NeoSoft.com Nick Hilliard nick@foobar.org Nick Johnson freebsd@spatula.net Nick Williams njw@cs.city.ac.uk Nickolay N. Dudorov nnd@itfs.nsk.su NIIMI Satoshi sa2c@and.or.jp Niklas Hallqvist niklas@filippa.appli.se Nils M. Holm nmh@t3x.org Nisha Talagala nisha@cs.berkeley.edu No Name adrian@virginia.edu No Name alex@elvisti.kiev.ua No Name anto@netscape.net No Name bobson@egg.ics.nitch.ac.jp No Name bovynf@awe.be No Name burg@is.ge.com No Name chris@gnome.co.uk No Name colsen@usa.net No Name coredump@nervosa.com No Name dannyman@arh0300.urh.uiuc.edu No Name davids@SECNET.COM No Name derek@free.org No Name devet@adv.IAEhv.nl No Name djv@bedford.net No Name dvv@sprint.net No Name enami@ba2.so-net.or.jp No Name flash@eru.tubank.msk.su No Name flash@hway.ru No Name fn@pain.csrv.uidaho.edu No Name frf@xocolatl.com No Name gclarkii@netport.neosoft.com No Name gordon@sheaky.lonestar.org No Name graaf@iae.nl No Name greg@greg.rim.or.jp No Name grossman@cygnus.com No Name gusw@fub46.zedat.fu-berlin.de No Name hfir@math.rochester.edu No Name hnokubi@yyy.or.jp No Name iaint@css.tuu.utas.edu.au No Name invis@visi.com No Name ishisone@sra.co.jp No Name iverson@lionheart.com No Name jpt@magic.net No Name junker@jazz.snu.ac.kr No Name k-sugyou@ccs.mt.nec.co.jp No Name kenji@reseau.toyonaka.osaka.jp No Name kfurge@worldnet.att.net No Name lh@aus.org No Name lhecking@nmrc.ucc.ie No Name mrgreen@mame.mu.oz.au No Name nakagawa@jp.FreeBSD.org No Name ohki@gssm.otsuka.tsukuba.ac.jp No Name owaki@st.rim.or.jp No Name pechter@shell.monmouth.com No Name pete@pelican.pelican.com No Name pritc003@maroon.tc.umn.edu No Name risner@stdio.com No Name roman@rpd.univ.kiev.ua No Name root@ns2.redline.ru No Name root@uglabgw.ug.cs.sunysb.edu No Name stephen.ma@jtec.com.au No Name sumii@is.s.u-tokyo.ac.jp No Name takas-su@is.aist-nara.ac.jp No Name tamone@eig.unige.ch No Name tjevans@raleigh.ibm.com No Name tony-o@iij.ad.jp amurai@spec.co.jp No Name torii@tcd.hitachi.co.jp No Name uenami@imasy.or.jp No Name uhlar@netlab.sk No Name vode@hut.fi No Name wlloyd@mpd.ca No Name wlr@furball.wellsfargo.com No Name wmbfmk@urc.tue.nl No Name yamagata@nwgpc.kek.jp No Name ziggy@ryan.org No Name ZW6T-KND@j.asahi-net.or.jp Nobuhiro Yasutomi nobu@psrc.isac.co.jp Nobuyuki Koganemaru kogane@koganemaru.co.jp NOKUBI Hirotaka h-nokubi@yyy.or.jp Norio Suzuki nosuzuki@e-mail.ne.jp Noritaka Ishizumi graphite@jp.FreeBSD.org Noriyuki Soda soda@sra.co.jp Oddbjorn Steffenson oddbjorn@tricknology.org Oh Junseon hollywar@mail.holywar.net Olaf Wagner wagner@luthien.in-berlin.de Oleg Semyonov os@altavista.net Oleg Sharoiko os@rsu.ru Oleg V. Volkov rover@lglobus.ru Olexander Kunytsa kunia@wolf.istc.kiev.ua Oliver Breuninger ob@seicom.NET Oliver Friedrichs oliver@secnet.com Oliver Fromme oliver.fromme@heim3.tu-clausthal.de Oliver Helmling oliver.helmling@stud.uni-bayreuth.de Oliver Laumann net@informatik.uni-bremen.de Oliver Lehmann Kai_Allard_Liao@gmx.de Oliver Oberdorf oly@world.std.com Olof Johansson offe@ludd.luth.se Osokin Sergey aka oZZ ozz@FreeBSD.org.ru Pace Willisson pace@blitz.com Paco Rosich rosich@modico.eleinf.uv.es Palle Girgensohn girgen@partitur.se Parag Patel parag@cgt.com Pascal Pederiva pascal@zuo.dec.com Pasvorn Boonmark boonmark@juniper.net Patrick Alken cosine@ellipse.mcs.drexel.edu Patrick Bihan-Faou patrick@mindstep.com Patrick Hausen unknown Patrick Seal patseal@hyperhost.net Paul Antonov apg@demos.su Paul F. Werkowski unknown Paul Fox pgf@foxharp.boston.ma.us Paul Koch koch@thehub.com.au Paul Kranenburg pk@NetBSD.org Paul M. Lambert plambert@plambert.net Paul Mackerras paulus@cs.anu.edu.au Paul Popelka paulp@uts.amdahl.com Paul S. LaFollette, Jr. unknown Paul Sandys myj@nyct.net Paul T. Root proot@horton.iaces.com Paul Vixie paul@vix.com Paolo Flag flag@gufi.org Paulo Menezes paulo@isr.uc.pt Paulo Menezes pm@dee.uc.pt Pedro A M Vazquez vazquez@IQM.Unicamp.BR Pedro Giffuni giffunip@asme.org Per Wigren wigren@home.se Pete Bentley pete@demon.net Peter Childs pjchilds@imforei.apana.org.au Peter Cornelius pc@inr.fzk.de Peter Haight peterh@prognet.com Peter Jeremy peter.jeremy@alcatel.com.au Peter M. Chen pmchen@eecs.umich.edu Peter Much peter@citylink.dinoex.sub.org Peter Olsson unknown Peter Philipp pjp@bsd-daemon.net Peter Stubbs PETERS@staidan.qld.edu.au Peter van Heusden pvh@egenetics.com Phil Maker pjm@cs.ntu.edu.au Phil Sutherland philsuth@mycroft.dialix.oz.au Phil Taylor phil@zipmail.co.uk Philip Musumeci philip@rmit.edu.au Philippe Lefebvre nemesis@balistik.net Pierre Y. Dampure pierre.dampure@k2c.co.uk Pius Fischer pius@ienet.com Pomegranate daver@flag.blackened.net Powerdog Industries kevin.ruddy@powerdog.com Priit Järv priit@cc.ttu.ee R Joseph Wright rjoseph@mammalia.org R. Kym Horsell Radoslav Vasilev rvasilev@uni-svishtov.bg Ralf Friedl friedl@informatik.uni-kl.de Randal S. Masutani randal@comtest.com Randall Hopper rhh@ct.picker.com Randall W. Dean rwd@osf.org Randy Bush rbush@bainbridge.verio.net Rasmus Kaj kaj@Raditex.se Reinier Bezuidenhout rbezuide@mikom.csir.co.za Remy Card Remy.Card@masi.ibp.fr Ricardas Cepas rch@richard.eu.org Riccardo Veraldi veraldi@cs.unibo.it Rich Wood rich@FreeBSD.org.uk Richard Henderson richard@atheist.tamu.edu Richard Hwang rhwang@bigpanda.com Richard Kiss richard@homemail.com Richard J Kuhns rjk@watson.grauel.com Richard M. Neswold rneswold@enteract.com Richard Seaman, Jr. dick@tar.com Richard Stallman rms@gnu.ai.mit.edu Richard Straka straka@user1.inficad.com Richard Tobin richard@cogsci.ed.ac.uk Richard Wackerbarth rkw@Dataplex.NET Richard Winkel rich@math.missouri.edu Richard Wiwatowski rjwiwat@adelaide.on.net Rick Macklem rick@snowhite.cis.uoguelph.ca Rick Macklin unknown Rob Austein sra@epilogue.com Rob Mallory rmallory@qualcomm.com Rob Snow rsnow@txdirect.net Robert Crowe bob@speakez.com Robert D. Thrush rd@phoenix.aii.com Robert Eckardt roberte@MEP.Ruhr-Uni-Bochum.de Robert P Ricci ricci@cs.utah.edu Robert Sanders rsanders@mindspring.com Robert Sexton robert@kudra.com Robert Shady rls@id.net Robert Swindells swindellsr@genrad.co.uk Robert Withrow witr@rwwa.com Robert Yoder unknown Robin Carey robin@mailgate.dtc.rankxerox.co.uk Rod Taylor rod@idiotswitch.org Roger Hardiman roger@cs.strath.ac.uk Roland Jesse jesse@cs.uni-magdeburg.de Roman Shterenzon roman@xpert.com Ron Bickers rbickers@intercenter.net Ron Lenk rlenk@widget.xmission.com Ronald Kuehn kuehn@rz.tu-clausthal.de Rudolf Cejka cejkar@fit.vutbr.cz Ruslan Belkin rus@home2.UA.net Ruslan Shevchenko rssh@cam.grad.kiev.ua Russell L. Carter rcarter@pinyon.org Russell Vincent rv@groa.uct.ac.za Ryan Younce ryany@pobox.com Ryuichiro IMURA imura@af.airnet.ne.jp Sakai Hiroaki sakai@miya.ee.kagu.sut.ac.jp Sakari Jalovaara sja@tekla.fi Sam Hartman hartmans@mit.edu Samuel Lam skl@ScalableNetwork.com Samuel Tardieu sam@inf.enst.fr Samuele Zannoli zannoli@cs.unibo.it Sander Janssen janssen@rendo.dekooi.nl Sander Vesik sander@haldjas.folklore.ee Sandro Sigala ssigala@globalnet.it SANETO Takanori sanewo@strg.sony.co.jp SASAKI Shunsuke ele@pop17.odn.ne.jp Sascha Blank blank@fox.uni-trier.de Sascha Wildner swildner@channelz.GUN.de Satoh Junichi junichi@astec.co.jp SAWADA Mizuki miz@qb3.so-net.ne.jp Scot Elliott scot@poptart.org Scot W. Hetzel hetzels@westbend.net Scott A. Kenney saken@rmta.ml.org Scott A. Moberly smoberly@xavier.dyndns.org Scott Blachowicz scott.blachowicz@seaslug.org Scott Burris scott@pita.cns.ucla.edu Scott Hazen Mueller scott@zorch.sf-bay.org Scott Michel scottm@cs.ucla.edu Scott Mitchel scott@uk.FreeBSD.org Scott Reynolds scott@clmqt.marquette.mi.us Sebastian Strollo seb@erix.ericsson.se Serge V. Vakulenko vak@zebub.msk.su Sergei Chechetkin csl@whale.sunbay.crimea.ua Sergei S. Laskavy laskavy@pc759.cs.msu.su Sergey Gershtein sg@mplik.ru Sergey Kosyakov ks@itp.ac.ru Sergey N. Vorokov serg@tmn.ru Sergey Potapov sp@alkor.ru Sergey Samoyloff gonza@techline.ru Sergey Shkonda serg@bcs.zp.ua Sergey V.Dorokhov svd@kbtelecom.nalnet.ru Sergio Lenzi lenzi@bsi.com.br Shaun Courtney shaun@emma.eng.uct.ac.za Shawn M. Carey smcarey@mailbox.syr.edu Shell Hung shell@shellhung.org Shigio Yamaguchi shigio@tamacom.com Shinya Esu esu@yk.rim.or.jp Shinya FUJIE fujie@tk.elec.waseda.ac.jp Shuichi Tanaka stanaka@bb.mbn.or.jp Simon simon@masi.ibp.fr Simon Burge simonb@telstra.com.au Simon Dick simond@irrelevant.org Simon J Gerraty sjg@melb.bull.oz.au Simon Marlow simonm@dcs.gla.ac.uk Simon Shapiro shimon@simon-shapiro.org Sin'ichiro MIYATANI siu@phaseone.co.jp Slaven Rezic eserte@cs.tu-berlin.de Soochon Radee slr@mitre.org Soren Dayton csdayton@midway.uchicago.edu Soren Dossing sauber@netcom.com Soren S. Jorvang soren@wheel.dk Stefan Bethke stb@hanse.de Stefan Eggers seggers@semyam.dinoco.de Stefan Moeding s.moeding@ndh.net Stefan Petri unknown Stefan `Sec` Zehl sec@42.org Steinar Haug sthaug@nethelp.no Stephane E. Potvin sepotvin@videotron.ca Stephane Legrand stephane@lituus.fr Stephen Clawson sclawson@marker.cs.utah.edu Stephen F. Combs combssf@salem.ge.com Stephen Farrell stephen@farrell.org Stephen Hocking sysseh@devetir.qld.gov.au Stephen J. Roznowski sjr@home.net Stephen McKay syssgm@devetir.qld.gov.au Stephen Melvin melvin@zytek.com Steve Bauer sbauer@rock.sdsmt.edu Steve Coltrin spcoltri@unm.edu Steve Deering unknown Steve Gerakines steve2@genesis.tiac.net Steve Gericke steveg@comtrol.com Steve Piette steve@simon.chi.il.US Steve Schwarz schwarz@alpharel.com Steven Enderle panic@subphase.de Steven G. Kargl kargl@troutmask.apl.washington.edu Steven H. Samorodin samorodi@NUXI.com Steven McCanne mccanne@cs.berkeley.edu Steven Plite splite@purdue.edu Steven Wallace unknown Stijn Hoop stijn@win.tue.nl Stuart Henderson stuart@internationalschool.co.uk Sue Blake sue@welearn.com.au Sugimoto Sadahiro ixtl@komaba.utmc.or.jp SUGIMURA Takashi sugimura@jp.FreeBSD.org Sugiura Shiro ssugiura@duo.co.jp Sujal Patel smpatel@wam.umd.edu Sungman Cho smcho@tsp.korea.ac.kr Sune Stjerneby stjerneby@usa.net SURANYI Peter suranyip@jks.is.tsukuba.ac.jp Suzuki Yoshiaki zensyo@ann.tama.kawasaki.jp Svein Skogen tds@nsn.no Sybolt de Boer bolt@xs4all.nl Tadashi Kumano kumano@strl.nhk.or.jp Taguchi Takeshi taguchi@tohoku.iij.ad.jp TAKAHASHI Kaoru kaoru@kaisei.org Takahiro Yugawa yugawa@orleans.rim.or.jp Takashi Mega mega@minz.org Takashi Uozu j1594016@ed.kagu.sut.ac.jp Takayuki Ariga a00821@cc.hc.keio.ac.jp Takeru NAIKI naiki@bfd.es.hokudai.ac.jp Takeshi Amaike amaike@iri.co.jp Takeshi MUTOH mutoh@info.nara-k.ac.jp Takeshi Ohashi ohashi@mickey.ai.kyutech.ac.jp Takeshi WATANABE watanabe@crayon.earth.s.kobe-u.ac.jp Takuya SHIOZAKI tshiozak@makino.ise.chuo-u.ac.jp Tatoku Ogaito tacha@tera.fukui-med.ac.jp Tatsuya Kudoh cdr@cosmonet.org Ted Buswell tbuswell@mediaone.net Ted Faber faber@isi.edu Ted Lemon mellon@isc.org Terry Lambert terry@lambert.org Terry Lee terry@uivlsi.csl.uiuc.edu Tetsuya Furukawa tetsuya@secom-sis.co.jp Theo de Raadt deraadt@OpenBSD.org Thomas thomas@mathematik.uni-Bremen.de Thomas D. Dean tomdean@ix.netcom.com Thomas David Rivers rivers@dignus.com Thomas E. Zander rriggs@f113.hadiko.de Thomas G. McWilliams tgm@netcom.com Thomas Graichen graichen@omega.physik.fu-berlin.de Thomas König Thomas.Koenig@ciw.uni-karlsruhe.de Thomas Ptacek unknown Thomas Quinot thomas@cuivre.fr.eu.org Thomas A. Stephens tas@stephens.org Thomas Stromberg tstrombe@rtci.com Thomas Valentino Crimi tcrimi+@andrew.cmu.edu Thomas Wintergerst thomas@lemur.nord.de Þórður Ívarsson totii@est.is Thierry Thomas tthomas@mail.dotcom.fr Timothy Jensen toast@blackened.com Tim J. Robbins tim@robbins.dropbear.id.au Tim Kientzle kientzle@netcom.com Tim Singletary tsingle@sunland.gsfc.nasa.gov Tim Wilkinson tim@sarc.city.ac.uk Timo J. Rinne tri@iki.fi Tobias Reifenberger treif@mayn.de Todd Miller millert@openbsd.org Tom root@majestix.cmr.no Tom tom@sdf.com Tom Gray - DCA dcasba@rain.org Tom Jobbins tom@tom.tj Tom Pusateri pusateri@juniper.net Tom Rhodes darklogik@pittgoth.com Tom Rush tarush@mindspring.com Tom Samplonius tom@misery.sdf.com Tomohiko Kurahashi kura@melchior.q.t.u-tokyo.ac.jp Tony Kimball alk@Think.COM Tony Li tli@jnx.com Tony Lynn wing@cc.nsysu.edu.tw Tony Maher tonym@biolateral.com.au Torbjorn Granlund tege@matematik.su.se Toshihiko SHIMOKAWA toshi@tea.forus.or.jp Toshihiro Kanda candy@kgc.co.jp Toshiomi Moriki Toshiomi.Moriki@ma1.seikyou.ne.jp Trefor S. trefor@flevel.co.uk Trenton Schulz twschulz@cord.edu Trevor Blackwell tlb@viaweb.com Udo Schweigert ust@cert.siemens.de Ugo Paternostro paterno@dsi.unifi.it Ulf Kieber kieber@sax.de Ulli Linzen ulli@perceval.camelot.de URATA Shuichiro s-urata@nmit.tmg.nec.co.jp Uwe Arndt arndt@mailhost.uni-koblenz.de Vadim Belman voland@catpipe.net Vadim Chekan vadim@gc.lviv.ua Vadim Kolontsov vadim@tversu.ac.ru Vadim Mikhailov mvp@braz.ru Valentin Nechayev netch@lucky.net Van Jacobson van@ee.lbl.gov Vasily V. Grechishnikov bazilio@ns1.ied-vorstu.ac.ru Vasim Valejev vasim@uddias.diaspro.com Vernon J. Schryver vjs@mica.denver.sgi.com Veselin Slavov vess@btc.net Vic Abell abe@cc.purdue.edu Ville Eerola ve@sci.fi Vince Valenti vince@blue-box.net Vincent Poy vince@venus.gaianet.net Vincenzo Capuano VCAPUANO@vmprofs.esoc.esa.de Virgil Champlin champlin@pa.dec.com Vladimir A. Jakovenko vovik@ntu-kpi.kiev.ua Vladimir Kushnir kushn@mail.kar.net Vladimir Savichev vlad@ariel.phys.wesleyan.edu Vsevolod Lobko seva@alex-ua.com W. Gerald Hicks wghicks@bellsouth.net W. Richard Stevens rstevens@noao.edu Walt Howard howard@ee.utah.edu Walt M. Shandruk walt@erudition.net Warren Toomey wkt@csadfa.cs.adfa.oz.au Wayne Scott wscott@ichips.intel.com Werner Griessl werner@btp1da.phy.uni-bayreuth.de Wes Santee wsantee@wsantee.oz.net Wietse Venema wietse@wzv.win.tue.nl Wiljo Heinen wiljo@freeside.ki.open.de Willem Jan Withagen wjw@surf.IAE.nl William Jolitz withheld William Liao william@tale.net Wojtek Pilorz wpilorz@celebris.bdk.lublin.pl Wolfgang Helbig helbig@ba-stuttgart.de Wolfgang Solfrank ws@tools.de Wolfgang Stanglmeier wolf@FreeBSD.org Wu Ching-hong woju@FreeBSD.ee.Ntu.edu.TW &a.wylie; Yarema yds@ingress.com Yaroslav Terletsky ts@polynet.lviv.ua Yasuhiro Fukama yasuf@big.or.jp Yasuhito FUTATSUKI futatuki@fureai.or.jp Yen-Ming Lee leeym@bsd.ce.ntu.edu.tw Yen-Shuo Su yssu@CCCA.NCTU.edu.tw Yin-Jieh Chen yinjieh@Crazyman.Dorm13.NCTU.edu.tw Yixin Jin yjin@rain.cs.ucla.edu Yoichi Asai yatt@msc.biglobe.ne.jp Yonatan Bokovza Yonatan@xpert.com Yoshiaki Uchikawa yoshiaki@kt.rim.or.jp Yoshihiko SARUMRU mistral@imasy.or.jp Yoshihisa NAKAGAWA y-nakaga@ccs.mt.nec.co.jp Yoshikazu Goto gotoh@ae.anritsu.co.jp Yoshimasa Ohnishi ohnishi@isc.kyutech.ac.jp Yoshishige Arai ryo2@on.rim.or.jp Yuichi MATSUTAKA matutaka@osa.att.ne.jp Yujiro MIYATA miyata@bioele.nuee.nagoya-u.ac.jp Yu-Shun Wang yushunwa@isi.edu Yusuke Nawano azuki@azkey.org Yuu Yashiki s974123@cc.matsuyama-u.ac.jp Yuuki SAWADA mami@whale.cc.muroran-it.ac.jp Yuuichi Narahara aconitum@po.teleway.ne.jp Yuval Yarom yval@cs.huji.ac.il Yves Fonk yves@cpcoup5.tn.tudelft.nl Yves Fonk yves@dutncp8.tn.tudelft.nl Zach Heilig zach@gaffaneys.com Zach Zurflu zach@pabst.bendnet.com Zahemszhky Gabor zgabor@code.hu Zhong Ming-Xun zmx@mail.CDPA.nsysu.edu.tw 386BSD Patch Kit Patch Contributors (in alphabetical order by first name): Adam Glass glass@postgres.berkeley.edu Adrian Hall ahall@mirapoint.com Andrey A. Chernov ache@astral.msk.su Andrew Herbert andrew@werple.apana.org.au Andrew Moore alm@netcom.com Andy Valencia ajv@csd.mot.com jtk@netcom.com Arne Henrik Juul arnej@Lise.Unit.NO Bakul Shah bvs@bitblocks.com Barry Lustig barry@ictv.com Bob Wilcox bob@obiwan.uucp Branko Lankester Brett Lymn blymn@mulga.awadi.com.AU Charles Hannum mycroft@ai.mit.edu Chris G. Demetriou cgd@postgres.berkeley.edu Chris Torek torek@ee.lbl.gov Christoph Robitschko chmr@edvz.tu-graz.ac.at Daniel Poirot poirot@aio.jsc.nasa.gov Dave Burgess burgess@hrd769.brooks.af.mil Dave Rivers rivers@ponds.uucp David Dawes dawes@physics.su.OZ.AU David Greenman dg@Root.COM Eric J. Haug ejh@slustl.slu.edu Felix Gaehtgens felix@escape.vsse.in-berlin.de Frank Maclachlan fpm@crash.cts.com Gary A. Browning gab10@griffcd.amdahl.com Gary Howland gary@hotlava.com Geoff Rehmet csgr@alpha.ru.ac.za Goran Hammarback goran@astro.uu.se Guido van Rooij guido@gvr.org Guy Antony Halse guy@rucus.ru.ac.za Guy Harris guy@auspex.com Havard Eidnes Havard.Eidnes@runit.sintef.no Herb Peyerl hpeyerl@novatel.cuc.ab.ca Holger Veit Holger.Veit@gmd.de Ishii Masahiro, R. Kym Horsell J.T. Conklin jtc@cygnus.com Jagane D Sundar jagane@netcom.com James Clark jjc@jclark.com James Jegers jimj@miller.cs.uwm.edu James W. Dolter James da Silva jds@cs.umd.edu et al Jay Fenlason hack@datacube.com Jim Wilson wilson@moria.cygnus.com Jörg Lohse lohse@tech7.informatik.uni-hamburg.de Jörg Wunsch joerg_wunsch@uriah.heep.sax.de John Dyson John Woods jfw@eddie.mit.edu Jordan K. Hubbard jkh@whisker.hubbard.ie Julian Elischer julian@dialix.oz.au Julian Stacey jhs@FreeBSD.org Karl Dietz Karl.Dietz@triplan.com Karl Lehenbauer karl@NeoSoft.com karl@one.neosoft.com Keith Bostic bostic@toe.CS.Berkeley.EDU Ken Hughes Kent Talarico kent@shipwreck.tsoft.net Kevin Lahey kml%rokkaku.UUCP@mathcs.emory.edu kml@mosquito.cis.ufl.edu Konstantinos Konstantinidis kkonstan@duth.gr Marc Frajola marc@dev.com Mark Tinguely tinguely@plains.nodak.edu tinguely@hookie.cs.ndsu.NoDak.edu Martin Renters martin@tdc.on.ca Michael Clay mclay@weareb.org Michael Galassi nerd@percival.rain.com Mike Durkin mdurkin@tsoft.sf-bay.org Naoki Hamada nao@tom-yam.or.jp Nate Williams nate@bsd.coe.montana.edu Nick Handel nhandel@NeoSoft.com nick@madhouse.neosoft.com Pace Willisson pace@blitz.com Paul Kranenburg pk@cs.few.eur.nl Paul Mackerras paulus@cs.anu.edu.au Paul Popelka paulp@uts.amdahl.com Peter da Silva peter@NeoSoft.com Phil Sutherland philsuth@mycroft.dialix.oz.au Poul-Henning Kamp phk@FreeBSD.org Ralf Friedl friedl@informatik.uni-kl.de Rick Macklem root@snowhite.cis.uoguelph.ca Robert D. Thrush rd@phoenix.aii.com Rodney W. Grimes rgrimes@cdrom.com Sascha Wildner swildner@channelz.GUN.de Scott Burris scott@pita.cns.ucla.edu Scott Reynolds scott@clmqt.marquette.mi.us Seamus Venasse svenasse@polaris.ca Sean Eric Fagan sef@kithrup.com Simon J Gerraty sjg@melb.bull.oz.au sjg@zen.void.oz.au Stephen McKay syssgm@devetir.qld.gov.au Terry Lambert terry@icarus.weber.edu Terry Lee terry@uivlsi.csl.uiuc.edu Tor Egge Tor.Egge@idi.ntnu.no Warren Toomey wkt@csadfa.cs.adfa.oz.au Wiljo Heinen wiljo@freeside.ki.open.de William Jolitz withheld Wolfgang Solfrank ws@tools.de Wolfgang Stanglmeier wolf@dentaro.GUN.de Yuval Yarom yval@cs.huji.ac.il
diff --git a/en_US.ISO8859-1/books/faq/book.sgml b/en_US.ISO8859-1/books/faq/book.sgml index 0cee509a10..e10ef02403 100644 --- a/en_US.ISO8859-1/books/faq/book.sgml +++ b/en_US.ISO8859-1/books/faq/book.sgml @@ -1,12287 +1,12289 @@ %man; %freebsd; %authors; + +%teams; %bookinfo; %mailing-lists; ]> Frequently Asked Questions for FreeBSD 2.X, 3.X and 4.X The FreeBSD Documentation Project $FreeBSD$ 1995 1996 1997 1998 1999 2000 2001 2002 The FreeBSD Documentation Project &bookinfo.legalnotice; This is the FAQ for FreeBSD versions 2.X, 3.X, and 4.X. All entries are assumed to be relevant to FreeBSD 2.0.5 and later, unless otherwise noted. Any entries with a <XXX> are under construction. If you are interested in helping with this project, send email to the &a.doc;. The latest version of this document is always available from the FreeBSD World Wide Web server. It may also be downloaded as one large HTML file with HTTP or as plain text, postscript, PDF, etc. from the FreeBSD FTP server. You may also want to Search the FAQ. Introduction Welcome to the FreeBSD 2.X-4.X FAQ! As is usual with Usenet FAQs, this document aims to cover the most frequently asked questions concerning the FreeBSD operating system (and of course answer them!). Although originally intended to reduce bandwidth and avoid the same old questions being asked over and over again, FAQs have become recognized as valuable information resources. Every effort has been made to make this FAQ as informative as possible; if you have any suggestions as to how it may be improved, please feel free to mail them to the &a.faq;. What is FreeBSD? Briefly, FreeBSD is a UN*X-like operating system for the i386 and Alpha/AXP platforms based on U.C. Berkeley's 4.4BSD-Lite release, with some 4.4BSD-Lite2 enhancements. It is also based indirectly on William Jolitz's port of U.C. Berkeley's Net/2 to the i386, known as 386BSD, though very little of the 386BSD code remains. A fuller description of what FreeBSD is and how it can work for you may be found on the FreeBSD home page. FreeBSD is used by companies, Internet Service Providers, researchers, computer professionals, students and home users all over the world in their work, education and recreation. See some of them in the FreeBSD Gallery. For more detailed information on FreeBSD, please see the FreeBSD Handbook. What is the goal of the FreeBSD Project? The goal of the FreeBSD Project is to provide software that may be used for any purpose and without strings attached. Many of us have a significant investment in the code (and project) and would certainly not mind a little financial compensation now and then, but we are definitely not prepared to insist on it. We believe that our first and foremost mission is to provide code to any and all comers, and for whatever purpose, so that the code gets the widest possible use and provides the widest possible benefit. This is, we believe, one of the most fundamental goals of Free Software and one that we enthusiastically support. That code in our source tree which falls under the GNU General Public License (GPL) or GNU Library General Public License (LGPL) comes with slightly more strings attached, though at least on the side of enforced access rather than the usual opposite. Due to the additional complexities that can evolve in the commercial use of GPL software, we do, however, endeavor to replace such software with submissions under the more relaxed FreeBSD copyright whenever possible. Does the FreeBSD license have any restrictions? Yes. Those restrictions do not control how you use the code, merely how you treat the FreeBSD Project itself. If you have serious license concerns, read the actual license. For the simply curious, the license can be summarized like this. Do not claim that you wrote this. Do not sue us if it breaks. Can FreeBSD replace my current operating system? For most people, yes. But this question is not quite that cut-and-dried. Most people do not actually use an operating system. They use applications. The applications are what really use the operating system. FreeBSD is designed to provide a robust and full-featured environment for applications. It supports a wide variety of web browsers, office suites, email readers, graphics programs, programming environments, network servers, and just about everything else you might want. Most of these applications can be managed through the Ports Collection. If you need to use an application that is only available on one operating system, you simply cannot replace that operating system. Chances are there is a very similar application on FreeBSD, however. If you want a solid office or Internet server, a reliable workstation, or just the ability to do your job without interruptions, FreeBSD will almost certainly do everything you need. Many computer users across the world, including both novices and experienced UNIX administrators, use FreeBSD as their only desktop operating system. If you are migrating to FreeBSD from some other UNIX environment, you already know most of what you need to. If your background is in graphic-driven operating systems such as Windows and older versions of Mac OS, expect to invest additional time learning the UNIX way of doing things. This FAQ and the FreeBSD Handbook are excellent places to start. Why is it called FreeBSD? It may be used free of charge, even by commercial users. Full source for the operating system is freely available, and the minimum possible restrictions have been placed upon its use, distribution and incorporation into other work (commercial or non-commercial). Anyone who has an improvement and/or bug fix is free to submit their code and have it added to the source tree (subject to one or two obvious provisions). For those of our readers whose first language is not English, it may be worth pointing out that the word free is being used in two ways here, one meaning at no cost, the other meaning you can do whatever you like. Apart from one or two things you cannot do with the FreeBSD code, for example pretending you wrote it, you really can do whatever you like with it. What is the latest version of FreeBSD? Version &rel.current; is the latest RELEASE version; it was released in &rel.current.date;. This is also the latest STABLE version. Briefly explained, -STABLE is aimed at the ISP or other corporate user who wants stability and a low change count over the wizzy new features of the latest -CURRENT snapshot. Releases can come from either branch, but you should only use -CURRENT if you are sure that you are prepared for its increased volatility (relative to -STABLE, that is). Releases are only made every few months. While many people stay more up-to-date with the FreeBSD sources (see the questions on FreeBSD-CURRENT and FreeBSD-STABLE) than that, doing so is more of a commitment, as the sources are a moving target. What is FreeBSD-CURRENT? FreeBSD-CURRENT is the development version of the operating system, which will in due course become 5.0-RELEASE. As such, it is really only of interest to developers working on the system and die-hard hobbyists. See the relevant section in the handbook for details on running -CURRENT. If you are not familiar with the operating system or are not capable of identifying the difference between a real problem and a temporary problem, you should not use FreeBSD-CURRENT. This branch sometimes evolves quite quickly and can be un-buildable for a number of days at a time. People that use FreeBSD-CURRENT are expected to be able to analyze any problems and only report them if they are deemed to be mistakes rather than glitches. Questions such as make world produces some error about groups on the -CURRENT mailing list are sometimes treated with contempt. Every day, snapshot releases are made based on the current state of the -CURRENT and -STABLE branches. Nowadays, distributions of the occasional snapshot are now being made available. The goals behind each snapshot release are: To test the latest version of the installation software. To give people who would like to run -CURRENT or -STABLE but who do not have the time and/or bandwidth to follow it on a day-to-day basis an easy way of bootstrapping it onto their systems. To preserve a fixed reference point for the code in question, just in case we break something really badly later. (Although CVS normally prevents anything horrible like this happening :) To ensure that any new features in need of testing have the greatest possible number of potential testers. No claims are made that any -CURRENT snapshot can be considered production quality for any purpose. If you want to run a stable and fully tested system, you will have to stick to full releases, or use the -STABLE snapshots. Snapshot releases are directly available from ftp://current.FreeBSD.org/pub/FreeBSD/ for 5.0-CURRENT and releng4.FreeBSD.org for 4-STABLE snapshots. 3-STABLE snapshots are not being produced at the time of this writing (May 2000). Snapshots are generated, on the average, once a day for all actively developed branches. What is the FreeBSD-STABLE concept? Back when FreeBSD 2.0.5 was released, we decided to branch FreeBSD development into two parts. One branch was named -STABLE, with the intention that only well-tested bug fixes and small incremental enhancements would be made to it (for Internet Service Providers and other commercial enterprises for whom sudden shifts or experimental features are quite undesirable). The other branch was -CURRENT, which essentially has been one unbroken line leading towards 5.0-RELEASE (and beyond) since 2.0 was released. If a little ASCII art would help, this is how it looks: 2.0 | | | [2.1-STABLE] *BRANCH* 2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [2.1-STABLE ends] | (Mar 1997) | | | [2.2-STABLE] *BRANCH* 2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [end] | (Mar 1997) (Oct 97) (Apr 98) (Jul 98) (Dec 98) | | 3.0-SNAPs (started Q1 1997) | | 3.0-RELEASE (Oct 1998) | | [3.0-STABLE] *BRANCH* 3.1-RELEASE (Feb 1999) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1 | (May 1999) (Sep 1999) (Dec 1999) (June 2000) (July 2000) | | [4.0-STABLE] *BRANCH* 4.0 (Mar 2000) -> 4.1 -> 4.1.1 -> 4.2 -> 4.3 -> 4.4 -> ... future 4.x releases ... | | (July 2000) (Sep 2000) (Nov 2000) \|/ + [5.0-CURRENT continues] The 2.2-STABLE branch was retired with the release of 2.2.8. The 3-STABLE branch has ended with the release of 3.5.1, the final 3.X release. The only changes made to either of these branches will be, for the most part, security-related bug fixes. 4-STABLE is the actively developed -STABLE branch. The latest release on the 4-STABLE is &rel.current;-RELEASE, which was released in &rel.current.date;. The 5-CURRENT branch is slowly progressing toward 5.0-RELEASE and beyond. See What is FreeBSD-CURRENT? for more information on this branch. When are FreeBSD releases made? As a general principle, the FreeBSD core team only release a new version of FreeBSD when they believe that there are sufficient new features and/or bug fixes to justify one, and are satisfied that these new developments have been tested sufficiently to avoid compromising the stability of the release. Release dates are generally announced well in advance, so that the people working on the system know when their projects need to be finished and tested. Many users regard this caution as one of the best things about FreeBSD, although waiting for all the latest goodies to reach -STABLE can be a little frustrating. Releases are made about every 4 months on average. For people who need or want a little more excitement, binary snapshots are made every day as discussed above. Who is responsible for FreeBSD? The key decisions concerning the FreeBSD project, such as the overall direction of the project and who is allowed to add code to the source tree, are made by a core team of 9 people. There is a much larger team of more than 200 committers who are authorized to make changes directly to the FreeBSD source tree. However, most non-trivial changes are discussed in advance in the mailing lists, and there are no restrictions on who may take part in the discussion. Where can I get FreeBSD? Every significant release of FreeBSD is available via anonymous FTP from the FreeBSD FTP site: For the current 3.X-STABLE release, 3.5.1-RELEASE, see the 3.5.1-RELEASE directory. The current 4-STABLE release, &rel.current;-RELEASE can be found in the &rel.current;-RELEASE directory. 4.X snapshots are usually made once a day. 5.0 Snapshot releases are made once a day for the -CURRENT branch, these being of service purely to bleeding-edge testers and developers. Information about obtaining FreeBSD on CD, DVD, and other media can be found in the Handbook. How do I access the Problem Report database? The Problem Report database of all user change requests may be queried (or submitted to) by using our web-based PR submission and query interfaces. The &man.send-pr.1; command can also be used to submit problem reports and change requests via electronic mail. Before submitting a problem report, please read this article on how to write good problem reports. How do I become a FreeBSD Web mirror? There are multiple ways to mirror the Web pages. You can retrieve the formatted files from a FreeBSD CVSup server using the application net/cvsup. The file /usr/share/examples/cvsup/www-supfile contains an example CVSup configuration file for web mirrors. You can download the web site source code from any FreeBSD FTP server using your favorite ftp mirror tool. Keep in mind that you have to build these sources before publishing them. Start mirroring at ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www. What other sources of information are there? Please check the Documentation list on the main FreeBSD web site. Documentation and Support What good books are there about FreeBSD? The project produces a wide range of documentation, available from this link: http://www.FreeBSD.org/docs.html. In addition, the Bibliography at the end of this FAQ, and the one in the Handbook reference other recommended books. Is the documentation available in other formats, such as plain text (ASCII), or Postscript? Yes. The documentation is available in a number of different formats and compression schemes on the FreeBSD FTP site, in the /pub/FreeBSD/doc/ directory. The documentation is categorised in a number of different ways. These include: The document's name, such as faq, or handbook. The document's language and encoding. These are based on the locale names you will find under /usr/share/locale on your FreeBSD system. The current languages and encodings that we have for documentation are as follows: Name Meaning en_US.ISO8859-1 US English de_DE.ISO8859-1 German es_ES.ISO8859-1 Spanish fr_FR.ISO8859-1 French ja_JP.eucJP Japanese (EUC encoding) ru_RU.KOI8-R Russian (KOI8-R encoding) zh_TW.Big5 Chinese (Big5 encoding) Some documents may not be available in all languages. The document's format. We produce the documentation in a number of different output formats to try and make it as flexible as possible. The current formats are; Format Meaning html-split A collection of small, linked, HTML files. html One large HTML file containing the entire document pdb Palm Pilot database format, for use with the iSilo reader. pdf Adobe's Portable Document Format ps Postscript rtf Microsoft's Rich Text Format Page numbers are not automatically updated when loading this format in to Word. Press CTRLA, CTRLEND, F9 after loading the document, to update the page numbers. txt Plain text The compression and packaging scheme. There are three of these currently in use. Where the format is html-split, the files are bundled up using &man.tar.1;. The resulting .tar file is then compressed using the compression schemes detailed in the next point. All the other formats generate one file, called book.format (i.e., book.pdb, book.html, and so on). These files are then compressed using three compression schemes. Scheme Description zip The Zip format. If you want to uncompress this on FreeBSD you will need to install the archivers/unzip port first. gz The GNU Zip format. Use &man.gunzip.1; to uncompress these files, which is part of FreeBSD. bz2 The BZip2 format. Less widespread than the others, but generally gives smaller files. Install the archivers/bzip2 port to uncompress these files. So the Postscript version of the Handbook, compressed using BZip2 will be stored in a file called book.ps.bz2 in the handbook/ directory. The formatted documentation is also available as a FreeBSD package, of which more later. After choosing the format and compression mechanism that you want to download, you must then decide whether or not you want to download the document as a FreeBSD package. The advantage of downloading and installing the package is that the documentation can then be managed using the normal FreeBSD package management comments, such as &man.pkg.add.1; and &man.pkg.delete.1;. If you decide to download and install the package then you must know the filename to download. The documentation-as-packages files are stored in a directory called packages. Each package file looks like document-name.lang.encoding.format.tgz. For example, the FAQ, in English, formatted as PDF, is in the package called faq.en_US.ISO8859-1.pdf.tgz. Knowing this, you can use the following command to install the English PDF FAQ package. &prompt.root; pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz Having done that, you can use &man.pkg.info.1; to determine where the file has been installed. &prompt.root; pkg_info -f faq.en_US.ISO8859-1.pdf 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) As you can see, book.pdf will have been installed in to /usr/share/doc/en_US.ISO8859-1/books/faq. If you do not want to use the packages then you will have to download the compressed files yourself, uncompress them, and then copy the appropriate documents in to place. For example, the split HTML version of the FAQ, compressed using &man.gzip.1;, can be found in the doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz file. To download and uncompress that file you would have to do this. &prompt.root; fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz &prompt.root; gzip -d book.html-split.tar.gz &prompt.root; tar xvf book.html-split.tar You will be left with a collection of .html files. The main one is called index.html, which will contain the table of contents, introductory material, and links to the other parts of the document. You can then copy or move these to their final location as necessary. Where do I find info on the FreeBSD mailing lists? You can find full information in the Handbook entry on mailing-lists. Where do I find the FreeBSD Y2K info? You can find full information in the FreeBSD Y2K page. What FreeBSD news groups are available? You can find full information in the Handbook entry on newsgroups. Are there FreeBSD IRC (Internet Relay Chat) channels? Yes, most major IRC networks host a FreeBSD chat channel: Channel #FreeBSD on EFNet is a FreeBSD forum, but do not go there for tech support or to try and get folks there to help you avoid the pain of reading man pages or doing your own research. It is a chat channel, first and foremost, and topics there are just as likely to involve sex, sports or nuclear weapons as they are FreeBSD. You Have Been Warned! Available at server irc.chat.org. Channel #FreeBSDhelp on EFNet is a channel dedicated to helping FreeBSD users. They are much more sympathetic to questions then #FreeBSD is. Channel #FreeBSD on DALNET is available at irc.dal.net in the US and irc.eu.dal.net in Europe. Channel #FreeBSD on UNDERNET is available at us.undernet.org in the US and eu.undernet.org in Europe. Since it is a help channel, be prepared to read the documents you are referred to. Channel #FreeBSD on HybNet. This channel is a help channel. A list of servers can be found on the HybNet web site. Each of these channels are distinct and are not connected to each other. Their chat styles also differ, so you may need to try each to find one suited to your chat style. As with all types of IRC traffic, if you are easily offended or cannot deal with lots of young people (and more than a few older ones) doing the verbal equivalent of jello wrestling, do not even bother with it. Where can I get commercial FreeBSD training and support? DaemonNews provides commercial training and support for FreeBSD. More information can be found at their BSD Mall site. The FreeBSD Mall provides commercial FreeBSD support. You can get more information at their web site. Any other organisations providing training and support should contact the project in order to be listed here. Nik Clayton
nik@FreeBSD.org
Installation Which file do I download to get FreeBSD? Prior to release 3.1, you only needed one floppy image to install FreeBSD, namely floppies/boot.flp. However, since release 3.1 the Project has added out-of-the-box support for a wide variety of hardware, which takes up more space. For 3.x and later you need two floppy images: floppies/kernel.flp and floppies/mfsroot.flp. These images need to be copied onto floppies by tools like fdimage or &man.dd.1;. If you need to download the distributions yourself (for a DOS filesystem install, for instance), below are some recommendations for distributions to grab: bin/ manpages/ compat*/ doc/ src/ssys.* Full instructions on this procedure and a little bit more about installation issues in general can be found in the Handbook entry on installing FreeBSD. What do I do if the floppy images does not fit on a single floppy? A 3.5 inch (1.44MB) floppy can accommodate 1474560 bytes of data. The boot image is exactly 1474560 bytes in size. Common mistakes when preparing the boot floppy are: Not downloading the floppy image in binary mode when using FTP. Some FTP clients default their transfer mode to ascii 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 exactly that on the server, then the download process is suspect. To workaround: type binary at the FTP command prompt after getting connected to the server and before starting the download of the image. Using the DOS copy command (or equivalent GUI tool) to transfer the boot image to floppy. Programs like copy 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 raw, using the low-level tools (e.g. fdimage or rawrite) described in the installation guide to FreeBSD. Where are the instructions for installing FreeBSD? Installation instructions can be found in the Handbook entry on installing FreeBSD. What do I need in order to run FreeBSD? You will need a 386 or better PC, with 5 MB or more of RAM and at least 60 MB of hard disk space. It can run with a low end MDA graphics card but to run X11R6, a VGA or better video card is needed. See also the section on I have only 4 MB of RAM. Can I install FreeBSD? FreeBSD 2.1.7 was the last version of FreeBSD that could be installed on a 4MB system. FreeBSD 2.2 and later needs at least 5MB to install on a new system. All versions of FreeBSD will run in 4MB of RAM, they just cannot run the installation program in 4MB. You can add extra memory for the install process, if you like, and then after the system is up and running, go back to 4MB. Or you could swap your disk into a system which has >4MB, install onto the disk and then swap it back. FreeBSD 2.1.7 will not install with 640 kB base + 3 MB extended memory. If your motherboard can remap some of the lost memory out of the 640kB to 1MB region, then you may still be able to get FreeBSD 2.1.7 up. Try to go into your BIOS setup and look for a remap option. Enable it. You may also have to disable ROM shadowing. It may be easier to get 4 more MB just for the install. Build a custom kernel with only the options you need and then remove the 4MB out. You can also install 2.0.5 and then upgrade your system to 2.1.7 with the upgrade option of the 2.1.7 installation program. After the installation, if you build a custom kernel, it will run in 4 MB. Someone has even successfully booted with 2 MB, although the system was almost unusable. How can I make my own custom install floppy? Currently there is no way to just make a custom install floppy. You have to cut a whole new release, which will include your install floppy. To make a custom release, follow the instructions in the Making your Own Release section of the Handbook. Can I have more than one operating system on my PC? Have a look at the multi-OS page. Can Windows 95/98 co-exist with FreeBSD? Install Windows 95/98 first, after that FreeBSD. FreeBSD's boot manager will then manage to boot Win95/98 and FreeBSD. If you install Windows 95/98 second, it will boorishly overwrite your boot manager without even asking. If that happens, see the next section. Windows 95/98 killed my boot manager! How do I get it back? You can reinstall the boot manager FreeBSD comes with in one of three ways: Running DOS, go into the tools/ directory of your FreeBSD distribution and look for bootinst.exe. You run it like so: ...\TOOLS> bootinst.exe boot.bin and the boot manager will be reinstalled. 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 Boot Manager. This will re-write the boot manager to disk. Now quit out of the installation menu and reboot off the hard disk as normal. Boot the FreeBSD boot floppy (or CDROM) and choose the Fixit menu item. Select either the Fixit floppy or CDROM #2 (the live file system option) as appropriate and enter the fixit shell. Then execute the following command: Fixit# fdisk -B -b /boot/boot0 bootdevice substituting bootdevice for your real boot device such as ad0 (first IDE disk), ad4 (first IDE disk on auxiliary controller), da0 (first SCSI disk), etc. My A, T, or X series IBM Thinkpad locks up when I first booted up my FreeBSD installation. How can I solve this? 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. According to IBMIn an e-mail from Keith Frechette kfrechet@us.ibm.com., the following model/BIOS release numbers incorporate the fix. Model BIOS revision T20 IYET49WW or later T21 KZET22WW or later A20p IVET62WW or later A20m IWET54WW or later A21p KYET27WW or later A21m KXET24WW or later A21e KUET30WW It has been reported that later IBM BIOS revisions may have reintroduced the bug. This message 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.. 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. 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. With the machine functional again, you can use the workaround procedure described here to get a working FreeBSD installation. Download boot1 and boot2 from http://people.FreeBSD.org/~bmah/ThinkPad/. Put these files somewhere you will be able to retrieve them later. Install FreeBSD as normal on to the ThinkPad. Do not use Dangerously Dedicated mode. Do not reboot when the install has finished. Either switch to the Emergency Holographic Shell (ALT F4) or start a fixit shell. Use &man.fdisk.8; to change the FreeBSD partition ID from 165 to 166 (this is the type used by OpenBSD). Bring the boot1 and boot2 files to the local filesystem. Use &man.disklabel.8; to write boot1 and boot2 to your FreeBSD slice. &prompt.root; disklabel -B -b boot1 -s boot2 ad0sn n is the number of the slice where you installed FreeBSD. Reboot. At the boot prompt you will be given the option of booting OpenBSD. This will actually boot FreeBSD. 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. Can I install on a disk with bad blocks? Prior to 3.0, FreeBSD included a utility known as bad144, which automatically remapped bad blocks. Because modern IDE drives perform this function themselves, bad144 has been removed from the FreeBSD source tree. If you wish to install FreeBSD 3.0 or later, we strongly suggest you purchase a newer disk drive. If you do not wish to do this, you must run FreeBSD 2.x. 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. If you have a SCSI drive with bad blocks, see this answer. I have just upgraded from 3.X to 4.X, and my first boot failed with bad sector table not supported FreeBSD 3.X and earlier supported bad144, which automatically remapped bad blocks. FreeBSD 4.X and later do not support this, as modern IDE drives include this functionality. See this question for more information. To fix this after an upgrade, you need to physically place the drive in a working system and use &man.disklabel.8; as discussed in the following questions. How do I tell if a drive has bad144 information on it before I try to upgrade to FreeBSD 4.0 and it fails? Use &man.disklabel.8; for this. disklabel -r drive device will give you the contents of your disk label. Look for a flags field. If you see flags: badsect, this drive is using bad144. For example, the following drive has bad144 enabled.: &prompt.root; disklabel -r wd0 # /dev/rwd0c: type: ESDI disk: wd0s1 label: flags: badsect bytes/sector: 512 sectors/track: 63 How do I remove bad144 from my pre-4.X system so I can upgrade safely? Use disklabel -e -rwd0 to edit the disklabel in place. Just remove the word badsect from the flags field, save, and exit. The bad144 file will still take up some space on your drive, but the disk itself will be usable. We still recommend you purchase a new disk if you have a large number of bad blocks. Strange things happen when I boot the install floppy! What is happening? 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:- 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)? 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!) If you are using Windows95 or Win98 did you run fdimage or rawrite 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. 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. I booted from my ATAPI CDROM, but the install program says no CDROM is found. Where did it go? 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. 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. Why can I not install from tape? If you are installing 2.1.7R from tape, you must create the tape using a tar blocksize of 10 (5120 bytes). The default tar blocksize is 20 (10240 bytes), and tapes created using this default size cannot be used to install 2.1.7R; with these tapes, you will get an error that complains about the record size being too big. Can I install on my laptop over PLIP (Parallel Line IP)? Yes. Use a standard Laplink cable. If necessary, you can check out the PLIP section of the Handbook for details on parallel port networking. If you are running FreeBSD 3.X or earlier, also look at the Mobile Computing page. Which geometry should I use for a disk drive? By the geometry 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. This causes a lot of confusion among new system administrators. First of all, the physical geometry of a SCSI drive is totally irrelevant, as FreeBSD works in term of disk blocks. In fact, there is no such thing as the physical geometry, as the sector density varies across the disk. What manufacturers claim is the physical geometry 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. All that matters is the logical geometry. This is the answer that the BIOS gets when it asks the drive what is your geometry? 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! 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 support for DOS disks >1GB or something similar). If it is turned off, then use N cylinders, 64 heads and 32 sectors/track, where N 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. If it is turned on (it is often supplied this way to get around certain limitations in MSDOS) and the disk capacity is more than 1GB, use M cylinders, 63 sectors per track (not 64), and 255 heads, where 'M' 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. 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. Alternatively, there is a freely available utility distributed with FreeBSD called pfdisk.exe. You can find it in the tools 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. Are there any restrictions on how I divide the disk up? 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). 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. Is FreeBSD compatible with any disk managers? FreeBSD recognizes the Ontrack Disk Manager and makes allowances for it. Other disk managers are not supported. 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. 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. When I boot FreeBSD I get Missing Operating System. What is happening? This is classically a case of FreeBSD and DOS or some other OS conflicting over their ideas of disk geometry. You will have to reinstall FreeBSD, but obeying the instructions given above will almost always get you going. Why can I not get past the boot manager's F? prompt? 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 >1GB drive support), try toggling its setting and reinstalling FreeBSD. Do I need to install the complete sources? In general, no. However, we would strongly recommend that you install, at a minimum, the base source kit, which includes several of the files mentioned here, and the sys (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. (Because of the kernel-source restriction, we recommend that you not mount this on /usr/src directly, but rather in some other location with appropriate symbolic links to duplicate the top-level structure of the source tree.) 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. 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. Do I need to build a kernel? 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 a much friendlier kernel configuration tool. When at the FreeBSD boot prompt (boot:), use the flag and you will be dropped into a visual configuration screen which allows you to configure the kernel's settings for most common ISA cards. It is still recommended that you eventually build a new kernel containing just the drivers that you need, just to save a bit of RAM, but it is no longer a strict requirement for most systems. Should I use DES passwords, or MD5, and how do I specify which form my users receive? The default password format on FreeBSD is to use MD5-based passwords. These are believed to be more secure than the traditional Unix password format, which used a scheme based on the DES 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 crypto distribution in sysinstall, or by installing the crypto sources if building from source). Which password format to use for new passwords is controlled by the passwd_format login capability in /etc/login.conf, which takes values of either des (if available) or md5. See the &man.login.conf.5; manpage for more information about login capabilities. Why does the boot floppy start, but hang at the Probing Devices... screen? If you have a IDE Zip 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. Why do I get a panic: can't mount root error when rebooting the system after installation? 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 wd1 (the second BIOS disk) while the kernel assigns the first disk on the secondary controller device wd2. After the device probing, the kernel tries to mount what the boot blocks think is the boot disk, wd1, while it is really wd2, and fails. To fix the problem, do one of the following: For FreeBSD 3.3 and later, reboot the system and hit Enter at the Booting kernel in 10 seconds; hit [Enter] to interrupt prompt. This will drop you into the boot loader. Then type set root_disk_unit="disk_number" . disk_number will be 0 if FreeBSD is installed on the master drive on the first IDE controller, 1 if it is installed on the slave on the first IDE controller, 2 if it is installed on the master of the second IDE controller, and 3 if it is installed on the slave of the second IDE controller. Then type boot, and your system should boot correctly. To make this change permanent (ie so you do not have to do this every time you reboot or turn on your FreeBSD machine), put the line root_disk_unit="disk_number" in /boot/loader.conf.local . If using FreeBSD 3.2 or earlier, at the Boot: prompt, enter 1:wd(2,a)kernel and press Enter. If the system starts, then run the command echo "1:wd(2,a)kernel" > /boot.config to make it the default boot string. Move the FreeBSD disk onto the primary IDE controller, so the hard disks are consecutive. Rebuild your kernel, modify the wd configuration lines to read: controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # comment out this line controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # change from wd2 to wd1 disk wd2 at wdc1 drive 1 # change from wd3 to wd2 Install the new kernel. If you moved your disks and wish to restore the previous configuration, replace the disks in the desired configuration and reboot. Your system should boot successfully. What are the limits for memory? For memory, the limit is 4 gigabytes. This configuration has been tested, see wcarchive's configuration for more details. If you plan to install this much memory into a machine, you need to be careful. You will probably want to use ECC memory and to reduce capacitive loading use 9 chip memory modules versus 18 chip memory modules. What are the limits for ffs filesystems? 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). The maximum size of a single ffs file is approximately 1G blocks (4TB) if the block size is 4K. Maximum file sizes fs block size 2.2.7-stable 3.0-current works should work 4K 4T-1 4T-1 4T-1 >4T 8K >32G 8T-1 >32G 32T-1 16K >128G 16T-1 >128G 32T-1 32K >512G 32T-1 >512G 64T-1 64K >2048G 64T-1 >2048G 128T-1
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. 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, except under -STABLE triple indirect blocks are unreachable, so the limit is the maximum fs block number that can be represented using double indirect blocks (approx. (blocksize/4)^2 + (blocksize/4)), and under -CURRENT exceeding this limit may cause problems. Using the correct limit of 2G-1 blocks does cause problems.
Why do I get an error message, archsw.readin.failed after compiling and booting a new kernel? You can boot by specifying the kernel directly at the second stage, pressing any key when the | shows up before loader is started. More specifically, you have upgraded the source for your kernel, and installed a new kernel builtin from them without making world. This is not supported. Make world. How do I upgrade from 3.X -> 4.X? We strongly recommend that you use binary snapshots to do this. 4-STABLE snapshots are available at ftp://releng4.FreeBSD.org/. Because of the many changes between 3.X and 4-STABLE, a direct upgrade from source will probably fail. A source upgrade can be done, but only in stages. First, upgrade to the latest 3-STABLE (RELENG_3). Then upgrade to 4.1.1-RELEASE (RELENG_4_1_1_RELEASE). Finally, upgrade to 4-STABLE (RELENG_4). If you wish to upgrade using source, please see the FreeBSD Handbook for more information. Upgrading via source is never recommended for new users, and upgrading from 3.X to 4.X is even less so; make sure you have read the instructions carefully before attempting to upgrade via source. What are these security profiles? A security profile is a set of configuration options that attempts to achieve the desired ratio of security to convenience by enabling and disabling certain programs and other settings. For full details, see the Security Profile section of the Handbook's post-install chapter.
Hardware compatibility Does FreeBSD support architectures other than the x86? Yes. FreeBSD currently runs on both Intel x86 and DEC (now Compaq) Alpha architectures. Interest has also been expressed in a port of FreeBSD to the SPARC architecture, join the freebsd-sparc@FreeBSD.org mailing list if you are interested in joining that project. Most recent additions to the list of upcoming platforms are IA-64 and PowerPC, join the freebsd-ia64@FreeBSD.org and/or freebsd-ppc@FreeBSD.org mailing lists for more information. For general discussion on new architectures, join the freebsd-platforms@FreeBSD.org mailing list. If your machine has a different architecture and you need something right now, we suggest you look at NetBSD or OpenBSD. I want to get a piece of hardware for my FreeBSD system. Which model/brand/type is best? This is discussed continually on the FreeBSD mailing lists. Since hardware changes so quickly, however, we expect this. We still strongly recommend that you read through the Hardware Notes and search the mailing list archives 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. 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. What kind of hard drives does FreeBSD support? FreeBSD supports EIDE and SCSI drives (with a compatible controller; see the next section), and all drives using the original Western Digital 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. Which SCSI controllers are supported? See the complete list in the current Hardware Notes. Which CDROM drives are supported by FreeBSD? Any SCSI drive connected to a supported controller is supported. The following proprietary CDROM interfaces are also supported: Mitsumi LU002 (8bit), LU005 (16bit) and FX001D (16bit 2x Speed). Sony CDU 31/33A Sound Blaster Non-SCSI CDROM Matsushita/Panasonic CDROM ATAPI compatible IDE CDROMs All non-SCSI cards are known to be extremely slow compared to SCSI drives, and some ATAPI CDROMs may not work. As of 2.2 the FreeBSD CDROM from the FreeBSD Mall supports booting directly from the CD. Which CD-RW drives are supported by FreeBSD? FreeBSD supports any ATAPI-compatible IDE CD-R or CD-RW drive. For FreeBSD versions 4.0 and later, see the man page for &man.burncd.8;. For earlier FreeBSD versions, see the examples in /usr/share/examples/atapi. FreeBSD also supports any SCSI CD-R or CD-RW drives. Install and use the cdrecord command from the ports or packages system, and make sure that you have the pass device compiled in your kernel. Does FreeBSD support ZIP drives? FreeBSD supports the SCSI ZIP drive out of the box, of course. The ZIP drive 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. ATAPI (IDE) Zip drives are supported in FreeBSD 2.2.6 and later releases. FreeBSD has contained support for Parallel Port Zip Drives since version 3.0. If you are using a sufficiently up to date version, then you should check that your kernel contains the scbus0, da0, ppbus0, and vp0 drivers (the GENERIC kernel contains everything except vp0). With all these drivers present, the Parallel Port drive should be available as /dev/da0s4. Disks can be mounted using mount /dev/da0s4 /mnt OR (for dos disks) mount_msdos /dev/da0s4 /mnt as appropriate. Also check out the FAQ on removable drives later in this chapter, and the note on formattingin the Administration chapter. Does FreeBSD support JAZ, EZ and other removable drives? Apart from the IDE version of the EZ drive, these are all SCSI devices, so they should all look like SCSI disks to FreeBSD, and the IDE EZ should look like an IDE drive. I am not sure how well FreeBSD supports changing the media out while running. You will of course need to dismount the drive before swapping media, and make sure that any external units are powered on when you boot the system so FreeBSD can see them. See this note on formatting. Which multi-port serial cards are supported by FreeBSD? There is a list of these in the Miscellaneous devices section of the handbook. Some unnamed clone cards have also been known to work, especially those that claim to be AST compatible. Check the &man.sio.4; man page to get more information on configuring such cards. Does FreeBSD support my USB keyboard? USB device support was added to FreeBSD 3.1. However, it is still in preliminary state and may not always work as of version 3.2. If you want to experiment with the USB keyboard support, follow the procedure described below. Use FreeBSD 3.2 or later. Add the following lines to your kernel configuration file, and rebuild the kernel. device uhci device ohci device usb device ukbd options KBD_INSTALL_CDEV In versions of FreeBSD before 4.0, use this instead: controller uhci0 controller ohci0 controller usb0 controller ukbd0 options KBD_INSTALL_CDEV Go to the /dev directory and create device nodes as follows: &prompt.root; cd /dev &prompt.root; ./MAKEDEV kbd0 kbd1 Edit /etc/rc.conf and add the following lines: usbd_enable="YES" usbd_flags="" After the system is rebooted, the AT keyboard becomes /dev/kbd0 and the USB keyboard becomes /dev/kbd1, if both are connected to the system. If there is the USB keyboard only, it will be /dev/ukbd0. 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. &prompt.root; kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null Note that if the USB keyboard is the only keyboard, it is accessed as /dev/kbd0, thus, the command should look like: &prompt.root; kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null /etc/rc.i386 is a good place to add the above command. Once this is done, the USB keyboard should work in the X environment as well without any special settings. Hot-plugging and unplugging of the USB keyboard may not work quite right yet. It is a good idea to connect the keyboard before you start the system and leave it connected until the system is shutdown to avoid troubles. See the &man.ukbd.4; man page for more information. I have an unusual bus mouse. How do I set it up? FreeBSD supports the bus mouse and the InPort bus mouse from such manufactures as Microsoft, Logitech and ATI. The bus device driver is compiled in the GENERIC kernel by default in FreeBSD versions 2.X, but not included in version 3.0 or later. If you are building a custom kernel with the bus mouse driver, make sure to add the following line to the kernel config file In FreeBSD 3.0 or before, add: device mse0 at isa? port 0x23c tty irq5 vector mseintr In FreeBSD 3.X, the line should be: device mse0 at isa? port 0x23c tty irq5 And in FreeBSD 4.X and later, the line should read: device mse0 at isa? port 0x23c irq5 Bus mice usually comes 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; man page for more information. How do I use my PS/2 (mouse port or keyboard) mouse? If you are running a post-2.2.5 version of FreeBSD, the necessary driver, psm, is included and enabled in the kernel. The kernel should detect your PS/2 mouse at boot time. If you are running a previous but relatively recent version of FreeBSD (2.1.x or better) then you can simply enable it in the kernel configuration menu at installation time, otherwise later with at the boot: prompt. It is disabled by default, so you will need to enable it explicitly. If you are running an older version of FreeBSD then you will have to add the following lines to your kernel configuration file and compile a new kernel. In FreeBSD 3.0 or earlier, the line should be: device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr In FreeBSD 3.1 or later, the line should be: device psm0 at isa? tty irq 12 In FreeBSD 4.0 or later, the line should be: device psm0 at atkbdc? irq 12 See the Handbook entry on configuring the kernel if you have no experience with building kernels. Once you have a kernel detecting psm0 correctly at boot time, make sure that an entry for psm0 exists in /dev. You can do this by typing: &prompt.root; cd /dev; sh MAKEDEV psm0 when logged in as root. Is it possible to make use of a mouse in any way outside the X Window system? If you are using the default console driver, syscons, you can use a mouse pointer in text consoles to cut & paste text. Run the mouse daemon, moused, and turn on the mouse pointer in the virtual console: &prompt.root; moused -p /dev/xxxx -t yyyy &prompt.root; vidcontrol -m on Where xxxx is the mouse device name and yyyy is a protocol type for the mouse. See the &man.moused.8; man page for supported protocol types. You may wish to run the mouse daemon automatically when the system starts. In version 2.2.1, set the following variables in /etc/sysconfig. mousedtype="yyyy" mousedport="xxxx" mousedflags="" In versions 2.2.2 to 3.0, set the following variables in /etc/rc.conf. moused_type="yyyy" moused_port="xxxx" moused_flags="" In 3.1 and later, assuming you have a PS/2 mouse, all you need to is add moused_enable="YES" to /etc/rc.conf. In addition, if you would like to be able to use the mouse daemon on all virtual terminals instead of just console at boot-time, add the following to /etc/rc.conf. allscreens_flags="-m on" Staring from FreeBSD 2.2.6, the mouse daemon is capable of determining the correct protocol type automatically unless the mouse is a relatively old serial mouse model. Specify auto the protocol to invoke automatic detection. When the mouse daemon is running, access to the mouse needs to be coordinated between the mouse daemon and other programs such as the X Window. Refer to another section on this issue. How do I cut and paste text with mouse in the text console? Once you get the mouse daemon running (see previous section), hold down the button 1 (left button) and move the mouse to select a region of text. Then, press the button 2 (middle button) or the button 3 (right button) to paste it at the text cursor. In versions 2.2.6 and later, pressing the button 2 will paste the text. Pressing the button 3 will extend the selected region of text. If your mouse does not have the middle button, you may wish to emulate it or remap buttons using moused options. See the &man.moused.8; man page for details. Does FreeBSD support any USB mice? Preliminary USB device support was added to FreeBSD 3.1. It did not always work through early versions of 3.X. As of FreeBSD 4.0, USB devices should work out of the box. If you want to experiment with the USB mouse support under FreeBSD 3.X, follow the procedure described below. Use FreeBSD 3.2 or later. Add the following lines to your kernel configuration file, and rebuild the kernel. device uhci device ohci device usb device ums In versions of FreeBSD before 4.0, use this instead: controller uhci0 controller ohci0 controller usb0 device ums0 Go to the /dev directory and create a device node as follows: &prompt.root; cd /dev &prompt.root; ./MAKEDEV ums0 Edit /etc/rc.conf and add the following lines: moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags="" usbd_enable="YES" usbd_flags="" See the previous section for more detailed discussion on moused. In order to use the USB mouse in the X session, edit XF86Config. If you are using XFree86 3.3.2 or later, be sure to have the following lines in the Pointer section: Device "/dev/sysmouse" Protocol "Auto" If you are using earlier versions of XFree86, be sure to have the following lines in the Pointer section: Device "/dev/sysmouse" Protocol "SysMouse" Refer to another section on the mouse support in the X environment. Hot-plugging and unplugging of the USB mouse may not work quite right yet. It is a good idea connect the mouse before you start the system and leave it connected until the system is shutdown to avoid trouble. My mouse has a fancy wheel and buttons. Can I use them in FreeBSD? The answer is, unfortunately, It depends. 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. For the possible usage of wheels in the X Window environment, refer to that section. Why does my wheel-equipped PS/2 mouse cause my mouse cursor to jump around the screen? The PS/2 mouse driver psm in FreeBSD versions 3.2 or earlier has difficulty with some wheel mice, including Logitech model M-S48 and its OEM siblings. Apply the following patch to /sys/i386/isa/psm.c and rebuild the kernel. Index: psm.c =================================================================== RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v retrieving revision 1.60.2.1 retrieving revision 1.60.2.2 diff -u -r1.60.2.1 -r1.60.2.2 --- psm.c 1999/06/03 12:41:13 1.60.2.1 +++ psm.c 1999/07/12 13:40:52 1.60.2.2 @@ -959,14 +959,28 @@ sc->mode.packetsize = vendortype[i].packetsize; /* set mouse parameters */ +#if 0 + /* + * A version of Logitech FirstMouse+ won't report wheel movement, + * if SET_DEFAULTS is sent... Don't use this command. + * This fix was found by Takashi Nishida. + */ i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS); if (verbose >= 2) printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i); +#endif if (sc->config & PSM_CONFIG_RESOLUTION) { sc->mode.resolution = set_mouse_resolution(sc->kbdc, - (sc->config & PSM_CONFIG_RESOLUTION) - 1); + (sc->config & PSM_CONFIG_RESOLUTION) - 1); + } else if (sc->mode.resolution >= 0) { + sc->mode.resolution + = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution); + } + if (sc->mode.rate > 0) { + sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate); } + set_mouse_scaling(sc->kbdc, 1); /* request a data packet and extract sync. bits */ if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) { Versions later than 3.2 should be all right. How do I use the mouse/trackball/touchpad on my laptop? Please refer to the answer to the previous question. Also check out the Mobile Computing page. What types of tape drives are supported? FreeBSD supports SCSI and QIC-36 (with a QIC-02 interface). This includes 8-mm (aka Exabyte) and DAT drives. Some of the early 8-mm drives are not quite compatible with SCSI-2, and may not work well with FreeBSD. Does FreeBSD support tape changers? FreeBSD 2.2 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; man page. If you are not using AMANDA 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. Which sound cards are supported by FreeBSD? FreeBSD supports the SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib and Gravis UltraSound sound cards. There is also limited support for MPU-401 and compatible MIDI cards. Cards conforming to the Microsoft Sound System specification are also supported through the pcm driver. 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. Workarounds for no sound from es1370 with pcm driver? You can run the following command every time the machine booted up: &prompt.root; mixer pcm 100 vol 100 cd 100 Which network cards does FreeBSD support? See the Ethernet cards section of the handbook for a more complete list. I do not have a math co-processor - is that bad? This will only affect 386/486SX/486SLC owners - other machines will have one built into the CPU. In general this will not cause any problems, but there are circumstances where you will take a hit, either in performance or accuracy of the math emulation code (see the section on FP emulation). In particular, drawing arcs in X will be VERY slow. It is highly recommended that you buy a math co-processor; it is well worth it. Some math co-processors are better than others. It pains us to say it, but nobody ever got fired for buying Intel. Unless you are sure it works with FreeBSD, beware of clones. What other devices does FreeBSD support? See the Handbook for the list of other devices supported. Does FreeBSD support power management on my laptop? FreeBSD supports APM on certain machines. Please look in the LINT kernel config file, searching for the APM keyword. Further information can be found in &man.apm.4;. Why does my Micron system hang at boot time? 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. Disable the Plug and Play Operating System flag in the BIOS to work around this problem. More information can be found at http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron Why does FreeBSD not recognize my Adaptec SCSI controller card? The newer AIC789x series Adaptec chips are supported under the CAM SCSI framework which made its debut in 3.0. Patches against 2.2-STABLE are in ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/. A CAM-enhanced boot floppy is available at http://people.FreeBSD.org/~abial/cam-boot/. In both cases read the README before beginning. Why is FreeBSD not finding my internal Plug & Play modem? You will need to add the modem's PnP ID to the PnP ID list in the serial driver. To enable Plug & Play support, compile a new kernel with controller pnp0 in the configuration file, then reboot the system. The kernel will print the PnP IDs of all the devices it finds. Copy the PnP ID from the modem to the table in /sys/i386/isa/sio.c, at about line 2777. Look for the string SUP1310 in the structure siopnp_ids[] to find the table. Build the kernel again, install, reboot, and your modem should be found. You may have to manually configure the PnP devices using the pnp command in the boot-time configuration with a command like pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8 to make the modem show. Does FreeBSD support software modems, such as Winmodems? FreeBSD supports many software modems via add-on software. The comms/ltmdm port adds support for modems based on the very popular Lucent LT chipset. The comms/mwavem port supports the modem in IBM Thinkpad 600 and 700 laptops. You cannot install FreeBSD via a software modem; this software must be installed after the OS is installed. How do I get the boot: prompt to show on the serial console? Build a kernel with options COMCONSOLE. Create /boot.config and place as the only text in the file. Unplug the keyboard from the system. See /usr/src/sys/i386/boot/biosboot/README.serial for information. Why does my 3Com PCI network card not work with my Micron computer? 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. To work around this problem, disable the Plug and Play Operating System flag in the BIOS. More information on this problem is available at URL: http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron Does FreeBSD support Symmetric Multiprocessing (SMP)? SMP is supported in 3.0-STABLE and later releases only. SMP is not enabled in the GENERIC kernel, so you will have to recompile your kernel to enable SMP. Take a look at /sys/i386/conf/LINT to figure out what options to put in your kernel config file. The boot floppy hangs on a system with an ASUS K7V motherboard. How do I fix this? Go in to the BIOS setup and disable the boot virus protection. Troubleshooting What do I do when I have bad blocks on my hard drive? With SCSI drives, the drive should be capable of re-mapping these automatically. However, many drives are shipped with this feature disabled, for some mysterious reason... To enable this, you will need to edit the first device page mode, which can be done on FreeBSD by giving the command (as root) &prompt.root; scsi -f /dev/rsd0c -m 1 -e -P 3 and changing the values of AWRE and ARRE from 0 to 1:- AWRE (Auto Write Reallocation Enbld): 1 ARRE (Auto Read Reallocation Enbld): 1 The following paragraphs were submitted by Ted Mittelstaedt tedm@toybox.placo.com: For IDE drives, any bad block is usually a sign of potential trouble. All modern IDE drives come with internal bad-block remapping turned on. All IDE hard drive manufacturers today offer extensive warranties and will replace drives with bad blocks on them. If you still want to attempt to rescue an IDE drive with bad blocks, you can attempt to download the IDE drive manufacturer's IDE diagnostic program, and run this against the drive. Sometimes these programs can be set to force the drive electronics to rescan the drive for bad blocks and lock them out. For ESDI, RLL and MFM drives, bad blocks are a normal part of the drive and are no sign of trouble, generally. With a PC, the disk drive controller card and BIOS handle the task of locking out bad sectors. This is fine for operating systems like DOS that use BIOS code to access the disk. However, FreeBSD's disk driver does not go through BIOS, therefore a mechanism, bad144, exists that replaces this functionality. bad144 only works with the wd driver (which means it is not supported in FreeBSD 4.0), it is NOT able to be used with SCSI. bad144 works by entering all bad sectors found into a special file. One caveat with bad144 - the bad block special file is placed on the last track of the disk. As this file may possibly contain a listing for a bad sector that would occur near the beginning of the disk, where the /kernel file might be located, it therefore must be accessible to the bootstrap program that uses BIOS calls to read the kernel file. This means that the disk with bad144 used on it must not exceed 1024 cylinders, 16 heads, and 63 sectors. This places an effective limit of 500MB on a disk that is mapped with bad144. To use bad144, simply set the Bad Block scanning to ON in the FreeBSD fdisk screen during the initial install. This works up through FreeBSD 2.2.7. The disk must have less than 1024 cylinders. It is generally recommended that the disk drive has been in operation for at least 4 hours prior to this to allow for thermal expansion and track wandering. If the disk has more than 1024 cylinders (such as a large ESDI drive) the ESDI controller uses a special translation mode to make it work under DOS. The wd driver understands about these translation modes, IF you enter the translated geometry with the set geometry command in fdisk. You must also NOT use the dangerously dedicated mode of creating the FreeBSD partition, as this ignores the geometry. Also, even though fdisk will use your overridden geometry, it still knows the true size of the disk, and will attempt to create a too large FreeBSD partition. If the disk geometry is changed to the translated geometry, the partition MUST be manually created with the number of blocks. A quick trick to use is to set up the large ESDI disk with the ESDI controller, boot it with a DOS disk and format it with a DOS partition. Then, boot the FreeBSD install and in the fdisk screen, read off and write down the blocksize and block numbers for the DOS partition. Then, reset the geometry to the same that DOS uses, delete the DOS partition, and create a cooperative FreeBSD partition using the blocksize you recorded earlier. Then, set the partition bootable and turn on bad block scanning. During the actual install, bad144 will run first, before any filesystems are created. (you can view this with an Alt-F2) If it has any trouble creating the badsector file, you have set too large a disk geometry - reboot the system and start all over again (including repartitioning and reformatting with DOS). If remapping is enabled and you are seeing bad blocks, consider replacing the drive. The bad blocks will only get worse as time goes on. Why does FreeBSD not recognize my Bustek 742a EISA SCSI controller? This info is specific to the 742a but may also cover other Buslogic cards. (Bustek = Buslogic) There are 2 general versions of the 742a card. They are hardware revisions A-G, and revisions H - onwards. The revision letter is located after the Assembly number on the edge of the card. The 742a has 2 ROM chips on it, one is the BIOS chip and the other is the Firmware chip. FreeBSD does not care what version of BIOS chip you have but it does care about what version of firmware chip. Buslogic will send upgrade ROMS out if you call their tech support dept. The BIOS and Firmware chips are shipped as a matched pair. You must have the most current Firmware ROM in your adapter card for your hardware revision. The REV A-G cards can only accept BIOS/Firmware sets up to 2.41/2.21. The REV H- up cards can accept the most current BIOS/Firmware sets of 4.70/3.37. The difference between the firmware sets is that the 3.37 firmware supports round robin The Buslogic cards also have a serial number on them. If you have a old hardware revision card you can call the Buslogic RMA department and give them the serial number and attempt to exchange the card for a newer hardware revision. If the card is young enough they will do so. FreeBSD 2.1 only supports Firmware revisions 2.21 onward. If you have a Firmware revision older than this your card will not be recognized as a Buslogic card. It may be recognized as an Adaptec 1540, however. The early Buslogic firmware contains an AHA1540 emulation mode. This is not a good thing for an EISA card, however. If you have an old hardware revision card and you obtain the 2.21 firmware for it, you will need to check the position of jumper W1 to B-C, the default is A-B. Why does FreeBSD not detect my HP Netserver's SCSI controller? 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 true 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. So now, the best you can do is to pretend there is no address range clash :), by bumping the kernel option EISA_SLOTS to a value of 12. Configure and compile a kernel, as described in the Handbook entry on configuring the kernel. 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 UserConfig. Do not use the visual interface, but the plain command-line interface there. Simply type eisa 12 quit at the prompt, and install your system as usual. While it is recommended you compile and install a custom kernel anyway. Hopefully, future versions will have a proper fix for this problem. You cannot use a dangerously dedicated disk with an HP Netserver. See this note for more info. What is going on with my CMD640 IDE controller? It is broken. It cannot handle commands on both channels simultaneously. There is a workaround available now and it is enabled automatically if your system uses this chip. For the details refer to the manual page of the disk driver (man 4 wd). If you are already running FreeBSD 2.2.1 or 2.2.2 with a CMD640 IDE controller and you want to use the second channel, build a new kernel with options "CMD640" enabled. This is the default for 2.2.5 and later. I keep seeing messages like ed1: timeout. What do these messages mean? This is usually caused by an interrupt conflict (e.g., two boards using the same IRQ). FreeBSD prior to 2.0.5R used to be tolerant of this, and the network driver would still function in the presence of IRQ conflicts. However, with 2.0.5R and later, IRQ conflicts are no longer tolerated. Boot with the -c option and change the ed0/de0/... entry to match your board. 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. Some NE2000 compatible cards will give this error if there is no link on the UTP port or if the cable is disconnected. Why did my 3COM 3C509 card stop working for no apparent reason? This card has a bad habit of losing its configuration information. Refresh your card's settings with the DOS utility 3c5x9.exe. My parallel printer is ridiculously slow. What can I do? If the only problem is that the printer is terribly slow, try changing your printer port mode as discussed in the Printer Setup section of the Handbook. Why do my programs occasionally die with Signal 11 errors? 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. These problems can usually be attributed to either: If the problem is occurring only in a specific application that you are developing yourself it is probably a bug in your code. 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). In particular, a dead giveaway that this is not 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. For example, suppose you are running make buildworld, and the compile fails while trying to compile ls.c in to ls.o. If you then run make buildworld 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. What you should do: 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. In the second case you need to verify that it is not your hardware at fault. Common causes of this include: 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). 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. 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. 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. 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 RAM Speed: Turbo option, or similar in the BIOS will cause strange behaviour. A possible idea is to set to BIOS defaults, but it might be worth noting down your settings first! 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). 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. 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. There is an extensive FAQ on this at the SIG11 problem FAQ My system crashes with either Fatal trap 12: page fault in kernel mode, or panic:, and spits out a bunch of information. What should I do? 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 kernel panics, 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. Why does the screen go black and lose sync when I boot? This is a known problem with the ATI Mach 64 video card. The problem is that this card uses address 2e8, 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 even if you disable sio3 (the fourth port) which normally uses this address. Until the bug has been fixed, you can use this workaround: Enter at the boot prompt. (This will put the kernel into configuration mode). Disable sio0, sio1, sio2 and sio3 (all of them). This way the sio driver does not get activated -> no problems. Type exit to continue booting. If you want to be able to use your serial ports, you will have to build a new kernel with the following modification: in /usr/src/sys/i386/isa/sio.c find the one occurrence of the string 0x2e8 and remove that string and the preceding comma (keep the trailing comma). Now follow the normal procedure of building a new kernel. 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. Why does FreeBSD only use 64 MB of RAM when my system has 128 MB of RAM installed? 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. 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. options "MAXMEM=n" Where n is your memory in Kilobytes. For a 128 MB machine, you would want to use 131072. Why does FreeBSD 2.0 panic with kmem_map too small!? The message may also be mb_map too small! 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 adding: options "NMBCLUSTERS=n" to your kernel config file, where n is a number in the range 512-4096, depending on the number of concurrent TCP connections you need to support. I would recommend trying 2048 - this should get rid of the panic completely. You can monitor the number of mbuf clusters allocated/in use on the system with netstat -m (see &man.netstat.1;). The default value for NMBCLUSTERS is 512 + MAXUSERS * 16. Why do I get the error /kernel: proc: table is full? The FreeBSD kernel will only allow a certain number of processes to exist at one time. The number is based on the MAXUSERS option in the kernel configuration. MAXUSERS also affects various other in-kernel limits, such as network buffers (see this earlier question). If your machine is heavily loaded, you probably want to increase MAXUSERS. This will increase these other system limits in addition to the maximum number of processes. After FreeBSD 4.4, MAXUSERS became a tunable value that could be set with kern.maxusers in /boot/loader.conf. In earlier versions of FreeBSD, you need to adjust MAXUSERS in your kernel configuration. If your machine is lightly loaded, and you are simply running a very large number of processes, you can adjust this with the kern.maxproc sysctl. If these processes are being run by a single user, you will also need to adjust kern.maxprocperuid to be one less than your new kern.maxproc value. (It must be at least one less because one system program, &man.init.8;, must always be running.) To make a sysctl permanent across reboots, set this in /etc/sysctl.conf in recent versions of FreeBSD, or /etc/rc.local in older versions. Why do I get an error reading CMAP busy when rebooting with a new kernel? The logic that attempts to detect an out of date /var/db/kvm_*.db files sometimes fails and using a mismatched file can sometimes lead to panics. If this happens, reboot single-user and do: &prompt.root; rm /var/db/kvm_*.db What does the message ahc0: brkadrint, Illegal Host Access at seqaddr 0x0 mean? This is a conflict with an Ultrastor SCSI Host Adapter. During the boot process enter the kernel configuration menu and disable uha0, which is causing the problem. When I boot my system, I get the error ahc0: illegal cable configuration. My cabling is correct. What is going on? 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. Why does Sendmail give me an error reading mail loops back to myself? This is answered in the sendmail FAQ as follows:- * 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/sendmail.cw (if you are using FEATURE(use_cw_file)) or add "Cw domain.net" to /etc/sendmail.cf. The current version of the sendmail FAQ is no longer maintained with the sendmail release. It is however regularly posted to comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers, and news.answers. You can also receive a copy via email by sending a message to mail-server@rtfm.mit.edu with the command send usenet/news.answers/mail/sendmail-faq as the body of the message. Why do full screen applications on remote machines misbehave? The remote machine may be setting your terminal type to something other than the cons25 terminal type required by the FreeBSD console. There are a number of possible work-arounds for this problem: After logging on to the remote machine, set your TERM shell variable to ansi or sco if the remote machine knows about these terminal types. Use a VT100 emulator like screen at the FreeBSD console. screen offers you the ability to run multiple concurrent sessions from one terminal, and is a neat program in its own right. Each screen window behaves like a VT100 terminal, so the TERM variable at the remote end should be set to vt100. Install the cons25 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. Fire up an X server at the FreeBSD end and login to the remote machine using an X based terminal emulator such as xterm or rxvt. The TERM variable at the remote host should be set to xterm or vt100. Why does my machine print calcru: negative time...? This can be caused by various hardware and/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. A side effect of this problem are dying processes with the message SIGXCPU exceeded cpu time limit. For FreeBSD 3.0 and later from Nov 29, 1998 forward: If the problem cannot be fixed otherwise the solution is to set this sysctl variable: &prompt.root; sysctl -w kern.timecounter.method=1 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 NTIMECOUNTER option in your kernel to increasingly large values. If by the time you have reached NTIMECOUNTER=20 the problem is not solved, interrupts are too hosed on your machine for reliable time keeping. I see pcm0 not found or my sound card is found as pcm1 but I have device pcm0 in my kernel config file. What is going on? This occurs in FreeBSD 3.x with PCI sound cards. The pcm0 device is reserved exclusively for ISA-based cards so, if you have a PCI card, then you will see this error, and your card will appear as pcm1. You cannot remove the warning by simply changing the line in the kernel config file to device pcm1 as this will result in pcm1 being reserved for ISA cards and your PCI card being found as pcm2 (along with the warning pcm1 not found). If you have a PCI sound card you will also have to make the snd1 device rather than snd0: &prompt.root; cd /dev &prompt.root; ./MAKEDEV snd1 This situation does not arise in FreeBSD 4.x as a lot of work has been done to make it more PnP-centric and the pcm0 device is no longer reserved exclusively for ISA cards Why is my PnP card no longer found (or found as unknown) since upgrading to FreeBSD 4.x? FreeBSD 4.x is now much more PnP-centric 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. The reasons for this behaviour 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 [] have been added to clarify the context.
The PNP bios preconfigured it [the modem] and left it laying around in port space, so [in 3.x] the old-style ISA probes found it there. Under 4.0, the ISA code is much more PnP-centric. It was possible [in 3.x] for an ISA probe to find a stray 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 id's for supported PnP hardware. Making this more user tweakable is on the TODO list.
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: &prompt.root; pnpinfo 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) [more TAG lines elided] 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 The information you require is in the Vendor ID 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. This information needs adding to the file /usr/src/sys/isa/sio.c. You should first make a backup of sio.c 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 sio.c and search for the line static struct isa_pnp_id sio_ids[] = { 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 Device Description from the output of &man.pnpinfo.8;: {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 */ 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 sio device as it was under FreeBSD 3.x
Why do I get the error nlist failed when running, for example, top or systat? 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: Your kernel and userland are not synchronized (i.e., you built a new kernel but did not do an installworld, 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 /usr/src/UPDATING for the correct sequence). You are not using /boot/loader to load your kernel, but doing it directly from boot2 (see &man.boot.8;). While there is nothing wrong with bypassing /boot/loader, it generally does a better job of making the kernel symbols available to user applications. Why does it take so long to connect to my computer via ssh or telnet? 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). 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. 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. 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. 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, www.yahoo.com. If it does not work, that is your problem. What does stray IRQ mean? 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. One has three options for dealing with this: Live with the warnings. All except the first 5 per irq are suppressed anyway. Break the warnings by changing 5 to 0 in isa_strayintr() so that all the warnings are suppressed. 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. Why does file: table is full show up repeatedly in dmesg? This error message indicates you have exhausted the number of available file descriptors on your system. Please see the kern.maxfiles section of the Tuning Kernel Limits section of the Handbook for a discussion and solution. Why does the clock on my laptop keep incorrect time? Your laptop has two or more clocks, and FreeBSD has chosen to use the wrong one. Run &man.dmesg.8;, and check for lines that contain Timecounter. The last line printed is the one that FreeBSD chose, and will almost certainly be TSC. &prompt.root; dmesg | grep Timecounter Timecounter "i8254" frequency 1193182 Hz Timecounter "TSC" frequency 595573479 Hz You can confirm this by checking the kern.timecounter.hardware &man.sysctl.3;. &prompt.root; sysctl kern.timecounter.hardware kern.timecounter.hardware: TSC The BIOS may modify the TSC clock—perhaps to change the speed of the processor when running from batteries, or going in to a power saving mode, but FreeBSD is unaware of these adjustments, and appears to gain or lose time. In this example, the i8254 clock is also available, and can be selected by writing its name to the kern.timecounter.hardware &man.sysctl.3;. &prompt.root; sysctl -w kern.timecounter.hardware=i8254 kern.timecounter.hardware: TSC -> i8254 Your laptop should now start keeping more accurate time. To have this change automatically run at boot time, add the following line to /etc/sysctl.conf. kern.timecounter.hardware=i8254 Why does FreeBSD's boot loader display Read error and stop after the BIOS screen? 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. 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. Within &man.sysinstall.8;'s fdisk, hit G to set the drive geometry. A dialog will pop up requesting the number of cylinders, heads and sectors. Type the numbers found from the BIOS separates by forward slashes. 5000 cylinders, 250 sectors and 60 sectors would be entered as 5000/250/60 Press enter to set the values, and hit W to write the new partition table to the drive. Another operating system destroyed my Boot Manager. How do I get it back? Enter &man.sysinstall.8; and choose Configure, then Fdisk. Select the disk the Boot Manager resided on with the space key. Press W to write changes to the drive. A prompt will appear asking which boot loader to install. Select this, and it will be restored. What does the error swap_pager: indefinite wait buffer: mean? 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 /var/log/messages and in the output of dmesg. Otherwise, check your cables and connections.
Commercial Applications 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 the Vendors page for a longer list. Where can I get an Office Suite for FreeBSD? The FreeBSD Mall offers a FreeBSD native version of VistaSource ApplixWare 5. ApplixWare is a rich full-featured, commercial Office Suite for FreeBSD containing a word processor, spreadsheet, presentation program, vector drawing package, and other applications. ApplixWare is offered as part of the FreeBSD Mall's BSD Desktop Edition. The Linux version of StarOffice works flawlessly on FreeBSD. The easiest way to install the Linux version of StarOffice is through the FreeBSD Ports collection. Future versions of the open-source OpenOffice suite should work as well. Where can I get Motif for FreeBSD? The Open Group has released the source code to Motif 2.1.30. You can install the open-motif package, or compile it from ports. Refer to the ports section of the Handbook for more information on how to do this. The Open Motif distribution only allows redistribution if it is running on an open source operating system. 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 Apps2go for the least expensive ELF Motif 2.1.20 distribution for FreeBSD (either i386 or Alpha). There are two distributions, the developement edition and the runtime edition (for much less). These distributions includes: OSF/Motif manager, xmbind, panner, wsm. Development kit with uil, mrm, xm, xmcxx, include and Imake files. Static and dynamic ELF libraries (for use with FreeBSD 3.0 and above). Demonstration applets. 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 Apps2go. This is currently a FTP only download. More info Apps2go WWW page or sales@apps2go.com or support@apps2go.com or phone (817) 431 8775 or +1 817 431-8775 Contact Metro Link for an either ELF or a.out Motif 2.1 distribution for FreeBSD. This distribution includes: OSF/Motif manager, xmbind, panner, wsm. Development kit with uil, mrm, xm, xmcxx, include and Imake files. Static and dynamic libraries (specify ELF for use with FreeBSD 3.0 and later; or a.out for use with FreeBSD 2.2.8 and earlier). Demonstration applets. Preformatted man pages. Be sure to specify that you want the FreeBSD version of Motif when ordering! Versions for Linux are also sold by Metro Link. This is available on either a CDROM or for FTP download. Contact Xi Graphics for an a.out Motif 2.0 distribution for FreeBSD. This distribution includes: OSF/Motif manager, xmbind, panner, wsm. Development kit with uil, mrm, xm, xmcxx, include and Imake files. Static and dynamic libraries (for use with FreeBSD 2.2.8 and earlier). Demonstration applets. Preformatted man pages. Be sure to specify that you want the FreeBSD version of Motif when ordering! Versions for BSDI and Linux are also sold by Xi Graphics. This is currently a 4 diskette set... in the future this will change to a unified CD distribution like their CDE. Where can I get CDE for FreeBSD? Xi Graphics used to sell CDE for FreeBSD, but no longer do. KDE is an open source X11 desktop which is similar to CDE in many respects. You might also like the look and feel of xfce. KDE and xfce are both in the ports system. Are there any commercial high-performance X servers? Yes, Xi Graphics and Metro Link sell Accelerated-X product for FreeBSD and other Intel based systems. The Metro Link offering is a high performance X Server that offers easy configuration using the FreeBSD Package suite of tools, support for multiple concurrent video boards and is distributed in binary form only, in a convenient FTP download. Not to mention the Metro Link offering is available at the very reasonable price of $39. Metro Link also sells both ELF and a.out Motif for FreeBSD (see above). More info Metro Link WWW page or sales@metrolink.com or tech@metrolink.com or phone (954) 938-0283 or +1 954 938-0283 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. There is a free compatibility demo of version 5.0 available. Xi Graphics also sells Motif and CDE for FreeBSD (see above). More info Xi Graphics WWW page or sales@xig.com or support@xig.com or phone (800) 946 7433 or +1 303 298-7478. Are there any Database systems for FreeBSD? Yes! See the Commercial Vendors section of FreeBSD's Web site. Also see the Databases section of the Ports collection. Can I run Oracle on FreeBSD? Yes. The following pages tell you exactly how to setup Linux-Oracle on FreeBSD: http://www.scc.nl/~marcel/howto-oracle.html http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd User Applications So, where are all the user applications? Please take a look at the ports page 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 freebsd-announce mailing list for periodic updates on new entries. Most ports should be available for the 2.2, 3.x and 4.x branches, and many of them should work on 2.1.x systems as well. Each time a FreeBSD release is made, a snapshot of the ports tree at the time of release in also included in the ports/ directory. We also support the concept of a package, essentially no more than a gzipped binary distribution with a little extra intelligence embedded in it for doing whatever custom installation work is required. A package can be installed and uninstalled again easily without having to know the gory details of which files it includes. Use the package installation menu in /stand/sysinstall (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 .tgz suffix and CDROM distribution people will have a packages/All 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: for 2.2.8-RELEASE/2.2.8-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/ for 3.X-RELEASE/3.X-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/ for 4.X-RELEASE/4-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/ for 5.X-CURRENT ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current or your nearest local mirror site. Note that all ports may not be available as packages since new ones are constantly being added. It is always a good idea to check back periodically to see which packages are available at the ftp.FreeBSD.org master site. Where do I find libc.so.3.0? You are trying to run a package built on 2.2 and later on a 2.1.x system. Please take a look at the previous section and get the correct port/package for your system. Why do I get a message reading Error: can't find libc.so.4.0? You accidently downloaded packages meant for 4.X and 5.X systems and attempted to install them on your 2.X or 3.X FreeBSD system. Please download the correct version of the packages. Why does ghostscript give lots of errors with my 386/486SX? You do not have a math co-processor, right? You will need to add the alternative math emulator to your kernel; you do this by adding the following to your kernel config file and it will be compiled in. options GPL_MATH_EMULATE You will need to remove the MATH_EMULATE option when you do this. Why do SCO/iBCS2 applications bomb on socksys? (FreeBSD 3.0 and older only). You first need to edit the /etc/sysconfig (or /etc/rc.conf, see &man.rc.conf.5;) file in the last section to change the following variable to YES: # Set to YES if you want ibcs2 (SCO) emulation loaded at startup ibcs2=NO It will load the ibcs2 kernel module at startup. You will then need to set up /compat/ibcs2/dev to look like: lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys -rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx You just need socksys to go to /dev/null (see &man.null.4;) to fake the open & close. The code in -CURRENT will handle the rest. This is much cleaner than the way it was done before. If you want the spx driver for a local socket X connection, define SPX_HACK when you compile the system. How do I configure INN (Internet News) for my machine? After installing the news/inn package or port, an excellent place to start is Dave Barr's INN Page where you will find the INN FAQ. What version of Microsoft FrontPage should I get? Use the Port, Luke! A pre-patched version of Apache, apache13-fp, is available in the ports tree. Does FreeBSD support Java? Yes. Please see http://www.FreeBSD.org/java/. Why can I not build this port on my 3.X-STABLE machine? If you are running a FreeBSD version that lags significantly behind -CURRENT or -STABLE, you may need a ports upgrade kit from http://www.FreeBSD.org/ports/. 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. Where do I find ld.so? a.out applications like Netscape Navigator require a.out libraries. A version of FreeBSD built with ELF libraries does not install them by default. You will get complaints about not having /usr/libexec/ld.so if this is the case on your system. These libraries are available as an add-on in the compat22 distribution. Use &man.sysinstall.8; to install them. You can also install them from the FreeBSD source code: &prompt.root; cd /usr/src/lib/compat/compat22 &prompt.root; make install clean If you want to install the latest compat22 libraries whenever you run make world, edit /etc/make.conf to include COMPAT22=YES. Old compatability libraries change rarely, if ever, so this is not generally needed. Also see the ERRATAs for 3.1-RELEASE and 3.2-RELEASE. I updated the sources, now how do I update my installed ports? 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. The &man.pkg.version.1; command can generate a script that will update installed ports to the latest version in the ports tree. &prompt.root; pkg_version > /tmp/myscript The output script must be edited by hand before you use it. Current versions of &man.pkg.version.1; force this by inserting an &man.exit.1; at the beginning of the script. 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. If you have the disk space, you can use the portupgrade tool to automate all of this. portupgrade includes various tools to simplify package handling. It is available under sysutils/portupgrade. Since it is written in Ruby, portupgrade is an unlikely candidate for integration with the main FreeBSD tree. That should not stop anyone from using it, however. 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 weekly_status_pkg_enable="YES" in /etc/periodic.conf. Why is /bin/sh so minimal? Why does FreeBSD not use bash or another shell? Because POSIX says that there shall be such a shell. 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. The existing implementation is our best effort at meeting as many of these requirements simultaneously as we can. In order to keep /bin/sh 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 VSZ and RSS columns in a ps -u listing.) Why do Netscape and Opera take so long to start? 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. Kernel Configuration I would like to customize my kernel. Is it difficult? Not at all! Check out the kernel config section of the Handbook. We recommend that you make a dated snapshot of your new /kernel called /kernel.YYMMDD after you get it working properly. Also back up your new /modules directory to /modules.YYMMDD. 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 kernel.GENERIC. This is particularly important if you are now booting from a controller that GENERIC does not support. My kernel compiles fail because _hw_float is missing. How do I solve this problem? Let me guess. You removed npx0 (see &man.npx.4;) from your kernel configuration file because you do not have a math co-processor, right? Wrong! :-) The npx0 is MANDATORY. Even if you do not have a mathematic co-processor, you must include the npx0 device. Why is my kernel so big (over 10MB)? Chances are, you compiled your kernel in debug mode. Kernels built in debug mode contain many symbols that are used for debugging, thus greatly increasing the size of the kernel. Note that if you running a FreeBSD 3.0 or later system, 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. 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: You do not have a line in your kernel configuration file that reads: makeoptions DEBUG=-g You are not running &man.config.8; with the option. Both of the above situations 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. Why do I get interrupt conflicts with multi-port serial code? 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? The problem here is that FreeBSD has code built-in to keep the kernel from getting trashed due to hardware or software conflicts. The way to fix this is to leave out the IRQ settings on all but one port. Here is a example: # # 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 Why does every kernel I try to build fail to compile, even GENERIC? There are a number of possible causes for this problem. They are, in no particular order: You are not using the new make buildkernel and make installkernel 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 /usr/src/UPDATING file, paying particular attention to the COMMON ITEMS section at the end. You are using the new make buildkernel and make installkernel targets, but you failed to assert the completion of the make buildworld target. The make buildkernel target relies on files generated by the make buildworld target to complete its job correctly. Even if you are trying to build FreeBSD-STABLE, 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 FreeBSD-STABLE 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. Disks, Filesystems, and Boot Loaders How can I add my new hard disk to my FreeBSD system? See the Disk Formatting Tutorial at www.FreeBSD.org. How do I move my system over to my huge new disk? 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. Should you decide not to do a fresh install, you need to partition and label the new disk with either /stand/sysinstall, 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 formatting-media article for details on this process. 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 /dev), 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. You should never use anything but &man.dump.8; and &man.restore.8; to move the root file system. 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: newfs the new partition. mount it on a temporary mount point. cd to that directory. dump the old partition, piping output to the new one. For example, if you are going to move root to /dev/ad1s1a, with /mnt as the temporary mount point, it is: &prompt.root; newfs /dev/ad1s1a &prompt.root; mount /dev/ad1s1a /mnt &prompt.root; cd /mnt &prompt.root; dump 0af - / | restore xf - Rearranging your partitions with dump takes a bit more work. To merge a partition like /var 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: &prompt.root; newfs /dev/ad1s1a &prompt.root; mount /dev/ad1s1a /mnt &prompt.root; cd /mnt &prompt.root; dump 0af - / | restore xf - &prompt.root; cd var &prompt.root; dump 0af - /var | restore xf - To split a directory from its parent, say putting /var 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: &prompt.root; newfs /dev/ad1s1a &prompt.root; newfs /dev/ad1s1d &prompt.root; mount /dev/ad1s1a /mnt &prompt.root; mkdir /mnt/var &prompt.root; mount /dev/ad1s1d /mnt/var &prompt.root; cd /mnt &prompt.root; dump 0af - / | restore xf - 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. Will a dangerously dedicated disk endanger my health? The installation procedure allows you to chose two different methods in partitioning your harddisk(s). The default way makes it compatible with other operating systems on the same machine, by using fdisk table entries (called slices in FreeBSD), with a FreeBSD slice that employs partitions of its own. Optionally, one can chose to install a boot-selector to switch between the possible operating systems on the disk(s). The alternative uses the entire disk for FreeBSD, and makes no attempt to be compatible with other operating systems. So why it is called dangerous? 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 dangerously dedicated disk's layout is known to confuse many BIOSsen, including those from AWARD (eg. 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 read error message printed by the FreeBSD bootstrap when it cannot find itself, as well as system lockups when booting. 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. Dangerously dedicated mode's origins lie in a desire to avoid one of the most common problems plaguing new FreeBSD installers - matching the BIOS geometry numbers for a disk to the disk itself. Geometry 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. Dangerously dedicated 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. So, how do you avoid the need for DD 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 at the boot: prompt, or using boot -v 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. 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 g 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. 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 DD mode at all. If, however, you are still greeted with the dreaded read error message when you try to boot, it is time to cross your fingers and go for it - there is nothing left to lose. To return a dangerously dedicated disk for normal PC use, there are basically two options. The first is, you write enough NULL bytes over the MBR to make any subsequent installation believe this to be a blank disk. You can do this for example with &prompt.root; dd if=/dev/zero of=/dev/rda0 count=15 Alternatively, the undocumented DOS feature C:\> fdisk /mbr will to install a new master boot record as well, thus clobbering the BSD bootstrap. Which partitions can safely use softupdates? I have heard that softupdates on / can cause problems. Short answer: you can usually use softupdates safely on all partitions. Long answer: There used to be some concern over using softupdates on the root partition. Softupdates has two characteristics that caused this. First, a softupdates 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, softupdates can cause temporary space shortages. When using softupdates, 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. 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 softupdates. These issues affect all partitions using softupdates. So, what does this mean for the root partition? Vital information on the root partition changes very rarely. Files such as /kernel and the contents of /etc 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 softupdates on the root filesystem! / is traditionally one of the smallest partitions. By default, FreeBSD puts the /tmp directory on /. If you have a busy /tmp, you might see intermittent space problems. Symlinking /tmp to /var/tmp will solve this problem. What is inappropriate about my ccd? The symptom of this is: &prompt.root; ccdconfig -C ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format This usually happens when you are trying to concatenate the c partitions, which default to type unused. The ccd driver requires the underlying partition type to be FS_BSDFFS. Edit the disklabel of the disks you are trying to concatenate and change the types of partitions to 4.2BSD. Why can I not edit the disklabel on my ccd? The symptom of this is: &prompt.root; disklabel ccd0 (it prints something sensible here, so let us try to edit it) &prompt.root; disklabel -e ccd0 (edit, save, quit) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label This is because the disklabel returned by ccd is actually a fake one that is not really on the disk. You can solve this problem by writing it back explicitly, as in: &prompt.root; disklabel ccd0 > /tmp/disklabel.tmp &prompt.root; disklabel -Rr ccd0 /tmp/disklabel.tmp &prompt.root; disklabel -e ccd0 (this will work now) Can I mount other foreign filesystems under FreeBSD? Digital UNIX UFS CDROMs can be mounted directly on FreeBSD. Mounting disk partitions from Digital UNIX and other systems that support UFS may be more complex, depending on the details of the disk partitioning for the operating system in question. Linux As of 2.2, FreeBSD supports ext2fs partitions. See &man.mount.ext2fs.8; for more information. NT A read-only NTFS driver exists for FreeBSD. For more information, see this tutorial by Mark Ovens at http://ukug.uk.FreeBSD.org/~mark/ntfs_install.html. Any other information on this subject would be appreciated. How do I mount a secondary DOS partition? The secondary DOS partitions are found after ALL the primary partitions. For example, if you have an E partition as the second DOS partition on the second SCSI drive, you need to create the special files for slice 5 in /dev, then mount /dev/da1s5: &prompt.root; cd /dev &prompt.root; sh MAKEDEV da1s5 &prompt.root; mount -t msdos /dev/da1s5 /dos/e Is there a cryptographic filesystem for &os;? Yes; see the security/cfs port. How can I use the NT loader to boot FreeBSD? This procedure is slightly different for 2.2.x and 3.x (with the 3-stage boot) systems. The general idea is that you copy the first sector of your native root FreeBSD partition into a file in the DOS/NT partition. Assuming you name that file something like c:\bootsect.bsd (inspired by c:\bootsect.dos), you can then edit the c:\boot.ini file to come up with something like this: [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" For 2.2.x systems this procedure assumes that DOS, NT, FreeBSD, or whatever have been installed into their respective fdisk partitions on the same disk. This example was tested on a system where DOS & NT were on the first fdisk partition, and FreeBSD on the second. FreeBSD was also set up to boot from its native partition, not the disk's MBR. Mount a DOS-formatted floppy (if you have converted to NTFS) or the FAT partition, under, say, /mnt. &prompt.root; dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1 Reboot into DOS or NT. NTFS users copy the bootsect.bsd and/or the bootsect.lnx file from the floppy to C:\. Modify the attributes (permissions) on boot.ini with: C:\> attrib -s -r c:\boot.ini Edit to add the appropriate entries from the example boot.ini above, and restore the attributes: C:\> attrib +s +r c:\boot.ini If FreeBSD is booting from the MBR, restore it with the DOS fdisk command after you reconfigure them to boot from their native partitions. For FreeBSD 3.x systems the procedure is somewhat simpler. If FreeBSD is installed on the same disk as the NT boot partition simply copy /boot/boot1 to C:\BOOTSECT.BSD However, if FreeBSD is installed on a different disk /boot/boot1 will not work, /boot/boot0 is needed. DO NOT SIMPLY COPY /boot/boot0 INSTEAD OF /boot/boot1, YOU WILL OVERWRITE YOUR PARTITION TABLE AND RENDER YOUR COMPUTER UN-BOOTABLE! /boot/boot0 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 /boot/boot0 has the partition table area filled with NULL characters but sysinstall copies the partition table before copying /boot/boot0 to the MBR. 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 /boot/boot0 to C:\BOOTSECT.BSD then it writes an empty partition table, with the active flag set on one entry, to the MBR. How do I boot FreeBSD and Linux from LILO? 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: Boot Linux, and add the following lines to /etc/lilo.conf: other=/dev/hda2 table=/dev/hda label=FreeBSD (the above assumes that your FreeBSD slice is known to Linux as /dev/hda2; tailor to suit your setup). Then, run lilo as root and you should be done. If FreeBSD resides on another disk, you need to add loader=/boot/chain.b to the LILO entry. For example: other=/dev/dab4 table=/dev/dab loader=/boot/chain.b label=FreeBSD 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: Boot: 1:da(0,a)/kernel On FreeBSD 2.2.5 and later, you can configure &man.boot.8; to automatically do this for you at boot time. The Linux+FreeBSD mini-HOWTO is a good reference for FreeBSD and Linux interoperability issues. How do I boot FreeBSD and Linux using BootEasy? Install LILO at the start of your Linux boot partition instead of in the Master Boot Record. You can then boot LILO from BootEasy. 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 Windows95 (which is a Jealous Operating System, and will bear no other Operating Systems in the Master Boot Record). How do I change the boot prompt from ??? to something more meaningful? You can not do that with the standard boot manager without rewriting it. There are a number of other boot managers in the sysutils ports category that provide this functionality. I have a new removable drive, how do I use it? Whether it is a removable drive like a ZIP or an EZ drive (or even a floppy, if you want to use it that way), or a new hard disk, once it 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. (this section is based on Mark Mayo's ZIP FAQ) 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: &prompt.root; mount -t msdos /dev/fd0c /floppy if it is a floppy, or this: &prompt.root; mount -t msdos /dev/da2s4 /zip for a ZIP disk with the factory configuration. For other disks, see how they are laid out using &man.fdisk.8; or &man.sysinstall.8;. The rest of the examples will be for a ZIP drive on da2, the third SCSI disk. 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 file system 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 /stand/sysinstall, 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: &prompt.root; dd if=/dev/zero of=/dev/rda2 count=2 &prompt.root; disklabel -Brw da2 auto You can use disklabel or /stand/sysinstall 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. Finally, create a new file system, this one is on our ZIP drive using the whole disk: &prompt.root; newfs /dev/rda2c and mount it: &prompt.root; mount /dev/da2c /zip and it is probably a good idea to add a line like this to /etc/fstab (see &man.fstab.5;) so you can just type mount /zip in the future: /dev/da2c /zip ffs rw,noauto 0 0 Why do I get Incorrect super block when mounting a CDROM? You have to tell &man.mount.8; the type of the device that you want to mount. This is described in the Handbook section on optical media, specifically the section Using Data CDs. Why do I get Device not configured when mounting a CDROM? This generally means that there is no CDROM in the CDROM drive, or the drive is not visible on the bus. Please see the Using Data CDs section of the Handbook for a detailed discussion of this issue. Why do all non-English characters in filenames show up as ? on my CDs when mounted in FreeBSD? Your CDROM probably uses the Joliet extension for storing information about files and directories. This is discussed in the Handbook chapter on creating and using CDROMs, specifically the section on Using Data CDROMs. I burned a CD under FreeBSD and now I can not read it under any other operating system. Why? You most likely burned a raw file to your CD, rather than creating an ISO 9660 filesystem. Take a look at the Handbook chapter on creating CDROMs, particularly the section on burning raw data CDs. How can I create an image of a data CD? This is discussed in the Handbook section on duplicating data CDs. For more on working with CDROMs, see the Creating CDs Section in the Storage chapter in the Handbook. Why can I not mount an audio CD? If you try to mount an audio CD, you will get an error like cd9660: /dev/acd0c: Invalid argument. This is because mount 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 audio/xmcd port. How do I let ordinary users mount floppies, CDROMs and other removable media? Ordinary users can be permitted to mount devices. Here is how: As root set the sysctl variable vfs.usermount to 1. &prompt.root; sysctl -w vfs.usermount=1 As root assign the appropriate permissions to the block device associated with the removable media. For example, to allow users to mount the first floppy drive, use: &prompt.root; chmod 666 /dev/fd0 To allow users in the group operator to mount the CDROM drive, use: &prompt.root; chgrp operator /dev/cd0c &prompt.root; chmod 640 /dev/cd0c Finally, add the line vfs.usermount=1 to the file /etc/sysctl.conf so that it is reset at system boot time. All users can now mount the floppy /dev/fd0 onto a directory that they own: &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/fd0 ~/my-mount-point Users in group operator can now mount the CDROM /dev/cd0c onto a directory that they own: &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/cd0c ~/my-mount-point Unmounting the device is simple: &prompt.user; umount ~/my-mount-point Enabling vfs.usermount, however, has negative security implications. A better way to access MSDOS formatted media is to use the mtools package in the ports collection. The du and df commands show different amounts of disk space available. What is going on? You need to understand what du and df really do. du goes through the directory tree, measures how large each file is, and presents the totals. df 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 df but not du. 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 more. Assume you have a file large enough that its presence affects the output of du and df. (Since disks can be so large today, this might be a very large file!) If you delete this file while using more on it, more 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. du shows that it is gone — it has walked the directory tree and the file is not listed. df shows that it is still there, as the filesystem knows that more is still using that space. Once you end the more session, du and df will agree. Note that softupdates can delay the freeing of disk space; you might need to wait up to 30 seconds for the change to be visible! 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 /var. 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;. How can I add more swap space? In the Configuration and Tuning section of the Handbook, you will find a section describing how to do this. System Administration Where are the system start-up configuration files? From 2.0.5R to 2.2.1R, the primary configuration file is /etc/sysconfig. All the options are to be specified in this file and other files such as /etc/rc (see &man.rc.8;) and /etc/netstart just include it. Look in the /etc/sysconfig file and change the value to match your system. This file is filled with comments to show what to put in there. In post-2.2.1 and 3.0, /etc/sysconfig was renamed to a more self-describing &man.rc.conf.5; file and the syntax cleaned up a bit in the process. /etc/netstart was also renamed to /etc/rc.network so that all files could be copied with a cp /usr/src/etc/rc* /etc command. And, in 3.1 and later, /etc/rc.conf has been moved to /etc/defaults/rc.conf. Do not edit this file! Instead, if there is any entry in /etc/defaults/rc.conf that you want to change, you should copy the line into /etc/rc.conf and change it there. For example, if you wish to start named, the DNS server included with FreeBSD in FreeBSD 3.1 or later, all you need to do is: &prompt.root; echo named_enable="YES" >> /etc/rc.conf To start up local services in FreeBSD 3.1 or later, place shell scripts in the /usr/local/etc/rc.d directory. These shell scripts should be set executable, and end with a .sh. In FreeBSD 3.0 and earlier releases, you should edit the /etc/rc.local file. The /etc/rc.serial is for serial port initialization (e.g. locking the port characteristics, and so on.). The /etc/rc.i386 is for Intel-specifics settings, such as iBCS2 emulation or the PC system console configuration. How do I add a user easily? Use the &man.adduser.8; command. For more complicated usage, the &man.pw.8; command. To remove the user again, use the &man.rmuser.8; command. Once again, &man.pw.8; will work as well. Why do I keep getting messages like root: not found after editing my crontab file? This is normally caused by editing the system crontab (/etc/crontab) and then using &man.crontab.1; to install it: &prompt.root; crontab /etc/crontab 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). If this is what you did, the extra crontab is simply a copy of /etc/crontab in the wrong format it. Delete it with the command: &prompt.root; crontab -r Next time, when you edit /etc/crontab, you should not do anything to inform &man.cron.8; of the changes, since it will notice them automatically. If you want something to be run once per day, week, or month, it is probably better to add shell scripts /usr/local/etc/periodic, and let the &man.periodic.8; command run from the system cron schedule it with the other periodic system tasks. 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 root for all entries. When this crontab is used as the root user's crontab (which is not the same as the system crontab), &man.cron.8; assumes the string root is the first word of the command to execute, but no such command exists. Why do I get the error, you are not in the correct group to su root when I try to su to root? This is a security feature. In order to su to root (or any other account with superuser privileges), you must be in the wheel group. If this feature were not there, anybody with an account on a system who also found out root'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 wheel. To allow someone to su to root, simply put them in the wheel group. I made a mistake in rc.conf, or another startup file, and now I cannot edit it because the filesystem is read-only. What should I do? When you get the prompt to enter the shell pathname, simply press ENTER, and run mount / to re-mount the root filesystem in read/write mode. You may also need to run mount -a -t ufs to mount the filesystem where your favourite editor is defined. If your favourite 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;. If you intend to use a full screen editor such as &man.vi.1; or &man.emacs.1;, you may also need to run export TERM=cons25 so that these editors can load the correct data from the &man.termcap.5; database. Once you have performed these steps, you can edit /etc/rc.conf 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. Why am I having trouble setting up my printer? Please have a look at the Handbook entry on printing. It should cover most of your problem. See the Handbook entry on printing. Some printers require a host-based driver to do any kind of printing. These so-called WinPrinters are not natively supported by FreeBSD. If your printer does not work in DOS or Windows NT 4.0, it is probably a WinPrinter. Your only hope of getting one of these to work is to check if the print/pnm2ppa port supports it. How can I correct the keyboard mappings for my system? Please see the Handbook section on using localization, specifically the section on console setup. Why do I get messages like: unknown: <PNP0303> can't assign resources on boot? The following is an excerpt from a post to the freebsd-current mailing list.
&a.wollman;, 24 April 2001 The can't assign resources 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.
Why can I not get user quotas to work properly? Do not turn on quotas on /, Put the quota file on the file system that the quotas are to be enforced on. ie: Filesystem Quota file /usr /usr/admin/quotas /home /home/admin/quotas Does FreeBSD support System V IPC primitives? Yes, FreeBSD supports System V-style IPC. This includes shared memory, messages and semaphores. You need to add the following lines to your kernel config to enable them. options SYSVSHM # enable shared memory options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging In FreeBSD 3.2 and later, these options are already part of the GENERIC kernel, which means they should already be compiled into your system. Recompile and install your kernel. How do I use sendmail for mail delivery with UUCP? The sendmail configuration that ships with FreeBSD is suited for sites that connect directly to the Internet. Sites that wish to exchange their mail via UUCP must install another sendmail configuration file. Tweaking /etc/sendmail.cf manually is considered something for purists. Sendmail version 8 comes with a new approach of generating config files via some &man.m4.1; preprocessing, where the actual hand-crafted configuration is on a higher abstraction level. You should use the configuration files under /usr/src/usr.sbin/sendmail/cf. If you did not install your system with full sources, the sendmail config stuff has been broken out into a separate source distribution tarball just for you. Assuming you have got your CDROM mounted, do: &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmail Do not panic, this is only a few hundred kilobytes in size. The file README in the cf directory can serve as a basic introduction to m4 configuration. For UUCP delivery, you are best advised to use the mailertable feature. This constitutes a database that sendmail can use to base its routing decision upon. First, you have to create your .mc file. The directory /usr/src/usr.sbin/sendmail/cf/cf is the home of these files. Look around, there are already a few examples. Assuming you have named your file foo.mc, all you need to do in order to convert it into a valid sendmail.cf is: &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf A typical .mc file might look like: VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP The lines containing accept_unresolvable_domains, nocanonify, and confDONT_PROBE_INTERFACES features will prevent any usage of the DNS during mail delivery. The UUCP_RELAY clause is needed for bizarre reasons, do not ask. Simply put an Internet hostname there that is able to handle .UUCP pseudo-domain addresses; most likely, you will enter the mail relay of your ISP there. Once you have got this, you need this file called /etc/mail/mailertable. If have only one link to the outside that is used for all your mails, the following file will be enough: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay A more complex example might look like this: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: As you can see, this is part of a real-life file. The first three lines handle special cases where domain-addressed mail should not be sent out to the default route, but instead to some UUCP neighbor in order to shortcut the delivery path. The next line handles mail to the local Ethernet domain that can be delivered using SMTP. Finally, the UUCP neighbors are mentioned in the .UUCP pseudo-domain notation, to allow for a uucp-neighbor !recipient override of the default rules. The last line is always a single dot, matching everything else, with UUCP delivery to a UUCP neighbor that serves as your universal mail gateway to the world. All of the node names behind the uucp-dom: keyword must be valid UUCP neighbors, as you can verify using the command uuname. As a reminder that this file needs to be converted into a DBM database file before being usable, the command line to accomplish this is best placed as a comment at the top of the mailertable. You always have to execute this command each time you change your mailertable. Final hint: if you are uncertain whether some particular mail routing would work, remember the option to sendmail. It starts sendmail in address test mode; simply enter 3,0, followed by the address you wish to test for the mail routing. The last line tells you the used internal mail agent, the destination host this agent will be called with, and the (possibly translated) address. Leave this mode by typing Control-D. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D How do I set up mail with a dialup connection to the 'net? If you have got a statically assigned IP number, you should not need to adjust anything from the default. Set your host name up as your assigned Internet name and sendmail will do the rest. If you have got a dynamically assigned IP number and use a dialup PPP connection to the Internet, you will probably be given a mailbox on your ISPs mail server. Lets assume your ISPs domain is myISP.com, and that your user name is user. Lets also assume you have called your machine bsd.home and that your ISP has told you that you may use relay.myISP.com as a mail relay. In order to retrieve mail from your mailbox, you will need to install a retrieval agent. Fetchmail is a good choice as it supports many different protocols. Usually, POP3 will be provided by your ISP. If you have chosen to use user-PPP, you can automatically fetch your mail when a connection to the 'net is established with the following entry in /etc/ppp/ppp.linkup: MYADDR: !bg su user -c fetchmail If you are using sendmail (as shown below) to deliver mail to non-local accounts, put the command !bg su user -c "sendmail -q" after the above shown entry. This forces sendmail to process your mailqueue as soon as the connection to the 'net is established. I am assuming that you have an account for user on bsd.home. In the home directory of user on bsd.home, create a .fetchmailrc file: poll myISP.com protocol pop3 fetchall pass MySecret This file should not be readable by anyone except user as it contains the password MySecret. In order to send mail with the correct from: header, you must tell sendmail to use user@myISP.com rather than user@bsd.home. You may also wish to tell sendmail to send all mail via relay.myISP.com, allowing quicker mail transmission. The following .mc file should suffice: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`myISP.com')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.myISP.com') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl Refer to the previous section for details of how to turn this .mc file into a sendmail.cf file. Also, do not forget to restart sendmail after updating sendmail.cf. What other mail-server software can I use, instead of Sendmail? Sendmail 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). There are various alternative MTA's in the ports tree already, with mail/exim, mail/postfix, mail/qmail, mail/zmailer, being some of the most popular choises. 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 Is Sendmail better than Qmail? 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 MTA's have already been discussed a few times. I have forgotten the root password! What do I do? Do not Panic! Simply restart the system, type boot -s at the Boot: prompt (just -s for FreeBSD releases before 3.2) 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 mount -u / to remount your root filesystem read/write, then run mount -a to remount all the filesystems. Run passwd root to change the root password then run &man.exit.1; to continue booting. How do I keep Control-Alt-Delete from rebooting the system? If you are using syscons (the default console driver) in FreeBSD 2.2.7-RELEASE or later, build and install a new kernel with the line options SC_DISABLE_REBOOT in the configuration file. If you use the PCVT console driver in FreeBSD 2.2.5-RELEASE or later, use the following kernel configuration line instead: options PCVT_CTRL_ALT_DEL For older versions of FreeBSD, edit the keymap you are using for the console and replace the boot keywords with nop. The default keymap is /usr/share/syscons/keymaps/us.iso.kbd. You may have to instruct /etc/rc.conf to load this keymap explicitly for the change to take effect. Of course if you are using an alternate keymap for your country, you should edit that one instead. How do I reformat DOS text files to Unix ones? Simply use this perl command: &prompt.user; perl -i.bak -npe 's/\r\n/\n/g' file ... file is the file(s) to process. The modification is done in-place, with the original file stored with a .bak extension. Alternatively you can use the &man.tr.1; command: &prompt.user; tr -d '\r' < dos-text-file > unix-file dos-text-file is the file containing DOS text while unix-file will contain the converted output. This can be quite a bit faster than using perl. How do I kill processes by name? Use &man.killall.1;. Why is su bugging me about not being in root's ACL? 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. How do I uninstall Kerberos? 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 &prompt.root; cd /cdrom/bin &prompt.root; ./install.sh Alternately, you can remove all "MAKE_KERBEROS" options from /etc/make.conf and rebuild world. How do I add pseudoterminals to the system? If you have lots of telnet, ssh, X, or screen users, you will probably run out of pseudoterminals. Here is how to add more: Build and install a new kernel with the line pseudo-device pty 256 in the configuration file. Run the commands &prompt.root; cd /dev &prompt.root; sh MAKEDEV pty{1,2,3,4,5,6,7} to make 256 device nodes for the new terminals. Edit /etc/ttys and add lines for each of the 256 terminals. They should match the form of the existing entries, i.e. they look like ttyqc none network The order of the letter designations is tty[pqrsPQRS][0-9a-v], using a regular expression. Reboot the system with the new kernel and you are ready to go. Why can I not create the snd0 device? There is no snd device. The name is used as a shorthand for the various devices that make up the FreeBSD sound driver, such as mixer, sequencer, and dsp. To create these devices you should &prompt.root; cd /dev &prompt.root; sh MAKEDEV snd0 How do I re-read /etc/rc.conf and re-start /etc/rc without a reboot? Go into single user mode and then back to multi user mode. On the console do: &prompt.root; shutdown now (Note: without -r or -h) &prompt.root; return &prompt.root; exit What is a sandbox? Sandbox is a security term. It can mean two things: 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. The process is said to be able to play 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. The walls might be a userid, for example. This is the definition used in the security and named man pages. Take the ntalk service, for example (see /etc/inetd.conf). This service used to run as userid root. Now it runs as userid tty. The tty 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. 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. 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. / for that process is this directory, not the real / of the system). 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. 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. Unix implements two core sandboxes. One is at the process level, and one is at the userid level. 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. A Unix process is owned by a particular userid. If the userid is not the root 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. What is securelevel? 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., root) is allowed to do them. At the time of this writing, the securelevel mechanism is capable of, among other things, limiting the ability to, unset certain file flags, such as schg (the system immutable flag), write to kernel memory via /dev/mem and /dev/kmem, load kernel modules, and alter &man.ipfirewall.4; rules. To check the status of the securelevel on a running system, simply execute the following command: &prompt.root; sysctl kern.securelevel The output will contain the name of the &man.sysctl.8; variable (in this case, kern.securelevel) 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. 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 installworld or changing the date), you will have to change the securelevel setting in /etc/rc.conf (you want to look for the kern_securelevel and kern_securelevel_enable variables) and reboot. For more information on securelevel and the specific things all the levels do, please consult the &man.init.8; manual page. Securelevel is not a silver bullet; it has many known deficiencies. More often than not, it provides a false sense of security. 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. This point and others are often discussed on the mailing lists, particularly freebsd-security. Please search the archives here 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. Consider yourself warned. I tried to update my system to the latest -STABLE, but got -RC or -BETA! What is going on? Short answer: it is just a name. RC stands for Release Candidate. It signifies that a release is imminent. In FreeBSD, -BETA is typically synonymous with the code freeze before a release. Long answer: FreeBSD derives its releases from one of two places. Major, dot-zero, releases, such as 3.0-RELEASE and 4.0-RELEASE, are branched from the head of the development stream, commonly referred to as -CURRENT. Minor releases, such as 3.1-RELEASE or 4.2-RELEASE, have been snapshots of the active -STABLE 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). 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.0-STABLE, its name will be changed to 4.1-BETA 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.1-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.1-RELEASE in this example, has been made, the branch will be renamed to 4.1-STABLE. I tried to install a new kernel, and the chflags failed. How do I get around this? Short answer: You are probably at security level greater than 0. Reboot directly to single user mode to install the kernel. Long answer: FreeBSD disallows changing system flags at security levels greater than 0. You can check your security level with the command: &prompt.root; sysctl kern.securelevel You cannot lower the security level; you have to boot to single mode to install the kernel, or change the security level in /etc/rc.conf then reboot. See the &man.init.8; man page for details on securelevel, and see /etc/defaults/rc.conf and the &man.rc.conf.5; man page for more information on rc.conf. I cannot change the time on my system by more than one second! How do I get around this? Short answer: You are probably at security level greater than 1. Reboot directly to single user mode to change the date. 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: &prompt.root; sysctl kern.securelevel You cannot lower the security level; you have to boot to single mode to change the date, or change the security level in /etc/rc.conf then reboot. See the &man.init.8; man page for details on securelevel, and see /etc/defaults/rc.conf and the &man.rc.conf.5; man page for more information on rc.conf. Why is rpc.statd using 256 megabytes of memory? No, there is no memory leak, and it is not using 256 Mbytes of memory. It simply likes to (i.e., always does) map an obscene amount of memory into its address space for convenience. There is nothing terribly wrong with this from a technical standpoint; it just throws off things like &man.top.1; and &man.ps.1;. &man.rpc.statd.8; maps its status file (resident on /var) 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 0x10000000, or one sixteenth of the address space on an IA32, or exactly 256MB. Why can I not unset the schg file flag? You are running at an elevated (i.e., greater than 0) securelevel. Lower the securelevel and try again. For more information, see the FAQ entry on securelevel and the &man.init.8; manual page. Why does SSH authentication through .shosts not work by default in recent versions of FreeBSD? The reason why .shosts authentication does not work by default in more recent versions of FreeBSD is because &man.ssh.1; is not installed suid root by default. To fix this, you can do one of the following: As a permanent fix, set ENABLE_SUID_SSH to true in /etc/make.conf and rebuild ssh (or run make world). As a temporary fix, change the mode on /usr/bin/ssh to 4555 by running chmod 4755 /usr/bin/ssh as root. Then add ENABLE_SUID_SSH= true to /etc/make.conf so the change takes effect the next time make world is run. What is vnlru? vnlru flushes and frees vnodes when the system hits the kern.maxvnodes 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.
The X Window System and Virtual Consoles I want to run X, how do I go about it? The easiest way is to simply specify that you want to run X during the installation process. Then read and follow the documentation on the xf86config tool, which assists you in configuring XFree86(tm) for your particular graphics card/mouse/etc. You may also wish to investigate the Xaccel server. See the section on Xi Graphics or Metro Link for more details. I tried to run X, but I get an KDENABIO failed (Operation not permitted) error when I type startx. What do I do now? Your system is running at a raised securelevel, is not it? It is, indeed, impossible to start X at a raised securelevel. To see why, look at the &man.init.8; man page. 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 /etc/rc.conf), or run &man.xdm.1; at boot time (before the securelevel is raised). See for more information about running &man.xdm.1; at boot time. Why does my mouse not work with X? 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 /dev/sysmouse. 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, and use X, see and set up moused. Then edit /etc/XF86Config and make sure you have the following lines. Section Pointer Protocol "SysMouse" Device "/dev/sysmouse" ..... The above example is for XFree86 3.3.2 or later. For earlier versions, the Protocol should be MouseSystems. Some people prefer to use /dev/mouse under X. To make this work, /dev/mouse should be linked to /dev/sysmouse (see &man.sysmouse.4;): &prompt.root; cd /dev &prompt.root; rm -f mouse &prompt.root; ln -s sysmouse mouse My mouse has a fancy wheel. Can I use it in X? Yes. But you need to customize X client programs. See Colas Nahaboo's web page (http://www.inria.fr/koala/colas/mouse-wheel-scroll/) . If you want to use the imwheel program, just follow these simple steps. Translate the Wheel Events The imwheel program works by translating mouse button 4 and mouse button 5 events into key events. Thus, you have to get the mouse driver to translate mouse wheel events to button 4 and 5 events. There are two ways of doing this, the first way is to have &man.moused.8; do the translation. The second way is for the X server itself to do the event translation. Using &man.moused.8; to Translate Wheel Events To have &man.moused.8; perform the event translations, simply add to the command line used to start &man.moused.8;. For example, if you normally start &man.moused.8; via moused -p /dev/psm0 you would start it by entering moused -p /dev/psm0 -z 4 instead. If you start &man.moused.8; automatically during bootup via /etc/rc.conf, you can simply add to the moused_flags variable in /etc/rc.conf. You now need to tell X that you have a 5 button mouse. To do this, simply add the line Buttons 5 to the Pointer section of /etc/XF86Config. For example, you might have the following Pointer section in /etc/XF86Config. <quote>Pointer</quote> Section for Wheeled Mouse in XFree86 3.3.x series XF86Config with moused Translation Section "Pointer" Protocol "SysMouse" Device "/dev/sysmouse" Buttons 5 EndSection <quote>InputDevice</quote> Section for Wheeled Mouse in XFree86 4.x series XF86Config with X Server Translation Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "Buttons" "5" EndSection <quote>.emacs</quote> example for naive page scrolling with Wheeled Mouse ;; wheel mouse (global-set-key [mouse-4] 'scroll-down) (global-set-key [mouse-5] 'scroll-up) Using Your X Server to Translate the Wheel Events If you are not running &man.moused.8;, or if you do not want &man.moused.8; to translate your wheel events, you can have the X server do the event translation instead. This requires a couple of modifications to your /etc/XF86Config file. First, you need to choose the proper protocol for your mouse. Most wheeled mice use the IntelliMouse protocol. However, XFree86 does support other protocols, such as MouseManPlusPS/2 for the Logitech MouseMan+ mice. Once you have chosen the protocol you will use, you need to add a Protocol line to the Pointer section. Secondly, you need to tell the X server to remap wheel scroll events to mouse buttons 4 and 5. This is done with the ZAxisMapping option. For example, if you are not using &man.moused.8;, and you have an IntelliMouse attached to the PS/2 mouse port you would use the following in /etc/XF86Config. <quote>Pointer</quote> Section for Wheeled Mouse in <filename>XF86Config</filename> with X Server Translation Section "Pointer" Protocol "IntelliMouse" Device "/dev/psm0" ZAxisMapping 4 5 EndSection <quote>InputDevice</quote> Section for Wheeled Mouse in XFree86 4.x series XF86Config with X Server Translation Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psm0" Option "ZAxisMapping" "4 5" EndSection <quote>.emacs</quote> example for naive page scrolling with Wheeled Mouse ;; wheel mouse (global-set-key [mouse-4] 'scroll-down) (global-set-key [mouse-5] 'scroll-up) Install imwheel Next, install imwheel from the Ports collection. It can be found in the x11 category. This program will map the wheel events from your mouse into keyboard events. For example, it might send Page Up to a program when you scroll the wheel forwards. Imwheel uses a configuration file to map the wheel events to key presses so that it can send different keys to different applications. The default imwheel configuration file is installed in /usr/X11R6/etc/imwheelrc. You can copy it to ~/.imwheelrc and then edit it if you wish to customize imwheel's configuration. The format of the configuration file is documented in &man.imwheel.1;. Configure Emacs to Work with Imwheel (optional) If you use emacs or Xemacs, then you need to add a small section to your ~/.emacs file. For emacs, add the following: <application>Emacs</application> Configuration for <application>Imwheel</application> ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines) (global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines) ;;; end imwheel section For Xemacs, add the following to your ~/.emacs file instead: <application>Xemacs</application> Configuration for <application>Imwheel</application> ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines) (define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Run Imwheel You can just type imwheel in an xterm to start it up once it is installed. It will background itself and take effect immediately. If you want to always use imwheel, simply add it to your .xinitrc or .xsession file. You can safely ignore any warnings imwheel displays about PID files. Those warnings only apply to the Linux version of imwheel. Why do X Window menus and dialog boxes not work right? Try turning off the Num Lock key. If your Num Lock key is on by default at boot-time, you may add the following line in the Keyboard section of the XF86Config file. # Let the server do the NumLock processing. This should only be # required when using pre-R6 clients ServerNumLock What is a virtual console and how do I make more? 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. 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. At some point, you will probably wish to start another session, perhaps to look at documentation for a program you are running or to read your mail while waiting for an FTP transfer to finish. Just do Alt-F2 (hold down the Alt key and press the F2 key), and you will find a login prompt waiting for you on the second virtual console! When you want to go back to the original session, do Alt-F1. The default FreeBSD installation has three virtual consoles enabled (8 starting with 3.3-RELEASE), and Alt-F1, Alt-F2, and Alt-F3 will switch between these virtual consoles. To enable more of them, edit /etc/ttys (see &man.ttys.5;) and add entries for ttyv4 to ttyvc after the comment on Virtual terminals: # 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 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 secure to insecure. If you want to run an X server you must leave at least one virtual terminal unused (or turned off) for it to use. That is to say that if you want to have a login prompt pop up for all twelve of your Alt-function keys, you 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. 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: ttyvb "/usr/libexec/getty Pc" cons25 on secure to: ttyvb "/usr/libexec/getty Pc" cons25 off secure If your keyboard has only ten function keys, you would end up with: ttyv9 "/usr/libexec/getty Pc" cons25 off secure ttyva "/usr/libexec/getty Pc" cons25 off secure ttyvb "/usr/libexec/getty Pc" cons25 off secure (You could also just delete these lines.) Once you have edited /etc/ttys, the next step is to make sure that you have enough virtual terminal devices. The easiest way to do this is: &prompt.root; cd /dev &prompt.root; sh MAKEDEV vty12 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 root): &prompt.root; kill -HUP 1 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. How do I access the virtual consoles from X? Use Ctrl Alt Fn to switch back to a virtual console. Ctrl Alt F1 would return you to the first virtual console. Once you are back to a text console, you can then use Alt Fn as normal to move between them. 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 startx) 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 Alt F9 to return. How do I start XDM on boot? There are two schools of thought on how to start xdm. One school starts xdm from /etc/ttys (see &man.ttys.5;) using the supplied example, while the other simply runs xdm from rc.local (see &man.rc.8;) or from a X.sh script in /usr/local/etc/rc.d. 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 popup a graphical login: prompt. 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. If loaded from rc.local, xdm 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. If you are to start xdm from /etc/ttys, there still is a chance of conflict between xdm and &man.getty.8;. One way to avoid this is to add the vt number in the /usr/X11R6/lib/X11/xdm/Xservers file. :0 local /usr/X11R6/bin/X vt4 The above example will direct the X server to run in /dev/ttyv3. Note the number is offset by one. The X server counts the vty from one, whereas the FreeBSD kernel numbers the vty from zero. Why do I get Couldn't open console when I run xconsole? If you start X with startx, the permissions on /dev/console will not get changed, resulting in things like xterm -C and xconsole not working. 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. In a nutshell, make sure an uncommented line of the form /dev/ttyv0 0600 /dev/console is in /etc/fbtab (see &man.fbtab.5;) and it will ensure that whomever logs in on /dev/ttyv0 will own the console. Before, I was able to run XFree86 as a regular user. Why does it now say that I must be root? All X servers need to be run as root 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 root (setuid to root). This is obviously a security hazard because X servers are large, complicated programs. Newer versions of XFree86 do not install the servers setuid to root for just this reason. Obviously, running an X server as the root 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 xdm or another display manager (e.g., kdm); the second is to use the Xwrapper. xdm 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 xdm see the XFree86 documentation, and the the FAQ entry on it. Xwrapper 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 manger for whatever reason, this is for you. If you have installed the complete ports collection, you can find the port in /usr/ports/x11/wrapper. Why does my PS/2 mouse misbehave under X? Your mouse and the mouse driver may have somewhat become out of synchronization. In versions 2.2.5 and earlier, switching away from X to a virtual terminal and getting back to X again may make them re-synchronized. If the problem occurs often, you may add the following option in your kernel configuration file and recompile it. options PSM_CHECKSYNC See the section on building a kernel if you have no experience with building kernels. With this option, there should be less chance of synchronization problem between the mouse and the driver. If, however, you still see the problem, click any mouse button while holding the mouse still to re-synchronize the mouse and the driver. Note that unfortunately this option may not work with all the systems and voids the tap feature of the ALPS GlidePoint device attached to the PS/2 mouse port. In versions 2.2.6 and later, synchronization check is done in a slightly better way and is standard in the PS/2 mouse driver. It should even work with GlidePoint. (As the check code has become a standard feature, PSM_CHECKSYNC option is not available in these versions.) However, in rare case the driver may erroneously report synchronization problem and you may see the kernel message: psmintr: out of sync (xxxx != yyyy) and find your mouse does not seem to work properly. If this happens, disable the synchronization check code by setting the driver flags for the PS/2 mouse driver to 0x100. Enter UserConfig by giving the option at the boot prompt: boot: -c Then, in the UserConfig command line, type: UserConfig> flags psm0 0x100 UserConfig> quit Why does my PS/2 mouse from MouseSystems not work? There have been some reports that certain model of PS/2 mouse from MouseSystems works only if it is put into the high resolution mode. Otherwise, the mouse cursor may jump to the upper-left corner of the screen every so often. Unfortunately there is no workaround for versions 2.0.X and 2.1.X. In versions 2.2 through 2.2.5, apply the following patch to /sys/i386/isa/psm.c and rebuild the kernel. See the section on building a kernel if you have no experience with building kernels. @@ -766,6 +766,8 @@ if (verbose >= 2) log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n", unit, i); + set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH); + #if 0 set_mouse_scaling(sc->kbdc); /* 1:1 scaling */ set_mouse_mode(sc->kbdc); /* stream mode */ In versions 2.2.6 or later, specify the flags 0x04 to the PS/2 mouse driver to put the mouse into the high resolution mode. Enter UserConfig by giving the option at the boot prompt: boot: -c Then, in the UserConfig command line, type: UserConfig> flags psm0 0x04 UserConfig> quit See the previous section for another possible cause of mouse problems. When building an X app, imake cannot find Imake.tmpl. Where is it? Imake.tmpl is part of the Imake package, a standard X application building tool. Imake.tmpl, as well as several header files that are required to build X apps, is contained in the X prog distribution. You can install this from sysinstall or manually from the X distribution files. How do I reverse the mouse buttons? Run the command xmodmap -e "pointer = 3 2 1" from your .xinitrc or .xsession. How do I install a splash screen and where do I find them? Just prior to the release of FreeBSD 3.1, a new feature was added to allow the display of splash screens during the boot messages. The splash screens currently must be a 256 color bitmap (*.BMP) or ZSoft PCX (*.PCX) 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. Note that VESA support requires the VM86 kernel option to be compiled into the kernel. The actual VESA support can either be compiled directly into the kernel with the VESA kernel config option or by loading the VESA kld module during bootup. To use a splash screen, you need to modify the startup files that control the boot process for FreeBSD. The files for this changed prior to the release of FreeBSD 3.2, so there are now two ways of loading a splash screen: FreeBSD 3.1 The first step is to find a bitmap version of your splash screen. Release 3.1 only supports Windows bitmap splash screens. Once you have found your splash screen of choice copy it to /boot/splash.bmp. Next, you need to have a /boot/loader.rc file that contains the following lines: load kernel load -t splash_image_data /boot/splash.bmp load splash_bmp autoboot FreeBSD 3.2+ In addition to adding support for PCX splash screens, FreeBSD 3.2 includes a nicer way of configuring the boot process. If you wish, you can use the method listed above for FreeBSD 3.1. If you do and you want to use PCX, replace splash_bmp with splash_pcx. If, on the other hand, you want to use the newer boot configuration, you need to create a /boot/loader.rc file that contains the following lines: include /boot/loader.4th start and a /boot/loader.conf that contains the following: splash_bmp_load="YES" bitmap_load="YES" This assumes you are using /boot/splash.bmp for your splash screen. If you would rather use a PCX file, copy it to /boot/splash.pcx, create a /boot/loader.rc as instructed above, and create a /boot/loader.conf that contains: splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" Now all you need is a splash screen. For that you can surf on over to the gallery at http://www.baldwin.cx/splash/. Can I use the Windows(tm) keys on my keyboard in X? Yes. All you need to do is use &man.xmodmap.1; to define what function you wish them to perform. Assuming all Windows(tm) keyboards are standard then the keycodes for the 3 keys are 115 - Windows(tm) key, between the left-hand Ctrl and Alt keys 116 - Windows(tm) key, to the right of the Alt-Gr key 117 - Menu key, to the left of the right-hand Ctrl key To have the left Windows(tm) key print a comma, try this. &prompt.root; xmodmap -e "keycode 115 = comma" You will probably have to re-start your window manager to see the result. To have the Windows(tm) key-mappings enabled automatically every time you start X either put the xmodmap commands in your ~/.xinitrc file or, preferably, create a file ~/.xmodmaprc and include the xmodmap options, one per line, then add the line xmodmap $HOME/.xmodmaprc to your ~/.xinitrc. For example, you could map the 3 keys top be F13, F14, and F15, respectively. This would make it easy to map them to useful functions within applications or your window manager, as demonstrated further down. To do this put the following in ~/.xmodmaprc. keycode 115 = F13 keycode 116 = F14 keycode 117 = F15 If you use fvwm2, for example, you could map the keys so that F13 iconifies (or de-iconifies) the window the cursor is in, F14 brings the window the cursor is in to the front or, if it is already at the front, pushes it to the back, and F15 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). The following entries in ~/.fvwmrc implement the aforementioned setup: Key F13 FTIWS A Iconify Key F14 FTIWS A RaiseLower Key F15 A A Menu Workplace Nop How can I get 3D hardware acceleration for OpenGL? The availability of 3D acceleration depends on the version of XFree86 you are using and the type of video chip you have. If you have an NVIDIA chip, check out the FreeBSD NVIDIA Driver Initiative page, which discusses 3D acceleration for NVIDIA chips using XFree86-4. For other cards with XFree86-4, 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 XFree86-4 Direct Rendering on FreeBSD page. Users of XFree86 version 3.3 can use the Utah-GLX port found in graphics/utah-glx to get limited accelerated OpenGL on the Matrox Gx00, ATI Rage Pro, SiS 6326, i810, Savage, and older NVIDIA chips. Networking Where can I get information on diskless booting? Diskless booting means that the FreeBSD box is booted over a network, and reads the necessary files from a server instead of its hard disk. For full details, please read the Handbook entry on diskless booting Can a FreeBSD box be used as a dedicated network router? Yes. Please see the Handbook entry on advanced networking, specifically the section on routing and gateways. Can I connect my Win95 box to the Internet via FreeBSD? Typically, people who ask this question have two PC's at home, one with FreeBSD and one with Win95; the idea is to use the FreeBSD box to connect to the Internet and then be able to access the Internet from the Windows95 box through the FreeBSD box. This is really just a special case of the previous question. ... and the answer is yes! In FreeBSD 3.x, user-mode &man.ppp.8; contains a option. If you run &man.ppp.8; with the , set gateway_enable to YES in /etc/rc.conf, and configure your Windows machine correctly, this should work fine. More detailed information about setting this up can be found in the Pedantic PPP Primer by Steve Sims. If you are using kernel-mode PPP, or have an Ethernet connection to the Internet, you will have to use &man.natd.8;. Please look at the natd section of this FAQ. Does FreeBSD support SLIP and PPP? 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. For more information on how to use these, please see the Handbook chapter on PPP and SLIP. If you only have access to the Internet through a shell account, you may want to have a look at the net/slirp package. It can provide you with (limited) access to services such as ftp and http direct from your local machine. Does FreeBSD support NAT or Masquerading? If you have a local subnet (one or more local machines), but have been allocated only a single IP number from your Internet provider (or even if you receive a dynamic IP number), you may want to look at the &man.natd.8; program. &man.natd.8; allows you to connect an entire subnet to the Internet using only a single IP number. The &man.ppp.8; program has similar functionality built in via the switch. The alias library (&man.libalias.3;) is used in both cases. How do I connect two FreeBSD systems over a parallel line using PLIP? Please see the PLIP section of the Handbook. Why can I not create a /dev/ed0 device? Because they aren't necessary. In the Berkeley networking framework, network interfaces are only directly accessible by kernel code. Please see the /etc/rc.network 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. How can I setup Ethernet aliases? Add netmask 0xffffffff to your &man.ifconfig.8; command-line like the following: &prompt.root; ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff How do I get my 3C503 to use the other network port? 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 link0. To use the AUI port instead of the BNC one, use link2. These flags should be specified using the ifconfig_* variables in /etc/rc.conf (see &man.rc.conf.5;). Why am I having trouble with NFS and FreeBSD? Certain PC network cards are better than others (to put it mildly) and can sometimes cause problems with network intensive applications like NFS. See the Handbook entry on NFS for more information on this topic. Why can I not NFS-mount from a Linux box? Some versions of the Linux NFS code only accept mount requests from a privileged port; try &prompt.root; mount -o -P linuxbox:/blah /mnt Why can I not NFS-mount from a Sun box? Sun workstations running SunOS 4.X only accept mount requests from a privileged port; try &prompt.root; mount -o -P sunbox:/blah /mnt Why does mountd keep telling me it can't change attributes and that I have a bad exports list on my FreeBSD NFS server? The most frequent problem is not understanding the correct format of /etc/exports. Please review &man.exports.5; and the NFS entry in the Handbook, especially the section on configuring NFS. Why am I having problems talking PPP to NeXTStep machines? Try disabling the TCP extensions in /etc/rc.conf (see &man.rc.conf.5;) by changing the following variable to NO: tcp_extensions=NO Xylogic's Annex boxes are also broken in this regard and you must use the above change to connect thru them. How do I enable IP multicast support? Multicast host operations are fully supported in FreeBSD 2.0 and later by default. If you want your box to run as a multicast router, you will need to recompile your kernel with the MROUTING option and run &man.mrouted.8;. FreeBSD 2.2 and later will start &man.mrouted.8; at boot time if the flag mrouted_enable is set to "YES" in /etc/rc.conf. MBONE tools are available in their own ports category, mbone. If you are looking for the conference tools vic and vat, look there! Which network cards are based on the DEC PCI chipset? Here is a list compiled by Glen Foster gfoster@driver.nsta.org, with some more modern additions: Network cards based on the DEC PCI chipset Vendor Model ASUS PCI-L101-TB Accton ENI1203 Cogent EM960PCI Compex ENET32-PCI D-Link DE-530 Dayna DP1203, DP2100 DEC DE435, DE450 Danpex EN-9400P3 JCIS Condor JC1260 Linksys EtherPCI Mylex LNP101 SMC EtherPower 10/100 (Model 9332) SMC EtherPower (Model 8432) TopWare TE-3500P Znyx (2.2.x) ZX312, ZX314, ZX342, ZX345, ZX346, ZX348 Znyx (3.x) ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd)
Why do I have to use the FQDN for hosts on my site? 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 mumble in the example.org domain, you will have to refer to it by the fully-qualified domain name, mumble.example.org, instead of just mumble. Traditionally, this was allowed by BSD BIND resolvers. However the current version of bind (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 mumble must either be found as mumble.foo.example.org, or it will be searched for in the root domain. This is different from the previous behavior, where the search continued across mumble.example.org, and mumble.edu. Have a look at RFC 1535 for why this was considered bad practice, or even a security hole. As a good workaround, you can place the line search foo.example.org example.org instead of the previous domain foo.example.org into your /etc/resolv.conf file (see &man.resolv.conf.5;). However, make sure that the search order does not go beyond the boundary between local and public administration, as RFC 1535 calls it. Why do I get an error, Permission denied, for all networking operations? If you have compiled your kernel with the IPFIREWALL option, you need to be aware that the default policy as of 2.1.7R (this actually changed during 2.1-STABLE development) is to deny all packets that are not explicitly allowed. If you had unintentionally misconfigured your system for firewalling, you can restore network operability by typing the following while logged in as root: &prompt.root; ipfw add 65534 allow all from any to any You can also set firewall_type="open" in /etc/rc.conf. For further information on configuring a FreeBSD firewall, see the Handbook section. How much overhead does IPFW incur? Please see the Handbook's Firewalls section, specifically the section on IPFW Overhead & Optimization. Why is my ipfw fwd rule to redirect a service to another machine not working? Possibly because you want to do network address translation (NAT) and not just forward packets. A fwd 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: 01000 fwd 10.0.0.1 from any to foo 21 When a packet with a destination address of foo arrives at the machine with this rule, the packet is forwarded to 10.0.0.1, but it still has the destination address of foo! The destination address of the packet is not changed to 10.0.0.1. Most machines would probably drop a packet that they receive with a destination address that is not their own. Therefore, using a fwd rule does not often work the way the user expects. This behavior is a feature and not a bug. See the FAQ about redirecting services, the &man.natd.8; manual, or one of the several port redirecting utilities in the ports collection for a correct way to do this. How can I redirect service requests from one machine to another? You can redirect FTP (and other service) request with the socket package, available in the ports tree in category sysutils. Simply replace the service's command line to call socket instead, like so: ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.example.com ftp where ftp.example.com and ftp are the host and port to redirect to, respectively. Where can I get a bandwidth management tool? There are three bandwidth management tools available for FreeBSD. &man.dummynet.4; is integrated into FreeBSD (or more specifically, &man.ipfw.4;); ALTQ is available for free; Bandwidth Manager from Emerging Technologies is a commercial product. Why do I get /dev/bpf0: device not configured? You are running a program that requires the Berkeley Packet Filter (&man.bpf.4;), but it's not in your kernel. Add this to your kernel config file and build a new kernel: pseudo-device bpf # Berkeley Packet Filter After rebooting, create the device node. This can be accomplished by going to the /dev directory and running: &prompt.root; sh MAKEDEV bpf0 Please see the Handbook entry on device nodes for more information on creating devices. How do I mount a disk from a Windows machine that is on my network, like smbmount in Linux? Use the SMBFS toolset. It includes a set of kernel modifications and a set of userland programs. The programs and information are available as net/smbfs in the ports collection, or in the base system as of 4.5-RELEASE and later. What are these messages about icmp-response bandwidth limit 300/200 pps in my log files? 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: Brute-force denial of service (DoS) attacks (as opposed to single-packet attacks which exploit a specific vulnerability). Port scans which attempt to connect to a large number of ports (as opposed to only trying a few well-known ports). 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 net.inet.icmp.icmplim sysctl variable like this, where 300 is the limit in packets per second: &prompt.root; sysctl -w net.inet.icmp.icmplim=300 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 net.inet.icmp.icmplim_output sysctl variable to disable the output like this: &prompt.root; sysctl -w net.inet.icmp.icmplim_output=0 Finally, if you want to disable response limiting, you can set the net.inet.icmp.icmplim sysctl variable (see above for an example) to 0. Disabling response limiting is discouraged for the reasons listed above. What are these arp: unknown hardware address format error messages? 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.
Security BIND (named) is listening on port 53 and some other high-numbered port. What is going on? FreeBSD 3.0 and later use a version of BIND that 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 /etc/namedb/named.conf: options { query-source address * port 53; }; You can replace the * with a single IP address if you want to tighten things further. Congratulations, by the way. It is good practice to read your &man.sockstat.1; output and notice odd things! Sendmail is listening on port 587 as well as the standard port 25! What is going on? 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. What is this UID 0 toor account? Have I been compromised? Do not worry. toor is an alternative 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 root'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 be to be installed in /usr/local/bin which, by default, resides on a different filesystem. If root's shell is located in /usr/local/bin and /usr (or whatever filesystem contains /usr/local/bin) is not mounted for some reason, root 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). Some people use toor for day-to-day root tasks with a non-standard shell, leaving root, with a standard shell, for single user mode or emergencies. By default you cannot log in using toor as it does not have a password, so log in as root and set a password for toor if you want to use it. Why is suidperl not working properly? For security reasons, suidperl is installed without the suid bit by default. The system administrator can enable suid behavior with the following command. &prompt.root; chmod u+s /usr/bin/suidperl If you want suidperl to be built suid during upgrades from source, edit /etc/make.conf and add ENABLE_SUIDPERL=true before you run make buildworld. PPP I cannot make &man.ppp.8; work. What am I doing wrong? You should first read the &man.ppp.8; man page and the PPP section of the handbook. Enable logging with the command set log Phase Chat Connect Carrier lcp ipcp ccp command This command may be typed at the &man.ppp.8; command prompt or it may be entered in the /etc/ppp/ppp.conf configuration file (the start of the default section is the best place to put it). Make sure that /etc/syslog.conf (see &man.syslog.conf.5;) contains the lines !ppp *.* /var/log/ppp.log and that the file /var/log/ppp.log 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. If your version of &man.ppp.8; does not understand the set log command, you should download the latest version. It will build on FreeBSD version 2.1.5 and higher. Why does &man.ppp.8; hang when I run it? This is usually because your hostname will not resolve. The best way to fix this is to make sure that /etc/hosts is consulted by your resolver first by editing /etc/host.conf and putting the hosts line first. Then, simply put an entry in /etc/hosts for your local machine. If you have no local network, change your localhost line: 127.0.0.1 foo.bar.com foo localhost Otherwise, simply add another entry for your host. Consult the relevant man pages for more details. You should be able to successfully ping -c1 `hostname` when you are done. Why will &man.ppp.8; not dial in -auto mode? First, check that you have got a default route. By running netstat -rn (see &man.netstat.1;), you should see two entries like this: 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 This is assuming that you have used the addresses from the handbook, the man 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 HISADDR in the ppp.conf file. If your version of &man.ppp.8; is from before FreeBSD 2.2.5, change the add 0 0 HISADDR line to one saying add 0 0 10.0.0.2 Another reason for the default route line being missing is that you have mistakenly set up a default router in your /etc/rc.conf (see &man.rc.conf.5;) file (this file was called /etc/sysconfig prior to release 2.2.2), and you have omitted the line saying delete ALL from ppp.conf. If this is the case, go back to the Final system configuration section of the handbook. What does No route to host mean? This error is usually due to a missing MYADDR: delete ALL add 0 0 HISADDR section in your /etc/ppp/ppp.linkup 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 packet mode (packet mode is indicated by the capitalized PPP in the prompt): delete ALL add 0 0 HISADDR Refer to the PPP and Dynamic IP addresses section of the handbook for further details. Why does my connection drop after about 3 minutes? The default PPP timeout is 3 minutes. This can be adjusted with the line set timeout NNN where NNN is the number of seconds of inactivity before the connection is closed. If NNN is zero, the connection is never closed due to a timeout. It is possible to put this command in the ppp.conf 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 ppps server socket using &man.telnet.1; or &man.pppctl.8;. Refer to the &man.ppp.8; man page for further details. Why does my connection drop under heavy load? 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 disable lqr Why does my connection drop after a random amount of time? 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. 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: set dial "...... ATS10=10 OK ......" Refer to your modem manual for details. Why does my connection hang after a random amount of time? Many people experience hung connections with no apparent explanation. The first thing to establish is which side of the link is hung. If you are using an external modem, you can simply try using &man.ping.8; to see if the TD light is flashing when you transmit data. If it flashes (and the RD light does not), the problem is with the remote end. If TD does not flash, the problem is local. With an internal modem, you will need to use the set server command in your ppp.conf 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 set socket command succeeded at startup time), the problem is local. If you can connect and things are still hung, enable local async logging with set log local async 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. Having established whether the problem is local or remote, you now have two possibilities: The remote end is not responding. What can I do? 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 enable lqr in your ppp.conf 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... First, try disabling all local compression by adding the following to your configuration: disable pred1 deflate deflate24 protocomp acfcomp shortseq vj deny pred1 deflate deflate24 protocomp acfcomp shortseq vj 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). 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 (Memory fault, core dumped?). 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. &man.ppp.8; has hung. What can I do? Your best bet here is to rebuild &man.ppp.8; by adding CFLAGS+=-g and STRIP= to the end of the Makefile, then doing a make clean && make && make install. When &man.ppp.8; hangs, find the &man.ppp.8; process id with ps ajxww | fgrep ppp and run gdb ppp PID. From the gdb prompt, you can then use bt to get a stack trace. Send the results to brian@Awfulhak.org. Why does nothing happen after the Login OK! message? 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: set openmode active It usually does no harm if both sides initiate negotiation, so openmode is now active by default. However, the next section explains when it does do some harm. I keep seeing errors about magic being the same. What does it mean? Occasionally, just after connecting, you may see messages in the log that say magic is the same. Sometimes, these messages are harmless, and sometimes one side or the other exits. 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. 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 reflect back. One part of the LCP negotiation is to establish a magic number for each side of the link so that reflections can be detected. The protocol says that when the peer tries to negotiate the same magic number, a NAK should be sent and a new magic number should be chosen. During the period that the server port has ECHO turned on, the client &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. This can be avoided by allowing the peer to start negotiating with the following line in your ppp.conf file: set openmode passive 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: set openmode active 3 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. LCP negotiations continue until the connection is closed. What is wrong? 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. Consider two implementations, A and B. A starts sending LCP requests immediately after connecting and B takes 7 seconds to start. When B starts, A 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. B sends a REQ, then an ACK to the first of A's REQs. This results in A entering the OPENED state and sending and ACK (the first) back to B. In the meantime, B sends back two more ACKs in response to the two additional REQs sent by A before B started up. B then receives the first ACK from A and enters the OPENED state. A receives the second ACK from B and goes back to the REQ-SENT state, sending another (forth) REQ as per the RFC. It then receives the third ACK and enters the OPENED state. In the meantime, B receives the forth REQ from A, resulting in it reverting to the ACK-SENT state and sending another (second) REQ and (forth) ACK as per the RFC. A gets the REQ, goes into REQ-SENT and sends another REQ. It immediately receives the following ACK and enters OPENED. This goes on until one side figures out that they are getting nowhere and gives up. The best way to avoid this is to configure one side to be passive - that is, make one side wait for the other to start negotiating. This can be done with the set openmode passive command. Care should be taken with this option. You should also use the set stopped N command to limit the amount of time that &man.ppp.8; waits for the peer to begin negotiations. Alternatively, the set openmode active N command (where N is the number of seconds to wait before starting negotiations) can be used. Check the manual page for details. Why does &man.ppp.8; lock up shortly after connection? Prior to version 2.2.5 of FreeBSD, it was possible that your link was disabled shortly after connection due to &man.ppp.8; mis-handling Predictor1 compression negotiation. This would only happen if both sides tried to negotiate different Compression Control Protocols (CCP). This problem is now corrected, but if you are still running an old version of &man.ppp.8; the problem can be circumvented with the line disable pred1 Why does &man.ppp.8; lock up when I shell out to test it? When you execute the shell or ! 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. If you wish to execute commands like this, use the !bg command instead. This will execute the given command in the background, and &man.ppp.8; can continue to service the link. Why does &man.ppp.8; over a null-modem cable never exit? 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 enable lqr LQR is accepted by default if negotiated by the peer. Why does &man.ppp.8; dial for no reason in -auto mode? If &man.ppp.8; is dialing unexpectedly, you must determine the cause, and set up Dial filters (dfilters) to prevent such dialing. To determine the cause, use the following line: set log +tcp/ip 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. 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 not prevent &man.ppp.8; from passing the packets through an established connection), use the following: set dfilter 1 deny udp src eq 53 set dfilter 2 deny udp dst eq 53 set dfilter 3 permit 0/0 0/0 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. 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 Mail Configuration 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 .mc file: define(`confDELIVERY_MODE', `d')dnl This will make sendmail queue everything until the queue is run (usually, sendmail is invoked with , telling it to run the queue every 30 minutes) or until a sendmail -q is done (perhaps from your ppp.linkup file). What do these CCP errors mean? I keep seeing the following errors in my log file: CCP: CcpSendConfigReq CCP: Received Terminate Ack (1) state = Req-Sent (6) 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: disable pred1 Why does &man.ppp.8; lock up during file transfers with IO errors? Under FreeBSD 2.2.2 and before, there was a bug in the tun driver that prevents incoming packets of a size larger than the tun interface's MTU size. Receipt of a packet greater than the MTU size results in an IO error being logged via syslogd. The PPP specification says that an MRU of 1500 should always be accepted as a minimum, despite any LCP negotiations, therefore it is possible that should you decrease the MTU to less than 1500, your ISP will transmit packets of 1500 regardless, and you will tickle this non-feature - locking up your link. The problem can be circumvented by never setting an MTU of less than 1500 under FreeBSD 2.2.2 or before. Why does &man.ppp.8; not log my connection speed? In order to log all lines of your modem conversation, you must enable the following: set log +connect This will make &man.ppp.8; log everything up until the last requested expect string. If you wish to see your connect speed and are using PAP or CHAP (and therefore do not have anything to chat after the CONNECT in the dial script - no set login script), you must make sure that you instruct &man.ppp.8; to expect the whole CONNECT line, something like this: set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \ \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n" Here, we get our CONNECT, send nothing, then expect a line-feed, forcing &man.ppp.8; to read the whole CONNECT response. Why does &man.ppp.8; ignore the \ character in my chat script? Ppp parses each line in your config files so that it can interpret strings such as set phone "123 456 789" correctly (and realize that the number is actually only one argument. In order to specify a " character, you must escape it using a backslash (\). When the chat interpreter parses each argument, it re-interprets the argument in order to find any special escape sequences such as \P or \T (see the man page). As a result of this double-parsing, you must remember to use the correct number of escapes. If you wish to actually send a \ character to (say) your modem, you would need something like: set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK" resulting in the following sequence: ATZ OK AT\X OK or set phone 1234567 set dial "\"\" ATZ OK ATDT\\T" resulting in the following sequence: ATZ OK ATDT1234567 Why does &man.ppp.8; get a seg-fault, but I see no ppp.core file? 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, and you are sure you are using the latest version (see the start of this section), then you should do the following: &prompt.user; tar xfz ppp-*.src.tar.gz &prompt.user; cd ppp*/ppp &prompt.user; echo STRIP= >>Makefile &prompt.user; echo CFLAGS+=-g >>Makefile &prompt.user; make clean all &prompt.user; su &prompt.root; make install &prompt.root; chmod 555 /usr/sbin/ppp You will now have a debuggable version of &man.ppp.8; installed. You will have to be root 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. Now, if and when &man.ppp.8; receives the segmentation violation, it will dump a core file called ppp.core. You should then do the following: &prompt.user; su &prompt.root; gdb /usr/sbin/ppp ppp.core (gdb) bt ..... (gdb) f 0 .... (gdb) i args .... (gdb) l ..... All of this information should be given alongside your question, making it possible to diagnose the problem. 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. Why does the process that forces a dial in auto mode never connect? 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 man page for iface. 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. 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 :-) The current version of &man.ppp.8; does this, but most other implementations do not. 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 iface-alias option in the latest version of &man.ppp.8; is doing (with the help of &man.libalias.3; and &man.ppp.8;'s switch) - it is maintaining all previous interface addresses and NATing them to the last negotiated address. 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. 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. Why do most games not work with the -nat switch? 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. 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 (set log +tcp/ip) on the gateway. 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 /etc/ppp/ppp.conf will make the software functional: nat port proto internalmachine:port port where proto is either tcp or udp, internalmachine is the machine that you want the packets to be sent to and port is the destination port number of the packets. 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. If the port numbers are not consistent, there are three more options: Submit support in libalias. Examples of special cases can be found in /usr/src/lib/libalias/alias_*.c (alias_ftp.c 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 route in the alias table so that the subsequent packets know where to go. This is the most difficult solution, but it is the best and will make the software work with multiple machines. Use a proxy. The application may support socks5 for example, or (as in the cvsup case) may have a passive option that avoids ever requesting that the peer open connections back to the local machine. Redirect everything to the internal machine using nat addr. This is the sledge-hammer approach. Has anybody made a list of useful port numbers? Not yet, but this is intended to grow into such a list (if any interest is shown). In each example, internal should be replaced with the IP number of the machine playing the game. Asheron's Call nat port udp internal :65000 65000 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 nat port line for each one. Half Life nat port udp internal:27005 27015 PCAnywhere 8.0 nat port udp internal:5632 5632 nat port tcp internal:5631 5631 Quake nat port udp internal:6112 6112 Alternatively, you may want to take a look at www.battle.net for Quake proxy support. Quake 2 nat port udp internal:27901 27910 nat port udp internal:60021 60021 nat port udp internal:60040 60040 Red Alert nat port udp internal:8675 8675 nat port udp internal:5009 5009 What are FCS errors? FCS stands for Frame Check Sequence. 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 show hdlc command. 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. 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 must use software flow control, use the command set accmap 0x000a0000 to tell &man.ppp.8; to escape the ^Q and ^S characters. Another reason for seeing too many FCS errors may be that the remote end has stopped talking PPP. You may want to enable async 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 close lcp command (a following term command will reconnect you to the shell on the remote machine. 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. Why do MacOS and Windows 98 connections freeze when running PPPoE on the gateway? Thanks to Michael Wozniak mwozniak@netcom.ca for figuring this out and Dan Flemming danflemming@mac.com for the Mac solution: This is due to what is called a Black Hole 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) and have the do not fragment bit set (default of TCP) and the Telco router is not sending ICMP must fragment 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...) One fix is to use regedit on your 95/98 boxes to add the following registry entry... HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU It should be a string with a value 1436, as some ADSL routers are reported to be unable to deal with packets larger than this. This registry key has been changed to Tcpip\Parameters\Interfaces\ID for adapter\MTU in Windows 2000 and becomes a DWORD. Refer to the Microsoft Knowledge Base documents Q158474 - Windows TCPIP Registry Entries and Q120642 - TCPIP & NBT Configuration Parameters for Windows NT for more information on changing Windows MTU to work with a NAT router. Another regedit possibility under Windows 2000 is to set the Tcpip\Parameters\Interfaces\ID for adapter\EnablePMTUBHDetect DWORD to 1 as mentioned in the Microsoft document 120642 mentioned above. 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 Sustainable Softworks, that will allow users to customize TCP/IP settings. MacOS NAT users should select ip_interface_MTU from the drop-down menu, enter 1450 instead of 1500 in the box, click the box next to Save as Auto Configure, and click Make Active. The latest version of &man.ppp.8; (2.3 or greater) has an enable tcpmssfixup 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 tcpmssd port. None of this helps - I am desperate! What can I do? 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 netstat -rn command (before and after connecting) to the &a.questions; or the comp.unix.bsd.freebsd.misc news group, and someone should point you in the right direction. Serial Communications This section answers common questions about serial communications with FreeBSD. PPP and SLIP are covered in the section. How do I tell if FreeBSD found my serial ports? 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 &prompt.user; dmesg | grep sio after your system is up and running. Here is some example output from the above command: sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A This shows two serial ports. The first is on irq 4, is using port address 0x3f8, and has a 16550A-type UART chip. The second uses the same kind of chip but is on irq 3 and is at port address 0x2f8. Internal modem cards are treated just like serial ports---except that they always have a modem attached to the port. The GENERIC 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 about building a kernel for more details. How do I tell if FreeBSD found my modem cards? Refer to the answer to the previous question. I just upgraded to 2.0.5 and my tty0X are missing! How do I solve this problem? Do not worry, they have been merged with the ttydX devices. You will have to change any old configuration files you have, though. How do I access the serial ports on FreeBSD? The third serial port, sio2 (see &man.sio.4;, known as COM3 in DOS), is on /dev/cuaa2 for dial-out devices, and on /dev/ttyd2 for dial-in devices. What is the difference between these two classes of devices? You use ttydX for dial-ins. When opening /dev/ttydX in blocking mode, a process will wait for the corresponding cuaaX device to become inactive, and then wait for the carrier detect line to go active. When you open the cuaaX device, it makes sure the serial port is not already in use by the ttydX device. If the port is available, it steals it from the ttydX device. Also, the cuaaX 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 dialout with the same modem and the system will take care of all the conflicts. How do I enable support for a multiport serial card? 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 COM_MULTIPORT option. The following example is for an AST 4-port serial card on irq 7: 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 The flags indicate that the master port has minor number 7 (0x700), diagnostics enabled during probe (0x080), and all the ports share an irq (0x001). Can FreeBSD handle multiport serial cards sharing irqs? Not yet. You will have to use a different irq for each card. Can I set the default serial parameters for a port? The ttydX (or cuaaX) device is the regular device you will want to open for your applications. When a process opens the device, it will have a default set of terminal I/O settings. You can see these settings with the command &prompt.root; stty -a -f /dev/ttyd1 When you change the settings to this device, the settings are in effect until the device is closed. When it is reopened, it goes back to the default set. To make changes to the default set, you can open and adjust the settings of the initial state device. For example, to turn on CLOCAL mode, 8 bits, and XON/XOFF flow control by default for ttyd5, do: &prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff A good place to do this is in /etc/rc.serial. Now, an application will have these settings by default when it opens ttyd5. It can still change these settings to its liking, though. You can also prevent certain settings from being changed by an application by making adjustments to the lock state device. For example, to lock the speed of ttyd5 to 57600 bps, do &prompt.root; stty -f /dev/ttyld5 57600 Now, an application that opens ttyd5 and tries to change the speed of the port will be stuck with 57600 bps. Naturally, you should make the initial state and lock state devices writable only by root. The &man.MAKEDEV.8; script does NOT do this when it creates the device entries. How can I enable dialup logins on my modem? 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 (DTR) line goes from on to off. It should probably use RTS/CTS flow control or no local flow control at all. Finally, it must use a constant speed between the computer and itself, but (to be nice to your callers) it should negotiate a speed between itself and the remote modem. For many Hayes command-set--compatible modems, this command will make these settings and store them in nonvolatile memory: AT &C1 &D3 &K3 &Q6 S0=1 &W See the section on sending AT commands below for information on how to make these settings without resorting to an MS-DOS terminal program. Next, make an entry in /etc/ttys (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: ttyd1 "/usr/libexec/getty std.57600" dialup on insecure This line indicates that the second serial port (/dev/ttyd1) has a modem connected running at 57600 bps and no parity (std.57600, which comes from the file /etc/gettytab, see &man.gettytab.5;). The terminal type for this port is dialup. The port is on and is insecure---meaning root logins on the port are not allowed. For dialin ports like this one, use the ttydX entry. It is common practice to use dialup as the terminal type. Many users set up in their .profile or .login files a prompt for the actual terminal type if the starting type is dialup. The example shows the port as insecure. To become root on this port, you have to login as a regular user, then &man.su.1; to become root. If you use secure then root can login in directly. After making modifications to /etc/ttys, you need to send a hangup or HUP signal to the &man.init.8; process: &prompt.root; kill -HUP 1 This forces the &man.init.8; process to reread /etc/ttys. The init process will then start getty processes on all on ports. You can find out if logins are available for your port by typing &prompt.user; ps -ax | grep '[t]tyd1' You should see something like: 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1 How can I connect a dumb terminal to my FreeBSD box? 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. Then, modify /etc/ttys (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: ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure This example shows that the port on /dev/ttyd4 has a wyse50 terminal connected at 38400 bps with no parity (std.38400 from /etc/gettytab, see &man.gettytab.5;) and root logins are allowed (secure). Why can I not run tip or cu? On your system, the programs &man.tip.1; and &man.cu.1; are probably executable only by uucp and group dialer. You can use the group dialer to control who has access to your modem or remote systems. Just add yourself to group dialer. Alternatively, you can let everyone on your system run &man.tip.1; and &man.cu.1; by typing: &prompt.root; chmod 4511 /usr/bin/cu &prompt.root; chmod 4511 /usr/bin/tip My stock Hayes modem is not supported---what can I do? Actually, the man page for &man.tip.1; is out of date. There is a generic Hayes dialer already built in. Just use at=hayes in your /etc/remote (see &man.remote.5;) file. The Hayes driver is not smart enough to recognize some of the advanced features of newer modems---messages like BUSY, NO DIALTONE, or CONNECT 115200 will just confuse it. You should turn those messages off when you use &man.tip.1; (using ATX0&W). 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 ATS7=45&W. Actually, as shipped &man.tip.1; does not yet support it fully. The solution is to edit the file tipconf.h in the directory /usr/src/usr.bin/tip/tip. Obviously you need the source distribution to do this. Edit the line #define HAYES 0 to #define HAYES 1. Then make and make install. Everything works nicely after that. How am I expected to enter these AT commands? Make what is called a direct entry in your /etc/remote file (see &man.remote.5;). For example, if your modem is hooked up to the first serial port, /dev/cuaa0, then put in the following line: cuaa0:dv=/dev/cuaa0:br#19200:pa=none Use the highest bps rate your modem supports in the br capability. Then, type tip cuaa0 (see &man.tip.1;) and you will be connected to your modem. If there is no /dev/cuaa0 on your system, do this: &prompt.root; cd /dev &prompt.root; sh MAKEDEV cuaa0 Or use cu as root with the following command: &prompt.root; cu -lline -sspeed with line being the serial port (e.g. /dev/cuaa0) and speed being the speed (e.g.57600). When you are done entering the AT commands hit ~. to exit. Why does the <@> sign for the pn capability not work? The <@> sign in the phone number capability tells tip to look in /etc/phones for a phone number. But the <@> sign is also a special character in capability files like /etc/remote. Escape it with a backslash: pn=\@ How can I dial a phone number on the command line? Put what is called a generic entry in your /etc/remote file (see &man.remote.5;). For example: 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: Then you can do something like tip -115200 5551234. If you prefer &man.cu.1; over &man.tip.1;, use a generic cu entry: cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du: and type cu 5551234 -s 115200. Do I have to type in the bps rate every time I do that? Put in an entry for tip1200 or cu1200, 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 tip1200 entry. You do not have to use 1200 bps, though. How can I more easily access a number of hosts through a terminal server? Rather than waiting until you are connected and typing CONNECT host each time, use tip's cm capability. For example, these entries in /etc/remote (see &man.remote.5;): 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: will let you type tip pain or tip muffin to connect to the hosts pain or muffin; and tip deep13 to get to the terminal server. Can tip try more than one line for each site? This is often a problem where a university has several modem lines and several thousand students trying to use them... Make an entry for your university in /etc/remote (see &man.remote.5;) and use <\@> for the pn capability: big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none: Then, list the phone numbers for the university in /etc/phones (see &man.phones.5;): big-university 5551111 big-university 5551112 big-university 5551113 big-university 5551114 &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. Why do I have to hit CTRL+P twice to send CTRL+P once? CTRL+P is the default force 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 ~s escape, which means set a variable. Type ~sforce=single-char followed by a newline. single-char is any single character. If you leave out single-char, then the force character is the nul character, which you can get by typing CTRL+2 or CTRL+SPACE. A pretty good value for single-char is SHIFT+CTRL+6, which I have seen only used on some terminal servers. You can have the force character be whatever you want by specifying the following in your $HOME/.tiprc file: force=single-char Why is everything I type suddenly in UPPER CASE? You must have pressed CTRL+A, &man.tip.1; raise character, specially designed for people with broken caps-lock keys. Use ~s as above and set the variable raisechar to something reasonable. In fact, you can set it to the same as the force character, if you never expect to use either of these features. Here is a sample .tiprc file perfect for Emacs users who need to type CTRL+2 and CTRL+A a lot: force=^^ raisechar=^^ The ^^ is SHIFT+CTRL+6. How can I do file transfers with tip? If you are talking to another Unix system, you can send and receive files with ~p (put) and ~t (take). These commands run &man.cat.1; and &man.echo.1; on the remote system to accept and send files. The syntax is: ~p <local-file> [<remote-file>] ~t <remote-file> [<local-file>] There is no error checking, so you probably should use another protocol, like zmodem. How can I run zmodem with tip? First, install one of the zmodem programs from the ports collection (such as one of the two from the comms category, lrzsz or rzsz. To receive files, start the sending program on the remote end. Then, press enter and type ~C rz (or ~C lrz if you installed lrzsz) to begin receiving them locally. To send files, start the receiving program on the remote end. Then, press enter and type ~C sz files (or ~C lsz files) to send them to the remote system. Why does FreeBSD not find my serial ports, even when the settings are correct? Motherboards and cards with Acer UARTs do not probe properly under the FreeBSD sio probe. Obtain a patch from www.lemis.com to fix your problem. Miscellaneous Questions FreeBSD uses far more swap space than Linux. Why? 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. 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. Why does top show very little free memory even when I have very few programs running? 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 Inact, Cache, and Buf 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 Free memory in &man.top.1; is good, provided it is not very low. Why use (what are) a.out and ELF executable formats? To understand why FreeBSD uses the ELF format, you must first know a little about the 3 currently dominant executable formats for Unix: Prior to FreeBSD 3.x, FreeBSD used the a.out format. &man.a.out.5; The oldest and classic Unix object format. It uses a short and compact header with a magic number at the beginning that is often used to characterize the format (see &man.a.out.5; for more details). It contains three loaded segments: .text, .data, and .bss plus a symbol table and a string table. COFF The SVR3 object format. The header now comprises a section table, so you can have more than just .text, .data, and .bss sections. ELF The successor to COFF, featuring Multiple sections and 32-bit or 64-bit possible values. One major drawback: ELF was also designed with the assumption that there would be only one ABI per system architecture. That assumption is actually quite incorrect, and not even in the commercial SYSV world (which has at least three ABIs: SVR4, Solaris, SCO) does it hold true. FreeBSD tries to work around this problem somewhat by providing a utility for branding a known ELF executable with information about the ABI it is compliant with. See the man page for &man.brandelf.1; for more information. FreeBSD comes from the classic camp and has traditionally used the &man.a.out.5; format, a technology tried and proven through many generations of BSD releases. Though it has also been possible for some time to build and run native ELF binaries (and kernels) on a FreeBSD system, FreeBSD initially resisted the push to switch to ELF as the default format. Why? Well, when the Linux camp made their painful transition to ELF, it was not so much to flee the a.out executable format as it was their inflexible jump-table based shared library mechanism, which made the construction of shared libraries very difficult for vendors and developers alike. Since the ELF tools available offered a solution to the shared library problem and were generally seen as the way forward anyway, the migration cost was accepted as necessary and the transition made. In FreeBSD's case, our shared library mechanism is based more closely on Sun's SunOS-style shared library mechanism and, as such, is very easy to use. However, starting with 3.0, FreeBSD officially supports ELF binaries as the default format. Even though the a.out executable format has served us well, the GNU people, who author the compiler tools we use, have dropped support for the a.out format. This has forced us to maintain a divergent version of the compiler and linker, and has kept us from reaping the benefits of the latest GNU development efforts. Also the demands of ISO-C++, notably constructors and destructors, has also led to native ELF support in future FreeBSD releases. Yes, but why are there so many different formats? Back in the dim, dark past, there was simple hardware. This simple hardware supported a simple, small system. a.out was completely adequate for the job of representing binaries on this simple system (a PDP-11). As people ported Unix from this simple system, they retained the a.out format because it was sufficient for the early ports of Unix to architectures like the Motorola 68k, VAXen, etc. Then some bright hardware engineer decided that if he could force software to do some sleazy tricks, then he would be able to shave a few gates off the design and allow his CPU core to run faster. While it was made to work with this new kind of hardware (known these days as RISC), a.out was ill-suited for this hardware, so many formats were developed to get to a better performance from this hardware than the limited, simple a.out format could offer. Things like COFF, ECOFF, and a few obscure others were invented and their limitations explored before things seemed to settle on ELF. In addition, program sizes were getting huge and disks (and physical memory) were still relatively small so the concept of a shared library was born. The VM system also became more sophisticated. While each one of these advancements was done using the a.out format, its usefulness was stretched more and more with each new feature. In addition, people wanted to dynamically load things at run time, or to junk parts of their program after the init code had run to save in core memory and/or swap space. Languages became more sophisticated and people wanted code called before main automatically. Lots of hacks were done to the a.out format to allow all of these things to happen, and they basically worked for a time. In time, a.out was not up to handling all these problems without an ever increasing overhead in code and complexity. While ELF solved many of these problems, it would be painful to switch from the system that basically worked. So ELF had to wait until it was more painful to remain with a.out than it was to migrate to ELF. However, as time passed, the build tools that FreeBSD derived their build tools from (the assembler and loader especially) evolved in two parallel trees. The FreeBSD tree added shared libraries and fixed some bugs. The GNU folks that originally write these programs rewrote them and added simpler support for building cross compilers, plugging in different formats at will, etc. Since many people wanted to build cross compilers targeting FreeBSD, they were out of luck since the older sources that FreeBSD had for as and ld were not up to the task. The new gnu tools chain (binutils) does support cross compiling, ELF, shared libraries, C++ extensions, etc. In addition, many vendors are releasing ELF binaries, and it is a good thing for FreeBSD to run them. And if it is running ELF binaries, why bother having a.out any more? It is a tired old horse that has proven useful for a long time, but it is time to turn him out to pasture for his long, faithful years of service. ELF is more expressive than a.out and will allow more extensibility in the base system. The ELF tools are better maintained, and offer cross compilation support, which is important to many people. ELF may be a little slower than a.out, but trying to measure it can be difficult. There are also numerous details that are different between the two in how they map pages, handle init code, etc. None of these are very important, but they are differences. In time support for a.out will be moved out of the GENERIC kernel, and eventually removed from the kernel once the need to run legacy a.out programs is past. Why will chmod not change the permissions on symlinks? 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, foo, and a symlink to that file, bar, then this command will always succeed. &prompt.user; chmod g-w bar However, the permissions on foo will not have changed. You have to use either or together with the option to make this work. See the &man.chmod.1; and &man.symlink.7; man pages for more info. The option does a RECURSIVE &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 (/). For example, if foo is a symlink to directory bar, and you want to change the permissions of foo (actually bar), you would do something like: &prompt.user; chmod 555 foo/ With the trailing slash, &man.chmod.1; will follow the symlink, foo, to change the permissions of the directory, bar. Why are login names restricted to 8 characters or less in FreeBSD 2.2.X and earlier? You would think it would be easy enough to change UT_NAMESIZE and rebuild the whole world, and everything would just work. Unfortunately there are often scads of applications and utilities (including system tools) that have hard-coded small numbers (not always 8 or 9, but oddball ones like 15 and 20) in structures and buffers. Not only will this get you log files which are trashed (due to variable-length records getting written when fixed records were expected), but it can break Suns NIS clients and potentially cause other problems in interacting with other Unix systems. In FreeBSD 3.0 and later, the maximum name length has been increased to 16 characters and those various utilities with hard-coded name sizes have been found and fixed. The fact that this touched so many areas of the system is why, in fact, the change was not made until 3.0. If you are absolutely confident in your ability to find and fix these sorts of problems for yourself when and if they pop up, you can increase the login name length in earlier releases by editing /usr/include/utmp.h and changing UT_NAMESIZE accordingly. You must also update MAXLOGNAME in /usr/include/sys/param.h to match the UT_NAMESIZE change. Finally, if you build from sources, do not forget that /usr/include is updated each time! Change the appropriate files in /usr/src/.. instead. Can I run DOS binaries under FreeBSD? Yes, starting with version 3.0 you can using BSDI's doscmd DOS emulation which has been integrated and enhanced. Send mail to the &a.emulation; if you are interested in joining this ongoing effort! For pre-3.0 systems, there is a neat utility called pcemu in the ports collection which emulates an 8088 and enough BIOS services to run DOS text mode applications. It requires the X Window System (provided as XFree86). What do I need to do to translate a FreeBSD document into my native language? See the Translation FAQ in the FreeBSD Documentation Project Primer. Where can I find a free FreeBSD account? 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. Arbornet, Inc, 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. Grex 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 What is sup, and how do I use it? SUP stands for Software Update Protocol, and was developed by CMU for keeping their development trees in sync. We used it to keep remote sites in sync with our central development sources. SUP is not bandwidth friendly, and has been retired. The current recommended method to keep your sources up to date is CVSup What is the cute little red guy's name? He does not have one, and is just called the BSD daemon. If you insist upon using a name, call him beastie. Note that beastie is pronounced BSD. You can learn more about the BSD daemon on his home page. Can I use the BSD daemon image? Perhaps. The BSD daemon is copyrighted by Marshall Kirk McKusick. You will want to check his Statement on the Use of the BSD Daemon Figure for detailed usage terms. 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 BSD Daemon's home page. Do you have any BSD daemon images I could use? You will find eps and Xfig drawings under /usr/share/examples/BSD_daemon/. What does MFC mean? MFC is an acronym for Merged From -CURRENT. It is used in the CVS logs to denote when a change was migrated from the CURRENT to the STABLE branches. What does BSD mean? It stands for something in a secret language that only members can know. It does not translate literally but its ok to tell you that BSD's translation is something between, Formula-1 Racing Team, Penguins are tasty snacks, and We have a better sense of humor than Linux. :-) Seriously, BSD is an acronym for Berkeley Software Distribution, which is the name the Berkeley CSRG (Computer Systems Research Group) chose for their Unix distribution way back when. What is a repo-copy? A repo-copy (which is a short form of repository copy) refers to the direct copying of files within the CVS repository. Without a repo-copy, if a file needed to be copied or moved to another place in the repository, the committer would run cvs add to put the file in its new location, and then cvs rm on the old file if the old copy was being removed. The disadvantage of this method is that the history (i.e. the entries in the CVS logs) of the file would not be copied to the new location. As the FreeBSD Project considers this history very useful, a repository copy is often used instead. This is a process where one of the repository meisters will copy the files directly within the repository, rather than using the &man.cvs.1; program. Why should I care what color the bikeshed is? 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. 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 A bike shed (any colour will do) on greener grass.... The appropriate portions of that message are quoted below.
&a.phk; on freebsd-hackers, October 2, 1999 What is it about this bike shed? Some of you have asked me. 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 1960'ies, called Parkinson's Law, which contains a lot of insight into the dynamics of management. [snip a bit of commentary on the book] 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. Parkinson shows how you can go in to 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. 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. 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 here. In Denmark we call it setting your fingerprint. It is about personal pride and prestige, it is about being able to point somewhere and say There! I did that. It is a strong trait in politicians, but present in most people given the chance. Just think about footsteps in wet cement.
The FreeBSD Funnies How cool is FreeBSD? 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. 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 scratch and sniff GUI. It is a funny old business we are in! Seriously, both FreeBSD and Linux use the HLT (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. Who is scratching in my memory banks?? Q. Is there anything odd that FreeBSD does when compiling the kernel which would cause the memory to make a scratchy sound? When compiling (and for a brief moment after recognizing the floppy drive upon startup, as well), a strange scratchy sound emanates from what appears to be the memory banks. A. Yes! You will see frequent references to daemons 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. If the noise gets to you, a good fdisk /mbr 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? How many FreeBSD hackers does it take to change a lightbulb? One thousand, one hundred and seventy-two: Twenty-three to complain to -CURRENT about the lights being out; Four to claim that it is a configuration problem, and that such matters really belong on -questions; Three to submit PRs about it, one of which is misfiled under doc and consists only of "it's dark"; One to commit an untested lightbulb which breaks buildworld, then back it out five minutes later; Eight to flame the PR originators for not including patches in their PRs; Five to complain about buildworld being broken; Thirty-one to answer that it works for them, and they must have cvsupped at a bad time; One to post a patch for a new lightbulb to -hackers; 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; 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!? Two hundred to complain about the color of the bicycle shed; Three to point out that the patch breaks &man.style.9;; Seventeen to complain that the proposed new lightbulb is under GPL; 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; Seven to move various portions of the thread to -chat and -advocacy; One to commit the suggested lightbulb, even though it shines dimmer than the old one; 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; Forty-six to argue vociferously about the backing out of the dim lightbulb and demanding a statement from -core; Eleven to request a smaller lightbulb so it will fit their Tamagotchi if we ever decide to port FreeBSD to that platform; Seventy-three to complain about the SNR on -hackers and -chat and unsubscribe in protest; Thirteen to post "unsubscribe", "How do I unsubscribe?", or "Please remove me from the list", followed by the usual footer; One to commit a working lightbulb while everybody is too busy flaming everybody else to notice; 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 EGCS; One to complain that the new lightbulb lacks fairings; Nine (including the PR originators) to ask "what is MFC?"; Fifty-seven to complain about the lights being out two weeks after the bulb has been changed. &a.nik; adds: I was laughing quite hard at this. And then I thought, "Hang on, shouldn't there be '1 to document it.' in that list somewhere?" And then I was enlightened :-) Where does data written to /dev/null go? 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 /dev/null, overheating their CPUs. If you delete /dev/null (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 /dev/random and sending it off somewhere; however you run the risk of overheating your network connection and / 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. Paul Robinson adds: There are other methods. As every good sysadmin knows, it is part of standard practise 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 'pixels') are categorised by the type of hat they wear (red, green or blue) and will hide or appear (thereby showing the colour 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 simulation - this is why screen savers exist. 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. 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. Advanced Topics How can I learn more about FreeBSD's internals? At this time, there is no book on FreeBSD-specific OS internals. Much general UNIX knowledge is directly applicable to FreeBSD, however. Additionally, there are BSD-specific books that are still relevant. For a list, please check the Handbook's Operating System Internals Bibliography. What are SNAPs and RELEASEs? There are currently three active/semi-active branches in the FreeBSD CVS Repository (the RELENG_2 branch is probably only changed twice a year, which is why there are only three active branches of development): RELENG_2_2 AKA 2.2-STABLE RELENG_3 AKA 3.X-STABLE RELENG_4 AKA 4-STABLE HEAD AKA -CURRENT AKA 5.0-CURRENT HEAD is not an actual branch tag, like the other two; it is simply a symbolic constant for the current, non-branched development stream which we simply refer to as -CURRENT. Right now, -CURRENT is the 5.0 development stream and the 4-STABLE branch, RELENG_4, forked off from -CURRENT in Mar 2000. The 2.2-STABLE branch, RELENG_2_2, departed -CURRENT in November 1996, and has pretty much been retired. How do I make my own custom release? Please see the Making your Own Release section of the Handbook. Why does make world clobber my existing installed binaries? Yes, this is the general idea; as its name might suggest, make world rebuilds every system binary from scratch, so you can be certain of having a clean and consistent environment at the end (which is why it takes so long). If the environment variable DESTDIR is defined while running make world or make install, the newly-created binaries will be deposited in a directory tree identical to the installed one, rooted at ${DESTDIR}. Some random combination of shared libraries modifications and program rebuilds can cause this to fail in make world however. Why does my system say (bus speed defaulted) when it boots? 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 TUNE_1542 kernel configuration option in order to have this take place. Using it on those systems where it works may make your disks run faster, but on those systems where it does not, your data could be corrupted. Can I follow current with limited Internet access? Yes, you can do this without downloading the whole source tree by using the CTM facility. How did you split the distribution into 240k files? Newer BSD based systems have a option to split that allows them to split files on arbitrary byte boundaries. Here is an example from /usr/src/Makefile. bin-tarball: (cd ${DISTDIR}; \ tar cf - . \ gzip --no-name -9 -c | \ split -b 240640 - \ ${RELEASEDIR}/tarballs/bindist/bin_tgz.) I have written a kernel extension, who do I send it to? Please take a look at The contributing to FreeBSD article on how to submit code. And thanks for the thought! How are Plug N Play ISA cards detected and initialized? By: Frank Durda IV uhclem@nemesis.lonestar.org In a nutshell, there a few I/O ports that all of the PnP boards respond to when the host asks if anyone is out there. So when the PnP probe routine starts, he asks if there are any PnP boards present, and all the PnP boards respond with their model # to a I/O read of the same port, so the probe routine gets a wired-OR yes to that question. At least one bit will be on in that reply. Then the probe code is able to cause boards with board model IDs (assigned by Microsoft/Intel) lower than X to go off-line. It then looks to see if any boards are still responding to the query. If the answer was 0, then there are no boards with IDs above X. Now probe asks if there are any boards below X. If so, probe knows there are boards with a model numbers below X. Probe then asks for boards greater than X-(limit/4) to go off-line. If repeats the query. By repeating this semi-binary search of IDs-in-range enough times, the probing code will eventually identify all PnP boards present in a given machine with a number of iterations that is much lower than what 2^64 would take. The IDs are two 32-bit fields (hence 2ˆ64) + 8 bit checksum. The first 32 bits are a vendor identifier. They never come out and say it, but it appears to be assumed that different types of boards from the same vendor could have different 32-bit vendor ids. The idea of needing 32 bits just for unique manufacturers is a bit excessive. The lower 32 bits are a serial #, Ethernet address, something that makes this one board unique. The vendor must never produce a second board that has the same lower 32 bits unless the upper 32 bits are also different. So you can have multiple boards of the same type in the machine and the full 64 bits will still be unique. The 32 bit groups can never be all zero. This allows the wired-OR to show non-zero bits during the initial binary search. Once the system has identified all the board IDs present, it will reactivate each board, one at a time (via the same I/O ports), and find out what resources the given board needs, what interrupt choices are available, etc. A scan is made over all the boards to collect this information. This info is then combined with info from any ECU files on the hard disk or wired into the MLB BIOS. The ECU and BIOS PnP support for hardware on the MLB is usually synthetic, and the peripherals 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. 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. There is a lot of oversimplification above, but you should get the general idea. Microsoft took over some of the primary printer status ports to do PnP, on the logic that no boards decoded those addresses for the opposing I/O cycles. I found a genuine IBM printer board that did decode writes of the status port during the early PnP proposal review period, but MS said tough. So they do a write to the printer status port for setting addresses, plus that use that address + 0x800, and a third I/O port for reading that can be located anywhere between 0x200 and 0x3ff. Can you assign a major number for a device driver I have written? This depends on whether or not you plan on making the driver publicly available. If you do, then please send us a copy of the driver source code, plus the appropriate modifications to files.i386, 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 &a.hackers;. What about alternative layout policies for directories? 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. Kirk McKusick, September 1998 How can I make the most of the data I see when my kernel panics? [This section was extracted from a mail written by &a.wpaul; on the freebsd-current mailing list by &a.des;, who fixed a few typos and added the bracketed comments] 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 Ben Rosengart posted the following panic message] > 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 [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 you can tell us where the fault occurred. What you should do is this: Write down the instruction pointer value. Note that the 0x8: part at the beginning is not significant in this case: it is the 0xf0xxxxxx part that we want. When the system reboots, do the following: &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxxx where f0xxxxxx 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.: &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxx 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. 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. 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. In any case, the method I normally use is this: Set up a kernel config file, optionally adding options DDB 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.) Use config -g KERNELCONFIG to set up the build directory. cd /sys/compile/ KERNELCONFIG; make Wait for kernel to finish compiling. make install reboot The &man.make.1; process will have built two kernels. kernel and kernel.debug. kernel was installed as /kernel, while kernel.debug can be used as the source of debugging symbols for &man.gdb.1;. To make sure you capture a crash dump, you need edit /etc/rc.conf and set dumpdev 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 dumpdev is set in /etc/rc.conf, the &man.rc.8; scripts will run &man.savecore.8; automatically and put the crash dump in /var/crash. 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 /var/crash 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 options MAXMEM=(foo) 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. Once you have recovered the crash dump, you can get a stack trace with &man.gdb.1; as follows: &prompt.user; gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0 (gdb) where 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. 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. [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] Why has dlsym() stopped working for ELF executables? The ELF toolchain does not, by default, make the symbols defined in an executable visible to the dynamic linker. Consequently dlsym() searches on handles obtained from calls to dlopen(NULL, flags) will fail to find such symbols. If you want to search, using dlsym(), for symbols present in the main executable of a process, you need to link the executable using the option to the ELF linker (&man.ld.1;). How can I increase or reduce the kernel address space? 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. 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. The first goal is achieved by increasing the value of NKPDE in src/sys/i386/include/pmap.h. Here is what it looks like for a 1 GB address space: #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 To find the correct value of NKPDE, divide the desired address space size (in megabytes) by four, then subtract one for UP and two for SMP. 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 LOAD_ADDRESS in src/sys/i386/conf/Makefile.i386 to that value; then set the location counter in the beginning of the section listing in src/sys/i386/conf/kernel.script to the same value, as follows: 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) } Then reconfig and rebuild your kernel. You will probably have problems with &man.ps.1; &man.top.1; and the like; make world should take care of it (or a manual rebuild of libkvm, &man.ps.1; and &man.top.1; after copying the patched pmap.h to /usr/include/vm/. NOTE: the size of the kernel address space must be a multiple of four megabytes. [&a.dg; adds: 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.] Acknowledgments
FreeBSD Core Team If you see a problem with this FAQ, or wish to submit an entry, please mail the &a.faq;. We appreciate your feedback, and cannot make this a better FAQ without your help!
&a.jkh; Occasional fits of FAQ-reshuffling and updating. &a.dwhite; Services above and beyond the call of duty on freebsd-questions &a.joerg; Services above and beyond the call of duty on Usenet &a.wollman; Networking and formatting Jim Lowe Multicast information &a.pds; FreeBSD FAQ typing machine slavey The FreeBSD Team Kvetching, moaning, submitting data And to any others we have forgotten, apologies and heartfelt thanks!
&bibliography;
diff --git a/en_US.ISO8859-1/share/sgml/authors.ent b/en_US.ISO8859-1/share/sgml/authors.ent index 8e289c8f98..9071b84788 100644 --- a/en_US.ISO8859-1/share/sgml/authors.ent +++ b/en_US.ISO8859-1/share/sgml/authors.ent @@ -1,705 +1,698 @@ abial@FreeBSD.org"> ache@FreeBSD.org"> adam@FreeBSD.org"> ade@FreeBSD.org"> adrian@FreeBSD.org"> akiyama@FreeBSD.org"> alc@FreeBSD.org"> alex@FreeBSD.org"> alfred@FreeBSD.org"> amorita@FreeBSD.org"> amurai@FreeBSD.org"> anders@FreeBSD.org"> andreas@FreeBSD.org"> andy@FreeBSD.org"> archie@FreeBSD.org"> arr@FreeBSD.org"> asami@FreeBSD.org"> asmodai@FreeBSD.org"> assar@FreeBSD.org"> ats@FreeBSD.org"> awebster@pubnix.net"> babkin@FreeBSD.org"> bbraun@FreeBSD.org"> bde@FreeBSD.org"> ben@FreeBSD.org"> bean@FreeBSD.org"> benno@FreeBSD.org"> billf@FreeBSD.org"> bmah@FreeBSD.org"> bmilekic@FreeBSD.org"> bp@FreeBSD.org"> brandon@FreeBSD.org"> brian@FreeBSD.org"> brooks@FreeBSD.org"> bsd@FreeBSD.org"> cawimm@FreeBSD.org"> cg@FreeBSD.org"> charnier@FreeBSD.org"> chern@FreeBSD.org"> chm@FreeBSD.org"> chris@FreeBSD.org"> chuckr@glue.umd.edu"> chuckr@FreeBSD.org"> cjc@FreeBSD.org"> cjh@FreeBSD.org"> clive@FreeBSD.org"> cp@FreeBSD.org"> cokane@FreeBSD.org"> cpiazza@FreeBSD.org"> cracauer@FreeBSD.org"> csgr@FreeBSD.org"> cshumway@FreeBSD.org"> cwt@FreeBSD.org"> cy@FreeBSD.org"> dan@FreeBSD.org"> danny@FreeBSD.org"> dannyboy@FreeBSD.org"> darrenr@FreeBSD.org"> davidc@FreeBSD.org"> davidn@blaze.net.au"> dbaker@FreeBSD.org"> dburr@FreeBSD.org"> dcs@FreeBSD.org"> dd@FreeBSD.org"> dec@FreeBSD.org"> deischen@FreeBSD.org"> demon@FreeBSD.org"> des@FreeBSD.org"> dfr@FreeBSD.org"> ambrisko@FreeBSD.org"> dg@FreeBSD.org"> dick@FreeBSD.org"> dillon@FreeBSD.org"> dinoex@FreeBSD.org"> dima@FreeBSD.org"> dirk@FreeBSD.org"> Dirk.vanGulik@jrc.it"> dmlb@FreeBSD.org"> DougB@FreeBSD.org"> dt@FreeBSD.org"> dufault@FreeBSD.org"> dwcjr@FreeBSD.org"> dwhite@FreeBSD.org"> dwmalone@FreeBSD.org"> dyson@FreeBSD.org"> eivind@FreeBSD.org"> ejc@FreeBSD.org"> eric@FreeBSD.org"> erich@FreeBSD.org"> -faq@FreeBSD.org"> - fenner@FreeBSD.org"> fjoe@FreeBSD.org"> flathill@FreeBSD.org"> foxfair@FreeBSD.org"> fsmp@FreeBSD.org"> furuta@FreeBSD.org"> gad@FreeBSD.org"> gallatin@FreeBSD.org"> gclarkii@FreeBSD.org"> gena@NetVision.net.il"> ghelmer@cs.iastate.edu"> gibbs@FreeBSD.org"> gioria@FreeBSD.org"> gj@FreeBSD.org"> gpalmer@FreeBSD.org"> graichen@FreeBSD.org"> green@FreeBSD.org"> greid@FreeBSD.org"> grog@FreeBSD.org"> groudier@free.fr"> gryphon@healer.com"> gshapiro@FreeBSD.org"> gsutter@FreeBSD.org"> guido@FreeBSD.org"> hanai@FreeBSD.org"> handy@sxt4.physics.montana.edu"> hrs@FreeBSD.org"> roger@FreeBSD.org"> helbig@FreeBSD.org"> hm@FreeBSD.org"> hoek@FreeBSD.org"> horikawa@FreeBSD.org"> hosokawa@FreeBSD.org"> hsu@FreeBSD.org"> iedowse@FreeBSD.org"> ijliao@FreeBSD.org"> imp@FreeBSD.org"> imura@FreeBSD.org"> issei@FreeBSD.org"> itojun@itojun.org"> iwasaki@FreeBSD.org"> jake@FreeBSD.org"> jasone@FreeBSD.org"> jayanth@FreeBSD.org"> jb@cimlogic.com.au"> jdp@FreeBSD.org"> jedgar@FreeBSD.org"> jeh@FreeBSD.org"> jehamby@lightside.com"> jesper@FreeBSD.org"> jesusr@FreeBSD.org"> jfieber@FreeBSD.org"> jfitz@FreeBSD.org"> jgreco@FreeBSD.org"> jhay@FreeBSD.org"> jhb@FreeBSD.org"> jhs@FreeBSD.org"> jim@FreeBSD.org"> jkh@FreeBSD.org"> jkoshy@FreeBSD.org"> jlemon@FreeBSD.org"> john@starfire.MN.ORG"> jlrobin@FreeBSD.org"> jmacd@FreeBSD.org"> jmas@FreeBSD.org"> jmb@FreeBSD.org"> jmg@FreeBSD.org"> jmz@FreeBSD.org"> joe@FreeBSD.org"> keichii@FreeBSD.org"> keramida@FreeBSD.org"> joerg@FreeBSD.org"> john@FreeBSD.org"> jon@FreeBSD.org"> jraynard@FreeBSD.org"> jseger@FreeBSD.org"> julian@FreeBSD.org"> jwd@FreeBSD.org"> jvh@FreeBSD.org"> karl@FreeBSD.org"> kato@FreeBSD.org"> kbyanc@FreeBSD.org"> keith@FreeBSD.org"> kelly@ad1440.net"> ken@FreeBSD.org"> kevlo@FreeBSD.org"> kiri@FreeBSD.org"> kjc@FreeBSD.org"> knu@FreeBSD.org"> kris@FreeBSD.org"> kuriyama@FreeBSD.org"> lars@FreeBSD.org"> lile@FreeBSD.org"> lioux@FreeBSD.org"> ljo@FreeBSD.org"> lkoeller@FreeBSD.org"> logo@blackened.com"> luigi@FreeBSD.org"> luoqi@FreeBSD.org"> marcel@FreeBSD.org"> markm@FreeBSD.org"> marko@FreeBSD.org"> markp@FreeBSD.org"> martin@FreeBSD.org"> matusita@FreeBSD.org"> max@FreeBSD.org"> mark@vmunix.com"> mb@FreeBSD.org"> mbarkah@FreeBSD.org"> mbr@FreeBSD.org"> mckay@FreeBSD.org"> mckusick@FreeBSD.org"> md@bsc.no"> winter@jurai.net"> mharo@FreeBSD.org"> mi@FreeBSD.org"> mike@FreeBSD.org"> mikeh@FreeBSD.org"> mita@FreeBSD.org"> mjacob@FreeBSD.org"> mks@FreeBSD.org"> motoyuki@FreeBSD.org"> mp@FreeBSD.org"> mph@FreeBSD.org"> mpp@FreeBSD.org"> mr@FreeBSD.org"> msmith@FreeBSD.org"> mtaylor@FreeBSD.org"> murray@FreeBSD.org"> mwlucas@FreeBSD.org"> naddy@FreeBSD.org"> nakai@FreeBSD.org"> nate@FreeBSD.org"> nbm@FreeBSD.org"> nectar@FreeBSD.org"> newton@FreeBSD.org"> n_hibma@FreeBSD.org"> nik@FreeBSD.org"> nobutaka@FreeBSD.org"> non@FreeBSD.org"> nsayer@FreeBSD.org"> nsj@FreeBSD.org"> nsouch@FreeBSD.org"> nyan@FreeBSD.org"> obrien@FreeBSD.org"> okazaki@FreeBSD.org"> olah@FreeBSD.org"> olgeni@FreeBSD.org"> onoe@FreeBSD.org"> opsys@open-systems.net"> orion@FreeBSD.org"> pat@FreeBSD.org"> patrick@FreeBSD.org"> paul@FreeBSD.org"> pb@fasterix.freenix.org"> pdeuskar@FreeBSD.org"> pds@FreeBSD.org"> petef@FreeBSD.org"> peter@FreeBSD.org"> phantom@FreeBSD.org"> phk@FreeBSD.org"> pho@FreeBSD.org"> piero@strider.inet.it"> pirzyk@FreeBSD.org"> pjchilds@imforei.apana.org.au"> proven@FreeBSD.org"> ps@FreeBSD.org"> pst@FreeBSD.org"> -re@FreeBSD.org"> - reg@FreeBSD.org"> rgrimes@FreeBSD.org"> rhuff@cybercom.net"> ricardag@ag.com.br"> rich@FreeBSD.org"> rnordier@FreeBSD.org"> roam@FreeBSD.org"> robert@FreeBSD.org"> roberto@FreeBSD.org"> rpratt@FreeBSD.org"> rse@FreeBSD.org"> ru@FreeBSD.org"> rv@FreeBSD.org"> rvb@FreeBSD.org"> rwatson@FreeBSD.org"> sada@FreeBSD.org"> sanpei@FreeBSD.org"> schweikh@FreeBSD.org"> scottl@FreeBSD.org"> scrappy@FreeBSD.org"> se@FreeBSD.org"> sef@FreeBSD.org"> semenu@FreeBSD.org"> sethk@meowfishies.com"> sf@FreeBSD.org"> shafeeq@FreeBSD.org"> sheldonh@FreeBSD.org"> shiba@FreeBSD.org"> shige@FreeBSD.org"> shin@FreeBSD.org"> silby@FreeBSD.org"> simokawa@FreeBSD.org"> skv@protey.ru"> smace@FreeBSD.org"> smpatel@FreeBSD.org"> sobomax@FreeBSD.org"> sos@FreeBSD.org"> adam@whizkidtech.net"> stark@FreeBSD.org"> stb@FreeBSD.org"> steve@FreeBSD.org"> sumikawa@FreeBSD.org"> swallace@FreeBSD.org"> tanimura@FreeBSD.org"> taoka@FreeBSD.org"> takawata@FreeBSD.org"> tedm@FreeBSD.org"> tegge@FreeBSD.org"> tg@FreeBSD.org"> thepish@FreeBSD.org"> tmm@FreeBSD.org"> tobez@FreeBSD.org"> tom@FreeBSD.org"> tomsoft@FreeBSD.org"> torstenb@FreeBSD.org"> toshi@FreeBSD.org"> trevor@FreeBSD.org"> truckman@FreeBSD.org"> tshiozak@FreeBSD.org"> uch@FreeBSD.org"> ue@FreeBSD.org"> ugen@FreeBSD.org"> uhclem@FreeBSD.org"> ulf@FreeBSD.org"> ume@FreeBSD.org"> unfurl@FreeBSD.org"> vanilla@FreeBSD.org"> wes@FreeBSD.org"> whiteside@acm.org"> wilko@FreeBSD.org"> will@FreeBSD.org"> wjv@FreeBSD.org"> wlloyd@mpd.ca"> wollman@FreeBSD.org"> wosch@FreeBSD.org"> wpaul@FreeBSD.org"> wsanchez@FreeBSD.org"> wylie@magnesium.net"> yar@FreeBSD.org"> yoichi@FreeBSD.org"> yokota@FreeBSD.org"> zarzycki@FreeBSD.org"> znerd@FreeBSD.org"> -security-officer@FreeBSD.org"> - -portmgr@FreeBSD.org"> diff --git a/en_US.ISO8859-1/share/sgml/teams.ent b/en_US.ISO8859-1/share/sgml/teams.ent new file mode 100644 index 0000000000..f652e191c1 --- /dev/null +++ b/en_US.ISO8859-1/share/sgml/teams.ent @@ -0,0 +1,25 @@ + + +faq@FreeBSD.org"> + +portmgr@FreeBSD.org"> + +re@FreeBSD.org"> + +security-officer@FreeBSD.org"> + diff --git a/fr_FR.ISO8859-1/books/faq/book.sgml b/fr_FR.ISO8859-1/books/faq/book.sgml index 73770bea0d..c2c05a51b9 100644 --- a/fr_FR.ISO8859-1/books/faq/book.sgml +++ b/fr_FR.ISO8859-1/books/faq/book.sgml @@ -1,95 +1,96 @@ %urls; %translators; %authors; + %teams; %mailing-lists; %includes; ]> Questions Fréquemment Posées sur FreeBSD 2.X Sébastien GIORIA
gioria@FreeBSD.org
Tuyet Tram DANG NGOC
dntt@prism.uvsq.fr
Septembre - Décembre 1998 Ceci est la FAQ pour les versions de FreeBSD 2.X. Toutes les entrées sont relatives à FreeBSD 2.05 et les versions ultérieures.Toutes les entrées finissant avec <XXX> sont en cours de construction. Si vous êtes intéressé par ce projet, envoyez un email sur la "mailing-list" : freebsd-questions@freebsd-fr.org. La dernière version de ce document est disponible en anglais à l'adresse suivante : FreeBSD World Wide Web server . Ce document est également disponible en format texte et en format postscript Nous recherchons des relecteurs pour la correction de cette FAQ.
&preface; &install; &hardware; &troubleshoot; &commercial; &applications; &kernelconfig; &admin; &x; &network; &serial; &misc; &hackers; &acknowledgments;
diff --git a/fr_FR.ISO8859-1/books/handbook/book.sgml b/fr_FR.ISO8859-1/books/handbook/book.sgml index 8389d2ae42..4ddde49ba7 100644 --- a/fr_FR.ISO8859-1/books/handbook/book.sgml +++ b/fr_FR.ISO8859-1/books/handbook/book.sgml @@ -1,142 +1,143 @@ %man; %urls; %bookinfo; %translators; %chapters; %authors; + %teams; %mailing-lists; ]> Manuel FreeBSD Groupe de Documentation de FreeBSD 1999 Groupe de Documentation de FreeBSD &bookinfo.legalnotice; Bienvenue à FreeBSD! Ce manuel décrit l'installation et l'utilisation quotidienne de la Version &rel.current de FreeBSD. Ce manuel est en constante évolution. Il est le résultat du travail de nombreuses personnes. Certaines sections ne sont pas encore rédigées et celles qui le sont ont besoin d'être mises à jour. Si vous voulez participer à ce projet, envoyez un courrier électronique à la &a.doc;. La dernière version anglaise de ce document est disponible sur le serveur World Wide Web FreeBSD. Il existe aussi une version texte, PostScript ou HTML téléchargeable depuis le serveur FTP FreeBSD ou l'un des nombreux sites miroirs. Vous pouvez aussi faire des recherches dans le Manuel. N.d.T.: La version française est publiée sur le serveur World Wide Web du groupe de traduction en langue française de la documentation de FreeBSD. N.d.T.: Contactez la &a.fr-doc si vous voulez collaborer à la traduction. La traduction de ce manuel est “en cours”. Dans la table des matières ci-dessous: Les chapitres marqués de deux astérisques sont en cours de traduction. Les chapitres marqués de trois astérisques sont à traduire. L'astérisque simple est réservé aux chapitres et sections en cours de rédaction dans la version U.S. Pour commencer &chap.introduction; &chap.install; &chap.basics; &chap.ports; Administration Système &chap.kernelconfig; &chap.security; &chap.printing; &chap.disks; &chap.backups; &chap.quotas; &chap.x11; &chap.hw; &chap.l10n; Réseau &chap.serialcomms; &chap.ppp-and-slip; &chap.advanced-networking; &chap.mail; Questions avancées &chap.cutting-edge; &chap.contrib; &chap.policies; &chap.kernelopts; &chap.kerneldebug; &chap.linuxemu; &chap.internals; Annexes &chap.mirrors; &chap.bibliography; &chap.eresources; &chap.staff; &chap.pgpkeys; diff --git a/ja_JP.eucJP/books/faq/book.sgml b/ja_JP.eucJP/books/faq/book.sgml index 2790f5e3c9..41cfacaf01 100644 --- a/ja_JP.eucJP/books/faq/book.sgml +++ b/ja_JP.eucJP/books/faq/book.sgml @@ -1,14473 +1,14475 @@ %man; %freebsd; %ja-authors; %authors; + +%teams; %bookinfo; %mailing-lists; %newsgroups; ]> FreeBSD 2.X, 3.X, 4.X ╓к╓д╓╓╓ф╓н FAQ (╓Х╓╞╓╒╓К╪алД╓х╓╫╓неЗ╓╗) FreeBSD ╔и╔╜╔Е╔А╔С╔ф║╪╔╥╔Г╔С╔в╔М╔╦╔╖╔╞╔х $FreeBSD$ ╓Ё╓нй╦╫Я╓о FreeBSD ╔╥╔╧╔ф╔Ю║╕╔п║╪╔╦╔Г╔С 2.X, 3.X, 4.X ╓к╓д╓╓╓ф╓н FAQ ╓г╓╧. фц╓кцг╓О╓Й╓╛╓й╓╓╦б╓Й, ╓и╓н╧Юлэ╓Б FreeBSD 2.0.5 ╟й╧ъ╓н╓Б╓н╓РашдЙ╓╥╓ф╓╓╓ч╓╧. <XXX> ╓н╓д╓╓╓ф╓╓╓К╧Юлэ╓о╓ч╓ю╨Н╤хцФ╓н╓Б╓н╓г╓╧. ╓Ё╓н FreeBSD ╔и╔╜╔Е╔А╔С╔ф║╪╔╥╔Г╔С╔в╔М╔╦╔╖╔╞╔х╓к╤╗но╓╥╓©╓╓╓х╩в╓О╓Л╓КйЩ╓о, &a.doc; ╓ч╓г(╠я╦Л╓г)ее╩р╔А║╪╔К╓РаВ╓ц╓ф╓╞╓ю╓╣╓╓. ╓Ё╓нй╦╫Я╓н╨г©╥╔п║╪╔╦╔Г╔С╓о, ╓╓╓д╓г╓Б фЭкэ╧ЯфБхг FreeBSD World Wide Web ╔╣║╪╔п╓Д FreeBSD World Wide Web ╔╣║╪╔п╓г ╦╚╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓©, ╓р╓х╓д╓н╣ПбГ╓й HTML ╔у╔║╔╓╔К╓х╓╥╓ф HTTP ╓г╔ю╔╕╔С╔М║╪╔и╓╧╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╔в╔Л║╪╔С╔ф╔╜╔╧╔х, PostScript, PDF, ╓╙╓Х╓с╓╫╓нб╬╓н╥а╪╟╓н╓Б╓н╓о FreeBSD FTP ╔╣║╪╔п╓кцж╓╚╓Л╓ф╓╓╓ч╓╧. ╓ч╓©, FAQ ╓н╦║╨В╓Б╡дг╫╓г╓╧. 2000 г╞ 3 ╥Н╦╫╨ъ, HTML хг╟йЁ╟╓нфЭкэ╦Л FAQ ╓омя╟у╓╣╓Л╓ф╓╓╓ч╓╩╓С. фЭкэ╦Лхг╓н╨Ню╝╓о FreeBSD фЭкэ╦Л╔и╔╜╔Е╔А╔С╔ф║╪╔╥╔Г╔С╔в╔М╔╦╔╖╔╞╔х╓╛ ╔╙╔Й╔╦╔й╔К╓н╠я╦Лхг╓Р╓Б╓х╓к╓╥╓ф╧т╓й╓ц╓ф╓╓╓ч╓╧. FreeBSD FAQ фЭкэ╦ЛлУ╓╙╓Х╓с, FreeBSD FAQ фЭкэ╦Лхг╓н╓ъ╓к╢ьо╒╓╧╓К╓Ё╓х╓о, &a.jp.doc-jp; ╓к╓╙╓╓╓ффЭкэ╦Л╓г╣дою╓╣╓Л╓ф╓╓╓ч╓╧. и╛мв╓к╠Ч╓╦╓ффЭкэ╦Л╔и╔╜╔Е╔А╔С╔ф║╪╔╥╔Г╔С╔в╔М╔╦╔╖╔╞╔х╓╚╓И, FreeBSD Documentation Project ╓кбп╓╥╓ф╔у╔ё║╪╔и╔п╔ц╔╞╓Р╧т╓й╓╓╓ч╓╧╓н╓г, ╠я╦Л╓╛фю╟у╓г╓й╓╓йЩ╓о &a.jp.doc-jp; ╓ч╓гфЭкэ╦Л╓г╔Ё╔А╔С╔х╓Р╓╙╢С╓╩╓╞╓ю╓╣╓╓. ╓ч╓©, ╓Ё╓н FreeBSD FAQ ╓х╓ойл╓к, фЭкэ╓н FreeBSD ╔Ф║╪╔╤м╜╩ж╓к╓Х╓ц╓ф ╔А║╪╔Й╔С╔╟╔Й╔╧╔х &a.jp.users-jp; ╓Д╔к╔Е║╪╔╧╔╟╔К║╪╔в fj.os.bsd.freebsd ╓й╓и╓ь╓неЙ╧ф╓Р╓Б╓х╓к╨Ню╝╓╣╓Л╓© QandA ╓╛╦ЬЁ╚╓╣╓Л╓ф╓╓╓ч╓╧. фц╓кфЭкэ╦Л╢д╤╜╓й╓ифЭкэ╦гм╜╓ноцбЙ╓╛╫╪╪б╓╥╓ф╓╓╓ч╓╧╓н╓г, ╓Ё╓а╓И╓Б╧Г╓О╓╩╓ф╓╢мВ╓╞╓ю╓╣╓╓. ╓ч╓╗╓╛╓╜ лУ: &a.kuriyama;, &a.hanai; &a.jp.nakai;, &a.motoyuki;, &a.jp.sugimura;, 1997 г╞ 11 ╥Н 5 фЭ. FreeBSD 2.X-4.X FAQ ╓ь╓Х╓╕╓Ё╓╫! Usenet ╓н FAQ ╓╛╓╫╓╕╓г╓╒╓К╓Х╓╕╓к, ╓Ё╓нй╦╫Я╓Б FreeBSD ╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓к╢ь╓╥╓ф ияхк╓к©р╓м╓И╓Л╓К╪алД╓РлжмЕ╓╧╓К╓Ё╓х╓Рлэе╙╓х╓╥╓ф╓╓╓ч╓╧(╓Б╓а╓М╓С╓╫╓Л╓кбп╓╧╓КеЗ╓╗╓Б!). FAQ ╓окэмХ╔п╔С╔ииЩ╓Р╦╨╓И╓╥, ф╠╓╦╪алД╓╛╡©еы╓Б╥╚╓Ййж╓╣╓Л╓К╓н╓РхР╓╠╓К╓©╓А╓к╨Н╓И╓Л╓©╓Б╓н╓г╓╧╓╛, ╨г╤А╓ом╜мя╓й╬ПйС╦╩╓х╦╚╓й╓╣╓Л╓К╓Х╓╕╓к╓й╓ц╓ф╓╜╓ч╓╥╓©. ╓Ё╓н FAQ ╓Р╓г╓╜╓К╦б╓Йм╜мя╓й╓Б╓н╓к╓╥╓Х╓╕╓х, ╓╒╓И╓Ф╓Кеьно╓╛╓о╓И╓О╓Л╓ф╓╓╓ч╓╧. ╓Б╓╥╡©╓╚╓╥╓И╓н╡Ча╠╟ф╓╛иБ╓╚╓С╓ю╓И, ╓╪╓р &a.faq; ╓ч╓г╔А║╪╔К╓РаВ╓ц╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓ц╓ф╡©? FreeBSD ╓х╓о╟Л╦ю╓г╦ю╓╗╓п, ╔╚╔Й╔у╔╘╔К╔к╔╒бГЁь╔п║╪╔╞╔Л╔╓╧╩╓╚╓И ╔Й╔Й║╪╔╧╓╣╓Л╓© 4.4BSD-Lite ╓х 4.4BSD-Lite2 ╓к╓Х╓К ╤╞╡╫╓н╟ЛиТ╓кмЁмХ╓╧╓К, i386 ╓╙╓Х╓с Alpha/AXP ╥о╓н╔в╔И╔ц╔х╔у╔╘║╪╔Ю╦Ч╓╠╓н UN*X ╔И╔╓╔╞╓й╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓г╓╧. ╢жюэе╙╓к╓оф╠╓╦╔п║╪╔╞╔Л╔╓╧╩╓н Net/2 ╓Р William Jolitz ╓╛ i386 ╥о╓к╟э©╒╓╥╓© 386BSD ╓Б╢П╓к╓╥╓ф╓╓╓ч╓╧╓╛, 386BSD ╓н╔Ё║╪╔и╓о╓ш╓х╓С╓и╩д╓ц╓ф╓╓╓ч╓╩╓С. FreeBSD ╓к╓д╓╓╓ф╓н╬э╨ы╓х, ╡©╓╛╓г╓╜╓К╓╚╓к╓д╓╓╓ф╓о FreeBSD ╓н╔ш║╪╔Ю╔з║╪╔╦ ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓о╢К╤х╓Д╔╓╔С╔©║╪╔м╔ц╔х╔╣║╪╔с╔╧╔в╔М╔п╔╓╔ю, ╦╕╣Ф╪т, ╔Ё╔С╔т╔Е║╪╔©юЛлГ╡х, Ёью╦, ╡хдМ╓н╔Ф║╪╔╤╓й╓и╓к╓Х╓Й, ╤хлЁ╓Д╤╣╟И, ╦ДЁз╓кмя╓╓╓И╓Л╓ф╓╓╓ч╓╧. ╓Ё╓Л╓И╓к╢ь╓╥╓ф╓о FreeBSD ╔╝╔Ц╔И╔Й║╪╓Р╓╢мВ╓╞╓ю╓╣╓╓. FreeBSD ╓к╢ь╓╧╓К╓Х╓Й╬э╓╥╓╓╬ПйС╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓╛лэ╩ь╓╥╓ф╓╓╓К╓Б╓н FreeBSD ╔в╔М╔╦╔╖╔╞╔х╓нлэе╙╓о, ╓╓╓╚╓й╓Кмяес╓к╓Б╩хмя╓г╓╜, ╡©╓Ию╘╦б╓н╓й╓╓╔╫╔у╔х╔╕╔╖╔╒╓Р╤║╣К╓╧╓К╓Ё╓х╓г╓╧. ╩Д╓©╓а╓нб©╓╞╓о, ╔Ё║╪╔и(╓╫╓╥╓ф╔в╔М╔╦╔╖╔╞╔х)╓кбп╓╥╓ф╓╚╓й╓Й╓неЙ╩Я╓Р╓╥╓ф╓╜╓ф╓╙╓Й, ╓Ё╓Л╓╚╓И╓Бб©╬╞╓нбЕ╫Ч╓о╓╒╓ц╓ф╓БеЙ╩Я╓РбЁ╓╠╓ф╧т╓╞╓д╓Б╓Й╓г╓╧. ╓©╓ю, б╬╓н©мцё╓к╓Бф╠╓╦╓Х╓╕╓йиИц╢╓Р╓╧╓К╓Х╓╕╓к╪Гд╔╓╥╓ф╓╓╓К╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. FreeBSD ╓к╤╫лё╓Р╩Щ╓ц╓ф╓╓╓К╟Л©м╩д╓И╓╨а╢╓ф╓н©м║╧╓к, лэе╙╓Р╦бдЙ╓╥╓й╓╓╓г╔Ё║╪╔и╓РдС╤║╓╧╓К╓Ё╓х. ╓Ё╓Л╓╛, ╩Д╓©╓а╓н╨г╫И╓н╓╫╓╥╓ф╨гбГ╓н║жг╓лЁ║в╓г╓╒╓К╓х©╝╓╦╓ф╓╓╓ч╓╧. ╓╫╓╕╓╧╓Л╓п, ╔Ё║╪╔и╓о╡дг╫╓й╦б╓Й╧╜╓╞╩х╓О╓Л, ╨гбГ╓н╡╦╥ц╓Р╓Б╓©╓И╓╧╓Ё╓х╓╛╓г╓╜╓К╓г╓╥╓Г╓╕. ╓Ё╓Л╓╛, ╩Д╓©╓а╓╛г╝нУ╓к╩ы╩Щ╓╥╓ф╓╓╓К╔у╔Й║╪╔╫╔у╔х╔╕╔╖╔╒╓н╨г╓Б╢Пкэе╙╓йлэе╙╓г╓╒╓К╓х, ╩Д╓о©╝╓╦╓ф╓╓╓ч╓╧. ╩Д╓©╓а╓н╔╫║╪╔╧╔д╔Й║╪╓к╢ч╓ч╓Л╓К╔╫║╪╔╧╓н╓╕╓а, GNU ╟Лхл╦Ьм╜╩хмя╣ЖбЗ(GPL) ╓ч╓©╓о GNU ╔И╔╓╔ж╔И╔Й ╟Лхл╦Ьм╜╩хмя╣ЖбЗ(GLPL) ╓к╫╬╓ц╓ф╓╓╓К╓Б╓н╓к╓д╓╓╓ф╓о, б©╬╞ю╘╦б╓╛╡й╓╣╓Л╓ф╓╓╓ч╓╧. ╓©╓ю╓╥, ╔╫║╪╔╧╔Ё║╪╔и╓ь╓н╔╒╔╞╔╩╔╧╓нйщ╬з╓х╓╓╓╕, ╟Лхл╓ню╘╦б╓х╓о╓╓╓О╓п╣у╓ню╘╦б╓г╓╧. ╓©╓ю╓╥ GPL ╔╫╔у╔х╔╕╔╖╔╒╓Р╬╕мя╓гмЬмя╓╧╓К╬Л╧Г, ╓╣╓И╓кйё╩╗╓к╓й╓К╓н╓охР╓╠╓И╓Л╓ч╓╩╓С. ╓╫╓н╓©╓А, ╓╫╓Л╓И╓н╔╫╔у╔х╔╕╔╖╔╒╓Р, ╓Х╓Йю╘╦б╓н╬╞╓й╓╓ BSD цЬ╨Н╦╒╓к╫╬╓ц╓©╔╫╔у╔х╔╕╔╖╔╒╓гцж╓╜╢╧╓╗╓Кеьно╓Р, ╡дг╫╓й╦б╓ЙфЭ║╧бЁ╓╠╓ф╓╓╓ч╓╧. лУцМ GPL ╓г╓о, ║ж╔╫║╪╔╧╔Ё║╪╔и╓Р╪б╨щ╓к╪У╓╠╪Х╓К╓╚, ╓╒╓К╓╓╓о╢Ук╬╓╥╓╣╓╗╓╧╓Л╓п╓╫╓Л╓РфЧ╪Й╓╧╓К╓Ё╓х╓╛╡дг╫╓г╓╒╓К╓Ё╓х║в╓Р╣А╓А╓ф╓╓╓ч╓╧. ╓и╓╕╓╥╓ф FreeBSD ╓х╦ф╓п╓Л╓ф╓╓╓К╓н╓г╓╧╓╚? л╣на(free)╓г╩х╓╕╓Ё╓х╓╛╓г╓╜╓К(╬╕мЬмя╓Б╢ч╓Ю). ╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓н╢╟а╢╓й╔╫║╪╔╧╔Ё║╪╔и╓╛╪╚мЁ(freely)╓к╪Й╓кфЧ╓Й, ╬╕мЬмя║╕хС╬╕мЬмя╓к╓╚╓╚╓О╓И╓╨, ╨гдЦ╦б╓ню╘╦б╓гб╬╓н╩е╩Ж╓ь╓нмЬмя, гшиш, фЁфЧ╓╛╡дг╫. ╡Чни╓Д╔п╔╟╔у╔ё╔ц╔╞╔╧╓╛╓╒╓К╬Л╧Г, ц╞╓г╓Б(free)╓╫╓н╔Ё║╪╔и╓РдС╫п╓г╓╜, ╔╫║╪╔╧╔д╔Й║╪╓к╡ц╓╗╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧ (╓╓╓╞╓д╓╚╓н╢йц╠╓й╬Р╥О╓к╓о╫╬╓ц╓ф╓Б╓И╓╓╓ч╓╧). йЛ╧Я╦Л╓╛╠я╦Л╓г╓й╓╓фи╪т╓н╓©╓А╓к, ╓Ё╓Ё╓г╓о free ╓х╓╓╓╕ц╠╦Л╓╛фС╓д╓н╟улё╓гмя╓╓╓И╓Л╓ф╓╓╓К╓Ё╓х╓Р╩ье╕╓╥╓ф╓╙╓╞╓хй╛╓╚╓Й╓Д╓╧╓╓╓╚╓Бцн╓Л╓ч╓╩╓С. ╓р╓х╓д╓о║жл╣на╓г╓╒╓К║в╓х╓╓╓╕╓Ё╓х, ╓Б╓╕╓р╓х╓д╓о║ж╪╚й╛╓н╓Д╓Й╓©╓╓╓Х╓╕╓к╓г╓╜╓К║в╓х╓╓╓╕╓Ё╓х╓г╓╧. FreeBSD ╓н╔Ё║╪╔и╓г╓г╓╜╓й╓╓╓╓╓╞╓д╓╚╓н╓Ё╓х (╪╚й╛╓╛╫Я╓╓╓©╓Б╓н╓ю╓х╣╤╓К╓й╓и)╓Р╫Э╓╠╓п, ╓╒╓й╓©╓о╪╚й╛╓н╓Д╓Й╓©╓╓╓Ё╓х╓Р╓Д╓К╓Ё╓х╓╛╡дг╫╓й╓н╓г╓╧. FreeBSD ╓н╨г©╥╔п║╪╔╦╔Г╔С╓о? 4.2 ╓╛╨г©╥╓н STABLE ╔п║╪╔╦╔Г╔С╓г, 2000 г╞ 11 ╥Н╓к╔Й╔Й║╪╔╧╓╣╓Л╓ч╓╥╓©. ╓ч╓©, ╓Ё╓Л╓о╨г©╥╓н RELEASE ╔п║╪╔╦╔Г╔С╓г╓Б╓╒╓Й╓ч╓╧. ╢йц╠╓к╦ю╓ц╓ф╓╥╓ч╓╕╓х, -STABLE ╓о╨г©╥╓н -CURRENT ╓н╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓н╓╧╓п╓И╓╥╓╓©╥╣║г╫╓н©Т║╧╓Х╓Й╓Б, ╟бдЙю╜╓хйя╧╧╡С©Т╓н╬╞╓й╓╣╓Р╧╔╓Ю ISP ╓Д, б╬╓н╢К╤х╓н╔Ф║╪╔╤╓Р╔©║╪╔╡╔ц╔х╓к╓╥╓ф╓╓╓ч╓╧. ╔Й╔Й║╪╔╧╓о╓Ё╓нфС╪ОнЮ╓н╔ж╔И╔С╔а╓г╧т╓й╓О╓Л╓ч╓╧╓╛, (-STABLE ╓ххФЁс╓╧╓К╓хб©╬╞)ит╟бдЙ╓йф╟╨Н╓╛╓╒╓К╓х╓╓╓╕╓Ё╓х╓Р╣Жмф╓г╓╜╓К╓й╓И, и╛мв╓х╓й╓К╓н╓о -CURRENT ╓нйЩ╓ю╓╠╓г╓╥╓Г╓╕. Ёф╔Й╔Й║╪╔╧╓о ©Т╔╚╥НкХ╓к╓╥╓╚╧т╓й╓О╓Л╓ч╓╩╓С. б©╓╞╓н©м║╧╓╛ FreeBSD ╓н╔╫║╪╔╧╓Р╓╫╓н╔Й╔Й║╪╔╧╓Х╓Й╓Б ╨г©╥╓н╬Убж╓к╟щ╩Щ╓╥╓ф╓╓╓К(FreeBSD-current ╓х FreeBSD-stable ╓к╢ь╓╧╓К╪алД╓Б╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓) ╓н╓г╓╧╓╛, ╔╫║╪╔╧╓х╓╓╓╕╓н╓о╬О╓к╡Чйя╓╣╓ЛбЁ╓╠╓ф╓╓╓К╓©╓А, ╓╫╓╕╓╧╓К╓Ё╓х╓о╟Л╪О╓н╢╥нЦ╓к╓й╓ц╓ф╓╓╓ч╓╧. FreeBSD-CURRENT╓ц╓ф╡©? FreeBSD-CURRENT ╓о╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓н╓нЁ╚х╞╔п║╪╔╦╔Г╔С╓г, ╓Д╓╛╓ф 5.0-RELEASE ╓х╓й╓Й╓ч╓╧. ╓Х╓ц╓ф╓Ё╓Л╓о, ╓╫╓Ё╓к╥х╓О╓ц╓ф╓╓╓КЁ╚х╞╪т╓Д, ╓и╓С╓й╬ЦЁ╡╓Р╓Б╬Х╓Й╠ш╓╗╓ф╓╓╓╠╓К╔©╔у╓й╟╕╧╔╡х╓©╓а╓к╓х╓ц╓ф╓н╓ъ╤╫лё╓нбп╬щ╓х╓й╓К╓Б╓н╓г╓╧. -CURRENT ╓н╩хмя╓к╨щ╓╥╓ф╓н╬э╨ы╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞ ╓н ╢ьо╒╓╧╓К╔╩╔╞╔╥╔Г╔С ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓кфКюВ╓ъ╓╛╓й╓╓╬Л╧Г╓Д, ╓╫╓Л╓╛╟Л╩Че╙╓кх╞ю╦╓╥╓ф╓╓╓КлДбЙ╓й╓н╓╚, ╓╫╓Л╓х╓Бкэ╪ае╙╓йлДбЙ╓╚╓Р╦╚╤к╓А╓Кг╫но╓╛╓й╓╓╬Л╧Г╓о, FreeBSD-CURRENT ╓Р╩х╓╕╓ы╓╜╓г╓о╓╒╓Й╓ч╓╩╓С. ╓Ё╓н╔ж╔И╔С╔а╓о╩Ч║╧╣ч╥Ц╓кЁхд╔╓╣╓Л╓©╓Й, ╔╥╔╧╔ф╔Ю╓╛╧╫цш╓г╓╜╓й╓╓╬Убж╓к╓й╓К╓Ё╓х╓Б╓а╓Г╓ц╓а╓Е╓╕╓╒╓Й╓ч╓╧. FreeBSD-CURRENT ╓Р╩х╓╕©м╓олДбЙ╓Рй╛юо╓╥, ║ж╬╝╓╣╓й╥Г╢ы║в╓г╓о╓й╓╞, лю╓И╓╚╓к╢ж╟Ц╓╓╓г╓╒╓К╓х╩в╓О╓Л╓К╓Б╓н╓ю╓╠╓РйС╧П╓г╓╜╓К╓Б╓н╓хашдЙ╓╣╓Л╓ф╓╓╓ч╓╧. ║жmake world ╓╥╓©╓И group ╢ь╥╦╓г╔╗╔И║╪╓╛╓г╓ч╓╥╓©║в╓н╓Х╓╕╓й╪алД╓о, -CURRENT ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓г╓о╥зйн╓н╢Ц╨╧╓╥╓г╓╒╓╥╓И╓О╓Л╓К╓Ё╓х╓Б╓╒╓Й╓ч╓╧. кХфЭ, ╓╫╓н╩Чею╓н -CURRENT ╓х -STABLE ╓н╔Ё║╪╔и╓Р╦╣╓к snapshot ╓╛╨Ню╝╓╣╓Л╓ф╓╓╓ч╓╧. ╦╫╨ъ╓о, ╓╫╓н snapshot ╓нгшиш╓БмЬмя╡дг╫╓г╓╧. ╓╫╓Л╓╬╓Л╓н snapshot ╓к╓о╟й╡╪╓н╓Х╓╕╓йлэе╙╓╛╓╒╓Й╓ч╓╧. ╔╓╔С╔╧╔х║╪╔К╔в╔М╔╟╔И╔Ю╓н╨г©╥хг╓н╔ф╔╧╔х. ╩Н╓╥╓ф╓ъ╓©╓╓╓╠╓Л╓и, ╢Паце╙╓й╫Й╓╚╓ИкХфЭйя╓О╓К╓Х╓╕╓й╓Б╓н╓Рди╓╓╓╚╓╠╓К╩Ч╢ж╓Б╔п╔С╔ииЩ╓Бл╣╓╓, ╓х╓╓╓╕©м╓к╓Б -CURRENT ╓Д -STABLE ╓Р╩х╓╗╓К╓Х╓╕╓к╓╧╓К. ╓ч╓©, ╓╫╓н╓Х╓╕╓й©м╓©╓а╓н╔╥╔╧╔ф╔Ю╟э╧т╓н╓©╓А╓н╪Й╓ц╪Х╓ЙаА╓╓йЩк║╓РдС╤║╓╧╓К. ╓╒╓х╓г╓х╓С╓г╓Б╓й╓╓╓Ё╓х╓Р╓╥╓ф╓╥╓ч╓ц╓©╩Ч╓н╓©╓А╓к, лДбЙ╓х╓й╓К╔Ё║╪╔и╓нфцдЙ╓н╩╡╬х╢П╫Юею╓Рйщб╦╓╥╓ф╓╙╓╞. (дл╬О╓о CVS ╓╛╓Ё╓╕╓╓╓╕╔о╔в╔к╔С╔╟╓н╓Х╓╕╓й╤╡╓М╓╥╓╓╩Жбж╓Рки╩ъ╓╥╓ф ╓╓╓К╓С╓г╓╧╓╠╓и╓м :) ╔ф╔╧╔х╓╛и╛мв╓й©╥╓╥╓╓╣║г╫╓Р, ╓г╓╜╓К╦б╓Йб©╓╞╓н╠ё╓Л╔ф╔╧╔©║╪╓к╩Н╓╥╓ф╓Б╓И╓╕. ╓и╓С╓йлэе╙╓г╓╒╓Л, -CURRENT snapshot ╓╛ю╫ий╔Л╔ы╔К╓ний╪а╓г╓╒╓К╓х╓н╧м╓╗╓к╢П╓е╓╞мв╣А╓о╧т╓О╓й╓╓╓г╓╞╓ю╓╣╓╓. ╟бдЙю╜╓Д╔ф╔╧╔х╫╫й╛ю╜╓к╓Ё╓ю╓О╓К©м╓о, ╢╟а╢╓й╔Й╔Й║╪╔╧, ╓╒╓К╓╓╓о -STABLE snapshot ╓╚╓Ин╔╓Л╓ф╓о╓╓╓╠╓ч╓╩╓С. ╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╔Й╔Й║╪╔╧╓о, 5.0-CURRENT ╓╛ ftp://current.FreeBSD.org/pub/FreeBSD/ ╓╚╓И, 4-STABLE ╓╛ releng4.FreeBSD.org ╓╚╓Ид╬юэфЧ╪Й╡дг╫╓г╓╧. ╓ч╓©, 3-STABLE ╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓о, ╓Ё╓нй╦╬о╓н╪╧и╝╩Чею (2000 г╞ 5 ╥Н) ╓г╨Ню╝╓╣╓Л╓ф╓╓╓ч╓╩╓С. ╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╔Й╔Й║╪╔╧╓о, ╦╫╨ъ, Ё╚х╞╓Дйщ╪И╨Н╤х╓╛╧т╓й╓О╓Л╓ф╓╓╓К╓╧╓ы╓ф╓н╔ж╔И╔С╔а╓к╓╙╓╓╓ф, й©╤я╓╥╓ф╟ЛфЭ╟Л╡С╨Ню╝╓╣╓Л╓ч╓╧. FreeBSD-STABLE ╓н╔Ё╔С╔╩╔в╔х╓о╡©╓г╓╧╓╚? FreeBSD 2.0.5 ╓╛╔Й╔Й║╪╔╧╓╣╓Л╓©╦Е, ╩Д╓©╓а╓о FreeBSD ╓нЁ╚х╞╓Р 2 ╥оеЩ╓кй╛ЁД╓╧╓К╓Ё╓х╓к╓╥╓ч╓╥╓©. ╟Л╓д╓о -STABLE ╓х╓╓╓╕╔ж╔И╔С╔а╓г, ╔п╔╟╓н╫╓ю╣╓о╓╥╓ц╓╚╓Й╔ф╔╧╔х╓╣╓Л, ╣║г╫╓н╤╞╡╫╓о╬╞╓╥╓╨╓д╓╥╓╚╧т╓О╓Л╓ч╓╩╓С(╣ч╓ййя╧╧╓Д╪б╦Ёе╙╣║г╫╓Рк╬╓ч╓й╓╓, ╔╓╔С╔©║╪╔м╔ц╔х╔╣║╪╔с╔╧╔в╔М╔п╔╓╔ю╓Д╠дмЬ╢К╤х╦Ч╓╠). ╓Б╓╕╟ЛйЩ╓н╔ж╔И╔С╔а╓о -CURRENT ╓г, 2.0 ╓╛╔Й╔Й║╪╔╧╓╣╓Л╓ф╟ймХ 5.0-RELEASE(╓╫╓╥╓ф╓╫╓н╦Е╓Б)╓ь╦Ч╓╠╓фл╝║╧╓хбЁ╓╓╓ф╓╓╓К╓Б╓н╓г╓╧. ASCII ╓гиа╓╓╓©╢йц╠╓й©ч╓╛╓О╓╚╓Й╓Д╓╧╓╓╓╚╓о╪╚©╝╓╛╓╒╓Й╓ч╓╩╓С╓╛, ╓Ё╓С╓й╢╤╓╦╓к╓й╓Й╓ч╓╧. 2.0 | | | [2.1-STABLE] *BRANCH* 2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [2.1-STABLE ╫╙н╩] | (1997/03) | | | [2.2-STABLE] *BRANCH* 2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [╫╙н╩] | (1997/03) (1997/10) (1998/04) (1998/07) (1998/12) | | 3.0-SNAPs (1997 г╞бХ╟Л╩мх╬╢ЭЁ╚╩о) | | 3.0-RELEASE (1998/10) | | [3.0-STABLE] *BRANCH* 3.1-RELEASE (1999/02) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1 | (1999/05) (1999/09) (1999/12) (2000/06) (2000/07) | [4.0-STABLE] *BRANCH* 4.0 (2000/03) ->4.1 -> 4.1.1 -> 4.2 -> ... ╬╜мХ╓н 4.x ╔Й╔Й║╪╔╧ ... | | (2000/07) (2000/09) (2000/11) | \|/ + [5.0-CURRENT ╓х╓╥╓ф╥ябЁцФ] -CURRENT ╔ж╔И╔С╔а╓о 5.0 ╓х╓╫╓нюХ╓ь╦Ч╓╠╓ф╓Ф╓ц╓╞╓Й╓х©й╡╫╓РбЁ╓╠╓ф╓╓╓ч╓╧. ╫╬мХ╓╒╓ц╓© 2.2-STABLE ╔ж╔И╔С╔а╓о 2.2.8 ╓н╔Й╔Й║╪╔╧╓Р╓Б╓ц╓ф╫╙н╩╓╥╓ч╓╥╓©. 3-STABLE ╓╛╓╫╓Л╓кбЕ╓О╓Й, 2000 г╞ 7 ╥Н╓к 3.5.1-RELEASE (╨г╦Е╓н 3.X ╔Й╔Й║╪╔╧) ╓╛╔Й╔Й║╪╔╧╓╣╓Л╓ч╓╥╓©. 2000 г╞ 3 ╥Н (3.5 ╓н╦ЬЁ╚а╟╓к╓й╓Й╓ч╓╧╓╛) ╓к╓о, 3-STABLE ╔ж╔И╔С╔а╓о╓ш╓э, 4-STABLE ╔ж╔И╔С╔а╓к╓Х╓ц╓фцж╓╜╢╧╓╗╓И╓Л╓ч╓╥╓©. 4.2-RELEASE ╓о 2000 г╞ 11 ╥Н╓к╔Й╔Й║╪╔╧╓╣╓Л╓ч╓╥╓©. 4-STABLE ╓о╦╫╨ъ -STABLE ╔ж╔И╔С╔а╓гЁХх╞╓кЁ╚х╞╓╛бЁ╓╠╓И╓Л╓ф╓╓╓ч╓╧╓╛, 3-STABLE ╓ь╓н╔п╔╟╓н╫╓ю╣ (╓ш╓х╓С╓и╓╛╔╩╔╜╔Е╔Й╔ф╔ё╢ьо╒╓н╓Б╓н) ╓Б╓ч╓ю╧т╓й╓О╓Л╓ф╓╓╓ч╓╧. 3.X ╔ж╔И╔С╔а╓о 2000 г╞╓н╡ф╓к╓о╦Ь╪╟╓кЁ╚х╞╓╛╫╙н╩╓╧╓Км╫дЙ╓г╓╧. ╦╫╨ъ╓н current branch ╓о 5.0-CURRENT ╓г╓╒╓Й, ╨г╫И╓н 5.0 ╥онС╓н╔Й╔Й║╪╔╧м╫дЙ╓о╓ч╓ю╥ХдЙ╓╥╓ф╓╓╓ч╓╩╓С. FreeBSD ╓н╔Й╔Й║╪╔╧╓о╓╓╓д╨Н╓И╓Л╓К╓н╓г╓╧╓╚? FreeBSD ╔Ё╔╒╔а║╪╔Ю╓о╦╤б╖е╙╓к, ©╥╓╥╓╓╣║г╫╓Д╔п╔╟╔у╔ё╔ц╔╞╔╧╓╛╫╪й╛╫╦╓ч╓Й, ╔Й╔Й║╪╔╧╓н╟бдЙю╜╓Рб╩╓й╓╕╓Ё╓х╓╛л╣╓╓╓Х╓╕, ╓╣╓ч╓╤╓ч╓ййя╧╧╓╛╫╫й╛╓к╟бдЙ╓╥╓ф╓╓╓К╓х╓╓╓╕╬Р╥О╓РкЧ╓©╓╥╓ф╓╓╓К╬Л╧Г╓к╓н╓ъ, ©╥╓╥╓╓╔п║╪╔╦╔Г╔С╓н FreeBSD ╓Р╔Й╔Й║╪╔╧╓╥╓ч╓╧. ╓©╓х╓╗╓Ё╓нмя©╢©╪╓╣╓╛©╥╓╥╓╓╣║г╫╓╛╩х╓╗╓К╓Х╓╕╓к╓й╓К╓Ё╓х╓Р бт╓ак╬╓С╓г╓╓╓К╔Ф║╪╔╤╓Рмъ╣АиткЧ╓к╓╣╓╩╓К╓х╓╥╓ф╓Б, б©╓╞╓н╔Ф║╪╔╤╓о╓Ё╓н╓Ё╓х╓Р FreeBSD ╓н╨г╓Бни╓╓╫Й╓н╟Л╓д╓ю╓х╧м╓╗╓ф╓╓╓ч╓╧. ╔Й╔Й║╪╔╧╓н╨Ню╝╓о, й©╤яе╙╓к╦ю╓ц╓ф╓╙╓Х╓╫ 4 ╔Ж╥Н╓╢╓х╓к╧т╓й╓О╓Л╓ч╓╧. ╓Б╓╕╬╞╓╥╩и╥Ц╓╛мъ╓╥╓╓(╓╒╓К╓╓╓обт╓а╠С╓╥╓╓)йЩ║╧╦Ч╓╠╓к╓о, кХфЭ╔п╔╓╔й╔Й╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓╛╨Ню╝╓╣╓Л╓ф╓╓╓ч╓╧. ╬Е╣╜╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓о PC мя╓ю╓╠╓╥╓╚╓й╓╓╓н? FreeBSD 3.x ╟й╧ъ╓о x86 ╔╒║╪╔╜╔ф╔╞╔а╔Ц╓хф╠мм, DEC Alpha ╓г╓Бф╟╨Н╓╥╓ч╓╧. ╓ч╓©, SPARC, PowerPC, IA64 ╓ь╓н╟э©╒╓х╓╓╓╕╤╫лё©╪╓╓оц╓Б╓╒╓Й╓ч╓╧. ╟ш╓й╓К╔╒║╪╔╜╔ф╔╞╔а╔Ц╓н╔ч╔╥╔С╓Р ╩Щ╓ц╓ф╓╓╓ф, ╓Ф╓ц╓╞╓Йбт╓ф╓й╓╓╓х╓╓╓╕╬Л╧Г╓к╓о╪║╓н URL ╓Р ╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. NetBSD ╓ч╓©╓о OpenBSD. FreeBSD ╓нюуг╓╪т╓о╓╓╓ц╓©╓╓ц╞? ╔в╔М╔╦╔╖╔╞╔х╓на╢бне╙╓ййЩ╦Чю╜╓Д, ц╞╓к╔╫║╪╔╧╔д╔Й║╪╓к╔Ё║╪╔и╓н╫Я╓╜╧Ч╓ъ╦╒╦б╓Рм©╓╗╓К╓╚, ╓й╓и╓х╓╓╓ц╓© FreeBSD ╔в╔М╔╦╔╖╔╞╔х╓к╢ь╓╧╓К╫емв╓й╟у╩в╥ХдЙ╓о, 9 л╬╓╚╓И╓й╓К╔Ё╔╒╔а║╪╔Ю(core team)╓к╓Х╓ц╓ф╓й╓╣╓Л╓ч╓╧. ╔╫║╪╔╧╔д╔Й║╪╓Рд╬юэйя╧╧╓г╓╜╓К©м╓о╓Б╓ц╓хб©╓╞, 200 л╬╟й╬Е╓н╔╫║╪╔╧╔д╔Й║╪╢имЩ╪т(committer) ╓╛╓╓╓ч╓╧. ╓╥╓╚╓╥, ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓гюХ╧т╓╥╓ф╣дою╓╣╓Л╓К, дл╬О╓нйя╧╧╓г╓о╓й╓╓╓Б╓н╓н╣дою╓ь╓н╩╡╡ц╓к╓о, ╟Люзю╘╦б╓о╓╒╓Й╓ч╓╩╓С. ╓и╓Ё╓╚╓И FreeBSD ╓РфЧ╪Й╓г╓╜╓ч╓╧╓╚? FreeBSD ╓н╓╧╓ы╓ф╓н╪Гмв╓й╔Й╔Й║╪╔╧╓о anonymous FTP ╥пмЁ╓г FreeBSD FTP ╔╣╔╓╔х ╓╚╓ИфЧ╪Й╓г╓╜╓ч╓╧. ╦╫╨ъ╓н 3.X-STABLE ╔Й╔Й║╪╔╧, 3.5.1-RELEASE ╓о 3.5.1-RELEASE ╓н╔г╔ё╔Л╔╞╔х╔Й╓к╓╒╓Й╓ч╓╧. ╦╫╨ъ╓н 4-STABLE ╔Й╔Й║╪╔╧, 4.2-RELEASE ╓о 4.2-RELEASE ╓н╔г╔ё╔Л╔╞╔х╔Й╓к╓╒╓Й╓ч╓╧. 4.X Snapshot ╓о, ╓ш╓э╟ЛфЭ╓к╟Л╡С╨Ню╝╓╣╓Л╓ф╓╓╓ч╓╧. 5.0 Snapshot ╔Й╔Й║╪╔╧╓о -CURRENT ╔ж╔И╔С╔амя╓к╟ЛфЭ╓к╟Л╡С╨Ню╝╓╣╓Л╓ф╓╙╓Й, ╓Ё╓Л╓И╓о╫Ц©Х╓к╨гюХц╪╓нЁ╚х╞╪т╓╙╓Х╓с╔ф╔╧╔©║╪╓н╓©╓А╓кдС╤║╓╣╓Л╓ф╓╓╓ч╓╧. ╓ч╓©, FreeBSD ╓о CD-ROM ╓г╓БфЧ╪Й╓г╓╜, ╪║╓н╓х╓Ё╓М╓гцМй╦╓г╓╜╓ч╓╧.
BSDi 4041 Pike Lane, Suite F Concord, CA 94520 USA Orders: +1 800 786-9907 Questions: +1 925 674-0783 FAX: +1 925 674-0821 email: BSDi Orders address WWW: BSDi Home pageOrders: +1 800 786-9907
╔╙║╪╔╧╔х╔И╔Й╔╒╓г╓о, ╪║╓н╓х╓Ё╓М╓клД╓╓╧Г╓О╓╩╓ф╓╞╓ю╓╣╓╓.
Advanced Multimedia Distributors Factory 1/1 Ovata Drive Tullamarine, Melbourne Victoria Australia Voice: +61 3 9338 6777 CDROM Support BBS 17 Irvine St Peppermint Grove, WA 6011 Voice: +61 9 385-3793 Fax: +61 9 385-2360
╔╓╔╝╔Й╔╧╓н╬Л╧Г╓о╪║╓н╓х╓Ё╓М╓г╓╧.
The Public Domain & Shareware Library Winscombe House, Beacon Rd Crowborough Sussex. TN6 1UL Voice: +44 1892 663-298 Fax: +44 1892 667-473
FreeBSD ╓н╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓к╓д╓╓╓фцн╓Й╓©╓╓╓н╓г╓╧╓╛? ╢╟а╢╓й╬ПйС╓╛ FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓нюА ╓к╓╒╓Й╓ч╓╧. FreeBSD ╓ню╬нЯ 2000 г╞лДбЙ╓к╢ь╓╧╓К╬ПйС╓о╓и╓Ё╓к╓╒╓Й╓ч╓╧╓╚? ╢╟а╢╓й╬ПйС╓╛ FreeBSD Y2K ╓н╔з║╪╔╦ ╓к╓╒╓Й╓ч╓╧. FreeBSD ╓н╔к╔Е║╪╔╧╔╟╔К║╪╔в╓о╡©╓╛╓╒╓Й╓ч╓╧╓╚? ╢╟а╢╓й╬ПйС╓╛ FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н╔к╔Е║╪╔╧╔╟╔К║╪╔в╓нюА╓к╓╒╓Й╓ч╓╧. FreeBSD ╓н IRC(Internet Relay Chat)╓к╓д╓╓╓ф╡©╓╚╬ПйС╓о╓╒╓Й╓ч╓╧╓╚? ╓╒╓Й╓ч╓╧. ╟й╡╪╓н╓Х╓╕╓к, ╓ш╓х╓С╓и╓нм╜л╬╓й IRC ╔м╔ц╔х╔О║╪╔╞╓к╓о FreeBSD ╓н╔а╔Ц╔ц╔х╔а╔Ц╔С╔м╔К╓╛╓╒╓Й╓ч╓╧. EFNet ╓н Channel #FreeBSD ╓о FreeBSD ╢ь╥╦╓н╔у╔╘║╪╔И╔Ю╓г╓╧╓╛, ╓╫╓Ё╓г╣╩╫яе╙╔╣╔щ║╪╔х╓Р╢Эбт╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С. ╓╫╓Ё╓к╓╓╓К©м╓©╓а╓о╓╒╓й╓©╓Р╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Рфи╓Ю╓х╓╚, ╦╕╣Ф╓Р╓╧╓К╓х╓╚╓х╓╓╓ц╓©╤Ло╚╓╚╓И╠С╓╤╓╠╓Х╓╕╓х╓╥╓ч╓╧. ╓ч╓╨бХ╟Л╓к, ╓Ё╓Л╓о╔а╔Ц╔ц╔х╔а╔Ц╔С╔м╔К╓г╓╒╓Й, ╓╫╓Ё╓к╓╒╓К╔х╔т╔ц╔╞╔╧╓онЬ©мйГ╫╦, ╔╧╔щ║╪╔д, Ёкй╪╢О╓х╓╓╓ц╓©╓Х╓╕╓й╓Б╓н╓г╓╒╓Й, FreeBSD ╓Бф╠нС╓к╟╥╓О╓Л╓ф╓╓╓ч╓╧. ╟Л╠ЧцМ╟у╓╥╓ч╓╥╓©╓╚╓И╓м! ╓Ё╓Л╓о irc.chat.org ╓н╔╣║╪╔п║╪╬Е╓к╓╒╓Й╓ч╓╧. EFNet ╓н Channel #FreeBSDhelp ╓о FreeBSD ╔Ф║╪╔╤╓н╔ь╔К╔вюЛмя╔а╔Ц╔м╔К╓г╓╧. ╩╡╡ц╪т╓о #FreeBSD ╔а╔Ц╔м╔К╓Х╓Й╓Б©фюз╓к╪алД╓кеЗ╓╗╓ф╓╞╓Л╓ч╓╧. DALNET ╓н Channel #FreeBSD ╓о╔╒╔А╔Й╔╚╓г╓о irc.dal.net, ╔Х║╪╔М╔ц╔я╓г╓о irc.eu.dal.net ╓к╓╒╓Й╓ч╓╧. UNDERNET ╓н Channel #FreeBSD ╓о╔╒╔А╔Й╔╚╓г╓о us.undernet.org, ╔Х║╪╔М╔ц╔я╓г╓о eu.undernet.org ╓к╓╒╓Й╓ч╓╧. ╓Ё╓Ё╓о╔ь╔К╔в╔а╔Ц╔С╔м╔К╓г╓╧. ╔и╔╜╔Е╔А╔С╔х╓Рфи╓А╓К╫ЮхВ╓Р╓╥╓ф╓╚╓ИмЬмя╓╥╓ф╓╞╓ю╓╣╓╓. HybNet ╓н Channel #FreeBSD ╓о irc.FreeBSD.org ╓к╓╒╓Й╓ч╓╧. ╓Ё╓н╔а╔Ц╔С╔м╔К╓о╓ь╔К╔в╔а╔Ц╔С╔м╔К╓г╓╧. ╓╫╓Л╓╬╓Л╓н╔а╔Ц╔С╔м╔К╓ойл╦д╓н╓Б╓н╓г, ╦ъ╓╓╓кюэбЁ╓╣╓Л╓ф╓╓╓ч╓╩╓С. ╔а╔Ц╔ц╔х╓н╔╧╔©╔╓╔К╓Б╟Ц╓ц╓ф╓╓╓ч╓╧╓н╓г, ╪╚й╛╓н╔а╔Ц╔ц╔х╓н╔╧╔©╔╓╔К╓к╓╒╓ц╓©╓Б╓н╓Р╦╚╓д╓╠╓К╓©╓А╓к╟Л╓д╟Л╓д╩Н╓╧╓н╓Б╓╓╓╓╓г╓╥╓Г╓╕. ╓╒╓И╓Ф╓К╪ОнЮ╓н IRC ╔х╔И╔у╔ё╔ц╔╞╓н╓©╓А, ╪╨нИ╓й╓Ё╓х╓Р╓╓╓╕╪Ц╪т╓©╓а(г╞гз╓нйЩ╓о╬╞©Т╓г╓╧)╓н╓©╓А╓к╣║╥Ы╓Рб╩╓м╓©╓Й, ╪Й╓киИ╓╗╓й╓╞╓й╓ц╓ф╓Б╣╓╓к╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С. FreeBSD ╓нкэ &a.doc; ╓к╔Ё╔С╔©╔╞╔х╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓(╓╣╓И╓к╩╡╡ц╓╧╓Л╓п╓Б╓ц╓х╓Х╓╓╓г╓╥╓Г╓╕). ╓Ё╓н╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓о FreeBSD ╢ьо╒╓нй╦╫Я╓к╢ь╓╧╓К╣дою╓н╓©╓А╓н╓Б╓н╓г╓╧. FreeBSD ╓к╢ь╓╧╓К╪алД╓кбп╓╥╓ф╓о, &a.questions; ╓х╓╓╓╕╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓╛╓╒╓Й╓ч╓╧. FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓Б╓╒╓Й╓ч╓╧. ╓Ё╓Л╓о╦╫╨ъ╨Н╤хцФ╓г, ит╢╟а╢╓ю╓ц╓©╓Й╨г©╥╬ПйС╓г╓й╓╓╓Б╓н╓╛╢ч╓ч╓Л╓ф╓╓╓К╓Ё╓х╓кцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓н╔╛╔╓╔икэ╓н╥ХдЙхг╓о, Greg Lehey ╩А╓к╓Х╓К The Complete FreeBSD ╓г╓╧. ╓Ё╓Л╓о BSDi (╟йа╟╓н Walnut Creek CDROM) Books ╓╚╓И╫пхг╓╣╓Л╓ф╓╓╓ч╓╧. ╦╫╨ъ╓обХфСхг╓к╓й╓ц╓ф╓╓╓ф, ╔╓╔С╔╧╔х║╪╔К, ╔╥╔╧╔ф╔Ю╢имЩ╔╛╔╓╔и, ╔в╔М╔╟╔И╔ЮюъдЙ╓н╔ь╔К╔в, ╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓ч╓г╓нфБмф╓╛ 1,750 ╔з║╪╔╦╓к╓О╓©╓ц╓ф╫Я╓╚╓Л╓ф╓╓╓ч╓╧. ╓Ё╓нкэ╓о(╓╫╓╥╓ф╦╫╨ъ╓н FreeBSD ╔Й╔Й║╪╔╧╓о) BSDi, CheapBytes, ╓ч╓©╓о╨г╢С╓Й╓н╫Яе╧╓гцМй╦╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ISBN ╔Ё║╪╔и╓о 1-57176-227-2 ╓г╓╧. ╓ч╓©, FreeBSD ╓о Berkeley 4.4BSD-Lite ╔ы║╪╔╧╓й╓н╓г, б©╓╞╓н 4.4BSD ╓н╔ч╔к╔Е╔╒╔К╓╛ FreeBSD ╓к╓Б╠Чмя╓г╓╜╓ч╓╧. O'Reilly and Associates ╓╛╟й╡╪╓н╔ч╔к╔Е╔╒╔К╓Р╫пхг╓╥╓ф╓╓╓ч╓╧. 4.4BSD System Manager's Manual By Computer Systems Research Group, UC Berkeley 1st Edition June 1994, 804 pages ISBN: 1-56592-080-5 4.4BSD User's Reference Manual By Computer Systems Research Group, UC Berkeley 1st Edition June 1994, 905 pages ISBN: 1-56592-075-9 4.4BSD User's Supplementary Documents By Computer Systems Research Group, UC Berkeley 1st Edition July 1994, 712 pages ISBN: 1-56592-076-7 4.4BSD Programmer's Reference Manual By Computer Systems Research Group, UC Berkeley 1st Edition June 1994, 886 pages ISBN: 1-56592-078-3 4.4BSD Programmer's Supplementary Documents By Computer Systems Research Group, UC Berkeley 1st Edition July 1994, 596 pages ISBN: 1-56592-079-1 ╓Ё╓Л╓И╓н╬э╨ы╓йюБлю╓╛ WWW ╥пмЁ╓г 4.4BSD books description ╓╚╓Ифи╓Ю╓Ё╓х╓╛╓г╓╜╓ч╓╧. хнгД©Т╓╛╬╞╓й╓╓╓©╓А╓Ё╓Л╓И╓н╔ч╔к╔Е╔╒╔К╓офЧ╪Й╓╥╓к╓╞╓╓╓╚╓Б╓╥╓Л╓ч╓╩╓С. 4.4BSD ╓н╔╚║╪╔м╔К╧╫ю╝╓к╓д╓╓╓ф╓Х╓Йе╟дЛе╙╓кцн╓Й╓©╓╓╓н╓й╓И, ╓Ё╓Л╓й╓И╢ж╟Ц╓╓╓й╓╓╓г╓╥╓Г╓╕. McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN: 0-201-54979-4 ╔╥╔╧╔ф╔Ю╢имЩ╓к╓д╓╓╓ф╩╡╧м╓к╓й╓Ккэ╓о╪║╓н╓Б╓н╓г╓╧. Evi Nemeth, Garth Snyder, Scott Seebass & Trent R. Hein, ``Unix System Administration Handbook'', Prentice-Hall, 1995 ISBN: 0-13-151051-7 ╫Ихг╓н╓Б╓н╓г╓о╓й╓╞, юж╓╓╔╚╔п║╪╓нбХфСхг╓г╓╒╓К╓╚ Ёнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓нкэ╓о TCP/IP ╓ю╓╠╓г╓й╓╞ DNS, NFS, SLIP/PPP, sendmail, INN/NNTP, ╟У╨Ч╓й╓и╓н╢Пац╓Р╟╥╓ц╓ф╓╓╓ч╓╧. ╧Б╡а╓г╓╧╓╛(╓╙╓Х╓╫ US$45-$55), гЦ╓╕╡ацм╓о╓╒╓Й╓ч╓╧. ╓ч╓©, ©╖║╧╓й╔д║╪╔К╓н╔╫║╪╔╧╔Ё║╪╔и╓╛фЧ╓ц╓© CD-ROM ╓╛иуб╟╓╥╓ф╓╓╓ч╓╧. ╓╥╓╚╓╥, ╓╫╓Л╓И╓н╓ш╓х╓С╓и╓о FreeBSD 2.2.6R CD-ROM ╓к╪Що©╓╣╓Л╓ф╓╓╓ч╓╧(╓╣╓И╓к FreeBSD CD-ROM ╓н╪Що©й╙╓нйЩ╓╛╓Х╓Й©╥╓╥╓╓╬Л╧Г╓╛╓╒╓Й╓ч╓╧). ╬ЦЁ╡йС╧П(PR; Problem Report) ╔г║╪╔©╔ы║╪╔╧╓к╔╒╔╞╔╩╔╧╓╧╓КйЩк║╓о? ╔Ф║╪╔╤╓╚╓И╓нйя╧╧мв╣А╓╛╓ч╓х╓А╓И╓Л╓ф╓╓╓К Problem Report ╔г║╪╔©╔ы║╪╔╧╓о, ╬ЦЁ╡йС╧П╓н web ╔ы║╪╔╧╓н╔╓╔С╔©╔у╔╖║╪╔╧╓Рдл╓╥╓ф, дС╫п╓хлД╓╓╧Г╓О╓╩╓Р╧т╓й╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓©, send-pr(1) ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф, ее╩р╔А║╪╔К╥пмЁ╓г╬ЦЁ╡йС╧П╓Дйя╧╧мв╣А╓РдС╫п╓╧╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╔в╔Л╔╓╔С╔ф╔╜╔╧╔х(ASCII)хг ╓Д PostScript хг╓н FreeBSD й╦╫Я╓о╓й╓╓╓н╓г╓╥╓Г╓╕╓╚? ╓о╓╓, ╓Б╓а╓М╓С╓╒╓Й╓ч╓╧. ©Тб©╓╞╓н╟ш╓й╓К╔у╔╘║╪╔ч╔ц╔х, ╟╣╫л╥а╪╟╓нй╦╫Я╓╛ FreeBSD FTP ╔╣╔╓╔х╓н /pub/FreeBSD/doc/ ╓х╓╓╓╕╔г╔ё╔Л╔╞╔х╔Й╓╚╓ИфЧ╪Й╡дг╫╓г╓╧. й╦╫Я╓о, ╪║╓н╓Х╓╕╓й╓╣╓ч╓╤╓ч╓й╢яею╓╚╓Ий╛нЮ╓╣╓Л╓ф╓╓╓ч╓╧. faq ╓Д handbook ╓х╓╓╓ц╓©й╦╫Ял╬╓к╓Х╓Кй╛нЮ. й╦╫Я╓н╦ю╦Л╓х╔╗╔С╔Ё║╪╔г╔ё╔С╔╟╓к╓Х╓Кй╛нЮ. ╓Ё╓Л╓о FreeBSD ╔╥╔╧╔ф╔Ю╓н /usr/share/locale ╓к╓╒╓К locale л╬╓к╢П╓е╓╓╓ф╓╓╓ч╓╧. ╦╫╨ъмЬмя╡дг╫╓й╦ю╦Л, ╔╗╔С╔Ё║╪╔г╔ё╔С╔╟╓о╟й╡╪╓н╓х╓╙╓Й╓г╓╧. л╬а╟ ╟улё en_US.ISO8859-1 ╠я╦Л(йф╧Я) de_DE.ISO_8859-1 ╔и╔╓╔д╦Л es_ES.ISO8859-1 ╔╧╔з╔╓╔С╦Л fr_FR.ISO8859-1 ╔у╔И╔С╔╧╦Л ja_JP.eucJP фЭкэ╦Л(EUC ╔╗╔С╔Ё║╪╔г╔ё╔С╔╟) ru_RU.KOI8-R ╔М╔╥╔╒╦Л(KOI8-R ╔╗╔С╔Ё║╪╔г╔ё╔С╔╟) zh_TW.Big5 цФ╧Я╦Л(Big5 ╔╗╔С╔Ё║╪╔г╔ё╔С╔╟) ╦ю╦Л╓к╓Х╓ц╓ф╓о╫ЮхВ╓╣╓Л╓ф╓╓╓й╓╓й╦╫Я╓Бб╦╨ъ╓╥╓ч╓╧. й╦╫Я╓н╥а╪╟╓к╓Х╓Кй╛нЮ. й╦╫Я╓о©Тб©╓╞╓н╟ш╓й╓К╫пно╥а╪╟╓Рмя╟у╓╥, ╡дг╫╓й╦б╓Й╫юфП╓йбп╠Ч╓╛╓г╓╜╓К╓Х╓╕╓к╓╥╓ф╓╓╓ч╓╧. ╦╫╨ъ, мЬмя╡дг╫╓йй╦╫Я╥а╪╟╓о╟й╡╪╓н╓х╓╙╓Й╓г╓╧. й╦╫Я╥а╪╟ ╟улё html-split ╔╣╔╓╔╨╓н╬╝╓╣╓╓, ╔Й╔С╔╞╓╣╓Л╓©йё©Т╓н HTML ╔у╔║╔╓╔К html й╦╫Яа╢бн╓Р╢ч╓С╓ю, ц╠╟Л╓нбГ╓╜╓й╔у╔║╔╓╔К pdb iSilo ╓гмЬмя╡дг╫╓й Palm Pilot ╔г║╪╔©╔ы║╪╔╧╥а╪╟ pdf Adobe ╪р╓н PDF(Portable Document Format)╥а╪╟ ps Postscript ╥а╪╟ rtf Microsoft ╪р╓н╔Й╔ц╔а╔ф╔╜╔╧╔х╥а╪╟ ╓Ё╓н╥а╪╟╓Р Word ╓гфи╓ъ╧Ч╓С╓ю╬Л╧Г, ╔з║╪╔╦хж╧Ф╓о╪╚ф╟е╙╓к╧╧©╥╓╣╓Л╓ч╓╩╓С. ╔з║╪╔╦хж╧Ф╓Р╧╧©╥╓╧╓К╓к╓ой╦╫Я╓Рфи╓ъ╧Ч╓С╓г╓╚╓И CTRL+A, CTRL+END, F9 ╓Р╡║╓╥╓ф╓╞╓ю╓╣╓╓. txt ╔в╔Л╔╓╔С╔ф╔╜╔╧╔х╥а╪╟ ╟╣╫л╓х package ╥а╪╟╓к╓Х╓Кй╛нЮ. ╦╫╨ъмЬмя╓╣╓Л╓ф╓╓╓К╓н╓о╪║╓н 3 ╪ОнЮ╓г╓╧. html-split ╥а╪╟╓н╬Л╧Г, ╔у╔║╔╓╔К╓о╓ч╓╨, &man.tar.1; ╓Р╩х╓ц╓ф╓ч╓х╓А╓И╓Л, ╓ч╓х╓А╓И╓Л╓© .tar ╔у╔║╔╓╔К╓о╪║╓к╡РюБ╓╧╓КйЩ╪╟╓г╟╣╫л╓╣╓Л╓ч╓╧. ╓╫╓нб╬╓н╥а╪╟╓н╬Л╧Г, ╔у╔║╔╓╔К╓о book.format (нЦ╓╗╓п book.pdb, book.html ╓й╓и) ╓х╓╓╓╕ц╠╟Л╓н╔у╔║╔╓╔К╓г╓╧. ╬Е╓к╓╒╓╡╓©╔у╔║╔╓╔К╓о 3 ╪ОнЮ╓нйЩ╪╟╓н╓╓╓╨╓Л╓╚╓г╟╣╫л╓╣╓Л╓ч╓╧. йЩ╪╟ юБлю zip Zip ╥а╪╟. FreeBSD ╓г╟╣╫л╓Р╦╣╓клА╓╧╓к╓о, ╓ч╓╨ archivers/unzip ╓н port ╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. gz GNU Zip ╥а╪╟. ╟╣╫л╓Р╦╣╓клА╓╧╓к╓о, FreeBSD ╓к╢ч╓ч╓Л╓К &man.gunzip.1; ╓Р╩х╓╓╓ч╓╧. bz2 BZip2 ╥а╪╟. б╬╓н╥а╪╟╓кхФ╓ы╓фиА╣з╓╥╓ф╓╓╓ч╓╩╓С╓╛, ╟Лхле╙╓к╔у╔║╔╓╔К╔╣╔╓╔╨╓╛╬╝╓╣╓╞╓й╓Й╓ч╓╧. ╟╣╫л╓Р╦╣╓клА╓╧╓к╓о, archivers/bzip2 port ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. Postscript хг╓н╔о╔С╔и╔ж╔ц╔╞╓╛ BZip2 ╥а╪╟╓г╟╣╫л╓╣╓Л╓ф╓╓╓К╬Л╧Г, ╔у╔║╔╓╔Кл╬╓о handbook/ ╔г╔ё╔Л╔╞╔х╔Й╓нцФ╓н book.sgml.bz2 ╓к╓й╓Й╓ч╓╧. ╓╣╓ч╓╤╓ч╓й╥а╪╟╓кю╟╥а╓╣╓Л╓©й╦╫Я╓о, ╟й╡╪╓к╫р╓ы╓К╓Х╓╕╓к FreeBSD ╓н package ╓х╓╥╓ф╓БдС╤║╓╣╓Л╓ф╓╓╓ч╓╧. ╔ю╔╕╔С╔М║╪╔и╓╧╓Кй╦╫Я╓х╟╣╫л╥а╪╟╓Ра╙бР╓╥╓©╓И, й╦╫Я╓Р FreeBSD package ╓х╓╥╓ф╔ю╔╕╔С╔М║╪╔и╓╧╓К╓╚╓и╓╕╓╚╥Х╓А╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. package ╓х╓╥╓ф╔ю╔╕╔С╔М║╪╔и╓╥╓ф╔╓╔С╔╧╔х║╪╔К╓╧╓К╬Л╧Г╓к╓о, й╦╫Я╓Р &man.pkg.add.1; ╓Д &man.pkg.delete.1; ╓х╓╓╓ц╓©, иАдл╓н FreeBSD package ╢имЩ╔╥╔╧╔ф╔Ю╓Рмя╓╓╓©╢имЩ╓╛╡дг╫╓г╓╒╓К╓х╓╓╓╕мЬею╓╛╓╒╓Й╓ч╓╧. й╦╫Я╓н package ╓Р╔ю╔╕╔С╔М║╪╔и╓╥╓ф╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Ё╓х╓к╥Х╓А╓©╓И, ╓ч╓╨╓о╔ю╔╕╔С╔М║╪╔и╓╧╓К╔у╔║╔╓╔Кл╬╓Рцн╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. й╦╫Я╓н package ╓о, packages ╓х╓╓╓╕╔г╔ё╔Л╔╞╔х╔Й╓кцж╓╚╓Л╓ф╓╓╓ч╓╧. ╓╫╓╥╓ф╓╫╓Л╓╬╓Л╓н package ╔у╔║╔╓╔К╓о, й╦╫Ял╬.╦ю╦Л.╔╗╔С╔Ё║╪╔г╔ё╔С╔╟.╥а╪╟.tgz ╓х╓╓╓╕╓Х╓╕╓йл╬а╟╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓©╓х╓╗╓п, FAQ ╓н╠я╦Лхг╓г PDF ╥а╪╟╓н╓Б╓н╓о, faq.en_US.ISO8859-1.pdf.tgz ╓х╓╓╓╕╔у╔║╔╓╔Кл╬╓г╓╧. ╔у╔║╔╓╔Кл╬╓╛╓О╓╚╓ц╓©╓И, ╪║╓н╓Х╓╕╓й╔Ё╔ч╔С╔и╓г╠я╦Лхг╓н PDF ╥а╪╟ FAQ ╓н package ╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.root; pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz ╔╓╔С╔╧╔х║╪╔К╓н╫╙н╩╦Е╓о &man.pkg.info.1; ╓Р╩х╓╓, ╔у╔║╔╓╔К╓╛╓и╓Ё╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓©╓╚╓Рд╢╓ы╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.root; pkg_info -f faq.en_US.ISO8859-1.pdf 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) ╓╢мВ╓к╓й╓К╓х╓О╓╚╓К╓х╓╙╓Й, book.pdf ╓о /usr/share/doc/en_US.ISO8859-1/books/faq ╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ч╓╧. package ╓РмЬмя╓╥╓й╓╓╬Л╧Г╓о, ╪╚й╛╓г╟╣╫л╓╣╓Л╓©╔у╔║╔╓╔К╓Р╔ю╔╕╔С╔М║╪╔и╓╥╓ф╦╣╓клА╓╥, е╛юз╓й╬Л╫Й╓к╓╫╓Л╓Р╔Ё╔т║╪╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓©╓х╓╗╓п, й╛ЁД╓╣╓Л╓© HTML хг╓н FAQ ╓г, &man.gzip.1; ╓г╟╣╫л╓╣╓Л╓ф╓╓╓К╓Б╓н╓о en_US.ISO8859-1/books/faq/book.html-split.tar.gz ╓х╓╓╓╕╔у╔║╔╓╔К╓г╓╧. ╓Ё╓Л╓Р╔ю╔╕╔С╔М║╪╔и╓╥╓ф╟╣╫л╓Р╦╣╓клА╓╧╓к╓о, ╪║╓н╓Х╓╕╓к╓╧╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. &prompt.root; fetch ftp://ftp.freebsd.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz &prompt.root; gzip -d book.html-split.tar.gz &prompt.root; tar xvf book.html-split.tar ╓Ё╓╕╓╧╓К╓х, йё©Т╓н .html ╔у╔║╔╓╔К╓╛╨Ню╝╓╣╓Л╓ч╓╧. цФ©╢╓х╓й╓ц╓ф╓╓╓К╓н╓о index.html ╓х╓╓╓╕л╬а╟╓н╔у╔║╔╓╔К╓г, лэ╪║╓Да╟╫Я╓╜, й╦╫Я╓нб╬╓ниТй╛╓ь╓н╔Й╔С╔╞╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╓Ё╓Л╓И╓н╔у╔║╔╓╔К╓о, и╛мв╓к╠Ч╓╦╓фб╬╓н╬Л╫Й╓к╔Ё╔т║╪╓╥╓ф╓Б╧╫╓╓╓ч╓╩╓С. FreeBSD ╓н╔╕╔╖╔ж╔╣╔╓╔х╓н╔ъ╔И║╪╔╣╔╓╔х╓к╓й╓Й╓©╓╓╓г╓╧! ╬╣цн╓╥╓ч╓╥╓©! ╔╕╔╖╔ж╔з║╪╔╦╓Р╔ъ╔И║╪╓╧╓К╓к╓о╓╓╓╞╓д╓╚╓н╪Йцй╓╛╓╒╓Й╓ч╓╧. CVSup ╓Р╩х╓╓╓ч╓╧. CVSup ╓Р╩х╓ц╓ф CVSup ╔╣║╪╔п╓кюэбЁ╓╧╓К╓Ё╓х╓г, ю╟╥а╓╣╓Л╓©╔у╔║╔╓╔К╓Р╪Х╓ц╓ф╓╞╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔╕╔╖╔ж╔з║╪╔╦╓Р╪Хфю╓╧╓К╬Л╧Г╓о, /usr/share/examples/cvsup/www-supfile ╓к╓╒╓К supfile ╓ннЦ╓Р╩╡╧м╓к╓╥╓ф╓╞╓ю╓╣╓╓. FTP ╓Р╩х╓ц╓ф╔ъ╔И║╪╔Й╔С╔╟╓╥╓ч╓╧. ╓╒╓й╓©╓н╧╔╓╜╓й FTP ╔ъ╔И║╪╔Й╔С╔╟╔д║╪╔К╓Р╩х╓ц╓ф, FTP ╔╣║╪╔п╓кцж╓╓╓ф╓╒╓К web ╔╣╔╓╔х╓н╔Ё╔т║╪╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔©╔╕╔С╔М║╪╔и╓оц╠╫Ц╓к ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-CURRENT/www ╓╚╓И╩о╓А╓ф╓╞╓ю╓╣╓╓. ╓Ё╓нй╦╫Я╓Рб╬╓н╦ю╦Л╓ккщлУ╓╥╓©╓╓╓н╓г╓╧╓╛? йС╫╥╓о╩ый╖╓╗╓ч╓╩╓С╓╛, й╦╫Я╓нкщлУ╓РдС╫п╓╥╓ф╓╞╓ю╓╣╓КйЩ╓к╓о, ╔у╔Й║╪╓н CD, T ╔╥╔Ц╔д╓н╪Йгш╓Д, ╔о╔С╔и╔ж╔ц╔╞╓к╓╒╓К╧в╦╔╪т╟ЛмВ╓ь╓непо©╓Р╧т╓й╓╓╓©╓╓╓х╩в╓╓╓ч╓╧. кщлУ╨Н╤х╓Р╓о╓╦╓А╓Ка╟╓к, &a.doc; ╓ьо╒мМ╓╧╓К╓Х╓╕╓к╓╙╢Й╓╓╓╥╓ч╓╧. кщлУ╨Н╤х╓Р╪Йеа╓╕╓х╓╓╓╕©м╓╛╦╫╓О╓Л╓К╓╚╓Бцн╓Л╓ч╓╩╓С╓╥. ╢Ш╓ккщлУ╔а║╪╔Ю╓╛╓╒╓ц╓ф, ╓╒╓й╓©╓н╩╡╡ц╓Р╢©╥ч╓╥╓ф╓╞╓Л╓К╓╚╓Бцн╓Л╓ч╓╩╓С. ╓╫╓нб╬╓н╬ПйС ╟й╡╪╓н╔к╔Е║╪╔╧╔╟╔К║╪╔в╓к╓о FreeBSD ╔Ф║╪╔╤╓кд╬юэ╢ь╥╦╓н╓╒╓К╣дою╓╛╧т╓О╓Л╓ф╓ч╓╧. comp.unix.bsd.freebsd.announce (moderated) comp.unix.bsd.freebsd.misc comp.unix.bsd.misc Web ╬Е╓н╔Й╔╫║╪╔╧: FreeBSD ╓н╔ш║╪╔Ю╔з║╪╔╦ ╔И╔ц╔в╔х╔ц╔в PC ╓Р╩Щ╓ц╓ф╓╓╓КйЩ╓о, лб╓╕╓Ё╓х╓й╓╞фЭкэ╓н╨ыюН цё╦й╩А╓н Mobile Computing ╓н╔з║╪╔╦ ╓Р╦╚╓ч╓╥╓Г╓╕. SMP (Symmetric MultiProcessing) ╓к╢ь╓╧╓К╬ПйС╓о, SMP ╔╣╔щ║╪╔х╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. FreeBSD ╓н╔ч╔К╔а╔А╔г╔ё╔╒╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓к╢ь╓╧╓К╬ПйС╓о, ╔ч╔К╔а╔А╔г╔ё╔╒╓н╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. фц╓к Bt848 ╔с╔г╔╙╔╜╔Ц╔в╔а╔Ц╔а╔ц╔в╓к╤╫лё╓н╓╒╓КйЩ╓о, ╔Й╔С╔╞╓Р╓©╓и╓ц╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓к╓о, ╪б╓к╢╟ю╝╓╣╓Л╓©╩╡╧м©ч╫Я╓н╟ЛмВ╓╛╓╒╓Й, гЦ╓╕╓ы╓╜кэ╓Р╓╣╓╛╓╥╓ф╓╓╓КйЩ╓офи╓Ю╡ацм╓╛╓╒╓Й╓ч╓╧.
╔╓╔С╔╧╔х║╪╔К лУ: &a.iwasaki;, &a.jp.mrt;, 1997 г╞ 11 ╥Н 8 фЭ. FreeBSD ╓РфЧ╪Й╓╧╓К╓к╓о, ╓и╓н╔у╔║╔╓╔К╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓Л╓пни╓╓╓н╓г╓╥╓Г╓╕╓╚? FreeBSD 3.1-RELEASE ╟йа╟╓г╓о, ╔╓╔С╔╧╔х║╪╔К╓н╨щ╓ки╛мв╓й╓н╓о floppies/boot.flp ╓хл╬а╟╓н╓д╓╓╓© ╟Л╓д╓н╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╔╓╔А║╪╔╦╓ю╓╠╓г╓╥╓©. ╓╥╓╚╓╥ FreeBSD 3.1-RELEASE ╟й╧ъ, иЩ╧╜╓╓╪ОнЮ╓н╔о║╪╔и╔╕╔╖╔╒╔╣╔щ║╪╔х╓╛╢Пкэ╔╥╔╧╔ф╔Ю╓кди╡ц╓╣╓Л, ╓╫╓н╔╣╔щ║╪╔х╓╛и╛мв╓х╓╧╓Кмфнл╓РйД╓╕╓©╓А, 3.X ╓х 4.X ╓н╥онС╓г╓о©╥╓©╓к, floppies/kernel.flp ╓╙╓Х╓с floppies/mfsroot.flp ╓х╓╓╓╕, фС╓д╓н╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╔╓╔А║╪╔╦╓Р╩х╓╕╓Х╓╕╓к╓й╓Й╓ч╓╥╓©. ╓Ё╓Л╓И╓н╔╓╔А║╪╔╦╓Р╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓к╫Я╓╜╧Ч╓Ю╓к╓о, fdimage ╓Д &man.dd.1; ╓х╓╓╓ц╓©╔д║╪╔К╓╛и╛мв╓х╓й╓Й╓ч╓╧. (DOS ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓╚╓И╓н╔╓╔С╔╧╔х║╪╔К╓й╓и╓г) ╓╒╓й╓©╪╚©х╓╛╪Йф╟╓ггшиш╔у╔║╔╓╔К╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓К╬Л╧Г╓к╓о, ╟й╡╪╓нгшиш╔у╔║╔╓╔К╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓К╓Ё╓х╓Р╓╙╓╧╓╧╓А╓╥╓ч╓╧. bin/ manpages/ compat*/ doc/ src/ssys.* ╓Ё╓н╪Й╫Г╓н╢╟а╢╓йюБлю╓х, ╟Лхле╙╓й╔╓╔С╔╧╔х║╪╔К╩Ч╓нлДбЙ╓к╓д╓╓╓ф╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н╔╓╔С╔╧╔х║╪╔К╓нюА ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╔ж║╪╔х╔у╔М╔ц╔т║╪╔╓╔А║╪╔╦╓╛╟ЛкГ╓н╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓кг╪╓ч╓И╓й╓╓╓ъ╓©╓╓! 3.5 ╔╓╔С╔а(1.44MB)╓н╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓к╓о, 1474560 ╔п╔╓╔х╓н╔г║╪╔©╓РЁйг╪╓г╓╜╓ч╓╧. ╔ж║╪╔х╔╓╔А║╪╔╦╓о╓а╓Г╓╕╓и 1474560 ╔п╔╓╔х╓нбГ╓╜╓╣╓г╓╧. ╔ж║╪╔х╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓Р╫ЮхВ╓╧╓К╨щ╓н╓Х╓╞╓╒╓К╢ж╟Ц╓╓╓к╓о, ╟й╡╪╓н╓Б╓н╓╛╓╒╓Й╓ч╓╧. FTP ╓к╓Х╓ц╓ф╔у╔М╔ц╔т║╪╔╓╔А║╪╔╦╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓К╨щ╓к, ╔п╔╓╔й╔Й(binary)╔Б║╪╔и╓к╓╥╓ф╓╓╓й╓╚╓ц╓©. FTP ╔╞╔И╔╓╔╒╔С╔х╓нцФ╓к╓о, е╬аВ╔Б║╪╔и╓н╔г╔у╔╘╔К╔х╓Р╔╒╔╧╔╜║╪(ascii)╔Б║╪╔и╓к╓╥╓ф, ╔╞╔И╔╓╔╒╔С╔хб╕╔╥╔╧╔ф╔Ю╓н╢╥╫╛╓к╓╒╓╕╓Х╓╕, ╓╧╓ы╓ф╓н╧ткЖ╓нй╦╩З╓Рйя╧╧╓╧╓К╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╬Л╧Г╓о╬О╓к, ╔ж║╪╔х╔╓╔А║╪╔╦╓╛╡У╓Л╓©╓Б╓н╓к╓й╓Й╓ч╓╧. ╔ю╔╕╔С╔М║╪╔и╓╥╓©╔ж║╪╔х╔╓╔А║╪╔╦╓н╔╣╔╓╔╨╓Р╔а╔╖╔ц╔╞╓╥╓ф╓╞╓ю╓╣╓╓. ╔╣║╪╔п╬Е╓н╓Б╓н╓хю╣Ён╓к╟Лцв╓╥╓й╓╠╓Л╓п, ╔ю╔╕╔С╔М║╪╔и╓н╫ХмЩ╓Р╣©╓╓╓ч╓╥╓Г╓╕. ╓Ё╓Л╓Р╡СхР╓╧╓К╓к╓о, ╔╣║╪╔п╓кюэбЁ╓╥╓ф╔╓╔А║╪╔╦╓н╔ю╔╕╔С╔М║╪╔и╓РЁ╚╩о╓╧╓Ка╟╓к FTP ╓н╔Ё╔ч╔С╔и╔в╔М╔С╔в╔х╓г binary ╓х╔©╔╓╔в╓╥╓ч╓╧. ╔ж║╪╔х╔╓╔А║╪╔╦╓Р DOS ╓н copy ╔Ё╔ч╔С╔и(╓ч╓©╓о GUI ╓нф╠еЫ╓н╔д║╪╔К)╓г╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓ье╬аВ╓╥╓©. copy ╓н╓Х╓╕╓й╔в╔М╔╟╔И╔Ю╓о, д╬юэ╣╞ф╟╓╧╓К╓Х╓╕╓к╨Ню╝╓╣╓Л╓©╔ж║╪╔х╔╓╔А║╪╔╦╓Р╓╕╓ч╓╞╫ХмЩ╓г╓╜╓ч╓╩╓С. ╔╓╔А║╪╔╦╓к╓о╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓н╢╟а╢╓йцФ©х╓╛╔х╔И╔ц╔╞ц╠╟л╓гЁйг╪╓╣╓Л╓ф╓╙╓Й, ╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╬Е╓кдл╬О╓н╔у╔║╔╓╔К╓х╓╥╓ф Ёйг╪╓╣╓Л╓К╓Х╓╕╓кашдЙ╓╣╓Л╓ф╓╓╓К╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. FreeBSD ╓н╔╓╔С╔╧╔х║╪╔К╓к╣╜╫р╓╣╓Л╓ф╓╓╓К╓Х╓╕╓к, дЦ╔Л╔ы╔К╓н╔д║╪╔К(╓©╓х╓╗╓п fdimage ╓Д rawrite) ╓Р╩хмя╓╥╓ф╓╫╓н╓ч╓ч╓н(raw)╓н╬Убж╓г╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓к е╬аВ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. FreeBSD ╓н╔╓╔С╔╧╔х║╪╔К╓к╓д╓╓╓ф╓нюБлю╫Я╓о╓и╓Ё╓к╓╒╓Й╓ч╓╧╓╚? ╔╓╔С╔╧╔х║╪╔К╓нюБлю╫Я╓оFreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н╔╓╔С╔╧╔х║╪╔К╓н╬о╓к╓╒╓Й╓ч╓╧. FreeBSD ╓Рф╟╨Н╓╣╓╩╓К╓к╓о╡©╓╛и╛мв╓г╓╧╓╚? 386 ╟й╬Е╓н PC, 5MB ╟й╬Е╓н RAM, ╓╫╓╥╓ф╨гдЦ 60MB ╓н╔о║╪╔и╔г╔ё╔╧╔╞мфнл╓╛и╛мв╓х╓й╓Й╓ч╓╧. ╔М║╪╔╗╔С╔и╓н MDA ╔╚║╪╔и╓г╓Бф╟╨Н╓╥╓ч╓╧╓╛, X11R6 ╓Р╩х╓╕╓к╓о VGA ╓╚╓╫╓Л╟й╬Е╓н╔с╔г╔╙╔╚║╪╔и╓╛и╛мв╓х╓й╓Й╓ч╓╧. ╓Б╓╢мВ╓╞╓ю╓╣╓╓. 4 MB ╓╥╓╚╔А╔Б╔Й╓╛╓й╓╓╓н╓г╓╧╓╛, ╔╓╔С╔╧╔х║╪╔К╓г╓╜╓ч╓╧╓╚? 4MB ╓н╔╥╔╧╔ф╔Ю╓к╔╓╔С╔╧╔х║╪╔К╓г╓╜╓©╨г╦Е╓н FreeBSD ╓о FreeBSD 2.1.7 ╓г╓╥╓©. 2.2 ╓Р╢ч╓Ю╓Х╓Й©╥╓╥╓╓╔п║╪╔╦╔Г╔С╓н FreeBSD ╓о©╥╣╛╓н╔╓╔С╔╧╔х║╪╔К╓к╨гдЦ 5MB ╓ои╛мв╓к╓й╓Й╓ч╓╧. ╓©╓ю╓╥, ╔╓╔С╔╧╔х║╪╔К╔в╔М╔╟╔И╔Ю╓╛ 4MB ╓г╓оф╟╨Н╓╥╓й╓╓╓ю╓╠╓г, 3.0 ╓Р╢ч╓Ю FreeBSD ╓н╓╧╓ы╓ф╓н╔п║╪╔╦╔Г╔С╓о 4MB ╓н RAM ╓гф╟╨Н╡дг╫╓г╓╧. ╔╓╔С╔╧╔х║╪╔К╓╧╓К╩Ч╓ю╓╠╓╣╓И╓к 4MB ди╡ц╓╥╓ф╓╙╓╜, ╔╥╔╧╔ф╔Ю╓╛╔╩╔ц╔х╔╒╔ц╔в╓╣╓Л╓фф╟╨Н╓╧╓К╓Х╓╕╓к╓й╓ц╓©╦Е, ╓ч╓© 4MB╓Р╪Х╓Й╫п╓╥╓ф╦╣╓клА╓╧╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╓╒╓К╓╓╓о 4MB ╓Х╓Йб©╓╞╔А╔Б╔Й╓РеК╨э╓╥╓©╔╥╔╧╔ф╔Ю╓к╔г╔ё╔╧╔╞╓Р╩Щ╓ц╓ф╓╓╓╜, ╓╫╓н╔ч╔╥╔С╓г╔╓╔С╔╧╔х║╪╔К╓╥╓©╦Е╓к╔г╔ё╔╧╔╞╓РлА╓╧╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╓ч╓©, FreeBSD 2.1.7 ╓г╓╒╓ц╓ф╓Б, 4MB ╓г╓о╔╓╔С╔╧╔х║╪╔К╓г╓╜╓й╓╓╬Л╧Г╓╛╓╒╓Й╓ч╓╧. ю╣Ён╓к╓о, 640KB ╓н╔ы║╪╔╧╔А╔Б╔Й + 3MB ╓нЁхд╔╔А╔Б╔Й╓г╓о, ╔╓╔С╔╧╔х║╪╔К╓о╓г╓╜╓ч╓╩╓С. ╓Б╓╥╔ч╔╥╔С╓н╔ч╔╤║╪╔э║╪╔и╓╛ 640KB ╓╚╓И 1MB ╓ннн╟Х╓г║ж╪╨╓О╓Л╓©║в╔А╔Б╔Й╓Р╨ф╔ч╔ц╔в╓г╓╜╓К╬Л╧Г╓о, FreeBSD 2.1.7 ╓Р╔╓╔С╔╧╔х║╪╔К╓г╓╜╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. BIOS ╓н╔╩╔ц╔х╔╒╔ц╔в╡Хлл╓г, remap ╓н╔╙╔в╔╥╔Г╔С╓Рц╣╓╥╓фм╜╦З(enable)╓к╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, ROM shadowing ╓Рл╣╦З(disable)╓к╓╧╓Ки╛мв╓Б╓╒╓Й╓ч╓╧. ╢йц╠╓й╓Д╓ЙйЩ╓х╓╥╓ф╓о, ╔╓╔С╔╧╔х║╪╔К╓╧╓К╩Ч╓ю╓╠╓╒╓х 4MB ди╡ц╓╥╓ф╓╙╓╞йЩк║╓╛╓╒╓Й╓ч╓╧. и╛мв╓й╔╙╔в╔╥╔Г╔С╓ю╓╠╓Ра╙бР╓╥╓ф╔╚╔╧╔©╔Ю╔╚║╪╔м╔К╓Р╧╫цш╓╥, ╓ч╓© 4MB ╓Р╪Х╓Й╫п╓╥╓ф╓Б╓х╓клА╓╩╓п╓╓╓╓╓н╓г╓╧. ╓ч╓©, 2.0.5 ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф, ╓╫╓Л╓╚╓И 2.1.7 ╓н╔╓╔С╔╧╔х║╪╔И╓н upgrade ╔╙╔в╔╥╔Г╔С╓г╔╥╔╧╔ф╔Ю╓Р 2.1.7 ╓ь╔╒╔ц╔в╔╟╔Л║╪╔и ╓╧╓К╓х╓╓╓╕╓Д╓ЙйЩ╓Б╓╒╓Й╓ч╓╧. ╔╓╔С╔╧╔х║╪╔К╓╥╓©╓╒╓х╓г╔╚╔╧╔©╔Ю╔╚║╪╔м╔К╓н╧╫цш╓Р╓╥╓©╬Л╧Г╓к╓о, 4MB ╓г╓Бф╟╨Н╓╥╓ч╓╧. 2MB╓г╣╞ф╟╓кю╝╦Ы╓╥╓©©м╓Б╓╓╓ч╓╧(╓г╓Б╓╫╓н╔╥╔╧╔ф╔Ю╓о, ╓ш╓х╓С╓и╩х╓╓╓Б╓н╓к╓й╓Й╓ч╓╩╓С╓г╓╥╓© :-)). ╪╚й╛мя╓н╔╓╔С╔╧╔х║╪╔К╔у╔М╔ц╔т║╪╓Р╨Н╓К╓к╓о? ╦╫╨ъ╓о╔╚╔╧╔©╔Ю╔╓╔С╔╧╔х║╪╔К╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞║ж╓ю╓╠║в╓Р╨Н╓КйЩк║╓о╓╒╓Й╓ч╓╩╓С. ╔╚╔╧╔©╔Ю╔╓╔С╔╧╔х║╪╔К╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╔╓╔А║╪╔╦╓Р╢ч╓Ю, release ╢д╤╜а╢бн╓Р©╥╓©╓к╨Н╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔╚╔╧╔©╔Ю╓н release ╢д╤╜╓Р╓д╓╞╓К╓к╓о, ╓Ё╓Ё╓н╩ь╪╗╓к╓╥╓©╓╛╓ц╓ф╓╞╓ю╓╣╓╓. ╪╚й╛╓н PC ╓кйё©Т╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓РфЧ╓Л╓К╓к╓о? multi-OS ╓н╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. ф╠╓╦╔ч╔╥╔С╓г Windows 95/98 ╓х╤╕б╦╓г╓╜╓ч╓╧╓╚? ╓ч╓╨ Windows 95/98 ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╚╓И, ╓╫╓н╓╒╓х╓г FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓н╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓╛ Win95 ╓х FreeBSD ╓н╔ж║╪╔х╢имЩ╓Р╓╥╓ф╓╞╓Л╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. Windows 95/98 ╓Р╦Е╓к╔╓╔С╔╧╔х║╪╔К╓╥╓©╬Л╧Г╓о╓р╓и╓╓╓Ё╓х╓к, лД╓╓╧Г╓О╓╩╓К╓Ё╓х╓Б╓й╓╞╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓Р╬Е╫Я╓╜╓╥╓ф╓╥╓ч╓╓╓ч╓╧. ╓╫╓╕╓й╓ц╓ф╓╥╓ч╓ц╓©╬Л╧Г╓о╪║╓нюА╓Р╓╢мВ╓╞╓ю╓╣╓╓. Windows 95/98 ╓╛╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓Рды╓╥╓а╓Ц╓ц╓©! ╓и╓╕╓Д╓ц╓флА╓╧╓н? ╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓н╨ф╔╓╔С╔╧╔х║╪╔К╓нйЩк║╓х╓╥╓ф, FreeBSD ╓г╓о╟й╡╪╓к╪╗╓╧╩╟дл╓Й╓нйЩк║╓╛мя╟у╓╣╓Л╓ф╓╓╓ч╓╧. DOS ╓Р╣╞ф╟╓╥, FreeBSD ╓нгшишй╙╓нцФ╓к╓╒╓К tools/ ╔г╔ё╔Л╔╞╔х╔Й╓ь╟эф╟╓╥, bootinst.exe ╓Рц╣╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╥╓ф╪║╓н╓Х╓╕╓к╪б╧т╓╥╓ч╓╧. ...\TOOLS> bootinst.exe boot.bin ╓Ё╓╕╓╧╓К╓Ё╓х╓г, ╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓╛╨ф╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ч╓╧. FreeBSD ╓н╔ж║╪╔х╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓╚╓И╣╞ф╟╓╥, ║ж╔╚╔╧╔©╔Ю║в╔╓╔С╔╧╔х║╪╔К╔А╔к╔Е║╪╓Ра╙бР╓╥, бЁ╓╓╓ф║ж╔я║╪╔ф╔ё╔╥╔Г╔С║в╓Ра╙бР╓╥╓ч╓╧. ╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓╛╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓©╔и╔И╔╓╔ж(б©й╛╨г╫И╓н╓Б╓н)╓Ра╙бР╓╥, ╔я║╪╔ф╔ё╔╥╔Г╔С╔╗╔г╔ё╔©╓к╓©╓и╓ЙцЕ╓╓╓©╓И, (╡©╓Бйя╧╧╓╩╓╨)╓╫╓н╓ч╓ч (W)rite ╓Р╩ьдЙ╓╥╓ч╓╧. Ёнг╖╓н╔А╔ц╔╩║╪╔╦╓╛╫п╓ч╓╧╓н╓г║ж╓о╓╓(Y)║в╓хеЗ╓╗, ╔ж║╪╔х╔ч╔м║╪╔╦╔Ца╙бР╓н╡Хлл╓гЁн╪б╓к Boot Manager ╓Ра╙бР╓╥╓ч╓╧. ╓Ё╓Л╓г╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓╛╔г╔ё╔╧╔╞╓к╨ф╓с╫Я╓╜╧Ч╓ч╓Л╓ч╓╧. ╔╓╔С╔╧╔х║╪╔К╔А╔к╔Е║╪╓╚╓Их╢╓╠╓ф╨ф╣╞ф╟╓╧╓К╓х, ╔о║╪╔и╔г╔ё╔╧╔╞╓о╦╣дл╓Й╓к╓й╓Й╓ч╓╧. FreeBSD ╣╞ф╟╔у╔М╔ц╔т║╪ (╓Б╓╥╓╞╓о CD-ROM) ╓╚╓И╣╞ф╟╓╥, Fixit ╔А╔к╔Е║╪╓Ра╙бР╓╥╓ч╓╧. Fixit ╔у╔М╔ц╔т║╪╓╚ CD-ROM #2 (live ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╔╙╔в╔╥╔Г╔С) ╓н╧╔╓╜╓ййЩ╓Р╓Ра╙бР╓╥╓ф fixit ╔╥╔╖╔К╓кфЧ╓Й╓ч╓╧. ╓╫╓╥╓ф, ╪║╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. Fixit# fdisk -B -b /boot/boot0 ╣╞ф╟╔г╔п╔╓╔╧ ╣╞ф╟╔г╔п╔╓╔╧ ╓ниТй╛╓о, ╓©╓х╓╗╓п ad0 (╟Лхжлэ╓н IDE ╔г╔ё╔╧╔╞), ad4 (╔╩╔╚╔С╔ю╔Й IDE ╔Ё╔С╔х╔М║╪╔И╓н╟Лхжлэ╓н IDE ╔г╔ё╔╧╔╞), da0 (╟Лхжлэ╓н SCSI ╔г╔ё╔╧╔╞) ╓й╓и╓х╓╓╓ц╓©, ╪б╨щ╓н╣╞ф╟╔г╔п╔╓╔╧╓Ри╫╓╥╓ф╓╓╓ч╓╧. IBM Thinkpad ╓н A, T, X ╔╥╔Й║╪╔╨╓н╓╓╓╨╓Л╓╚╓Р╩Щ╓ц╓ф╓╓╓ч╓╧. FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓©╓И╣╞ф╟╓╥╓й╓╞╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╥╓©. ╓и╓╕╓╧╓Л╓п╓╓╓╓╓г╓╧╓╚? ╓Ё╓Л╓И╓н╔ч╔╥╔С╓к╩х╓О╓Л╓ф╓╓╓К╫И╢Э╓н╔Й╔с╔╦╔Г╔С╓н IBM BIOS ╓к╓о╔п╔╟╓╛╓╒╓Й, FreeBSD ╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╔г╔ё╔╧╔╞╔╣╔╧╔з╔С╔имя╓н FAT нн╟Х╓ю╓х╦Мг╖╓╥╓ч╓╧. ╓╫╓н╓©╓А, BIOS ╓╛ FreeBSD ╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓Р ╦║╫п╓╥╓©╓х╓Ё╓М╓г╔╥╔╧╔ф╔Ю╓╛╔о╔С╔╟ (дД╩ъ) ╓╥╓ф╓╥╓ч╓╓╓ч╓╧. IBM ╓Ё╓Л╓о Keith Frechette kfrechet@us.ibm.com ╓╚╓И╓н╔А║╪╔К╓к╓Х╓Й╓ч╓╧. ╓к╓Х╓Л╓п, ╟й╡╪╓н╔Б╔г╔К/BIOS ╔Й╔Й║╪╔╧хж╧Ф╓к╓о╫╓ю╣╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╔Б╔г╔К BIOS ╔Й╔с╔╦╔Г╔Схж╧Ф T20 IYET49WW ╟й╧ъ T21 KZET22WW ╟й╧ъ A20p IVET62WW ╟й╧ъ A20m IWET54WW ╟й╧ъ A21p KYET27WW ╟й╧ъ A21m KXET24WW ╟й╧ъ A21e KUET30WW ╓Б╓╥лДбЙ╓н╓╒╓К BIOS ╓Р╩х╓ц╓ф╓╓╓ф╔╒╔ц╔в╔╟╔Л║╪╔и╓╛а╙╓ы╓й╓╓╬Л╧Г, FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╚╓И FreeBSD ╓╛╩х╓ц╓ф╓╓╓К╔я║╪╔ф╔ё╔╥╔Г╔С ID ╓Рйя╧╧╓╥, йя╧╧╓╣╓Л╓©╔я║╪╔ф╔ё╔╥╔Г╔С ID ╓Рю╣╓╥╓╞╟╥╓╕╓Ё╓х╓н╓г╓╜╓К ©╥╓╥╓╓╣╞ф╟╔ж╔М╔ц╔╞╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Ё╓х╓г╡Р╥Х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╫╓Л╓к╓о╓ч╓╨, ╔╩╔К╔у╔ф╔╧╔х╡Хлл╓Рдл╡А╓╧╓К╬Убж╓к╓ч╓г╔ч╔╥╔С╓Р╡СиЭ╓╣╓╩╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓╫╓н╓©╓А╓к╓о, ╔ч╔╥╔С╓╛╔в╔И╔╓╔ч╔Й╔г╔ё╔╧╔╞╓╚╓И FreeBSD ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╦╚╓д╓╠╓й╓╓╓Х╓╕╓к╓╥╓ф╣╞ф╟╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓©╓х╓╗╓п, ╟Леы╔о║╪╔и╔г╔ё╔╧╔╞╓РЁ╟╓╥╓ф╓╥╓ч╓ц╓ф, ╓╫╓н╔г╔ё╔╧╔╞╓Р╦е╓╓ ThinkPad (ThinkPad 600 ╓й╓и) ╓Д╔г╔╧╔╞╔х╔ц╔в PC ╓ке╛юз╓ййя╢╧╔╠║╪╔ж╔К╓гюэбЁ╓╥╓ч╓╧. ╓╫╓н╦Е FreeBSD ╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨О╫Э╓╥, ╔о║╪╔и╔г╔ё╔╧╔╞╓Р╦╣╓н ThinkPad ╓клА╓╥╓ч╓╧. ╓Ё╓╕╓╧╓К╓Ё╓х╓г ThinkPad ╓о╣╞ф╟╡дг╫╓й╬Убж╓клА╓К╓о╓╨╓г╓╧. ╔ч╔╥╔С╓╛╓а╓Ц╓С╓хф╟╓╞╓Х╓╕╓к╓й╓ц╓©╓И, ╟й╡╪╓ниЭ╣Л╪Й╫Г╓к╫╬╓ц╓ф FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. http://people.freebsd.org/~bmah/ThinkPad/ ╓╚╓И boot1 ╓х boot2 ╓Р╔ю╔╕╔С╔М║╪╔и╓╥╓ч╓╧. ╓Ё╓Л╓И╓н╔у╔║╔╓╔К╓о, ╓╒╓х╓ги╛мв╓к╓й╓ц╓©╩Ч, ╪Х╓Й╫п╓╩╓К╬Л╫Й╓кцж╓╓╓ф╓╙╓╜╓ч╓╧. ThinkPad ╓киАдл╓к FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ч╓╧. ╓©╓ю╓╥, Dangerously Dedicated ╔Б║╪╔и╓Р╩х╓ц╓ф╓о╓╓╓╠╓ч╓╩╓С. ╓ч╓©, ╔╓╔С╔╧╔х║╪╔К╓╛╫╙╓О╓ц╓ф╓Б╨ф╣╞ф╟╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С. ╤ш╣ч╔ш╔М╔╟╔И╔у╔ё╔ц╔╞╔╥╔╖╔К (Emergency Holographic Shell) (ALTF4) ╓кюз╓Йбь╓╗╓К╓╚, fixit ╔╥╔╖╔К╓Р╣╞ф╟╓╥╓ч╓╧. &man.fdisk.8; ╓Р╩х╓ц╓ф FreeBSD ╓н╔я║╪╔ф╔ё╔╥╔Г╔С ID ╓Р 165 ╓╚╓И 166 ╓к йя╧╧╓╥╓ч╓╧ (╓Ё╓Л╓о OpenBSD ╓г╩х╓О╓Л╓ф╓╓╓К╓Б╓н╓г╓╧). boot1 ╓х boot2 ╓н╔у╔║╔╓╔К╓Р╔М║╪╔╚╔К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓к╩Щ╓ц╓фмХ╓ч╓╧. &man.disklabel.8; ╓Р╩х╓ц╓ф boot1 ╓х boot2 ╓Р FreeBSD ╓н╔╧╔И╔╓╔╧╓к╫Я╓╜╧Ч╓ъ╓ч╓╧. &prompt.root; disklabel -B -b boot1 -s boot2 ad0sn n ╓о, ╓╒╓й╓©╓╛ FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓©╔╧╔И╔╓╔╧╓нхж╧Ф╓г╓╧. ╨ф╣╞ф╟╓╥╓ч╓╧. ╣╞ф╟╔в╔М╔С╔в╔х╓о OpenBSD ╓х╪╗╓╥╓ч╓╧╓╛, ╪б╨щ╓к╓о, ╓╫╓Л╓г FreeBSD ╓╛╣╞ф╟╓╥╓ч╓╧. ╓Ё╓нйЩк║╓г FreeBSD ╓х OpenBSD ╓Р╔г╔Е╔╒╔К╔ж║╪╔х╓╧╓КйЩк║╓о, фи╪т╓ь╓ннЩ╫╛лДбЙ╓х╓╥╓ч╓╥╓Г╓╕. итни╔ж╔М╔ц╔╞╓н╓╒╓К╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓г╓╜╓ч╓╧╓╚? FreeBSD 3.0 ╟йа╟╓н╔╥╔╧╔ф╔Ю╓г╓о, итни╔ж╔М╔ц╔╞╓Р╪╚ф╟е╙╓к╨ф╔ч╔ц╔т╔С╔╟╓╧╓К bad144 ╓х╓╓╓╕╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╥╓©╓╛, ╦╫╨ъ╓н IDE ╔и╔И╔╓╔ж╓о╔и╔И╔╓╔ж╪╚©х╓╛╓Ё╓н╣║г╫╓РхВ╓╗╓ф╓╓╓К╓©╓А, bad144 ╓о FreeBSD ╔╫║╪╔╧╔д╔Й║╪╓╚╓И╨О╫Э╓╣╓Л╓ч╓╥╓©. FreeBSD 3.0 ╓╚╓╫╓Л╟й╧ъ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓©╓╓╓х╩в╓ц╓ф╓╓╓К╓й╓И, хФЁсе╙©╥╓╥╓╓╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓Р╧ьфЧ╓╧╓К╓Ё╓х╓Р╤╞╓╞╓╙╓╧╓╧╓А╓╥╓ч╓╧. ©╥╓╥╓╓╔и╔И╔╓╔ж╓Р╧ьфЧ╓╧╓К╣╓╓╛╓й╓╠╓Л╓п, FreeBSD 2.x ╓РмЬмя╓╧╓К╓ы╓╜╓г╓╧. ╦╫╨ъ╓н IDE ╔и╔И╔╓╔ж╓гитни╔ж╔М╔ц╔╞╓к╓Х╓К╔╗╔И║╪╓╛х╞ю╦╓╥╓©╬Л╧Г, ╓ч╓Б╓й╓╞╔и╔И╔╓╔ж╓╛╦н╬Ц╓╧╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧ (╓╫╓Л╓о╓╫╓н╔и╔И╔╓╔жфБб╒╓н╨ф╔ч╔ц╔т╔С╔╟╣║г╫╓г╓о итни╔ж╔М╔ц╔╞╓╛╫╓ю╣╓г╓╜╓й╓╞╓й╓ц╓©╓х╓╓╓╕╓Ё╓х╓г╓╒╓Й, ╔г╔ё╔╧╔╞╓╛╓р╓и╓╞╡У╓Л╓ф╓╓╓К╓Ё╓х╓Р╟улё╓╥╓ч╓╧). ©╥╓╥╓╓╔о║╪╔и╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓к╦Р╢╧╓╥╓ч╓╥╓Г╓╕. итни╔ж╔М╔ц╔╞╓н╓╒╓К SCSI ╔и╔И╔╓╔ж╓н╬Л╧Г╓о, ╓Ё╓н╡СеЗ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╔╓╔С╔╧╔х║╪╔И╓╚╓И╣╞ф╟╓╥╓©╓Ийя╓й╓Ё╓х╓к╓й╓Й╓ч╓╥╓©! ╔╓╔С╔╧╔х║╪╔И╓╚╓И╣╞ф╟╓╥╓Х╓╕╓х╓╥╓©╓х╓╜╓к, ╔ч╔╥╔С╓╛╦г╓ч╓ц╓ф╓╥ ╓ч╓╕╓х╓╚╪╚аЁ╓х╨ф╣╞ф╟╓╥╓ф╓╥╓ч╓╕╓х╓╓╓ц╓©╦╫╬щ╓г╓╒╓Л╓п, ╪║╓н╩╟╓д╓н╧Юлэ╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ©╥ий╓н, ╔у╔╘║╪╔ч╔ц╔х╓╥╓©╓ф╓н, ╔╗╔И║╪╓н╓й╓╓╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓Р╩х╓ц╓ф╓╓╓ч╓╧╓╚? (╩╟г╞╢ж╓Б╔ы╔ц╔и╓н╡╪╓кйЭцж╓╣╓Л╓ф╓╓╓©╩╗╩О╓ниуо©╓ъ╓©╓╓╓й╓Д╓д╓г╓о╓й╓╞╓ф, гЦ╓ц╓ф╓╜╓©╓п╓╚╓Й╓н©╥ий╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓) ╔у╔М╔ц╔т║╪╔╓╔А║╪╔╦╓Р╔п╔╓╔й╔Й╔Б║╪╔и╓г╔ю╔╕╔С╔М║╪╔и╓╥╓ч╓╥╓©╓╚? (╨╓╓ц╓©╢И╓Р╓╥╓й╓╓╓г╓╞╓ю╓╣╓╓. ╩Д╓©╓а╓нцФ╓г╟Лхжм╔╫╗╓й©м╓г╓╣╓╗, ╬╞╓й╓╞╓х╓Б╟Л╡С╓о╔п╔╓╔й╔Й╔у╔║╔╓╔К╓Р ASCII ╔Б║╪╔и╓г╩в╓╓╓╛╓╠╓╨╔ю╔╕╔С╔М║╪╔и╓╥╓©╓Ё╓х╓╛╓╒╓К╓н╓г╓╧!) Windows95 ╓╒╓К╓╓╓о Windows98 ╓Р╩хмя╓╥╓ф╓╓╓К╓й╓И, ╓╒╓Й╓н╓ч╓ч╓нкэй╙╓н DOS ╓г fdimage ╓╚ rawrite ╓Р╪б╧т╓╥╓ч╓╥╓©╓╚? ╓Ё╓Л╓И╓н OS ╓о╔г╔ё╔╧╔╞╨Ню╝╔в╔М╔╟╔И╔Ю╓н╓Х╓╕╓й, ╔о║╪╔и╔╕╔╖╔╒╓кд╬юэ╫Я╓╜╧Ч╓ъ╓Р╧т╓й╓╕╔в╔М╔╟╔И╔Ю╓к╢Ё╬д╓╧╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. GUI ╓нцФ╓н DOS ╔╥╔╖╔КфБиТ╓гф╟╨Н╓╥╓ф╓╓╓К╬Л╧Г╓г╓Б, ╓Ё╓нлДбЙ╓ох╞ю╦╓╥╓ч╓╧. ╓ч╓©, Netscape ╓г╔ж║╪╔х╔╓╔А║╪╔╦╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓К╬Л╧Г╓БлДбЙ╓╛╓╒╓К╓Ё╓х╓╛йС╧П╓╣╓Л╓ф╓╓╓ч╓╧╓н╓г, ╓г╓╜╓Л╓пйл╓н FTP ╔╞╔И╔╓╔╒╔С╔х╓Р╩х╓╕╓н╓╛╓Х╓╓╓г╓╥╓Г╓╕. APAPI CD-ROM ╓╚╓И╣╞ф╟╓╥╓©╓н╓г╓╧╓╛, ╔╓╔С╔╧╔х║╪╔К╔в╔М╔╟╔И╔Ю╓о CD-ROM ╓╛╦╚╓д╓╚╓Й╓ч╓╩╓С╓х╦ю╓ц╓ф╓╜╓ч╓╧. CD-ROM ╓о╓и╓Ё╓к╧т╓ц╓ф╓╥╓ч╓ц╓©╓н╓г╓╥╓Г╓╕╓╚? ╓Ё╓нлДбЙ╓одл╬О, CD-ROM ╔и╔И╔╓╔ж╓нюъдЙ╔ъ╔╧╓к╓Х╓ц╓фх╞ю╦╓╥╓ч╓╧. бГиТй╛╓н PC ╓н CD-ROM ╔и╔И╔╓╔ж╓о, ╔╩╔╚╔С╔ю╔Йб╕╓н IDE ╔Ё╔С╔х╔М║╪╔И╓н╔╧╔Л║╪╔ж╔г╔п╔╓╔╧╓х╓╥╓фюэбЁ╓╣╓Л, ╔ч╔╧╔©╔г╔п╔╓╔╧╓╛╓й╓╓╬Убж╓г╫п╡ы╓╣╓Л╓ф╓╓╓ч╓╧. ╓Ё╓нюэбЁйЩк║╓о ATAPI ╣╛Ёй╟Цх©╓й╓н╓г, Windows ╓о╣╛Ёй╓и╓╙╓Й╓кф╟╓╓╓©╓Й, ф╟╓╚╓й╓╚╓ц╓©╓Й╓╥╓ч╓╧╓╛, BIOS ╓о╣╞ф╟╩Ч╓к╣╛Ёй╟Цх©╓Рл╣╩К╓╥╓ч╓╧. ╓╫╓н╓©╓А BIOS ╓о╣╞ф╟╩Ч╓к CD-ROM ╓Р╦╚╓д╓╠╓И╓Л╓ч╓╧╓╛, FreeBSD ╓о CD-ROM ╓Р╦╚╓д╓╠╓И╓Л╓╨, ╔╓╔С╔╧╔х║╪╔К╓Р╢╟н╩╓г╓╜╓й╓╓╓н╓г╓╧. CD-ROM ╓╛ юэбЁ╓╣╓Л╓ф╓╓╓К IDE ╔Ё╔С╔х╔М║╪╔И╓н╔ч╔╧╔©╔г╔п╔╓╔╧╓х╓й╓К╓Х╓╕╓кюъдЙ╓╧╓К╓╚, ╓Б╓╥╓╞╓о╔ч╔╧╔©, ╔╧╔Л║╪╔ж╓нн╬йЩ╓к╔г╔п╔╓╔╧╓╛юэбЁ╓╣╓Л╓ф╓╓╓К╓Х╓╕╓к╔╥╔╧╔ф╔Ю╓Р╨ф╧╫ю╝╓╥╓ф╓╞╓ю╓╣╓╓. ╓╒╓Л╓Л? ╔ф║╪╔в╓╚╓И╔╓╔С╔╧╔х║╪╔К╓г╓╜╓ч╓╩╓С! FreeBSD 2.1.7R ╓Р╔ф║╪╔в╓╚╓И╔╓╔С╔╧╔х║╪╔К╓╧╓К╬Л╧Г, tar ╔ж╔М╔ц╔╞╔╣╔╓╔╨╓Р 10(5120 ╔п╔╓╔х)╓к╓╥╓©╔ф║╪╔в╓Р╨Н╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔г╔у╔╘╔К╔х ╓н tar ╔ж╔М╔ц╔╞╔╣╔╓╔╨╓о 20(10240 ╔п╔╓╔х)╓г, ╓Ё╓н╔г╔у╔╘╔К╔х╔╣╔╓╔╨╓г╨Н╓И╓Л╓©╔ф║╪╔в╓г╓о FreeBSD 2.1.7R ╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╩╓С. ╓Б╓╥╓Ё╓╕╓╥╓©╔ф║╪╔в╓Р╩х╓╕╓х, ╔Л╔Ё║╪╔и╔╣╔╓╔╨╓╛бГ╓╜╓╧╓╝╓К╓х╓╓╓╕╔╗╔И║╪╓╛╣╞╓╜╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. PLIP ╥пмЁ╓гфС╓д FreeBSD box ╓РюэбЁ╓╥╓©╓╓╓н╓г╓╧╓╛ Laplink ╔я╔И╔Л╔К╔╠║╪╔ж╔К╓Рмя╟у╓╥╓ф, н╬йЩ╓н PC ╓н╔╚║╪╔м╔К╓к lpt ╔и╔И╔╓╔п╓╛ах╓ъ╧Ч╓ч╓Л╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.user; dmesg | grep lp lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven port lp0: TCP/IP capable interface ╔я╔И╔Л╔К╔╓╔С╔©╔у╔╖║╪╔╧╓к Laplink ╔я╔И╔Л╔К╔╠║╪╔ж╔К╓РюэбЁ╓╥╓ч╓╧. root ╓к╓й╓ц╓ф, н╬йЩ╓г lp0 ╓н╔м╔ц╔х╔О║╪╔╞╔╓╔С╔©╔у╔╖║╪╔╧╔я╔И╔А║╪╔©╓РюъдЙ╓╥╓ч╓╧. нЦ╓╗╓п, ╔ш╔╧╔х max ╓х moritz ╓РюэбЁ╓╥╓©╓╓╬Л╧Г, max <-----> moritz IP Address 10.0.0.1 10.0.0.2 max б╕╓г╪║╓н╓Х╓╕╓к╓╥╓ф, &prompt.root; ifconfig lp0 10.0.0.1 10.0.0.2 moritz б╕╓гф╠мм╓к╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; ifconfig lp0 10.0.0.2 10.0.0.1 ╟й╬Е╓г╓╧! &man.lp.4; ╓х &man.lpt.4; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Б╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, /etc/hosts ╓к╔ш╔╧╔х╓нди╡ц╓Б╓╥╓ч╓╥╓Г╓╕. 127.0.0.1 localhost.my.domain localhost 10.0.0.1 max.my.domain max 10.0.0.2 moritz.my.domain moritz ф╟╨НЁнг╖╓о╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. max б╕: &prompt.user; ifconfig lp0 lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 &prompt.user; netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire moritz max UH 4 127592 lp0 &prompt.user; ping -c 4 moritz PING moritz (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- moritz ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms ╔И╔ц╔в╔х╔ц╔в PC ╓к PLIP ╥пмЁ╓г╔╓╔С╔╧╔х║╪╔К╓г╓╜╓ч╓╧╓╚? ╪║╓н╓Х╓╕╓к╓╥╓ф, фС╓д╓н╔Ё╔С╔т╔Е║╪╔©╓Р Laplink ╔я╔И╔Л╔К╔╠║╪╔ж╔К╓гюэбЁ╓╥╓ф╓╞╓ю╓╣╓╓. ╔м╔ц╔х╔О║╪╔╞юэбЁмя╓н╔я╔И╔Л╔К╔╠║╪╔ж╔К╓н╥КюЧ A-name A б╕ B б╕ юБлю ╔щ║╪╔х / ╔с╔ц╔х DATA0 -ERROR 2 15 15 2 Data 0/0x01 1/0x08 DATA1 +SLCT 3 13 13 3 Data 0/0x02 1/0x10 DATA2 +PE 4 12 12 4 Data 0/0x04 1/0x20 DATA3 -ACK 5 10 10 5 Strobe 0/0x08 1/0x40 DATA4 BUSY 6 11 11 6 Data 0/0x10 1/0x80 GND 18-25 18-25 GND -
╓ч╓©, Mobile Computing ╓к╓д╓╓╓ф╓н╔з║╪╔╦╓Б╓╢мВ╓╞╓ю╓╣╓╓.
╔о║╪╔и╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓к╓о, ╓и╓н╔╦╔╙╔А╔х╔Й╓Р╩х╓╕╓ы╓╜╓г╓╥╓Г╓╕╓╚? ╓Ё╓Ё╓г╔г╔ё╔╧╔╞╓н║ж╔╦╔╙╔А╔х╔Й║в╓х╓о, ╔г╔ё╔╧╔╞╓н╔╥╔Й╔С╔ю, ╔ь╔ц╔ю, ╔х╔И╔ц╔╞еЖ╓Й╓н╔╩╔╞╔©╓н©Т╓Р╟улё╓╥╓ф╓╓╓ч╓╧ - йь╣╧╬Е, C/H/S ╓х╓╧╓К╓Ё╓х╓к╓╥╓ч╓╧. ╓Ё╓Л╓о╔г╔ё╔╧╔╞╓н╓и╓ннн╟Х╓гфи╓ъ╫Я╓╜╓Р ╧т╓й╓╕╓╚╓Р PC ╓н BIOS ╓╛╥ХдЙ╓╧╓К╪Йцй╓х╓й╓Й╓ч╓╧. ╓Ё╓Л╓к╓д╓╓╓ф╓о╓╒╓КмЩмЁ╓н╓©╓А╓к, ╦М╡Р╓╣╓Л╓ф╓╓╓Кею╓╛б©╓╓╓Х╓╕╓г╓╧. ╓ч╓╨╨г╫И╓к, FreeBSD ╓о╔г╔ё╔╧╔╞╔ж╔М╔ц╔╞╓гф╟╨Н╓╥╓ф╓╓╓К╓©╓А, SCSI ╔и╔И╔╓╔ж╓нй╙мЩе╙╓й╔╦╔╙╔А╔х╔Й╓х╓╓╓╕╦ю╓╓йЩ╓о, ╓ч╓ц╓©╓╞╦╚еЖ╟Ц╓╓╓н╓Б╓н╓г╓╧. ╩Ж╪б, ╔╩╔╞╔©╓нл╘еы╓о╔г╔ё╔╧╔╞╓к╓Х╓ц╓ф╓ч╓а╓ч╓а╓г╓╒╓К╓©╓А, й╙мЩе╙╓й╔╦╔╙╔А╔х╔Й╓х╓╓╓╕╓Б╓н╓об╦╨ъ╓╥╓ч╓╩╓С. ю╫б╓╪т╓╛║жкэеЖ╓н║вй╙мЩе╙╓й╔╦╔╙╔А╔х╔Й╓х╦Ьи╫╓╥╓ф╓╓╓К╓Б╓н╓одл╬О, хЮ╓И╓╛╦║╨╨╓╥╓ффю╓©╨г╬╝╓н╩хмяит╡дмфнл╓н╥К╡л╓н╔╦╔╙╔А╔х╔Й╓н╓Ё╓х╓г╓╧. IDE ╓н╬Л╧Г, FreeBSD ╓о C/H/S ╓гф╟╨Н╓╥╓ч╓╧╓╛, ╨г╤А╓н╔и╔И╔╓╔ж╓о╓╧╓ы╓ф, ╓Ё╓Л╓РфБиТ╓г╩╡╬х╓╧╓К╔ж╔М╔ц╔╞╓кйя╢╧╓╥╓ф╓╓╓ч╓╧. лДбЙ╓о╓х╓й╓К╓н╓ооюмЩе╙╓й╔╦╔╙╔А╔х╔Й╓г╓╧. ╓Ё╓Л╓о BIOS ╓╛╓╫╓н╔г╔ё╔╧╔╞╓н╔╦╔╙╔А╔х╔Й╓к╓д╓╓╓фд╢╓ы╓©╨щ╓к╪Хфю╓╣╓Л╓К╓Б╓н╓г╓╒╓Й, ╓╫╓н╦Е╓н╔г╔ё╔╧╔╞╓ь╓н╔╒╔╞╔╩╔╧╓к╩хмя╓╥╓ч╓╧. FreeBSD ╓о╣╞ф╟╩Ч╓к BIOS ╓Р╩хмя╓╧╓К╓©╓А, ╓Ё╓Л╓Рю╣╓╥╓╞╪Хфю╓╧╓К╓Ё╓х╓охС╬О╓к╫емв╓й╓Ё╓х╓й╓н╓г╓╧. ╪б╨щ╓к, ╔г╔ё╔╧╔╞╬Е╓кйё©Т╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓╛╓╒╓К╬Л╧Г╓о, ╔╦╔╙╔А╔х╔Й╓о╓и╓Ё╓╚╓И╓г╓Бф╠╓╦╓Х╓╕╓к╡Р╪А╓╣╓Л╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓╫╓╕╓╥╓й╓╓╓х, ╣╞ф╟╩Ч╓к©╪╧О╓йлДбЙ╓╛х╞ю╦╓╥╓ч╓╧. SCSI ╔г╔ё╔╧╔╞╓г╓о, ╩хмя╓╧╓К╔╦╔╙╔А╔х╔Й╓о╔Ё╔С╔х╔М║╪╔И╓нЁхд╔ BIOS ╔х╔И╔С╔╧╔Л║╪╔╥╔Г╔С(>1GB ╓н DOS ╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓н╔╣╔щ║╪╔х ╓х╓Б╦ф╓п╓Л╓ч╓╧)╓╛м╜╦З╓к╓й╓ц╓ф╓╓╓К╓╚╓и╓╕╓╚╓к╓Х╓Й╓ч╓╧. л╣╦З╓к╓й╓ц╓ф╓╓╓К╬Л╧Г, N ╔╥╔Й╔С╔ю, 64 ╔ь╔ц╔и, 32 ╔╩╔╞╔©/╔х╔И╔ц╔╞╓Р╩хмя╓╥╓ч╓╧╓╛, ╓Ё╓Ё╓г `N' ╓о MB ц╠╟л╓н╔г╔ё╔╧╔╞мфнл╓г╓╧. нЦ╓╗╓п, 2GB ╔г╔ё╔╧╔╞╓о╦╚╓╚╓╠╬Е 2048 ╔╥╔Й╔С╔ю, 64 ╔ь╔ц╔и, 32 ╔╩╔╞╔©/╔х╔И╔ц╔╞╓х╓й╓Й╓ч╓╧. ╓╫╓Л╓╛║жм╜╦З║в╓к╓й╓ц╓ф╓╙╓Й(MS-DOS ╓г╓о╓Ё╓нйЩк║╓г, ╓╒╓Кю╘╦б╓Р╡СхР╓╧╓К╬Л╧Г╓Б╓╒╓Й╓ч╓╧), ╔г╔ё╔╧╔╞мфнл╓╛ 1GB ╓Р╠ш╓╗╓К╬Л╧Г╓о, M ╔╥╔Й╔С╔ю, 63 ╔╩╔╞╔©/╔х╔И╔ц╔╞ (64 ║ж╓г╓о╓й╓╞║в), 255 ╔ь╔ц╔и╓Р╩хмя╓╥╓ч╓╧. `M' ╓о MB ц╠╟л╓н╔г╔ё╔╧╔╞мфнл╓Р 7.844238(!) ╓гЁД╓ц╓©цм╓х╓й╓Й╓ч╓╧. ╓х╓╓╓╕╓Ё╓х╓г, 2GB ╔г╔ё╔╧╔╞╓ннЦ╓г╓о, 261 ╔╥╔Й╔С╔ю, 63 ╔╩╔╞╔©/╔х╔И╔ц╔╞, 255 ╔ь╔ц╔и╓х╓й╓Й╓ч╓╧. (лУцМ: ╟й╬Е╓о Adaptec ╪р╓х NCR ╪рю╫╓н SCSI ╔╒╔ю╔в╔©╓н╬Л╧Г╓г╓╧. SCSI ╔╒╔ю╔в╔©╓к╓Х╓ц╓фйя╢╧╓н©Тцм╓╛йя╓О╓ц╓ф╓╞╓К╓н╓г╔ч╔к╔Е╔╒╔К╓Р ╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓.) ╓Ё╓Л╓к╓д╓╓╓ф╓Х╓╞й╛╓╚╓И╓й╓╓╬Л╧Г╓Д FreeBSD ╓╛╔╓╔С╔╧╔х║╪╔КцФ╓кю╣╓╥╓╞╔╦╔╙╔А╔х╔Й╓Р╪Хфю╓г╓╜╓й╓╓╬Л╧Г, ╓Ё╓Л╓Р╡СхР╓╧╓К╓Б╓ц╓х╓Б╢йц╠╓ййЩк║╓о, ╔г╔ё╔╧╔╞╓к╬╝╓╣╓й DOS ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨Н╓К╓Ё╓х╓г╓╧. ╓╫╓╕╓╧╓К╓хю╣╓╥╓╓╔╦╔╙╔А╔х╔Й╓╛╪Хфю╓╣╓Л╓К╓о╓╨╓г╓╧(╓╫╓╥╓ф, ╩д╓╥╓ф╓╙╓╜╓©╓╞╓й╓╓╓х╓╚, ╔м╔ц╔х╔О║╪╔╞╔╚║╪╔и╓н╔в╔М╔╟╔И╔ъ╔С╔╟мя╓к╩х╓╓╓©╓╓╬Л╧Г╓й╓и╓к╓о, ╓╓╓д╓г╓Б╔я║╪╔ф╔ё╔╥╔Г╔С╔╗╔г╔ё╔©╓г DOS ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨О╫Э╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧). ╓Б╓╕╟Л╓д╓нйЩк║╓х╓╥╓ф, FreeBSD ╓х╟Л╫О╓к╓кгшиш╓╣╓Л╓ф╓╓╓К╔у╔Й║╪╓г╩х╓╗╓К╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓к pfdisk.exe (FreeBSD CD-ROM ╓н tools ╔г╔ё╔Л╔╞╔х╔Й╓Д, б╬╓н╓╣╓ч╓╤╓ч╓й FTP ╔╣╔╓╔х╓к╓╒╓Й╓ч╓╧)╓х╦ф╓п╓Л╓К╓Б╓н╓╛╓╒╓Й, ╔г╔ё╔╧╔╞╬Е╓нб╬╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓╛╩хмя╓╥╓ф╓╓╓К ╔╦╔╙╔А╔х╔Й╓Рд╢╓ы╓К╓н╓клРн╘╓а╓ч╓╧. ╓Ё╓н╔╦╔╙╔А╔х╔Й╬ПйС╓о, ╔я║╪╔ф╔ё╔╥╔Г╔С╔╗╔г╔ё╔©╓кфЧно╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔г╔ё╔╧╔╞╓нй╛ЁД╓н╩ейЩ╓г╡©╓╚ю╘╦б╓о╓╒╓Й╓ч╓╧╓╚? ╓о╓╓. BIOS ╓╛╔╚║╪╔м╔К╓Р╣╞ф╟╓г╓╜╓К╓Х╓╕╓к╔К║╪╔х╔я║╪╔ф╔ё╔╥╔Г╔С╓╛ 1024 ╔╥╔Й╔С╔ю╟йфБ╓к╓╒╓К╓Ё╓х╓РЁнг╖╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧(╓Ё╓Л╓о FreeBSD ╓г╓о╓й╓╞ PC ╓н BIOS ╓ню╘╦б╓г╓╧). SCSI ╔и╔И╔╓╔ж╓г╓о, дл╬О╓о╔К║╪╔х╔я║╪╔ф╔ё╔╥╔Г╔С╓╛╨г╫И╓н 1024MB ╓к╪Щ╓ч╓ц╓ф╓╓╓К╓Ё╓х╓╛а╟дС╓х╓й╓Й╓ч╓╧(╓ч╓©╓оЁхд╔ BIOS ╔х╔И╔С╔╧╔Л║╪╔╥╔Г╔С╓╛м╜╦З╓к╓й╓ц╓ф╓╓╓К╬Л╧Г╓о╨г╫И╓н 4096MB - б╬╓н╪алД╓Р╓╢мВ╓╞╓ю╓╣╓╓). IDE ╓г╓╫╓Л╓каЙеЖ╓╧╓Кцм╓о 504MB ╓х╓й╓Й╓ч╓╧(лУцМ: E-IDE бп╠Ч╓н BIOS еК╨э╔ч╔╥╔С╓н╬Л╧Г╓о IDE ╓н 504MB ╓х╓╓╓╕ю╘╦б╓о╓╒╓Й╓ч╓╩╓С). бГмфнл╔г╔ё╔╧╔╞╓Р╩Щ╓ц╓ф╓╓╓ч╓╧╓╛, ╔г╔ё╔╧╔╞╔ч╔м║╪╔╦╔Ц╓о╩х╓╗╓ч╓╧╓╚? FreeBSD ╓о Ontrack Disk Manager ╓Рг╖╪╠╓╥, ╓Ё╓Л╓Р╧мн╦╓к╓╓╓Л╓ч╓╧. б╬╓н╔г╔ё╔╧╔╞╔ч╔м║╪╔╦╔Ц╓о╔╣╔щ║╪╔х╓╥╓ч╓╩╓С. ╔г╔ё╔╧╔╞а╢бн╓Р FreeBSD ╓г╩х╓╓╓©╓╓╬Л╧Г, ╔г╔ё╔╧╔╞╔ч╔м║╪╔╦╔Ц╓ои╛мв╓╒╓Й╓ч╓╩╓С. BIOS ╓╛╟╥╓╗╓Кмфнл(дл╬О 504MB)╓╓╓ц╓я╓╓╓г╔г╔ё╔╧╔╞╓нюъдЙ╓Р╧т╓й╓╕╓х, FreeBSD ╓о╪б╨щ╓нмфнл╓Р╩╩╫п╓╧╓К╓о╓╨╓г╓╧. MFM ╔Ё╔С╔х╔М║╪╔Ииу╓╜╓н╦е╓╓╔г╔ё╔╧╔╞╓Р╩х╓ц╓ф╓╓╓К╬Л╧Г╓о, FreeBSD ╓к╩хмя╓╧╓К╔╥╔Й╔С╔ю©Т╓Р╬э╨ы╓к╩ьдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. FreeBSD ╓хб╬╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓╛фЧ╓ц╓ф╓╓╓К╔г╔ё╔╧╔╞╓Р╩хмя╓╥╓©╓╓╬Л╧Г╓о, ╔г╔ё╔╧╔╞╔ч╔м║╪╔╦╔Ц╓й╓╥╓г╓Б╓г╓╜╓К╓г╓╥╓Г╓╕. FreeBSD ╓н╣╞ф╟╔я║╪╔ф╔ё╔╥╔Г╔С╓хб╬╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Юмя╓н╔╧╔И╔╓╔╧╓╛, ╨г╫И╓н 1024 ╔╥╔Й╔С╔юфБ╓к╪Щ╓ч╓ц╓ф╓╓╓К╩Ж╓РЁнг╖╓╧╓К╓ю╓╠╓г╓╧. ╣╓╓к╓й╓КйЩ╓о, ╣╞ф╟╔я║╪╔ф╔ё╔╥╔Г╔С╓Р 20 ╔А╔╛╔п╔╓╔х╓╟╓И╓╓╓к╓╥╓фбГ╓╜╓А╓к╓╧╓К╓х╓х╓Х╓╓╓г╓╥╓Г╓╕. FreeBSD ╓н╣╞ф╟╩Ч╓к Missing Operating System ╓хи╫╪╗╓╣╓Л╓ч╓╧ ╓Ё╓Л╓о FreeBSD ╓Д DOS, ╓╫╓н╓ш╓╚╓н OS ╓╛╔г╔ё╔╧╔╞нн╟Х╔╦╔╙╔А╔х╔Й ╓н╓х╓И╓╗йЩ╓г╬вфм╓╥╓╒╓ц╓ф╓╓╓К╓Ё╓х╓╚╓И╣╞╓Ё╓Ке╣╥©е╙╓йнЦ╓г╓╧. ╓Ё╓╕╓й╓ц╓©╓И FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥д╬╓╧╟йЁ╟╓к╓о╓╒╓Й╓ч╓╩╓С╓╛, б╬╓н╓х╓Ё╓М╓гюБлю╓╥╓©╪Й╫Г╓к╓╥╓©╓╛╓ц╓ф╓Д╓Л╓п, ╓ш╓э╢ж╟Ц╓╓╓й╓╞╓╕╓ч╓╞╓╓╓╞╓о╓╨╓г╓╧. ╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓н F? ╔в╔М╔С╔в╔х╓╛и╫╪╗╓╣╓Л╓ч╓╩╓С. ╓Ё╓Л╓о╓╧╓г╓ка╟╓к╪алД╓╣╓Л╓ф╓╓╓КлДбЙ╓н╓Б╓╕╟Л╓д╓н╬и╬У╓г╓╧. BIOS ╓н╔╦╔╙╔А╔х╔Й╓х FreeBSD ╓н╔╦╔╙╔А╔х╔ЙюъдЙ╓╛╟Лцв╓╥╓ф╓╓╓й╓╓╓н╓г╓╧! ╔Ё╔С╔х╔М║╪╔И╓Д BIOS ╓╛╔╥╔Й╔С╔ю╓нйя╢╧(>1GB ╔и╔И╔╓╔ж╓н ╔╣╔щ║╪╔х╓х╓Б╦ф╓п╓Л╓ч╓╧)╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓©╓И, ╓╫╓нюъдЙ╓Рл╣╦З╡╫╓╥╓ф FreeBSD ╓Р╔╓╔С╔╧╔х║╪╔К╓╥д╬╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╔╫║╪╔╧╓Ра╢иТ╔╓╔С╔╧╔х║╪╔К╓╧╓Ки╛мв╓о╓╒╓Й╓ч╓╧╓╚? ╟Лхле╙╓к╓о║ж╓╓╓╓╓╗║в╓г╓╧. ╓╥╓╚╓╥╨гдЦ╓г╓Б, base ╔╫║╪╔╧╔╜╔ц╔х(╓Ё╓Л╓к╓о╓Ё╓н FAQ ╓г╫р╓ы╓И╓Л╓ф╓╓╓К╔у╔║╔╓╔К╓н╓╓╓╞╓д╓╚╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧)╓х, sys (kernel) ╔╫║╪╔╧╔╜╔ц╔х(╓Ё╓Л╓к╓о╔╚║╪╔м╔К╓н╔╫║╪╔╧╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧) ╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╩Ж╓Р╤╞╓╞╓╙╓╧╓╧╓А╓╥╓ч╓╧. дл╬О, ╡©╓╚╓н╪б╧т╓к╔╫║╪╔╧╓╛и╛мв╓к╓й╓К╩Ж╓о╓╒╓Й╓ч╓╩╓С. ╓╥╓╚╓╥, ╔╚║╪╔м╔К╓Р╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╓╧╓К╓©╓А╓н╔в╔М╔╟╔И╔Ю &man.config.8; ╓Р╪б╧т╓╧╓К╩Ч╓онЦЁ╟╓г╓╧. ╔╚║╪╔м╔К╓н╔╫║╪╔╧╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓й╓╞╓ф╓Б╓Х╓╓нЦ╓х╓╥╓ф, ╓и╓Ё╓╚йл╓н╬Л╫Й╓╚╓И╔╚║╪╔м╔К╓н╔╫║╪╔╧╓Рфи╓ъ╧Ч╓ъюЛмя╓г NFS ╔ч╔╕╔С╔х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓©, ╓╫╓Ё╓╚╓И©╥╓╥╓╓╔п╔╓╔й╔Й╓Р╨Ню╝╓г╓╜╓К╓Х╓╕╓к╓Б╓й╓ц╓ф╓╓╓ч╓╧. (╔╚║╪╔м╔К╔╫║╪╔╧╓ню╘╦б╓╛╓╒╓К╓н╓г, д╬юэ /usr/src ╓Р╔ч╔╕╔С╔х╓╧╓К╩Ж╓о╓╙╓╧╓╧╓А╓г╓╜╓ч╓╩╓С. ╓╫╓Л╓Х╓Й╓Б╓и╓Ё╓╚йл╓н╔г╔ё╔Л╔╞╔х╔Й╓к╔ч╔╕╔С╔х╓╥╓ф, ╔╫║╪╔╧╔д╔Й║╪╓нйёю╫╓╛╓г╓╜╓К╓Х╓╕╓ке╛юз╓к╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓Рд╔╓ц╓ф╓╞╓ю╓╣╓╓.) ╔╫║╪╔╧╓Р╔м╔ц╔х╔О║╪╔╞╬Е╓к╩Щ╓а, ╓╫╓Ё╓╚╓И╔╥╔╧╔ф╔Ю╓Р╔с╔К╔и╓╧╓К╓Х╓╕╓к╓╥╓ф╓╙╓╠╓п, FreeBSD ╓н╬╜мХ╓н╔Й╔Й║╪╔╧╓ь╓н╔╒╔ц╔в╔╟╔Л║╪╔и╓╛╓╨╓ц╓х╢йц╠╓к╓й╓Й╓ч╓╧. ╪б╨щ╓к╔╫║╪╔╧╓н╔╣╔ж╔╩╔ц╔х╓Ра╙бР╓╧╓К╓к╓о, ╔╥╔╧╔ф╔Ю╔╓╔С╔╧╔х║╪╔К╔д║╪╔К╓н║жгшиш╔у╔║╔╓╔К║в╔А╔к╔Е║╪╓к╓╒╓К, ║ж╔╚╔╧╔©╔Ю║в╔А╔к╔Е║╪╓Р╩хмя╓╥╓ч╓╧. ╔╚║╪╔м╔К╓ои╛╓╨╨Н╓Йд╬╓╣╓й╓╞╓а╓Ц╓й╓И╓й╓╓╓С╓г╓╧╓╚? ╔╚║╪╔м╔К╓Р©╥╓╥╓╞╨Н╓Йд╬╓╧╓н╓о╦╣║╧, FreeBSD ╓н╔╓╔С╔╧╔х║╪╔К╩Ч╓ки╛©э╓н╨Н╤х╓г╓╥╓©. ╓г╓Б╨г╤А╓н╔Й╔Й║╪╔╧╓г╓о, ╓х╓ф╓Б╔Ф║╪╔╤╔у╔Л╔С╔и╔Й╓й╔╚║╪╔м╔КюъдЙ╔д║╪╔К╓н╡╦╥ц╓Р╪У╓╠╓ф╓╓╓ч╓╧. FreeBSD ╓н╣╞ф╟╔в╔М╔С╔в╔х (boot:) ╓г ╓х╔©╔╓╔в╓╧╓Л╓п╔с╔╦╔Е╔╒╔К╓йюъдЙ╡Хлл╓к╓й╓Й, ╓ш╓х╓С╓и╓н╟Лхле╙╓й ISA ╔╚║╪╔и╓к╓д╓╓╓ф╓н╔╚║╪╔м╔К╓нюъдЙ╓Р╓╧╓К╓Ё╓х╓╛╓г╓╜╓К╓н╓г╓╧. ╨ё╓г╓Б, и╛мв╓й╔г╔п╔╓╔╧╔и╔И╔╓╔п╓ю╓╠╓Рах╓ъ╧Ч╓С╓ю╔╚║╪╔м╔К╓Р╨Н╓К╓Ё╓х╓о╓Х╓╓╩Ж╓х╓╣╓Л╓ф╓╓╓ч╓╧. ╓ш╓С╓н╓а╓Г╓ц╓х╓ю╓╠╔А╔Б╔Й╓РюАлС╓г╓╜╓ч╓╧╓╚╓И╓м. ╓г╓Б╓ш╓х╓С╓и╓н╔╥╔╧╔ф╔Ю╓г╓о, ╓Б╓о╓Д╓и╓╕╓╥╓ф╓Б╓Д╓И╓й╓╞╓а╓Ц╓й╓И╓й╓╓╓Ё╓х╓г╓о╓й╓╓╓н╓г╓╧. DES ╓х MD5, ╓и╓а╓И╓н╔я╔╧╔О║╪╔и╓Р╩х╓╕╓ы╓╜╓й╓н╓г╓╥╓Г╓╕╓╚? ╓ч╓©, ╔Ф║╪╔╤╓╛╓и╓а╓И╓Р╩х╓╕╓Ё╓х╓к╓й╓К╓╚╩ьдЙ╓╧╓КйЩк║╓о╓╒╓Й╓ч╓╧╓╚? FreeBSD ╓ни╦╫Ю╓н╔я╔╧╔О║╪╔и╔у╔╘║╪╔ч╔ц╔х╓о MD5 ╓Р╩х╓ц╓©╓Б╓н╓г╓╧. ╓Ё╓Л╓о DES ╔╒╔К╔╢╔Й╔╨╔Ю╓к╢П╓е╓╓╓©╪Йк║╓Рмя╓╓╓К UNIX ╓неаеЩе╙╓й╔я╔╧╔О║╪╔и╔у╔╘║╪╔ч╔ц╔х╓Х╓Й╟ба╢ (secure) ╓ю╓х ©╝╓╦╓И╓Л╓ф╓╓╓К╓Б╓н╓г╓╧. DES ╔я╔╧╔О║╪╔и╓о ╓╒╓й╓©╓╛ FreeBSD ╓н╔я╔╧╔О║╪╔и╔у╔║╔╓╔К╓Р, ╟ба╢ю╜╓кнТ╓К╔я╔╧╔О║╪╔и╔у╔╘║╪╔ч╔ц╔х╓РмЬмя╓╥╓ф╓╓╓К╦е╓╓ OS ╓х╤╕м╜╓╥╓й╓╠╓Л╓п╓й╓И╓й╓╞╓й╓ц╓©╓х╓╜╓н╓©╓А╓к мЬмя╡дг╫╓к╓й╓ц╓ф╓╓╓ч╓╧ (╓Ё╓Л╓омЬмя╓╧╓К╓©╓А╓к╓о, sysinstall ╓╚╓И crypto гшишй╙╓н╔╓╔С╔╧╔х║╪╔К а╙╓ж╓╚, ╔╫║╪╔╧╓╚╓И build ╓╥╓ф╓╓╓К╓й╓И, crypto ╓н╔╫║╪╔╧╓╛╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓Ки╛мв╓╛╓╒╓Й╓ч╓╧). ©╥╓╥╓╓╔я╔╧╔О║╪╔и╓к╓и╓а╓И╓н╔я╔╧╔О║╪╔и╔у╔╘║╪╔ч╔ц╔х╓Р╩х╓╕╓╚╓о /etc/login.conf ╓нцФ╓н passwd_format ╓х╓╓╓╕ login ╔╠║╪╔я╔с╔Й╔ф╔ё╓гю╘╦Ф╓╣╓Л╓ч╓╧. ╓Ё╓н╔╠║╪╔я╔с╔Й╔ф╔ё╓о des (мЬмя╓г╓╜╓К╓й╓И) ╓╚ md5 ╓н╓и╓а╓И╓╚╓нцм╓Р╪Х╓Й╓ч╓╧. login ╔╠║╪╔я╔с╔Й╔ф╔ё╓н╬э╨ы╓к╓д╓╓╓ф╓о login.conf(5) ╓Р ╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓|╓╒!|. ╔ж║╪╔х╔у╔М╔ц╔т║╪╓г╣╞ф╟╓╧╓К╓х, Probing Devices... ╓н╡Хлл╓г╔о╔С╔╟╔╒╔ц╔в╓╥╓ч╓╧. IDE Zip ╓╚ Jaz ╔и╔И╔╓╔ж╓╛юэбЁ╓╣╓Л╓ф╓╓╓©╓И, ╓╫╓Л╓Р╪Х╓ЙЁ╟╓╥╓ф╓Б╓╕╟Леы╩Н╓╥╓ф╓ъ╓ч╓╥╓Г╓╕. ╔ж║╪╔х╔у╔М╔ц╔т║╪╓о╓Ё╓н╪О╓н╔и╔И╔╓╔ж╓Р╦Мг╖╓╥╓ф╓╥╓ч╓╕╓н╓г╓╧. ╔╥╔╧╔ф╔Ю╓╛╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓©╦Е╓о, ╓╫╓н╔и╔И╔╓╔ж╓Р╨феыюэбЁ╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╕╓ч╓╞╓╓╓╠╓п╓Ё╓нлДбЙ╓о╬╜мХ╓н╔Й╔Й║╪╔╧╓г╡Р╥Х╓╣╓Л╓К╓г╓╥╓Г╓╕. ╔╓╔С╔╧╔х║╪╔К╫╙н╩╦Е╓к╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╧╓К╓х, panic: cant mount root ╓н╔╗╔И║╪╓х╓й╓Й╓ч╓╧. ╓Ё╓н╔╗╔И║╪╓о╔г╔ё╔╧╔╞╔г╔п╔╓╔╧╓к╓д╓╓╓ф, ╣╞ф╟╔ж╔М╔ц╔╞╓х╔╚║╪╔м╔К╓нг╖╪╠╓╛╨╝мП╓╥╓ф╓╓╓К╓©╓А╓к╣╞╓Ё╓Й╓ч╓╧. ╓Ё╓н╔╗╔И║╪╓одл╬О, 2 бФ╓н IDE ╔г╔ё╔╧╔╞╓╛╓╫╓Л╓╬╓Лйл╓н IDE ╔Ё╔С╔х╔М║╪╔И╓н╔ч╔╧╔©║╪╓к╟Л╓д╓╨╓дюэбЁ╓╣╓Л╓ф╓╓╓К╔╥╔╧╔ф╔Ю╓к╓╙╓╓╓ф, FreeBSD ╓╛╔╩╔╚╔С╔ю╔Й IDE ╔Ё╔С╔х╔М║╪╔И╓кюэбЁ╓╣╓Л╓©╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╬Л╧Г╓кх╞ю╦╓╥╓ч╓╧. ╣╞ф╟╔ж╔М╔ц╔╞╓о FreeBSD ╓╛ wd1(2 бФлэ╓н BIOS ╔г╔ё╔╧╔╞)╓к╔╓╔С╔╧╔х║╪╔К ╓╣╓Л╓ф╓╓╓К╓хг╖╪╠╓╧╓К╓н╓кбп╓╥, ╔╚║╪╔м╔К╓о╔╩╔╚╔С╔ю╔Й IDE ╓н 1 бФлэ╓н╔о║╪╔и╔г╔ё╔╧╔╞╓г╓╒╓К wd2 ╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╓хг╖╪╠╓╧╓К╓н╓г╓╧. ╔г╔п╔╓╔╧╦║╫п╦Е╓г, ╔╚║╪╔м╔К╓о╣╞ф╟╔ж╔М╔ц╔╞╓╛╣╞ф╟╔г╔ё╔╧╔╞╓ю╓хг╖╪╠╓╥╓©╔г╔ё╔╧╔╞╓г╓╒╓К wd1 ╓Р╔ч╔╕╔С╔х╓╥╓Х╓╕╓х╓╥╓ч╓╧. ╓╥╓╚╓╥, ╪б╨щ╓к╓о╣╞ф╟╔г╔ё╔╧╔╞╓о wd2 ╓й╓н╓г╪╨гт╓╥╓ф╓╥╓ч╓╕╓н╓г╓╧. ╓Ё╓нлДбЙ╓Р╡Р╥Х╓╧╓К╓к╓о, ╟й╡╪╓н╓и╓Л╓╚╟Л╓д╓Р╧т╓ц╓ф╓╞╓ю╓╣╓╓. FreeBSD 3.3 ╟й╧ъ╓РмЬмя╓╥╓ф╓╓╓К╬Л╧Г╓к╓о, ╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╥╓ф, Booting kernel in 10 seconds; hit [Enter] to interrupt ╓╛и╫╪╗╓╣╓Л╓ф╓╓╓К╢ж╓к Enter ╔╜║╪╓Р╡║╓╥╓ч╓╧. ╓╧╓К╓х, ╔ж║╪╔х╔М║╪╔ю╓к╟э╧т╓╥╓ч╓╧. ╓╫╓╕╓╥╓©╓И, set root_disk_unit="disk_number" ╓хфЧно╓╥╓ч╓╧. FreeBSD ╓╛╨г╫И╓н IDE ╔Ё╔С╔х╔М║╪╔И╓н╔ч╔╧╔©║╪╓кюэбЁ╓╣╓Л╓©╔и╔И╔╓╔ж╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓Л╓п, disk_number ╓о 0 ╓г╓╧. ╓ч╓©, ╨г╫И╓н IDE ╔Ё╔С╔х╔М║╪╔И╓н╔╧╔Л║╪╔ж╓й╓И 1, фСхжлэ╓нIDE ╔Ё╔С╔х╔М║╪╔И╓н╔ч╔╧╔©║╪╓й╓И 2, фСхжлэ╓нIDE ╔Ё╔С╔х╔М║╪╔И╓н╔╧╔Л║╪╔ж╓й╓И 3 ╓к╓й╓Й╓ч╓╧. ╓╫╓н╦Е, boot ╓хфЧно╓╥╓ч╓╧. ╔╥╔╧╔ф╔Ю╓о╓╜╓а╓С╓х╨ф╣╞ф╟╓╧╓К╓о╓╨╓г╓╧. ╓Ё╓нйя╧╧╓Р╧╠╣ве╙╓й╓Б╓н╓к╓╧╓К(╓д╓ч╓Й, ╨ф╣╞ф╟╓Дее╦╩╓РфЧ╓Л╓Кеы╓к╓Ё╓наЮ╨Н╓╧╓Ки╛мв╓╛╓й╓╓╓Х╓╕╓к╓╧╓К)╓к╓о, /boot/loader.conf.local ╓к root_disk_unit="disk_number" ╓х╓╓╓╕╧т╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD 3.2 ╟йа╟╓РмЬмя╓╥╓ф╓╓╓К╬Л╧Г╓о, Boot: ╔в╔М╔С╔в╔х╓г 1:wd(2,a)kernel ╓хфЧно╓╥╓ф╔╗╔С╔©║╪╔╜║╪╓Р╡║╓╥╓ч╓╧. ╔╥╔╧╔ф╔Ю╓╛╣╞ф╟╓╥╓©╓И, echo "1:wd(2,a)kernel" > /boot.config ╓х╓╓╓╕╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓Ё╓Л╓Р╔г╔у╔╘╔К╔х╓н╔ж║╪╔хй╦╩ЗнС╓х╓╥╓ч╓╧. FreeBSD ╓н╔г╔ё╔╧╔╞╓Р╔в╔И╔╓╔ч╔Й IDE ╔Ё╔С╔х╔М║╪╔И╓кюэбЁ╓╥╓ф, ╔о║╪╔и╔г╔ё╔╧╔╞╓╛о╒бЁ╓╥╓©╔и╔И╔╓╔жхж╧Ф╓гг╖╪╠╓╣╓Л╓К╓Х╓╕╓к╓╥╓ч╓╧. ╔╚║╪╔м╔К╓н╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓г wd ╓н╧т╓Р╟й╡╪╓н╓Х╓╕╓кйя╧╧╓╥, ╔╚║╪╔м╔К╓н╨ф╧╫цш╓Р╧т╓ц╓ф, ©╥╓╥╓╓╔╚║╪╔м╔К╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ч╓╧. controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # ╓Ё╓н╧т╓Р╔Ё╔А╔С╔х╔╒╔╕╔х controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # wd2 ╓╚╓И wd1 ╓ьйя╧╧ disk wd2 at wdc1 drive 1 # wd3 ╓╚╓И wd2 ╓ьйя╧╧ ╔г╔ё╔╧╔╞╓нюэбЁ╓Рйя╧╧╓╥╓ф╦╣╓нюъдЙ╓клА╓╥╓©╓╓╬Л╧Г╓о, ╔г╔ё╔╧╔╞╓Р ╓╙к╬╓ъ╓нюъдЙ╓ндл╓Й╓нюэбЁ╓клА╓╥╓ф╓╚╓И╨ф╣╞ф╟╓╥╓ч╓╧. ╔╥╔╧╔ф╔Ю╓ою╣╬О╓к╣╞ф╟╓╧╓К╓о╓╨╓г╓╧. ╔А╔Б╔Й╓нбГ╓╜╓╣╓ню╘╦б╓о? г╖╪╠╓г╓╜╓К╔А╔Б╔Й╓н╬Е╦б╓о, 4GB ╓г╓╧. ╓Ё╓н╧╫ю╝╓о╩Н╦Ё╨я╓ъ╓г, ╬э╨ы╓о wcarchive's configuration ╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓Ё╓н╓Х╓╕╓к╓©╓╞╓╣╓С╓н╔А╔Б╔Й╓Р╔ч╔╥╔С╓кфЁфЧ╓╥╓Х╓╕╓х╓╓╓╕╬Л╧Г╓к╓о, цМ╟у╓╛и╛мв╓г╓╧. ECC ╣║г╫╓Р╔╣╔щ║╪╔х╓╥, ╓й╓╙╓╚╓д мфнлю╜иИ╡ы(лУцМ: б©╓╞╓н╔А╔Б╔Йаг╩р╓омфнлю╜иИ╡ы╓х╓╥╓фф╞╓╜╓ч╓╧╓╛, ╔А╔Б╔Й╔п╔╧╬Е╓кмфнлю╜иИ╡ы╓╛аЩ╓╗╓К╓х©╝╧Ф╓неацё╓╛цы╓Л, ╦Мф╟╨Н╓н╦╤╟Ь╓х╓й╓Й╓ч╓╧)╓Р дЦ╦╨╓╣╓╩╓К╓©╓А, 18 ╔а╔ц╔в╧╫ю╝╓н╔А╔Б╔Й╔Б╔╦╔Е║╪╔К╓Х╓Й 9 ╔а╔ц╔в╧╫ю╝╓н╔А╔Б╔Й╔Б╔╦╔Е║╪╔К╓Ра╙бР╓╧╓К╓Ё╓х╓╛, ╓╙╓╫╓И╓╞к╬╓ч╓╥╓╓╓г╓╥╓Г╓╕. ffs ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓нбГ╓╜╓╣╓ню╘╦б╓о? ffs ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓н╬Л╧Г, оюмЩе╙╓й╨гбГ╓н╬Е╦б╓о 8 TB(2G ╔ж╔М╔ц╔╞), ╔г╔у╔╘╔К╔х╓н╔ж╔М╔ц╔╞╔╣╔╓╔╨╓Р 8K ╓х╓╧╓К╓х 16 TB╓х╓й╓Й╓ч╓╧. ╪б╨щлДбЙ╓х╓╥╓ф, 1 TB ╓н╔╫╔у╔х╔╕╔╖╔╒╓н╦бЁ╕╓╛╓╒╓Й╓ч╓╧╓╛, ╫╓ю╣╓╧╓Л╓п 4 TB ╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓╛╡дг╫╓г╓╧(╪б╨щ╓кб╦╨ъ╓╥╓ч╓╧). ╟Л╓д╓н ffs ╓н╔у╔║╔╓╔К╓н╨гбГ╓н╔╣╔╓╔╨╓о, ╔ж╔М╔ц╔╞╔╣╔╓╔╨╓╛ 4K ╓н╬Л╧Г╓г лС 1G ╔ж╔М╔ц╔╞(4 TB)╓г╓╧. ╨гбГ╔у╔║╔╓╔К╔╣╔╓╔╨ fs ╔ж╔М╔ц╔╞╔╣╔╓╔╨ 2.2.7-stable 3.0-current ф╟╨НЁнг╖╨я╓ъ╓н╔╣╔╓╔╨ ф╟╨Н╓╧╓К╓о╓╨╓н╔╣╔╓╔╨ 4K 4T-1 4T-1 4T-1 4+t 8K 32+G 8T-1 32+G 32T-1 16K 128+G 16T-1 128+G 32T-1 32K 512+G 32T-1 512+G 64T-1 64K 2048+G 64T-1 2048+G 128T-1
fs ╔ж╔М╔ц╔╞╔╣╔╓╔╨╓╛ 4K ╓н╬Л╧Г╓о╩╟╫е╢жюэ╔ж╔М╔ц╔╞╓╛╩хмя╓╣╓Л, ╓╓╓е╓Л╓н╬Л╧Г╓г╓Б╩╟╫е╢жюэ╔ж╔М╔ц╔╞╓Р╩хмя╓╥╓фи╫╦╫╓г╓╜╓К╨гбГ╓н fs ╔ж╔М╔ц╔╞хж╧Ф (╓╙╓Х╓╫ 1K^3 + 1K^2 + 1K) ╓кю╘╦б╓╣╓Л╓К╓о╓╨╓й╓н╓г╓╧╓╛, ╪б╨щ╓о fs ╔ж╔М╔ц╔╞хж╧Ф╓н (╢ж╟Ц╓ц╓©) ╬Е╦б 1G-1 ╓гю╘╦б╓╣╓Л╓ч╓╧. fs ╔ж╔М╔ц╔╞хж╧Ф╓ню╘╦б╓о 2G-1 ╓х╓й╓К╓о╓╨╓г╓╧. 2G-1 иу╤А╓к fs ╔ж╔М╔ц╔╞хж╧Ф╓н╔п╔╟╓╛б©╬╞╓╒╓Й╓ч╓╧╓╛, fs ╔ж╔М╔ц╔╞╔╣╔╓╔╨╓╛ 4K ╓н╬Л╧Г╓о, ╓Ё╓Ё╓ч╓г╓н╔ж╔М╔ц╔╞хж╧Ф╓к╓оеЧцё╓╥╓ч╓╩╓С. ╔ж╔М╔ц╔╞╔╣╔╓╔╨╓╛ 8K ╟й╬Е╓н╬Л╧Г, ╓╓╓╨╓Л╓н╬Л╧Г╓Б fs ╔ж╔М╔ц╔╞хж╧Ф╓н╬Е╦б 2G-1 ╓гю╘╦б╓╣╓Л╓К╓о╓╨╓г╓╧╓╛, ╪б╨щ╓о fs ╔ж╔М╔ц╔╞хж╧Ф╓н╬Е╦б 1G-1 ╓гю╘╦б╓╣╓Л╓ч╓╧. нЦЁ╟е╙╓к -STABLE ╓г╓о╩╟╫е╢жюэ╔ж╔М╔ц╔╞╓ч╓г╓оеЧцё╓╥╓й╓╓╓©╓А, ю╘╦б╓офС╫е╢жюэ╔ж╔М╔ц╔╞╓ги╫╦╫╓г╓╜╓К╨гбГ╓н fs ╔ж╔М╔ц╔╞хж╧Ф (╓╙╓Х╓╫ (blocksize/4)^2 + (blocksize/4)) ╓х╓й╓Й╓ч╓╧. -CURRENT ╓г╓о╓Ё╓ню╘╦б╓Рд╤╓╗╓К╓хлДбЙ╓Р╟З╓╜╣╞╓Ё╓╧╓╚╓Б╓╥╓Л╓ч╓╩╓С. ю╣╓╥╓╓ю╘╦бцм╓г╓╒╓К 2G-1 ╔ж╔М╔ц╔╞╓Р╩хмя╓╧╓К╓хлю╓И╓╚╓клДбЙ╓╛╫п╓ч╓╧.
╔у╔М╔ц╔т║╪╓к 1 TB ╓н╔у╔║╔╓╔К╓РЁйг╪╓╧╓К╓к╓о? ╢С╧ф: Bruce Evans, 1998 г╞ 9 ╥Н ╓О╓©╓╥╓н╓х╓Ё╓М╓г╓о, ╔у╔М╔ц╔т║╪╓к╓╓╓╞╓д╓╚╓н╪б╨щ╓н╔у╔║╔╓╔К╓Рйщб╦╓╥╓ф╓╓╓ч╓╧ :-). ╨гбГ╓н╔у╔║╔╓╔К╔╣╔╓╔╨╓о╨гбГ╓н╔г╔ё╔╧╔╞╔╣╔╓╔╨╓х╓о╓╒╓ч╓Й╢ь╥╦╓о╓╒╓Й╓ч╓╩╓С. ╨гбГ╓н╔г╔ё╔╧╔╞╔╣╔╓╔╨╓о 1 TB ╓г╓╧. ╔у╔║╔╓╔К╔╣╔╓╔╨╓╛╔г╔ё╔╧╔╞╔╣╔╓╔╨╓Х╓ЙбГ╓╜╓╞╓й╓Й╓╕╓К╓х╓╓╓╕╓н╓о╩емм╓г╓╧. ╟й╡╪╓ннЦ╓о, 32K ╓н╔г╔ё╔╧╔╞мфнл(3 ╓д╓н╢жюэ╔ж╔М╔ц╔╞╓х 1 ╓д╓н╔г║╪╔©╔ж╔М╔ц╔╞)╓Р╩х╓ц╓ф, ╬╝╓╣╓й╔К║╪╔х╔я║╪╔ф╔ё╔╥╔Г╔С╓к 8T-1 ╓нбГ╓╜╓╣╓н╔у╔║╔╓╔К╓Р╨Ню╝╓╥╓ч╓╧. ╓Ё╓Ё╓г╓н dd ╔Ё╔ч╔С╔и╓обГ╓╜╓й╔у╔║╔╓╔К╓╛╟╥╓╗╓К╓Б╓н╓╛и╛мв╓г╓╧. &prompt.user; cat foo df . dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1 ls -l z du z df . &prompt.user; sh foo Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 64479 27702 31619 47% / 1+0 records in 1+0 records out 1 bytes transferred in 0.000187 secs (5346 bytes/sec) -rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z 32 z Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 64479 27734 31587 47% / ©╥╓╥╓╓╔╚║╪╔м╔К╓Р╔Ё╔С╔я╔╓╔К╓╥╓©╓И, ╣╞ф╟╩Ч╓к archsw.readin.failed ╓х╓╓╓╕╔╗╔И║╪╔А╔ц╔╩║╪╔╦╓╛и╫╪╗╓╣╓Л╓К╓Х╓╕╓к╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╥╓©. ╔М║╪╔ю╓╛╔╧╔©║╪╔х╓╧╓Ка╟╓н | ╓╛и╫╪╗╓╣╓Л╓ф╓╓╓К╓х╓╜╓к╡©╓╚╔╜║╪╓Р╡║╓╧╓Ё╓х╓г, ╣╞ф╟╓н╔╩╔╚╔С╔и╔╧╔ф║╪╔╦╓╚╓Ид╬юэ, ╣╞ф╟╓╧╓К╔╚║╪╔м╔К╓Р╩ьдЙ╓╥╓ф╣╞ф╟╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. фц╓к, ╔╚║╪╔м╔К╓н╔╫║╪╔╧╓Р╧╧©╥╓╥, make world ╓╥╓й╓╓╓г©╥╓╥╓╓╔╚║╪╔м╔К╓ю╓╠╔╓╔С╔╧╔х║╪╔К╓╥╓©╬Л╧Г╓к╓Ё╓н╬и╬У╓╛╦╫╓О╓Л╓ч╓╧. ╓Ё╓╕╓╓╓╕аЮ╨Н╓оф╟╨Н╓╛йщ╬з╓╣╓Л╓ч╓╩╓С. ╓╜╓а╓С╓х make world ╓╥╓ф╓╞╓ю╓╣╓╓. 3.X ╓╚╓И 4.X ╓к╔╒╔ц╔в╔╟╔Л║╪╔и╓╧╓К╓к╓о╓и╓╕╓╥╓©╓Ини╓╓╓н╓г╓╧╓╚? ╔╒╔ц╔в╔╟╔Л║╪╔и╓к╓о, ╔п╔╓╔й╔Й╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓Р╩х╓╕╓Ё╓х╓Р╤╞╓╞╓╙╓╧╓╧╓А╓╥╓ч╓╧. 4-STABLE ╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓о releng4.FreeBSD.org ╓╚╓ИфЧ╪Й╡дг╫╓г╓╧. ╔╫║╪╔╧╓Р╩х╓ц╓ф╔╒╔ц╔в╔╟╔Л║╪╔и╓╧╓К╬Л╧Г╓о, ╬э╨ы╓к╓д╓╓╓ф FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓Р╩╡╬х╓╧╓К╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. ╔╫║╪╔╧╓Р╩х╓ц╓©╔╒╔ц╔в╔╟╔Л║╪╔и╓о, ╢╥╓Л╓ф╓╓╓й╓╓╔Ф║╪╔╤╓к╓о╓ч╓ц╓©╓╞╓╙╓╧╓╧╓А╓г╓╜╓ч╓╩╓С. 3.X -> 4.X ╓н╬Л╧Г╓офц╓к╓╫╓╕╓г╓╧. ╔╫║╪╔╧╓Р╩х╓ц╓©╔╒╔ц╔в╔╟╔Л║╪╔и╓Р╩Н╓╧а╟╓к, ╪Й╫Г╓РцМ╟у©╪╓╞фи╓Ю╓Х╓╕╓к©╢╓╛╓╠╓ф╓╞╓ю╓╣╓╓.
╔о║╪╔и╔╕╔╖╔╒╔Ё╔С╔я╔а╔с╔Й╔ф╔ё лУ: ╓к╓╥╓╚ nishika@cheerful.com, 1997 г╞ 11 ╥Н 12 фЭ. FreeBSD ╓о, ╓и╓С╓й╔о║╪╔и╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓К╓н╓г╓╧╓╚? FreeBSD ╓о, EIDE ╓х SCSI ╔о║╪╔и╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧(╦ъ╢╧╔Ё╔С╔х╔М║╪╔И╓Б╢ч╓ъ╓ч╓╧. ╪║╓нюА╩╡╬х). ╓ч╓©фх╪╚╓н Western Digital ╔╓╔С╔©╔у╔╖║╪╔╧╓Р╩хмя╓╥╓ф╓╓╓К╓╧╓ы╓ф╓н╔и╔И╔╓╔ж(MFM, RLL, ESDI, ╓Б╓а╓М╓С IDE)╓Б╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. фх╪╚╩емм╓н╔╓╔С╔©╔у╔╖║╪╔╧╓Р╩хмя╓╧╓К ESDI ╔Ё╔С╔х╔М║╪╔И╓г╓оф╟╨Н╓╥╓й╓╓╓Б╓н╓╛╓╒╓Й, WD1002/3/6/7 ╓х╓╫╓н╦ъ╢╧╔╓╔С╔©╔у╔╖║╪╔╧╓х╬вфм╓╥╓ч╓╧. ╓и╓н SCSI ╔Ё╔С╔х╔М║╪╔И╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓К╓н╓г╓╧╓╚? FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓к╣╜╓╣╓Л╓ф╓╓╓К╢╟а╢╓й╔Й╔╧╔х╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓и╓С╓й CD-ROM ╔и╔И╔╓╔ж╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓К╓н╓г╓╧╓╚? ╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓К SCSI ╔Ё╔С╔х╔М║╪╔И╓кюэбЁ╓г╓╜╓К SCSI ╔и╔И╔╓╔ж╓о, ╓╧╓ы╓ф╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. ╓ч╓©, ╟й╡╪╓нюЛмя CD-ROM ╔╓╔С╔©╔у╔╖║╪╔╧╓Б╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╔ъ╔д╔ъ LU002(8bit), LU005(16bit) ╓╙╓Х╓с FX001D(16bit 2гэб╝). ╔╫╔к║╪ CDU 31/33A Sound Blaster хС SCSI ╔©╔╓╔в╓н CD-ROM ╬╬╡╪/Panasonic CD-ROM ATAPI ╦ъ╢╧╓н IDE CD-ROM SCSI ╓г╓й╓╓╔╚║╪╔и╓о╓╧╓ы╓ф, SCSI ╔и╔И╔╓╔ж╓Х╓Й╓Б╤к╓А╓фф╟╨Нб╝еы╓╛ цы╓╓╓Ё╓х╓╛цн╓И╓Л╓ф╓╙╓Й, ATAPI CD-ROM ╓к╓оф╟╨Н╓╥╓й╓╓╓Б╓н╓Б╓╒╓К╓Х╓╕╓г╓╧. BSDi ╓н FreeBSD 2.2 CD-ROM ╓╚╓И╓о CD ╓╚╓И╓нд╬юэ╣╞ф╟╓╛ ╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. ZIP ╔и╔И╔╓╔ж╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? ╓Б╓а╓М╓С, FreeBSD ╓о SCSI ZIP ╔и╔И╔╓╔ж(Ё╟иу╓╠)╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ZIP ╔и╔И╔╓╔ж╓о SCSI ID ╓Р 5 ╓╚ 6 ╓кюъдЙ╓╥╓©╬Убж╓г╓й╓И╩хмя╓г╓╜╓ч╓╧╓╛, ╓Б╓╥ SCSI ╔ш╔╧╔х╔╒╔ю╔в╔©╓н BIOS ╓╛╔╣╔щ║╪╔х╓╥╓ф╓╣╓╗╓╓╓Л╓п ZIP ╔и╔И╔╓╔ж╓╚╓И╣╞ф╟╓╣╓╩╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╩Д╓о╓и╓н╔ш╔╧╔х╔╒╔ю╔в╔©╓╛ SCSI ID ╓Р 0 ╓Д 1 ╟йЁ╟╓кюъдЙ╓╥╓©╔г╔п╔╓╔╧╓╚╓И╣╞ф╟╓г╓╜╓К╓н╓╚цн╓Й╓ч╓╩╓С╓╛... ╔и╔╜╔Е╔А╔С╔х╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓(╓╕╓ч╓╞╓╓╓ц╓©╬Л╧Г╓о╤╣╓╗╓ф╓╞╓ю╓╣╓╓). ATAPI(IDE) ZIP ╔и╔И╔╓╔ж╓о, FreeBSD 2.2.6 ╟й╧ъ╓н╔п║╪╔╦╔Г╔С╓г╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. ╔п║╪╔╦╔Г╔С 3.0 ╟й╧ъ╓н FreeBSD ╓г╓о, ╔я╔И╔Л╔К╔щ║╪╔хюэбЁ╓н ZIP ╔и╔И╔╓╔ж╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╨г╤А╓н╔п║╪╔╦╔Г╔С╓н FreeBSD ╓Р╓╙╩х╓╓╓г╓╥╓©╓И, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к scbus0, da0, ppbus0, vp0 ╓нЁф╔и╔И╔╓╔п╓╛╣╜╫р╓╣╓Л╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. (GENERIC ╔╚║╪╔м╔К╓к╓о vp0 ╓Р╫Э╓╞╓╧╓ы╓ф╓н╔и╔И╔╓╔п╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧). ╓Ё╓Л╓И╓╧╓ы╓ф╓н╔и╔И╔╓╔п╓╛╓╒╓Л╓п, ╔я╔И╔Л╔К╔щ║╪╔х╓н╔и╔И╔╓╔ж╓о /dev/da0s4 ╓х╓й╓Й╓ч╓╧. ╔г╔ё╔╧╔╞╓о mount /dev/da0s4 /mnt ╓х╓╧╓К╓╚ mount_msdos /dev/da0s4 /mnt (DOS ╔г╔ё╔╧╔╞╓н╬Л╧Г) ╓х╓╧╓К╓Ё╓х╓г╔ч╔╕╔С╔х╓г╓╜╓ч╓╧. ╓╫╓Л╓╚╓И╔Й╔Ю║╪╔п╔ж╔К╔и╔И╔╓╔ж╓к╢ь╓╧╓КцМ╟у╓╙╓Х╓с, ║ж╔у╔╘║╪╔ч╔ц╔х║в╓к╢ь╓╧╓КцМ╟у╓к╓д╓╓╓ф╓Б Ёнг╖╓╥╓ф╓╙╓╓╓ф╓╞╓ю╓╣╓╓. ╓г╓о, JAZ ╓Д EZ, ╓╫╓Л╓╚╓И╓╫╓нб╬╓н╔Й╔Ю║╪╔п╔ж╔К╔и╔И╔╓╔ж╓о╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? FreeBSD ╓г╓о, IDE ╔п║╪╔╦╔Г╔С╓н EZ ╔и╔И╔╓╔ж╓Р╫Э╓╞╓╧╓ы╓ф╓н SCSI ╔г╔п╔╓╔╧╓о, SCSI ╓н╔г╔ё╔╧╔╞╓хф╠еЫ╓к╟╥╓О╓Л╓ч╓╧. ╓ч╓© IDE EZ ╓о IDE ╔и╔И╔╓╔ж╓хф╠еЫ╓х╓й╓Й╓ч╓╧. ╔╥╔╧╔ф╔Ю╡тф╞цФ╓н╔А╔г╔ё╔╒╦Р╢╧╓к╓д╓╓╓ф FreeBSD ╓╛╓и╓Л╓ш╓и╓╕╓ч╓╞ф╟╓╞╓╚дЙ╓╚╓г╓о╓╒╓Й╓ч╓╩╓С. ╓Б╓а╓М╓С╔А╔г╔ё╔╒╓РфЧ╓Лбь╓╗╓Ка╟╓к╓╫╓н╔и╔И╔╓╔ж╓н╔ч╔╕╔С╔х╓Р╡Р╫Э╓╥╓й╓╠╓Л╓п╓╓╓╠╓й╓╓╓г╓╥╓Г╓╕╓╥, FreeBSD ╓╛╓╫╓Л╓И╓Рг╖╪╠╓╧╓К╓к╓о, ╣╞ф╟╩Ч╓кЁ╟иТ╔Ф╔к╔ц╔х╓к╓Бее╦╩╓╛еЙфЧ╓╣╓Л╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓й╓╠╓Л╓п╓╓╓╠╓й╓╓╓г╓╥╓Г╓╕. ║ж╔у╔╘║╪╔ч╔ц╔х║в╓к╢ь╓╧╓КцМ╟у╓Б╩╡╬х╓н╓Ё╓х. ╓и╓н╔ч╔К╔а╔щ║╪╔х╔╥╔Й╔╒╔К╔╚║╪╔и╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? ╟ЛмВ╓о ╓╫╓нб╬╓н╔г╔п╔╓╔╧╓нюА╓к╓╒╓Й╓ч╓╧. л╣л╬╓н╔╚║╪╔и╓к╓Б╓╕╓ч╓╞ф╟╓╞╓Б╓н╓╛╓╒╓Й, фц╓к AST ╦ъ╢╧╓х╓╓╓О╓Л╓ф╓╓╓К╓Б╓н╓кб©╓╞╦╚╓И╓Л╓ч╓╧. ╔╚║╪╔июъдЙ╓н╬э╨ы╓й╬ПйС╓о, &man.sio.4; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. USB ╔╜║╪╔э║╪╔и╓Р╩Щ╓ц╓ф╓╓╓К╓н╓г╓╧╓╛, FreeBSD ╓г╩х╓╗╓ч╓╧╓╚? USB ╔г╔п╔╓╔╧╓о FreeBSD 3.1 ╓╚╓И╔╣╔щ║╪╔х╓╣╓Л╓ч╓╥╓©╓╛, ╪баУ╓о FreeBSD 3.2 ╓г╓╒╓ц╓ф╓Б╓ч╓ю╢╟а╢╓г╓о╓й╓╓╓©╓А, и╛╓╨╓╥╓Б╟бдЙ╓╥╓фф╟╨Н╓╧╓К╓х╓о╦б╓Й╓ч╓╩╓С. ╓Б╓╥, ╓╫╓Л╓г╓Б USB ╔╜║╪╔э║╪╔и╓Р╩х╓ц╓ф╓ъ╓©╓╓╓х╓╓╓╕©м╓о, ╟й╡╪╓н╪Й╫Г╓Р╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. FreeBSD 3.2 ╓╚, ╓╫╓Л╟й╧ъ╓Р╩х╓╓╓ч╓╧. ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к╟й╡╪╓н╧т╓Рди╡ц╓╥, ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ч╓╧. device uhci device ohci device usb device ukbd options KBD_INSTALL_CDEV FreeBSD 4.0 ╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓г╓о, бЕ╓О╓Й╓к╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. controller uhci0 controller ohci0 controller usb0 controller ukbd0 options KBD_INSTALL_CDEV /dev ╔г╔ё╔Л╔╞╔х╔Й╓к╟эф╟╓╥, ╪║╓н╓Х╓╕╓к╓╥╓ф╔г╔п╔╓╔╧╔н║╪╔и╓Р╨Ню╝╓╥╓ч╓╧. &prompt.root; cd /dev &prompt.root; ./MAKEDEV kbd0 kbd1 /etc/rc.conf ╓Рйт╫╦╓╥, ╟й╡╪╓н╧т╓Рди╡ц╓╥╓ч╓╧. usbd_enable="YES" usbd_flags="" ╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╣╓╩╓©╦Е, AT, USB н╬йЩ╓н╔╜║╪╔э║╪╔и╓╛юэбЁ╓╣╓Л╓ф╓╓╓Л╓п, AT ╔╜║╪╔э║╪╔и╓о /dev/kbd0 ╓к, USB ╔╜║╪╔э║╪╔и╓о /dev/kbd1╓к╓й╓Й╓ч╓╧. ╟ЛйЩ, USB ╔╜║╪╔э║╪╔и╓ю╓╠╓╛юэбЁ╓╣╓Л╓ф╓╓╓К╓й╓И, /dev/ukbd0 ╓х╓й╓Й╓ч╓╧. USB ╔╜║╪╔э║╪╔и╓Р╔Ё╔С╔╫║╪╔К╓гмЬмя╓╧╓К╓к╓о, ╓╫╓Л╓Р╔Ё╔С╔╫║╪╔К╔и╔И╔╓╔п╓кбп╓╥╓флю╪╗е╙╓к╩ьдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔╥╔╧╔ф╔Ю╓н╫И╢Э╡╫╓н╨щ╓к, ╪║╓к╪╗╓╧╓Х╓╕╓й╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null ╓©╓ю╓╥, USB ╔╜║╪╔э║╪╔и╓╥╓╚юэбЁ╓╣╓Л╓ф╓╓╓й╓╓╬Л╧Г, ╓╫╓Л╓о /dev/kbd0 ╓х╓╥╓ф╔╒╔╞╔╩╔╧╓╣╓Л╓ч╓╧╓н╓г, ╔Ё╔ч╔С╔и╓о╪║╓н╓Х╓╕╓к╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓╢цМ╟у╓╞╓ю╓╣╓╓. &prompt.root; kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null ╬Е╓н╔Ё╔ч╔С╔и╓о, /etc/rc.i386 ╓кди╡ц╓╧╓К╓хни╓╓╓г╓╥╓Г╓╕. ╓Ё╓нюъдЙ╓Р╟Леы╧т╓й╓ц╓ф╓╓╓Л╓п, X ╢д╤╜╓г╓Бфц╓кб╬╓нюъдЙ╓й╓╥╓к USB ╔╜║╪╔э║╪╔и╓╛мЬмя╓г╓╜╓ч╓╧. USB ╔╜║╪╔э║╪╔и╓нЁХюЧачх╢(╔ш╔ц╔х╔в╔И╔╟╣║г╫)╓о, ╓ч╓ю╓╙╓╫╓И╓╞╓╜╓а╓С╓хф╟╨Н╓╥╓й╓╓╓х╩в╓О╓Л╓ч╓╧. ╔х╔И╔ж╔К╓РхР╓╠╓К╓©╓А╓к╓Б, ╔╜║╪╔э║╪╔и╓о╔╥╔╧╔ф╔Ю╓Р╣╞ф╟╓╣╓╩╓Ка╟╓кюэбЁ╓╥╓ф╓╙╓╜, ╔╥╔Ц╔ц╔х╔ю╔╕╔С╓╧╓К╓ч╓г╓о╓╨╓╣╓й╓╓╓Х╓╕╓к╓╥╓©йЩ╓╛ни╓╓╓г╓╥╓Г╓╕. ╬э╨ы╓к╓д╓╓╓ф╓о, &man.ukbd.4; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. да╓╥╓╓╔п╔╧╔ч╔╕╔╧╓Р╩Щ╓ц╓ф╓╓╓К╓н╓г╓╧╓╛, ╓и╓н╓Х╓╕╓кюъдЙ╓╧╓Л╓п╓╓╓╓╓н╓г╓╧╓╚? FreeBSD ╓о Microsoft, Logitech, ATI еЫ╓н╔А║╪╔╚║╪╓╚╓И╫п╓ф╓╓╓К╔п╔╧╔ч╔╕╔╧╓х InPort ╔п╔╧╔ч╔╕╔╧╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. FreeBSD 2.X ╓н╬Л╧Г, ╔п╔╧╔ч╔╕╔╧╓н╔г╔п╔╓╔╧╔и╔И╔╓╔п╓о GENERIC ╔╚║╪╔м╔К╓ки╦╫Ю╓г╢ч╓ч╓Л╓ч╓╧╓╛, FreeBSD 3.X ╟й╧ъ╓г╓ои╦╫Ю╓г╢ч╓ч╓Л╓ф╓╓╓ч╓╩╓С. ╓Б╓╥╔п╔╧╔ч╔╕╔╧╓н╔г╔п╔╓╔╧ ╔и╔И╔╓╔п╓Р╢ч╓Ю╔╚║╪╔м╔К╓Р╪╚й╛╓г╧╫цш╓╧╓К╬Л╧Г╓к╓о, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к╟й╡╪╓н╧т╓╛╢ч╓ч╓Л╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓Л╓о FreeBSD 3.0 ╓Р╢ч╓Ю, ╓╫╓Л╟йа╟╓н╔Й╔Й║╪╔╧╓н╬Л╧Г╓о╪║╓н╓х╓╙╓Й, device mse0 at isa? port 0x23c tty irq5 vector mseintr FreeBSD 3.X ╓г╓о, ╪║╓н╓х╓╙╓Й╓г╓╧. device mse0 at isa? port 0x23c tty irq5 ╓╫╓╥╓ф FreeBSD 4.X ╓х╓╫╓Л╟й╧ъ╓г╓о, ╪║╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. device mse0 at isa? port 0x23c irq5 дл╬О╔п╔╧╔ч╔╕╔╧╓к╓оюЛмя╓н╔╓╔С╔©╔у╔╖║╪╔╧╔╚║╪╔и╓╛иМб╟╓╥╓ф╓╓╓ч╓╧. ╔╓╔С╔©╔у╔╖║╪╔╧╔╚║╪╔и╓к╓Х╓ц╓ф╓о╔щ║╪╔х╔╒╔и╔Л╔╧╓ДЁД╓Й╧Ч╓ъхж╧Ф╓Р╬Е╣╜╓н юъдЙ╟йЁ╟╓кйя╧╧╓г╓╜╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╬э╓╥╓╞╓о╔п╔╧╔ч╔╕╔╧╓н╔ч╔к╔Е╔╒╔К╓х &man.mse.4; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. PS/2 ╔ч╔╕╔╧(║ж╔ч╔╕╔╧╔щ║╪╔х╔ч╔╕╔╧║в, ║ж╔╜║╪╔э║╪╔и╔ч╔╕╔╧║в)╓Р ╩х╓╕╓к╓о╓и╓н╓Х╓╕╓кюъдЙ╓╧╓Л╓п╓╓╓╓╓н╓г╓╧╓╚? ╓╒╓й╓©╓╛ 2.2.5 ╟й╧ъ╓н╔п║╪╔╦╔Г╔С FreeBSD ╓Р╩х╓ц╓ф╓╓╓К╓н╓й╓И, и╛мв╓й╔и╔И╔╓╔п psm ╓о╔╚║╪╔м╔К╓к╢ч╓ч╓Л╓ф╓╓╓фм╜╦З╓к╓й╓ц╓ф╓╓╓ч╓╧. ╔╚║╪╔м╔К╓о╣╞ф╟╩Ч╓к PS/2 ╔ч╔╕╔╧╓Р╦║╫п╓╧╓К╓г╓╥╓Г╓╕. ╓╒╓й╓©╓н╩х╓ц╓ф╓╓╓К FreeBSD ╓╛хФЁсе╙©╥╓╥╓╓╓╠╓Л╓иа╟╓н╔п║╪╔╦╔Г╔С(2.1.x ╟й╧ъ)╓н╓Б╓н╓й╓И, ╔╓╔С╔╧╔х║╪╔К╓н╩Ч╓к, ц╠╓к╔╚║╪╔м╔К╓н╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╓н╔А╔к╔Е║╪╬Е╓г PS/2 ╔ч╔╕╔╧╓Рм╜╦З╡╫╓╧╓К╓ю╓╠╓г╓╧, ╓╒╓К╓╓╓о╦Е╓г boot: ╔в╔М╔С╔в╔х╬Е╓г ╓Р╩ьдЙ╓╧╓К╓Ё╓х╓г╓Б╔А╔к╔Е║╪╓о╦╫╓Л╓ч╓╧. ╔г╔у╔╘╔К╔х╓г╓ол╣╦З╓кюъдЙ╓╣╓Л╓ф╓╓╓ч╓╧╓н╓г, лю╪╗е╙╓км╜╦З╡╫╓╥╓ф╓╒╓╡╓й╓╓╓х╓╓╓╠╓ч╓╩╓С. ╓╒╓й╓©╓н╩х╓ц╓ф╓╓╓К FreeBSD ╓╛хФЁсе╙╦е╓╓╓Б╓н╓й╓И, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к╟й╡╪╓н╧т╓Р╡ц╓╗╓ф ╔╚║╪╔м╔К╓Р╨ф╔Ё╔С╔я╔╓╔К╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓╫╓Л╓о FreeBSD 3.0 ╓Р╢ч╓Ю, ╓╫╓Л╟йа╟╓н╔Й╔Й║╪╔╧╓г╓о╪║╓н╓х╓╙╓Й, device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr FreeBSD 3.1 ╓Р╢ч╓Ю, ╓╫╓Л╟й╧ъ╓н╔Й╔Й║╪╔╧╓г╓о╪║╓н╓х╓╙╓Й, device psm0 at isa? tty irq 12 FreeBSD 4.0 ╓х╓╫╓Л╟й╧ъ╓н╔Й╔Й║╪╔╧╓г╓о╪║╓н╓х╓╙╓Й╓г╓╧. device psm0 at atkbdc? irq 12 ╔╚║╪╔м╔К╓н╨ф╧╫цш╓к╓д╓╓╓ф╓Х╓╞цн╓И╓й╓╓╓н╓г╓╒╓Л╓п, ╔╚║╪╔м╔К╓н╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╣╞ф╟╩Ч╓к╔╚║╪╔м╔К╓╛ psm0 ╓Р╦║╫п╓╥╓©╓И, psm0 ╓н╔╗╔С╔х╔Й╓╛ /dev ╓нцФ╓к╓╒╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓Л╓к╓о, ╟й╡╪╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; cd /dev; sh MAKEDEV psm0 ╓Ё╓Л╓о root ╓г╔М╔╟╔╓╔С╓╥╓ф╓╓╓К╓х╓╜╓к╧т╓й╓ц╓ф╓╞╓ю╓╣╓╓. X Window System ╟йЁ╟╓н╢д╤╜╓г╔ч╔╕╔╧╓Р╩х╓╕╓Ё╓х╓о╡дг╫╓г╓╧╓╚? ╓Б╓╥╔г╔у╔╘╔К╔х╓н╔Ё╔С╔╫║╪╔К╔и╔И╔╓╔п╓г╓╒╓К syscons ╓Р╩х╓ц╓ф╓╓╓К╓н╓г╓╒╓Л╓п, ╔ф╔╜╔╧╔х╔Ё╔С╔╫║╪╔К╬Е╓г╔ч╔╕╔╧╓Р╩х╓ц╓ф, ╔ф╔╜╔╧╔х╓н╔╚╔ц╔х╔╒╔С╔и╔з║╪╔╧╔х╓╛╓г╓╜╓ч╓╧. ╔ч╔╕╔╧╔г║╪╔Б╔С╓г╓╒╓К moused ╓Р╣╞ф╟╓╥, ╡╬аш╔Ё╔С╔╫║╪╔К╓г╔ч╔╕╔╧╔щ╔╓╔С╔©╓Рм╜╦З╓к╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; moused -p /dev/xxxx -t yyyy &prompt.root; vidcontrol -m on ╓Ё╓Ё╓г xxxx ╓о╔ч╔╕╔╧╓н╔г╔п╔╓╔╧л╬, yyyy ╓о╔ч╔╕╔╧╓н╔в╔М╔х╔Ё╔К╔©╔╓╔в╓г╓╧. ╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓К╔в╔М╔х╔Ё╔К╔©╔╓╔в╓к╓д╓╓╓ф╓о &man.moused.8; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╔╥╔╧╔ф╔Ю╓Р╣╞ф╟╓╧╓К╩Ч╓к╪╚ф╟е╙╓к moused ╓Р╣╞ф╟╓╥╓©╓╓╬Л╧Г╓к╓о, ╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. FreeBSD 2.2.1 ╓г╓о╟й╡╪╓нйя©Т╓Р /etc/sysconfig ╓гюъдЙ╓╥╓ф╓╞╓ю╓╣╓╓. mousedtype="yyyy" mousedport="xxxx" mousedflags="" FreeBSD 2.2.2 ╟й╧ъ╓н╔п║╪╔╦╔Г╔С╓г╓о /etc/rc.conf ╓г╟й╡╪╓н╓Х╓╕╓кюъдЙ╓╥╓ч╓╧. moused_type="yyyy" moused_port="xxxx" moused_flags="" FreeBSD 3.1 ╓х╓╫╓Л╟й╧ъ╓г PS/2 ╔ч╔╕╔╧╓РмЬмя╓╧╓К╬Л╧Г╓о, moused_enable="YES" ╓Р /etc/rc.conf ╓к╫Я╓╜╡ц╓╗╓К╓ю╓╠╓г╓╧. ╓ч╓©, ╣╞ф╟╩Ч╓к╓╧╓ы╓ф╓н╡╬ашц╪кЖ╓г, и╦╫Ю╓н╔Ё╔С╔╫║╪╔К╓к╡ц╓╗╔ч╔╕╔╧╔г║╪╔Б╔С╓Б╩х╓╗╓К╓Х╓╕╓к╓╥╓©╓╓, ╓х╓╓╓╕╬Л╧Г╓к╓о, ╟й╡╪╓н╧т╓Р /etc/rc.conf ╓к╡ц╓╗╓ч╓╧. allscreens_flags="-m on" FreeBSD 2.2.6 ╟й╧ъ╓н╬Л╧Г╓г хФЁсе╙©╥╓╥╓╓╔╥╔Й╔╒╔К╔ч╔╕╔╧╓Р╩х╓ц╓ф╓╓╓К╓й╓И╓п, ╔ч╔╕╔╧╔г║╪╔Б╔С╓о╔ч╔╕╔╧╓н╔в╔М╔х╔Ё╔К╔©╔╓╔в╓Р╪╚ф╟х╫йл╓г╓╜╓ч╓╧. ╪╚ф╟х╫йл╓Р╩Н╓ъ╓К╓к╓о, ╔в╔М╔х╔Ё╔К╔©╔╓╔в╓х╓╥╓ф auto ╓Р╩ьдЙ╓╥╓ч╓╧. ╔ч╔╕╔╧╔г║╪╔Б╔С╓Р╪б╧тцФ╓о, ╔ч╔╕╔╧╔г║╪╔Б╔С╓хб╬╓н╔в╔М╔╟╔И╔Ю(нЦ╓╗╓п X Window System)╓н╢ж╓г╔ч╔╕╔╧╓ь╓н╔╒╔╞╔╩╔╧╓Рд╢ю╟╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓Ё╓нлДбЙ╓к╓д╓╓╓ф╓о X ╓х╔ч╔╕╔╧╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╔ч╔╕╔╧╓Р╩х╓ц╓ф, ╔ф╔╜╔╧╔х╔Ё╔С╔╫║╪╔К╓г╔╚╔ц╔х╔╒╔С╔и╔з║╪╔╧╔х╓╧╓К╓к╓о╓и╓╕╓╥╓©╓И╓Х╓╓╓н╓г╓╧╓╚? ╔ч╔╕╔╧╔г║╪╔Б╔С╓Р╣╞ф╟ (а╟╓н╪алД╓кбп╓╧╓КеЗ╓╗╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓) ╓╥╓©╓╒╓х, ╔э╔©╔С 1(╨╦╔э╔©╔С)╓Р╡║╓╥╓й╓╛╓И╔ч╔╕╔╧╓Рф╟╓╚╓╥╓фхо╟о╓Р╩ьдЙ╓╥╓ч╓╧. ╔э╔©╔С 2(цФ╔э╔©╔С)╓ч╓©╓о╔э╔©╔С 3(╠╕╔э╔©╔С)╓Р╔╞╔Й╔ц╔╞╓╧╓К╓х╔ф╔╜╔╧╔х ╔╚║╪╔╫╔К╓н╟лцж╓ка╙бР╓╥╓©хо╟о╓н╔ф╔╜╔╧╔х╓╛╔з║╪╔╧╔х╓╣╓Л╓ч╓╧. FreeBSD 2.2.6 ╟й╧ъ╓г╓о, ╔э╔©╔С 2 ╓Р╔╞╔Й╔ц╔╞╓╧╓К╓х╔з║╪╔╧╔х╓╣╓Л, ╔э╔©╔С 3 ╓Р╔╞╔Й╔ц╔╞╓╥╓©╬Л╧Г╓к╢Шб╦╓на╙бРхо╟о╓╛╦╫╨ъ╓н╔ч╔╕╔╧╔щ╔╓╔С╔©╓н╟лцж╓ч╓г ║ж╠Дд╧╓ч╓©╓оц╩╫л║в╓╣╓Л╓ч╓╧. ╓Б╓╥╔ч╔╕╔╧╓кцФ╔э╔©╔С╓╛╓й╓╓╓й╓И, moused ╓н╔╙╔в╔╥╔Г╔С╓Р╩х╓ц╓фцФ╔э╔©╔С╓н╔╗╔ъ╔Е╔Л║╪╔╥╔Г╔С╓Р╓╧╓К╓╚, б╬╓н╔э╔©╔С╓РцФ╔э╔©╔С╓х╓╥╓ф╩х╓╕╩Ж╓╛╓г╓╜╓ч╓╧. ╬э╓╥╓╞╓о &man.moused.8; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. USB ╔ч╔╕╔╧╓Р╩Щ╓ц╓ф╓╓╓К╓н╓г╓╧╓╛, FreeBSD ╓г╩х╓╗╓ч╓╧╓╚? USB ╔г╔п╔╓╔╧╓о FreeBSD 3.1 ╓╚╓И╔╣╔щ║╪╔х╓╣╓Л╓ч╓╥╓©╓╛, ╪баУ╓о FreeBSD 3.2 ╓г╓╒╓ц╓ф╓Б╓ч╓ю╢╟а╢╓г╓о╓й╓╓╓©╓А, и╛╓╨╓╥╓Б╟бдЙ╓╥╓фф╟╨Н╓╧╓К╓х╓о╦б╓Й╓ч╓╩╓С. ╓Б╓╥, ╓╫╓Л╓г╓Б USB ╔ч╔╕╔╧╓Р╩х╓ц╓ф╓ъ╓©╓╓╓х╓╓╓╕©м╓о, ╟й╡╪╓н╪Й╫Г╓Р╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. FreeBSD 3.2 ╓╚, ╓╫╓Л╟й╧ъ╓Р╩х╓╓╓ч╓╧. ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к╟й╡╪╓н╧т╓Рди╡ц╓╥, ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ч╓╧. device uhci device ohci device usb device ums FreeBSD 4.0 ╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓г╓о, бЕ╓О╓Й╓к╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. controller uhci0 controller ohci0 controller usb0 device ums0 /dev ╔г╔ё╔Л╔╞╔х╔Й╓к╟эф╟╓╥, ╪║╓н╓Х╓╕╓к╓╥╓ф╔г╔п╔╓╔╧╔н║╪╔и╓Р╨Ню╝╓╥╓ч╓╧. &prompt.root; cd /dev &prompt.root; ./MAKEDEV ums0 /etc/rc.conf ╓Рйт╫╦╓╥, ╟й╡╪╓н╧т╓Рди╡ц╓╥╓ч╓╧. moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags="" usbd_enable="YES" usbd_flags="" moused ╓нюъдЙ╓н╬э╨ы╓к╓д╓╓╓ф╓о, а╟╧Ю╓Б╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. X ╓н╔╩╔ц╔╥╔Г╔С╓г USB ╔ч╔╕╔╧╓Р╩х╓╕╓к╓о, XF86Config ╓Рйт╫╦╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. XFree86 3.3.2, ╓Б╓╥╓╞╓о╓╫╓Л╟й╧ъ╓РмЬмя╓╥╓ф╓╓╓К╬Л╧Г╓о, Pointer ╔╩╔╞╔╥╔Г╔С╓╛╪║╓н╓Х╓╕╓к╓й╓ц╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. Device "/dev/sysmouse" Protocol "Auto" ╓╫╓Л╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓н XFree86 ╓РмЬмя╓╥╓ф╓╓╓К╬Л╧Г╓о, Pointer ╔╩╔╞╔╥╔Г╔С╓╛╪║╓н╓Х╓╕╓к╓й╓ц╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. Device "/dev/sysmouse" Protocol "SysMouse" X ╢д╤╜╓г╓н╔ч╔╕╔╧╓нмЬмя╓к╓д╓╓╓ф╓о, б╬╓н╧Ю╓Б╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. USB ╔ч╔╕╔╧╓нЁХюЧачх╢(╔ш╔ц╔х╔в╔И╔╟╣║г╫)╓о, ╓ч╓ю╓╙╓╫╓И╓╞╓╜╓а╓С╓хф╟╨Н╓╥╓й╓╓╓х╩в╓О╓Л╓ч╓╧. ╔х╔И╔ж╔К╓РхР╓╠╓К╓©╓А╓к╓Б, ╔ч╔╕╔╧╓о╔╥╔╧╔ф╔Ю╓Р╣╞ф╟╓╣╓╩╓Ка╟╓кюэбЁ╓╥╓ф╓╙╓╜, ╔╥╔Ц╔ц╔х╔ю╔╕╔С╓╧╓К╓ч╓г╓о╓╨╓╣╓й╓╓╓Х╓╕╓к╓╥╓©йЩ╓╛ни╓╓╓г╓╥╓Г╓╕. ╓О╓©╓╥╓н╔ч╔╕╔╧╓к╓о╔ш╔╓║╪╔К╣║г╫╓ДйьмЬ╓й╔э╔©╔С╓╛╓д╓╓╓ф╓╓╓К╓н╓г╓╧╓╛, ╓Ё╓Л╓о FreeBSD ╓г╓Б╩х╓╗╓К╓н╓г╓╧╓╚? еЗ╓╗╓о╩дг╟╓й╓╛╓И║ж╬Л╧Г╓к╓Х╓Й╓ч╓╧║в╓г╓╧. ╓Ё╓╕╓╥╓©╔ч╔╕╔╧╓ниу╡це╙╓й╣║г╫╓обГдЯ╓н╬Л╧Г, фц╪Л╓й╔и╔И╔╓╔п╓Ри╛мв╓х╓╥╓ч╓╧. ╔ч╔╕╔╧╓н╔г╔п╔╓╔╧╔и╔И╔╓╔п╓Д╔Ф║╪╔╤╓н╔в╔М╔╟╔И╔Ю╓╛ ╓╫╓н╔ч╔╕╔╧╓кбп╓╧╓К╦гм╜╓н╔╣╔щ║╪╔х╓Р╓╥╓ф╓╓╓й╓╓╬Л╧Г╓к╓о, и╦╫Юе╙╓й 2 ╔э╔©╔С/3 ╔э╔©╔С╔ч╔╕╔╧╓н╓Х╓╕╓к©╤иЯ╓╓╓ч╓╧. X ╔╕╔ё╔С╔и╔╕╔╥╔╧╔ф╔Ю╓н╢д╤╜╓г╓н╔ш╔╓║╪╔К╓н╩х╓╓йЩ╓к╓д╓╓╓ф╓о, X ╓х╔ш╔╓║╪╔К╓н╧Ю╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓О╓©╓╥╓н╔ч╔╕╔╧╓о╓╜╓а╓С╓хф╟╓╓╓ф╓╞╓Л╓й╓╓╓Х╓╕╓г╓╧. ╔ч╔╕╔╧╔╚║╪╔╫╔К╓╛╡ХллцФ╓Р╓х╓с╓ч╓О╓Й╓ч╓╧. ╓Ё╓н╔ч╔╕╔╧╓к╓о╔ш╔╓║╪╔К╓╛╓д╓╓╓ф╓╓╓ф, юэбЁ╓о PS/2 ╔щ║╪╔х╓г╓╧. FreeBSD 3.2 ╓╙╓Х╓с╓╫╓Л╟йа╟╓н PS/2 ╔ч╔╕╔╧╔и╔И╔╓╔п psm ╓к╓о, Logitech ╔Б╔г╔К M-S48 ╓х╓╫╓н OEM ╓н╔ш╔╓║╪╔К╔ч╔╕╔╧╓гит╤Я╧Г╓╛х╞ю╦╓╥╓ч╓╧. ╟й╡╪╓н╔я╔ц╔а╓Р /sys/i386/isa/psm.c ╓ке╛мя╓╥╓ф, ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ф╓╞╓ю╓╣╓╓. Index: psm.c =================================================================== RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v retrieving revision 1.60.2.1 retrieving revision 1.60.2.2 diff -u -r1.60.2.1 -r1.60.2.2 --- psm.c 1999/06/03 12:41:13 1.60.2.1 +++ psm.c 1999/07/12 13:40:52 1.60.2.2 @@ -959,14 +959,28 @@ sc->mode.packetsize = vendortype[i].packetsize; /* set mouse parameters */ +#if 0 + /* + * A version of Logitech FirstMouse+ won't report wheel movement, + * if SET_DEFAULTS is sent... Don't use this command. + * This fix was found by Takashi Nishida. + */ i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS); if (verbose >= 2) printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i); +#endif if (sc->config & PSM_CONFIG_RESOLUTION) { sc->mode.resolution = set_mouse_resolution(sc->kbdc, - (sc->config & PSM_CONFIG_RESOLUTION) - 1); + (sc->config & PSM_CONFIG_RESOLUTION) - 1); + } else if (sc->mode.resolution >= 0) { + sc->mode.resolution + = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution); + } + if (sc->mode.rate > 0) { + sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate); } + set_mouse_scaling(sc->kbdc, 1); /* request a data packet and extract sync. bits */ if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) { FreeBSD 3.2 ╓Х╓Й©╥╓╥╓╓╔Й╔Й║╪╔╧╓г╓о╓╜╓а╓С╓хф╟╨Н╓╧╓К╓о╓╨╓г╓╧. ╔И╔ц╔в╔х╔ц╔в PC ╓н╔ч╔╕╔╧/╔х╔И╔ц╔╞╔э║╪╔К/╔©╔ц╔а╔я╔ц╔и╓о╩х╓╗╓ч╓╧╓╚? а╟╓н╪алД╓кбп╓╧╓КеЗ╓╗╓х, ╔Б╔п╔╓╔К╔Ё╔С╔т╔Е║╪╔ф╔ё╔С╔╟╓н╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓и╓С╓й╔ф║╪╔в╔и╔И╔╓╔ж╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? FreeBSD ╓о SCSI ╓х QIC-36 (QIC-02 ╔╓╔С╔©╔у╔╖║╪╔╧иу╓╜) ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓И╓к╓о 8-mm (Exabyte ╓х╦ф╓п╓Л╓ф╓╓╓ч╓╧) ╓Д DAT ╔и╔И╔╓╔ж╓Б╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╫И╢Э╓н 8-mm ╔и╔И╔╓╔ж╓нцФ╓к╓о SCSI-2 ╓х╓ч╓ц╓©╓╞╦ъ╢╧ю╜╓Р╩Щ╓©╓й╓╓╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓И╓о FreeBSD ╬Е╓г╓оф╟╨Н╓╥╓ч╓╩╓С. ╓и╓С╓й╔ф║╪╔в╔а╔╖╔С╔╦╔Ц║╪╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? FreeBSD 2.2 ╓о ch(4) ╔г╔п╔╓╔╧╓х chio(1) ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓© SCSI ╔а╔╖╔С╔╦╔Ц║╪╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╪б╨щ╓н╔а╔╖╔С╔╦╔Ц║╪╓ню╘╦ФйЩк║╓н╬э╨ы╓о, chio(1) ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╩хмя╓╥╓ф╓╓╓Кю╫ий╓╛ AMANDA ╓н╓Х╓╕╓к╔а╔╖╔С╔╦╔Ц║╪╓кбп╠Ч╨я╓ъ╓н╓Б╓н╓г╓й╓╓╬Л╧Г╓о, ╪║╓н╓Ё╓х╓к╓д╓╓╓фн╠╟у╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓Л╓И╓ню╫ий╓ог╓╟у╓н╔щ╔╓╔С╔х╢ж╓н╔ф║╪╔в╓н╟эф╟╓Рю╘╦Ф╓╧╓К╓ю╓╠╓й╓н╓г, ╔ф║╪╔в╓╛╓и╓н╔╧╔М╔ц╔х╓кфЧ╓ц╓ф╓╓╓К╓╚, ╦╫╨ъ╔и╔И╔╓╔ж╓к╓╒╓К╔ф║╪╔в╓╛ ╓и╓н╔╧╔М╔ц╔х╓клА╓К╓ы╓╜╓╚╓Ргд╟╝╓╥╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╓и╓С╓й╔╣╔╕╔С╔и╔╚║╪╔и╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? FreeBSD ╓о SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib ╓╫╓Л╓╚╓И Gravis UltraSound ╔╣╔╕╔С╔и╔╚║╪╔и╓Р ╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. MPU-401 ╓Д╓╫╓н╦ъ╢╧╔╚║╪╔и╓Б╣║г╫╓кю╘╦б╓о╓╒╓К╓Б╓н╓н ╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. ╔ч╔╓╔╞╔М╔╫╔у╔х╔╣╔╕╔С╔и╔╥╔╧╔ф╔Ю╓н╔╧╔з╔ц╔╞╓к╫Ю╣Р ╓╥╓©╔╚║╪╔и╓Б, pcm ╔и╔И╔╓╔п╓г╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. ╓Ё╓Л╓И╓о╔╣╔╕╔С╔и╓к╓д╓╓╓ф╓н╓ъ╓ноц╓г╓╧! ╓Ё╓Л╓И╓н╔и╔И╔╓╔п╓о CD-ROM, SCSI, ╔╚║╪╔и╬Е╓к╓╒╓К╔╦╔Г╔╓╔╧╔ф╔ё╔ц╔╞╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╩╓С (SoundBlaster ╓онЦЁ╟╓г╓╧). SoundBlaster SCSI ╔╓╔С╔©╔у╔╖║╪╔╧╓ххС SCSI CD-ROM ╓о╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╛, ╓╫╓н╔г╔п╔╓╔╧╓╚╓И╓о╣╞ф╟╓г╓╜╓ч╓╩╓С. pcm ╔и╔И╔╓╔п╓г es1370 ╓╚╓И╡╩╓╛╫п╓й╓╓╓н╓о╓и╓╕╓к╓╚╓й╓Й╓ч╓╩╓С╓╚? ╔ч╔╥╔С╓Р╣╞ф╟╓╧╓К╓╢╓х╓к╟й╡╪╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; mixer pcm 100 vol 100 cd 100 ╓и╓С╓й╔м╔ц╔х╔О║╪╔╞╔╚║╪╔и╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? ╓Х╓Й╢╟а╢╓й╟ЛмВ╓к╓д╓╓╓ф╓о╔╓║╪╔╣╔м╔ц╔х╔╚║╪╔и╓нюА╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ©Тцм╠И╩╩╔Ё╔в╔М╔╩╔ц╔╣╓Р╩Щ╓ц╓ф╓╓╓ч╓╩╓С╓╛, ╡©╓╚╓ч╓╨╓╓╓г╓╥╓Г╓╕╓╚? ╓Ё╓Л╓И╓о 386/486SX/486SLC ╓Р╩Щ╓ц╓ф╓╓╓К╬Л╧Г╓к╠ф╤а╓╥╓ч╓╧ - ╓ш╓╚╓н╔ч╔╥╔С╓г╓о CPU ╓кфБб╒╓╣╓Л╓ф╓╓╓ч╓╧. ╟Лхл╓к╓Ё╓Л╓И╓олДбЙ╓х╓о╓й╓Й╓ч╓╩╓С. ╓╥╓╚╓╥, ©Тцм╠И╩╩╔╗╔ъ╔Е╔Л║╪╔╥╔Г╔С╔Ё║╪╔и╓н╔я╔у╔╘║╪╔ч╔С╔╧╓╚, ю╣Ён╓╣╓н╓╓╓╨╓Л╓╚╓Ра╙бР╓╧╓К╬У╤╥╓╛╓╒╓Й╓ч╓╧(╬э╓╥╓╞╓о FP ╔╗╔ъ╔Е╔Л║╪╔╥╔Г╔С ╓к╓д╓╓╓ф╓нюА╓Р╓╢мВ╓╞╓ю╓╣╓╓). ╓х╓╞╓к, X ╬Е╓г╦л╓Риа╓╞╨щ╓к╓х╓ф╓Бцы╓╞╓й╓К╓Ё╓х╓г╓╥╓Г╓╕. ©Тцм╠И╩╩╔Ё╔в╔М╔╩╔ц╔╣╓Р╧ьфЧ╓╣╓Л╓К╓Ё╓х╓Р╤╞╓╞╓╙╓╧╓╧╓А╓╥╓ч╓╧. ╓х╓ф╓БлРн╘╓д╓Ё╓х╓г╓╥╓Г╓╕. б╬╓н©Тцм╠И╩╩╔Ё╔в╔М╔╩╔ц╔╣╓Х╓Й╓Бм╔╓Л╓©╔Ё╔в╔М╔╩╔ц╔╣╓Б╓╒╓Й╓ч╓╧. ╓Ё╓Л╓о╦ю╓╓╓к╓╞╓╓╓Ё╓х╓й╓н╓г╓╧╓╛, Intel ╓РгЦ╓╕╓©╓А╓клЖ╣╞╓к╓й╓К©м╓Б╓╓╓й╓╓╓г╓╥╓Г╓╕. ╓╫╓Л╓╛ FreeBSD ╬Е╓гф╟╓╞╓х╓╓╓╕Ён©╝╓╛╓й╓╓╓н╓й╓И, ╔╞╔М║╪╔С╓к╓╢мя©╢╓Р. FreeBSD ╓╛╔╣╔щ║╪╔х╓╧╓К╔г╔п╔╓╔╧╓об╬╓к╓Б╓╒╓К╓С╓г╓╥╓Г╓╕╓╚? FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓к╣╜╓╣╓Л╓ф╓╓╓К, ╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓Кб╬╓н╔г╔п╔╓╔╧╓н╟ЛмВ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╔я╔О║╪╔ч╔м║╪╔╦╔А╔С╔х╣║г╫иу╓╜╓н╔И╔ц╔в╔х╔ц╔в PC ╓Р╩Щ╓ц╓ф╓╓╓К╓н╓г╓╧╓╛... FreeBSD ╓о╟ЛиТ╓н╔ч╔╥╔С╓н APM ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. LINT ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К ╓н APM ╓ниТй╛╓Р╓╢мВ╓╞╓ю╓╣╓╓. Micron ╔╥╔╧╔ф╔Ю╓╛╣╞ф╟╩Ч╓к╦г╓ч╓ц╓ф╓╥╓ч╓╓╓ч╓╧. фцдЙ╓н Micron ю╫╓н╔ч╔╤║╪╔э║╪╔и╓нцФ╓к╓о, PCI BIOS ╓╛╣╛Ёйдл╓Й╓к ╪баУ╓╣╓Л╓ф╓╓╓й╓╓╓©╓А╓к FreeBSD ╓н╣╞ф╟╓к╪╨гт╓╧╓К╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╓╫╓н BIOS ╓о, PCI ╔г╔п╔╓╔╧╓Р╓╒╓К╔╒╔и╔Л╔╧╓гюъдЙ╓╥╓©╓хйС╧П╓╧╓К╓к╓Б ╢ь╓О╓И╓╨, ╪б╨щ╓к╓о╓╫╓╕╓╥╓ф╓╓╓й╓╓╓н╓г╓╧. ╓Ё╓нлДбЙ╓Р╡СхР╓╧╓К╓к╓о, BIOS ╓н Plug and Play Operating System ╓Рл╣╦З╓кюъдЙ╓╥╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, ╓Х╓Й╬э╓╥╓╓╬ПйС╓о http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ©╥╓╥╓╓ Adaptec ╔Ё╔С╔х╔М║╪╔И╓Р╩Щ╓ц╓ф╓╓╓К╓н╓г╓╧╓╛, FreeBSD ╓╛╦║╫п╓г╓╜╓й╓╓╓Х╓╕╓г╓╧. ©╥╓╥╓╓ AIC789x ╔╥╔Й║╪╔╨╓н Adaptec ╔а╔ц╔в╓о, 3.0 ╓г╔г╔с╔Е║╪╓╥╓© CAM SCSI ╔у╔Л║╪╔Ю╔О║╪╔╞╓г╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. 2.2-STABLE ╓н╔я╔ц╔а╓о ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/ ╓к╓╒╓Й╓ч╓╧. CAM ╔╥╔╧╔ф╔Ю╓╛фЧ╓ц╓ф╓╓╓К╧Б╣║г╫╔ж║╪╔х╔у╔М╔ц╔т║╪╓о http://people.FreeBSD.org/~abial/cam-boot/ ╓к╓╒╓Й╓ч╓╧. ╓и╓а╓И╓н╬Л╧Г╓к╓╥╓ф╓Б, ╨Н╤х╓Р╩о╓А╓Ка╟╓к README ╓Р╓╙фи╓ъ╓╞╓ю╓╣╓╓. фБб╒╓н Plug & Play ╔Б╔г╔Ю╓Р╩Щ╓ц╓ф╓╓╓К╓н╓г╓╧╓╛, FreeBSD ╓╛╦║╫п╓г╓╜╓й╓╓╓Х╓╕╓г╓╧. ╔Б╔г╔Ю╓н PnP ID ╓Р ╔╥╔Й╔╒╔К╔и╔И╔╓╔п╓н PnP ID ╔Й╔╧╔х╓кди╡ц╓╧╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. Plug & Play ╔╣╔щ║╪╔х╓Рм╜╦З╓к╓╧╓К╓к╓о, controller pnp0 ╓Р╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С ╔у╔║╔╓╔К╓киу╓╠╡ц╓╗, ©╥╓╥╓╓╔╚║╪╔м╔К╓Р╔Ё╔С╔я╔╓╔К╓╥╓ф╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╥╓ф╓╞╓ю╓╣╓╓. ╔╚║╪╔м╔К╓о, ╦║╫п╓╥╓©а╢╓ф╓н╔г╔п╔╓╔╧╓н PnP ID ╓Ри╫╪╗╓╥╓ч╓╧. ╔Б╔г╔Ю╓нмС╓к╓╒╓К PnP ID ╓Р /sys/i386/isa/sio.c ╓н 2777 ╧тлэ╓╞╓И╓╓╓к╓╒╓К╔ф║╪╔ж╔К╓к╫Я╓╜фЧ╓Л╓ф╓╞╓ю╓╣╓╓. ╔ф║╪╔ж╔К╓Р╦╚╓д╓╠╓К╓к╓о, ╧╫б╓бн siopnp_ids[] ╓нй╦╩ЗнС SUP1310 ╓Рц╣╓╥╓ч╓╧. ╔╚║╪╔м╔К╓Р╨Н╓Йд╬╓╥╓©╓И╔╓╔С╔╧╔х║╪╔К╓╥, ╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╕╓╧╓Л╓п, ╔Б╔г╔Ю╓╛╦║╫п╓╣╓Л╓К╓о╓╨╓г╓╧. ╣╞ф╟╩Ч╓н╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╓н╨щ╓к, pnp ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф PnP ╓нюъдЙ╓Р╔ч╔к╔Е╔╒╔К╓г╧т╓й╓О╓й╓╠╓Л╓п╓й╓И╓й╓╓╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓╫╓н╬Л╧Г, ╔Б╔г╔Ю╓Р╦║╫п╓╣╓╩╓К╓©╓А╓н╔Ё╔ч╔С╔и╓о pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8 ╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. ╔╥╔Й╔╒╔К╔Ё╔С╔╫║╪╔К╓г boot: ╔в╔М╔С╔в╔х╓Ри╫╪╗╓╧╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓? options COMCONSOLE ╓Р╩ьдЙ╓╥╓ф╔╚║╪╔м╔К╓Р╧╫цш╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╥╓ф /boot.config ╓Р╨Ню╝╓╥╓ф ╓х╓ю╓╠╫Я╓╜фЧ╓Л╓ф╓╞╓ю╓╣╓╓. ╓╫╓н╦Е, ╔╜║╪╔э║╪╔и╓Р╔╥╔╧╔ф╔Ю╓╚╓Их╢╓╜╓ч╓╧. /usr/src/sys/i386/boot/biosboot/README.serial ╓к, ╓Ё╓Л╓к╢ь╓╧╓К╬ПйС╓╛╫Я╓╚╓Л╓ф╓╓╓ч╓╧. ╓й╓╪ Micron ╔Ё╔С╔т╔Е║╪╔©╓г 3Com PCI ╔м╔ц╔х╔О║╪╔╞╔╚║╪╔и╓╛ф╟╓╚╓й╓╓╓н╓г╓╥╓Г╓╕? фцдЙ╓н Micron ю╫╓н╔ч╔╤║╪╔э║╪╔и╓нцФ╓к╓о, PCI BIOS ╓╛╣╛Ёйдл╓Й╓к ╪баУ╓╣╓Л╓ф╓╓╓й╓╓╓©╓А╓к FreeBSD ╓н╣╞ф╟╓к╪╨гт╓╧╓К╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╓╫╓н BIOS ╓о, PCI ╔г╔п╔╓╔╧╓Р╓╒╓К╔╒╔и╔Л╔╧╓гюъдЙ╓╥╓©╓хйС╧П╓╧╓К╓к╓Б ╢ь╓О╓И╓╨, ╪б╨щ╓к╓о╓╫╓╕╓╥╓ф╓╓╓й╓╓╓н╓г╓╧. ╓Ё╓нлДбЙ╓Р╡СхР╓╧╓К╓к╓о, BIOS ╓н Plug and Play Operating System ╓Рл╣╦З╓кюъдЙ╓╥╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, ╓Х╓Й╬э╓╥╓╓╬ПйС╓о http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. бп╬н╥©╔ч╔К╔а╔в╔М╔╩╔╥╔С╔╟(SMP)╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? SMP ╓о, 3.0-STABLE ╓х╓╫╓Л╟й╧ъ╓н╔Й╔Й║╪╔╧╓г╓н╓ъ╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. GENERIC ╔╚║╪╔м╔К╓г╓о SMP ╓ом╜╦З╡╫╓╣╓Л╓ф╓╓╓ч╓╩╓С╓н╓г, SMP ╓Рм╜╦З╡╫╓╧╓К╓к╓о╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. /sys/i386/conf/LINT ╓Р╦╚╓ф, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓к╓и╓н╔╙╔в╔╥╔Г╔С╓Рди╡ц╓╧╓Л╓пни╓╓╓н╓╚Ён╓╚╓А╓ф╓╞╓ю╓╣╓╓. ASUS K7V ╔ч╔╤║╪╔э║╪╔и╓н╔╥╔╧╔ф╔Ю╓г╔ж║╪╔х╔у╔М╔ц╔т║╪╓Р╩х╓╕╓х, ╔╥╔╧╔ф╔Ю╓╛╔о╔С╔╟╔╒╔ц╔в╓╥╓ч╓╧. бп╠Ч╨Ж╓о╓╒╓Й╓ч╓╩╓С╓╚? BIOS ╔╩╔ц╔х╔╒╔ц╔в╓г╣╞ф╟╩Ч╓н╔╕╔ё╔К╔╧йщ╦Н╣║г╫╓Рл╣╦З╡╫╓╥╓ф╓╞╓ю╓╣╓╓. ╔х╔И╔ж╔К╔╥╔Е║╪╔ф╔ё╔С╔╟ лУ: &a.jp.yoshiaki;, 1997 г╞ 11 ╥Н 10 фЭ. ╔о║╪╔и╔г╔ё╔╧╔╞╓китни╔ж╔М╔ц╔╞╓╛╓╒╓Й╓ч╓╧! SCSI ╔г╔ё╔╧╔╞╓н╬Л╧Г╓о╪╚ф╟е╙╓к╨ф╔ч╔ц╔в╓╧╓К╣║г╫╓╛╓╒╓К╓о╓╨╓г╓╧. ╓╥╓╚╓╥, мЩ╡Р╓╥фЯ╓╓мЩмЁ╓╚╓Иб©╓╞╓н╔и╔И╔╓╔ж╓╛╓Ё╓н╣║г╫╓╛л╣╦З╡╫ ╓╣╓Л╓ф╫п╡ы╓╣╓Л╓ф╓╓╓ч╓╧... ╓Ё╓Л╓Рм╜╦З╡╫╓╧╓К╓к╓о, ╨г╫И╓н╔г╔п╔╓╔╧╓н╔Б║╪╔и╔з║╪╔╦╓Рйя╧╧╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓о╪║╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╧╓К╓Ё╓х╓г, FreeBSD ╬Е╓г╧т╓й╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧(root ╦╒╦б╓г╧т╓й╓╓╓ч╓╧). &prompt.root; scsi -f /dev/rsd0c -m 1 -e -P 3 ╓╫╓╥╓ф, AWRE ╓х ARRE ╓нцм╓Р 0 ╓╚╓И 1 ╓ьйя╧╧╓╥╓ч╓╧ AWRE (Auto Write Reallocation Enbld): 1 ARRE (Auto Read Reallocation Enbld): 1 ╟й╡╪╓о, Ted Mittelstaedt ╩А╓╚╓И╢С╓╩╓И╓Л╓©╓Б╓н╓г╓╧. IDE ╔и╔И╔╓╔ж╓н╬Л╧Г╓одл╬О, итни╔ж╔М╔ц╔╞╓оюЬ╨ъе╙╓й╬ЦЁ╡╓нцШ╦У╓г╓╧. ╨г╤А╓н IDE ╔и╔И╔╓╔ж╓о, фБиТ╓нитни╔ж╔М╔ц╔╞╨ф╔ч╔ц╔т╔С╔╟╣║г╫╓Рм╜╦З╓к╓╥╓©╬Убж╓г ╫п╡ы╓╣╓Л╓ф╓╓╓ч╓╧. ╓ч╓©, ╨ёфЭ╓н IDE ╔о║╪╔и╔г╔ё╔╧╔╞╔А║╪╔╚╓о, ╫п╡ы╟й╧ъ╓китни╔ж╔М╔ц╔╞╓╛х╞ю╦╓╧╓К╓Ё╓х╓к╢ь╓╥╓фйщ╬з╓РдС╤║╓╥╓ф╓╓╓ф, итни╔ж╔М╔ц╔╞╓н╓╒╓К╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓Р╦Р╢╧╓╧╓К╔╣║╪╔с╔╧╓Р╧т╓й╓ц╓ф╓╓╓ч╓╧. ╓Б╓╥, итни╔ж╔М╔ц╔╞╓н╓╒╓К IDE ╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓РиЭ╣Л╓╥╓Х╓╕╓х╩в╓╕╓й╓И, IDE ╔и╔И╔╓╔ж╔А║╪╔╚╓╛дС╤║╓╧╓К IDE ©гцг╔в╔М╔╟╔И╔Ю╓Р╔ю╔╕╔С╔М║╪╔и╓╥╓ф, ╓╫╓н╔и╔И╔╓╔ж╓к╩х╓ц╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╪О╓н╔в╔М╔╟╔И╔Ю╓обГдЯ, ╔и╔И╔╓╔ж╓ню╘╦ФиТй╛╓кбп╓╥╓фитни╔ж╔М╔ц╔╞╓Р╨фаЖ╨╨╓╥, итни╔ж╔М╔ц╔╞╓Р╩хмяитг╫╓к╓╧╓К╓Х╓╕╓к╔╩╔ц╔х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ESDI, RLL ╓╙╓Х╓с MFM ╔и╔И╔╓╔ж╓н╬Л╧Г, итни╔ж╔М╔ц╔╞╓о╔и╔И╔╓╔ж╓ню╣╬О╓йиТй╛╓г╓╒╓Й, ╟Лхле╙╓к╦ю╓ц╓ф╬ЦЁ╡╓Ри╫╓╧╓Б╓н╓г╓о╓╒╓Й╓ч╓╩╓С. PC ╓г╓о, ╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╔Ё╔С╔х╔М║╪╔И╔╚║╪╔и╓х BIOS ╓╛итни╔ж╔М╔ц╔╞╓н╩хмяитг╫╡╫╓н╨Н╤х╓Р╧т╓й╓╓╓ч╓╧. DOS ╓й╓и, ╔г╔ё╔╧╔╞╔╒╔╞╔╩╔╧╓к BIOS ╓Р╥пмЁ╓╧╓К OS ╓к╓х╓ц╓ф╓ом╜╦З╓кф╞╓╜╓ч╓╧╓╛, FreeBSD ╓н╔г╔ё╔╧╔╞╔и╔И╔╓╔п╓о BIOS ╓РмЬмя╓╥╓ч╓╩╓С. ╓╫╓н╓©╓А, бЕбь╓х╓╥╓ф bad144 ╓х╓╓╓╕╣║╧╫╓╛б╦╨ъ╓╥╓ч╓╧. bad144 ╓о, wd ╔и╔И╔╓╔п╓г╓ю╓╠ (╓д╓ч╓Й FreeBSD 4.0 ╓г╓о╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓й╓╓)ф╟╨Н╓╥, SCSI ╔и╔И╔╓╔п╓кмЬмя╓╧╓К╓Ё╓х╓о ╓г╓╜╓ч╓╩╓С. bad144 ╓о, ╦║╫п╓╣╓Л╓©итни╔╩╔╞╔©╓Р╔╧╔з╔╥╔Ц╔К╔у╔║╔╓╔К╓к╣╜о©╓╧╓К╓х╓╓╓╕╣║г╫╓Р╩Щ╓ц╓ф╓╓╓ч╓╧. bad144 ╓РмЬмя╓╧╓К╬Е╓г, цМ╟у╓╥╓й╓╠╓Л╓п╓й╓И╓й╓╓ею╓╛╟Л╓д╓╒╓Й╓ч╓╧. ╓╫╓Л╓о, итни╔ж╔М╔ц╔╞╔╧╔з╔╥╔Ц╔К╔у╔║╔╓╔К╓о, ╔г╔ё╔╧╔╞╓н╨г╫╙╔х╔И╔ц╔╞╓кцж╓╚╓Л╓К╓х╓╓╓╕╓Ё╓х╓г╓╧. ╓Ё╓н╔у╔║╔╓╔К╓к╓о, ╔г╔ё╔╧╔╞╓нюХф╛╓ниу╤А, /kernel ╔у╔║╔╓╔К╓╛╟лцж╓╥╓ф╓╓╓К╓г╓╒╓М╓╕иТй╛╓гх╞ю╦╓╥╓©итни╔╩╔╞╔©╓╛╣╜о©╓╣╓Л╓ф╓╓╓ч╓╧. ╓╥╓©╓╛╓ц╓ф, ╓Ё╓н╔у╔║╔╓╔К╓о BIOS ╔Ё║╪╔К╓Р╩х╓ц╓ф╔╚║╪╔м╔К╔у╔║╔╓╔К╓Рфи╓ъ╧Ч╓Ю╣╞ф╟╔в╔М╔╟╔И╔Ю╓╛, ╔╒╔╞╔╩╔╧╡дг╫╓г╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓Ё╓Л╓о╓д╓ч╓Й, bad144 ╓РмЬмя╓╧╓К╔г╔ё╔╧╔╞╓о 1024 ╔╥╔Й╔С╔ю, 16 ╔ь╔ц╔и, 63 ╔╩╔╞╔©╓Рд╤╓╗╓ф╓о╓й╓И╓й╓╓╓х╓╓╓╕╓Ё╓х╓Р╟улё╓╥, bad144 ╓РмЬмя╓╥╓©╔г╔ё╔╧╔╞╓╛╪б╪а 500MB ╓Рд╤╓╗╓И╓Л╓й╓╓╓Ё╓х╓к╓й╓Й╓ч╓╧. bad144 ╓Р╩х╓╕╓к╓о, FreeBSD ╓н╔╓╔С╔╧╔х║╪╔К╩Ч╓ки╫╪╗╓╣╓Л╓К fdisk ╡Хлл╓г Bad Block аЖ╨╨╓Р ON ╓кюъдЙ╓╧╓К╓ю╓╠╓г╓╧. ╓Ё╓Л╓о, FreeBSD 2.2.7 ╟й╧ъ╓г╣║г╫╓╥╓ч╓╧. ╔г╔ё╔╧╔╞╓о, 1024 ╔╥╔Й╔С╔ю╟йфБ╓г╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╔г╔ё╔╧╔╞╔и╔И╔╓╔ж╓о╩Жа╟╓к╬╞╓й╓╞╓х╓Б 4 ╩Ч╢ж, ╔г╔ё╔╧╔╞╓╛╡╧еы╓к╓Х╓ц╓фкдд╔╓╥, ╔х╔И╔ц╔╞╓к╤й╓╛╓Й╓╛╫п╓К╓ч╓г╡Се╬╓╣╓╩╓К╓Ё╓х╓Р╓╙а╕╓А╓╥╓ч╓╧(лУцМ: ╡╧еыйя╡╫╓кбп╓╧╓Ккдд╔╓к╓Х╓ц╓ф, ╔г╔ё╔╧╔╞╓╛хЫ╬╝йя╥а╓╧╓К╓Ё╓х╓к╓Х╓Йх╞ю╦╓╧╓Китни╔╩╔╞╔©╓РЁн╪б╓к╦║╫п╓╧╓К╓©╓А╓г╓╧). бГмфнл╓н ESDI ╔и╔И╔╓╔ж╓н╓Х╓╕╓к 1024 ╔╥╔Й╔С╔ю╓Рд╤╓╗╓К╔г╔ё╔╧╔╞╓н╬Л╧Г, DOS ╬Е╓г╓╫╓н╔г╔ё╔╧╔╞╓╛мЬмя╓г╓╜╓К╓Х╓╕, ESDI ╔Ё╔С╔х╔М║╪╔И╓офц╪Л╓ййя╢╧╔Б║╪╔и╓РмЬмя╓╥╓ч╓╧. fdisk ╓н set geometry ╔Ё╔ч╔С╔и╓Р╩х╓ц╓ф йя╢╧╓╣╓Л╓©(translated) ╔╦╔╙╔А╔х╔Й╓кюзбь╓╗╓К╓х, wd ╔и╔И╔╓╔п╓о╓Ё╓нйя╢╧╔Б║╪╔и╓Р╡Р╪А╓г╓╜╓ч╓╧. ╓╫╓н╨щ, FreeBSD ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨Ню╝╓╧╓К╓н╓к dangerously dedicated ╔Б║╪╔и╓РмЬмя╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С. ╓Ё╓н╔Б║╪╔и╓о, ╓╫╓н╓Х╓╕╓й╔╦╔╙╔А╔х╔Й╓Рл╣╩К╓╧╓К╓╚╓И╓г╓╧. ╓©╓х╓╗ fdisk ╓╛╔╙║╪╔п║╪╔И╔╓╔и╓╣╓Л╓©╔╦╔╙╔А╔х╔Й╬ПйС╓Р╩х╓ц╓©╓х╓╥╓ф╓Б, ╟маЁ╓х╓╥╓ф╔г╔ё╔╧╔╞╓н©©╓нбГ╓╜╓╣╓Рйщ╩Щ╓╥╓ф╓╓╓К╓©╓А, бГ╓╜╓╧╓╝╓К FreeBSD ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨Ню╝╓╥╓Х╓╕╓х╓╥╓ф╓╥╓ч╓╕╓г╓╥╓Г╓╕. ╔г╔ё╔╧╔╞╔╦╔╙╔А╔х╔Й╬ПйС╓╛йя╢╧╓╣╓Л╓©╔╦╔╙╔А╔х╔Й╬ПйС╓к╓╚╓О╓ц╓ф╓╓╓К╬Л╧Г╓о, ╪Йф╟╓г╔ж╔М╔ц╔╞©Т╓РфЧно╓╥, ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨Ню╝╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. бГмфнл╓н ESDI ╔г╔ё╔╧╔╞╓Р ESDI ╔Ё╔С╔х╔М║╪╔И╓г╔╩╔ц╔х╔╒╔ц╔в╓╧╓К╓к╓о, ╓а╓Г╓ц╓х╓╥╓©╔х╔Й╔ц╔╞╓Р╩х╓╓╓ч╓╧. ╓ч╓╨, DOS ╓н╔г╔ё╔╧╔╞╓г╣╞ф╟╓╥╓ф ╓╫╓н╔г╔ё╔╧╔╞╓Р DOS ╔я║╪╔ф╔ё╔╥╔Г╔С╓х╓╥╓ф╔у╔╘║╪╔ч╔ц╔х╓╥╓ч╓╧. ╓╫╓╥╓ф FreeBSD ╓Р╣╞ф╟╓╥, ╔╓╔С╔╧╔х║╪╔И╓н fdisk ╡Хлл╓г DOS ╔я║╪╔ф╔ё╔╥╔Г╔С╓н╔ж╔М╔ц╔╞╔╣╔╓╔╨╓х╔ж╔М╔ц╔╞©Т╓Рфи╓ъ╓х╓Й, ╔А╔Б╓╥╓ф╓╙╓╜╓ч╓╧. ╔╦╔╙╔А╔х╔Й╬ПйС╓Р DOS ╓╛мЬмя╓╥╓ф╓╓╓К╓Б╓н╓хф╠╟Л╓к╨фюъдЙ╓╥, DOS ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╨О╫Э╓╥╓ф cooperative FreeBSD ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р юХдЬ╣╜о©╓╥╓©╔ж╔М╔ц╔╞╔╣╔╓╔╨╓Р╩х╓ц╓ф╨Ню╝╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╣╞ф╟╡дг╫╔я║╪╔ф╔ё╔╥╔Г╔С╓кюъдЙ╓╥, итни╔ж╔М╔ц╔╞аЖ╨╨╓Р м╜╦З╓к╓╥╓ч╓╧. ╪б╨щ╓н╔╓╔С╔╧╔х║╪╔К╓г╓о, ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓╛╨Ню╝╓╣╓Л╓Ка╟╓к bad144 ╓╛╨г╫И╓к╪б╧т╓╣╓Л╓ч╓╧(Alt-F2 ╓Р╡║╓╧╓Ё╓х╓г╬У╤╥╓РЁнг╖╓г╓╜╓ч╓╧). итни╔╩╔╞╔©╔у╔║╔╓╔К╓Р╨Ню╝цФ╓к╡©╓И╓╚╓н╬ЦЁ╡╓╛х╞ю╦╓╥╓©╓й╓И, ╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╥╓ф, ╓Б╓╕╟Леы╨г╫И╓╚╓И╓Д╓Йд╬╓╥╓к╓й╓Й╓ч╓╧. ╓╙╓╫╓И╓╞╔г╔ё╔╧╔╞╔╦╔╙╔А╔х╔Й╬ПйС╓нюъдЙ╓РбГ╓╜╓╞╓╥╓╧╓╝╓ф╓╓╓К╓н╓г╓╥╓Г╓╕. (╓Д╓Йд╬╓╥╓о, DOS ╓к╓Х╓К╔у╔╘║╪╔ч╔ц╔х╓х╔я║╪╔ф╔ё╔╥╔Г╔СЁнйщ╓Р╢ч╓ъ╓ч╓╧) ╓Б╓╥, итни╔ж╔М╔ц╔╞╓н╨ф╔ч╔ц╔т╔С╔╟╓Рм╜╦З╓к╓╥╓ф╓╓╓фитни╔ж╔М╔ц╔╞╓╛╦╚иу╓╚╓ц╓©╓И, ╔и╔И╔╓╔ж╓н╦Р╢╧╓Р╧м╓╗╓ф╓╞╓ю╓╣╓╓. итни╔ж╔М╔ц╔╞╓о, ╩Ч╢ж╓х╓х╓Б╓к╟╜╡╫╓╧╓К╓╚╓И╓г╓╧. Bustek 742a EISA SCSI ╓╛г╖╪╠╓╣╓Л╓ч╓╩╓С. ╓Ё╓н╬ПйС╓о 742a ╓н╓©╓А╓н╓Б╓н╓г╓╧╓╛, б╬╓н Buslogic ╔╚║╪╔и╓к╓д╓╓╓ф╓Б ф╠мм╓н╓Ё╓х╓╛╦ю╓╗╓ч╓╧. (Bustek = Buslogic) 742a ╔╚║╪╔и╓к╓обГ╓╜╓╞╓О╓╠╓ф 2 ╓д╓н║ж╔п║╪╔╦╔Г╔С║в╓╛б╦╨ъ╓╥╓ч╓╧. ╔о║╪╔и╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С╓н A-G ╓х H ╟й╧ъ╓г╓╧. ╔Й╔с╔╦╔Г╔С╓н й╦╩З╓о╔╚║╪╔и╓н╤Ы╓к╓╒╓К╔╒╔╩╔С╔ж╔Йхж╧Ф╓н╦Е╓М╓к╓╒╓Й╓ч╓╧. 742a ╓офС╓д╓н ROM ╔а╔ц╔в╓Р╩Щ╓ц╓ф╓╙╓Й, ╟Л╓д╓о BIOS ╔а╔ц╔в╓г ╓Б╓╕╟Л╓д╓о╔у╔║║╪╔Ю╔╕╔╖╔╒╔а╔ц╔в╓г╓╧. FreeBSD ╓о╓╒╓й╓©╓н ╩Щ╓ц╓ф╓╓╓К╓Б╓н╓╛╓и╓н BIOS ╔п║╪╔╦╔Г╔С╓╚╓олДбЙ╓╒╓Й╓ч╓╩╓С╓╛, ╔у╔║║╪╔Ю╔╕╔╖╔╒╔п║╪╔╦╔Г╔С╓к╓д╓╓╓ф╓олДбЙ╓х╓й╓Й╓ч╓╧. Buslogic ╓н╣╩╫я╔╣╔щ║╪╔хиТлГ╓ко╒мМ╓╧╓Л╓п, ╔╒╔ц╔в╔╟╔Л║╪╔ихг╓н ROM ╓РаВ╓ц╓ф╓╞╓Л╓К╓Ё╓х╓г╓╥╓Г╓╕. BIOS ╔а╔ц╔в╓х ╔у╔║║╪╔Ю╔╕╔╖╔╒╔а╔ц╔в╓о╔з╔╒╓г╫п╡ы╓╣╓Л╓ч╓╧. ╔╒╔ю╔в╔©╔╚║╪╔и╓н╔о║╪╔и╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С╓к╓╒╓О╓╩╓© ╨г╓Б©╥╓╥╓╓╔у╔║║╪╔Ю╔╕╔╖╔╒ ROM ╓Р╩хмя╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╔Й╔с╔╦╔Г╔С A-G ╓н╔╚║╪╔и╓к╓о, 2.41/2.21 ╓ч╓г╓н BIOS/╔у╔║║╪╔Ю╔╕╔╖╔╒╓н╔╩╔ц╔х╓Р╩хмя╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔Й╔с╔╦╔Г╔С H ╟й╧ъ╓н╔╚║╪╔и╓к╓о, ╨г©╥╓н╓Б╓н╓г╓╒╓К 4.70/3.37 ╓н BIOS/╔у╔║║╪╔Ю╔╕╔╖╔╒╓н╔╩╔ц╔х╓Р ╩хмя╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓Л╓И╓н╔у╔║║╪╔Ю╔╕╔╖╔╒╓н╟Ц╓╓╓о, ╔у╔║║╪╔Ю╔╕╔╖╔╒ 3.37 ╓╛ ║ж╔И╔╕╔С╔и╔М╔с╔СйЩ╪╟║в ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓К╓х╓Ё╓М╓╚╓И╓╜╓ф╓╓╓ч╓╧. Buslogic ╓н╔╚║╪╔и╓к╓о, ю╫б╓хж╧Ф╓Б╧О╟У╓╣╓Л╓ф╓╓╓ч╓╧. ╦е╓╓ ╔о║╪╔и╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С╓н╔╚║╪╔и╓Р╩Щ╓ц╓ф╓╓╓К╬Л╧Г╓о, Buslogic ╓н RMA иТлГ╓клД╓╓╧Г╓О╓╩╓фю╫б╓хж╧Ф╓Реа╓╗╓К╓х, ©╥╓╥╓╓╔о║╪╔и╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С╓н ╔╚║╪╔и╓к╦Р╢╧╓╧╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╓Б╓╥╔╚║╪╔и╓╛╫╫й╛©╥╓╥╓╠╓Л╓п, хЮ╓И╓о ╦Р╢╧╓к╠Ч╓╦╓ф╓╞╓Л╓К╓г╓╥╓Г╓╕. FreeBSD 2.1 ╓о ╔у╔║║╪╔Ю╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С 2.21 ╟й╧ъ╓н╓Б╓н╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓Х╓Й╓Б╦е╓╓╔у╔║║╪╔Ю╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С╓н╓Б╓н╓о, Buslogic ╔╚║╪╔и╓х╓╥╓фю╣╬О╓кг╖╪╠╓╣╓Л╓ч╓╩╓С. ╓╥╓╚╓╥, Adaptec 1540 ╓х╓╥╓фг╖╪╠╓╣╓Л╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╫И╢Э╓н Buslogic ╓н╔у╔║║╪╔Ю╔╕╔╖╔╒╓о AHA1540 ║ж╦ъ╢╧║в╔Б║╪╔и╓Р ╩Щ╓ц╓ф╓╓╓ч╓╧. ╓╥╓╚╓╥, EISA ╔╚║╪╔и╓к╓х╓ц╓ф╓Ё╓Л╓о ╓Х╓╓╓Ё╓х╓г╓о╓╒╓Й╓ч╓╩╓С. ╦е╓╓╔о║╪╔и╔╕╔╖╔╒╔Й╔с╔╦╔Г╔С╓н╔╚║╪╔и╓Р╩Щ╓ц╓ф╓╓╓ф╔у╔║║╪╔Ю╔╕╔╖╔╒ 2.21 ╓РфЧ╪Й╓╧╓К╓н╓г╓╒╓Л╓п, ╔╦╔Ц╔С╔я W1 ╓н╟лцж╓Р╔г╔у╔╘╔К╔х╓н A-B ╓╚╓И B-C ╓к╧Г╓О╓╩╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. HP Netserver ╬Е╓н╔╙╔С╔э║╪╔и SCSI ╔Ё╔С╔х╔М║╪╔И╓╛г╖╪╠╓╣╓Л╓ч╓╩╓С. ╢Пкэе╙╓к╓Ё╓Л╓о╢Шцн╓нлДбЙ╓г╓╧. HP Netserver ╔ч╔╥╔С╓н EISA ╔╙╔С╔э║╪╔и SCSI ╔Ё╔С╔х╔М║╪╔И╓о EISA ╓н╔╧╔М╔ц╔ххж╧Ф 11 ╓РюЙм╜╓╥╓ч╓╧╓╛, ║жкэеЖ╓н║вEISA ╔╧╔М╔ц╔х╓о╓╧╓ы╓ф╓╫╓Л╓Х╓Й╓Ба╟╓н╔╒╔и╔Л╔╧╓кгшцж╓╣╓Л╓ф╓╓╓К╓н╓г╓╧. ╩дг╟╓й╓╛╓И, 10 хж╟й╬Е╓н EISA ╔╧╔М╔ц╔х╓о PCI ╓кЁД╓ЙеЖ╓ф╓И╓Л╓©╔╒╔и╔Л╔╧╤У╢ж╓х╬вфм╓╥, FreeBSD ╓н╪╚ф╟╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╓о, ╦╫╬У╓г╓о╓╕╓ч╓╞╓Ё╓н╬У╤╥╓Р╫ХмЩ╓г╓╜╓ф╓╓╓й╓╓╓н╓г╓╧. ╓г╓╧╓╚╓И╦╫╩Чею╓г╓н╨гни╓нйЩк║╓о, ╔╚║╪╔м╔К╔╙╔в╔╥╔Г╔С╓н EISA_SLOTS ╓Р 12 ╓кйя╓╗, ╔╒╔и╔Л╔╧╤У╢ж╓н╬вфм╓╛╓й╓╓╓╚╓н ╓Х╓╕╓й╓у╓Й╓Р╓╣╓╩╓К╓Ё╓х╓г╓╧ :) ╔╚║╪╔м╔К╓н╨ф╧╫цш╓к╣╜╫р╓╣╓Л╓ф╓╓╓К╓Х╓╕╓к╓╥╓ф╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓а╓М╓С, ╓Ё╓Л╓о╓Ё╓н╓Х╓╕╓й╔ч╔╥╔С╓к╔╓╔С╔╧╔х║╪╔К╓╧╓К╨щ╓к ║жмЯ╓╛юХ╓╚, ╥э╓╛юХ╓╚║в╓х╓╓╓ц╓©лДбЙ╓Рю╦╓ъ╫п╓╧╓Ё╓х╓к╓й╓Й╓ч╓╧. ╓Ё╓нлДбЙ╓Р╡СхР╓╧╓К╓©╓А╓к, ╔Ф║╪╔╤╔Ё╔С╔у╔ё╔╟(UserConfig) ╓нцФ╓к╓офцйл╓й╩еах╓ъ╓╛ах╓ъ╧Ч╓ч╓Л╓ф╓╓╓ч╓╧. ╓Ё╓н╓х╓╜ visual ╔╓╔С╔©╔у╔╖║╪╔╧╓о╩хмя╓╩╓╨, ╔Ё╔ч╔С╔и╔И╔╓╔С╔╓╔С╔©╔у╔╖║╪╔╧╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ц╠╫Ц╓к eisa 12 quit ╓х╔в╔М╔С╔в╔х╬Е╓╚╓Ибг╓а╧Ч╓ъ, ╦Е╓оиАдл╓к╔╓╔С╔╧╔х║╪╔К╓Р╧т╓й╓ц╓ф╓╞╓ю╓╣╓╓. ╓х╓к╓╚╓╞╔╚╔╧╔©╔Ю╔╚║╪╔м╔К╓н╔Ё╔С╔я╔╓╔К╓х╔╓╔С╔╧╔х║╪╔К╓Р╧т╓й╓╕╓Ё╓х╓Р ╓╙╓╧╓╧╓А╓╥╓ч╓╧. ╓╕╓ч╓╞╓╓╓╠╓п, ╬╜мХ╓н╔п║╪╔╦╔Г╔С╓г╓о╓Ё╓нлДбЙ╓╛╡Р╥Х╓╥╓ф╓╓╓К╓Ё╓х╓г╓╥╓Г╓╕. HP Netserver ╓г╓о╢М╦╠Ёп╦Г╓нюЛмя╔г╔ё╔╧╔╞╓о╩хмя╓г╓╜╓ч╓╩╓С. ╬э╨ы╓к╓д╓╓╓ф╓о ╓Ё╓нцМ╟у╩Ж╧Ю╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓Ё╓н CMD640 IDE ╔Ё╔С╔х╔М║╪╔И╓о╓и╓Ё╓╚╓╙╓╚╓╥╓╓╓Х╓╕╓г╓╧. ╓╫╓Л╓о╡У╓Л╓ф╓╓╓К╓н╓г╓╧. н╬йЩ╓н╔а╔Ц╔С╔м╔К╓Рф╠╩Ч╓кю╘╦Ф╓г╓╜╓й╓╓╓н╓г╓╧. ╦╫╨ъ, ╓Ё╓н╔а╔ц╔в╓Р╩х╓ц╓ф╓╓╓К╔╥╔╧╔ф╔Ю╓Р╪╚ф╟е╙╓к╦║╫п╓╥╓ф, ╓╕╓ч╓╞ф╟╓╚╓╧╓©╓А╓н╓╥╓╞╓ъ╓╛╩х╓╗╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓╞╓О╓╥╓╞╓о wd(4) ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. CMD640 IDE ╔Ё╔С╔х╔М║╪╔И╓Р╩х╓ц╓ф╓╓╓К╔╥╔╧╔ф╔Ю╓г FreeBSD 2.2.1 ╓╒╓К╓╓╓о 2.2.2 ╓Р╩х╓╓, ╓╚╓д╔╩╔╚╔С╔ю╔Й╓н╔а╔Ц╔м╔К╓Р╩х╓╓╓©╓╓╓н╓г╓╒╓Л╓п, options "CMD640" ╓Рм╜╦З╓к╓╥╓ф╔╚║╪╔м╔К╓Р╨Н╓Йд╬╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD 2.2.5 ╟й╧ъ╓г╓о, ╔г╔у╔╘╔К╔х╓г╓╫╓╕╓й╓ц╓ф╓╓╓ч╓╧. ed1: timeout ╓н╓Х╓╕╓й╔А╔ц╔╩║╪╔╦╓╛╓╓╓д╓Б╫п╓ч╓╧. ╓©╓ж╓С IRQ ╓н╬вфм╓╛╦╤╟Ь╓г╓╥╓Г╓╕ (фС╓д╓н╔э║╪╔и╓╛ф╠╓╦ IRQ ╓Р╩хмя╓╥╓ф╓╓╓К╓й╓и). FreeBSD 2.0.5R ╟йа╟╓о╓Ё╓Л╓к╢ь╓╥╓ф╢╡бГ╓г, IRQ ╓н╬вфм╓╛╓╒╓ц╓ф╓Б╔м╔ц╔х╔О║╪╔╞╔и╔И╔╓╔п╓о╣║г╫╓╥╓ф╓╓╓ч╓╥╓©. ╓╥╓╚╓╥ 2.0.5R ╟й╧ъ╓о╓Б╓о╓Д, IRQ ╓н╬вфм╓к╢╡бГ╓г╓о╓╒╓Й╓ч╓╩╓С. ╔╙╔в╔╥╔Г╔С╓Р╓д╓╠╓ф╣╞ф╟╓╥, ed0/de0/... ╓н╔╗╔С╔х╔Й╓Р╔э║╪╔и╓нюъдЙ╓к╧Г╓О╓╩╓ф╓╞╓ю╓╣╓╓. ╔м╔ц╔х╔О║╪╔╞╔╚║╪╔и╓н BNC ╔Ё╔м╔╞╔©(лУцМ: 10BASE-2 ╔©╔╓╔в╓н╔╓╔С╔©║╪╔у╔╖║╪╔╧) ╓Р╩х╓ц╓ф╓╓╓К╬Л╧Г, ╔г╔п╔╓╔╧╓н╔©╔╓╔Ю╔╒╔╕╔х╓о╔©║╪╔ъ╔м║╪╔╥╔Г╔С╓нитни╓к╓Х╓ц╓ф╓Б╣╞╓╜╓ч╓╧. ╓Ё╓Л╓Р╔а╔╖╔ц╔╞╓╧╓К╓к╓о╔╠║╪╔ж╔К╓РЁ╟╓╥╓ф╔©║╪╔ъ╔м║╪╔©╓Рд╬юэ NIC ╓кюэбЁ╓╥╓ч╓╧. ╓╫╓╥╓ф╔╗╔И║╪╔А╔ц╔╩║╪╔╦╓╛╬ц╓╗╓К╓╚╓и╓╕╓╚ Ёнг╖╓╥╓ч╓╧. NE2000 ╔Ё╔С╔я╔а╔ж╔К╔╚║╪╔и╓н╓й╓╚╓к╓о, UTP ╔щ║╪╔х╓н╔Й╔С╔╞╓╛╓й╓╚╓ц╓©╓Й╔╠║╪╔ж╔К╓╛юэбЁ╓╣╓Л╓ф╓╓╓й╓╓╬Л╧Г╓к ╓Ё╓н╔╗╔И║╪╓Р╫п╓╧╓Б╓н╓╛╓╒╓Й╓ч╓╧. CDROM ╓Р╔ч╔╕╔С╔х╓╥╓Х╓╕╓х╓╧╓К╓х Incorrect super block ╓х╦ю╓О╓Л╓ч╓╧. mount ╓к╔ч╔╕╔С╔х╓╥╓©╓╓╔г╔п╔╓╔╧╓н╔©╔╓╔в╓Р╩ьдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔г╔у╔╘╔К╔х╓г╓о mount(8) ╓о╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р ufs ╓х╓ъ╓й╓╥╓ч╓╧. CDROM ╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р ╔ч╔╕╔С╔х╓╥╓©╓╓╓н╓г╓╒╓Л╓п ╓х mount(8) ╓к╔╙╔в╔╥╔Г╔С╓Р╓д╓╠╓флю╪╗╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓о╓Б╓а╓М╓С CDROM ╓╛ ISO 9660 ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓г╓╒╓К╬Л╧Г╓г╓╧. ╓ш╓х╓С╓и╓н CDROM ╓о╓Ё╓н╥а╪╟╓г╓╧. 1.1R ╓н FreeBSD ╓г╓о (лУцМ: 2.1.5R, 2.2R ╓г╓Бф╠мм╓г╓╧) ╪╚ф╟е╙╓к Rock Ridge Ёхд╔(д╧╓╓╔у╔║╔╓╔Кл╬╓ь╓нбп╠Ч)╓Р╓╕╓ч╓╞╡Р╪А╓╥╓ч╓╧. CDROM ╓н╔г╔п╔╓╔╧ /dev/cd0c ╓Р /mnt ╓к╔ч╔╕╔С╔х╓╥╓©╓╓╬Л╧Г╓ннЦ╓г╓о, ╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; mount -t cd9660 /dev/cd0c /mnt ╔г╔п╔╓╔╧╓нл╬а╟╓о╔╓╔С╔©╔у╔╖║╪╔╧╓к╓Х╓ц╓ф╓ойл╓нл╬а╟╓к╓й╓ц╓ф╓╓╓К ╓╚╓Б╓╥╓Л╓й╓╓╓н╓гцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓(/dev/cd0c ╓о╓Ё╓н╬Л╧Г╓ннЦ╓г╓╧). ╔╙╔в╔╥╔Г╔С ╓к╓Х╓ц╓ф mount_cd9660 ╔Ё╔ч╔С╔и╓╛╪б╧т╓╣╓Л╓К╓Ё╓х╓кцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╓©╓АнЦ╓о╪║╓н╓Х╓╕╓к╓╧╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. &prompt.root; mount_cd9660 /dev/cd0c /mnt CDROM ╓Р╔ч╔╕╔С╔х╓╥╓Х╓╕╓х╓╧╓К╓х Device not configured ╓х╦ю╓О╓Л╓ч╓╧. ╓Ё╓Л╓о ╟Лхле╙╓к CDROM ╔и╔И╔╓╔ж╓нцФ╓к CDROM ╓╛фЧ╓ц╓ф╓╓╓й╓╓╓╚, ╔и╔И╔╓╔ж╓╛╔п╔╧╬Е╓к╦╚╓╗╓й╓╓╓Ё╓х╓Р╟улё╓╥╓ч╓╧. ╔и╔И╔╓╔ж╓к CDROM ╓РфЧ╓Л╓К╓╚, IDE (ATAPI) ╓г╓╒╓Л╓п master/slave ╓н╬Убж╓Р╔а╔╖╔ц╔╞╓╥╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, CDROM ╔и╔И╔╓╔ж╓к CDROM ╓РфЧ╓Л╓ф╓╚╓Иг╖╪╠╓╧╓К╓ч╓г╓к╓о©Тиц╓╚╓╚╓Й╓ч╓╧╓н╓г, ╬╞╓╥бт╓ц╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. SCSI CDROM ╓г╓о╔п╔╧╔Й╔╩╔ц╔х╓ь╓н╠ЧеЗ╩Ч╢ж╓╛цы╓╓╓©╓А╓к, ╪╨гт╓╧╓К╓Ё╓х╓╛╓╒╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. SCSI CDROM ╓Р╩Щ╓ц╓ф╓╓╓К╬Л╧Г╓о, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к╟й╡╪╓н╧т╓Р╡ц╓╗╓ф ╨ф╔Ё╔С╔я╔╓╔К╓╥╓ф╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. лУцМ ╦╫╨ъ╓н GENERIC ╔╚║╪╔м╔К╓г╓о╬Е╓нюъдЙ╓о╔г╔у╔╘╔К╔х╓к╓й╓ц╓ф╓╓╓ч╓╧. лДбЙ╓н╓╒╓К╬Л╧Г╓о SCSI_DELAY ╓н©Тцм╓РаЩ╓Д╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. options "SCSI_DELAY=15" ╩Д╓н╔в╔Й╔С╔©╓о╓х╓ф╓д╓Б╓й╓╞цы╓╓╓н╓г╓╧. ╓и╓╕╓╥╓©╓И╓Х╓╓╓н╓г╓╥╓Г╓╕? ╔я╔И╔Л╔К╔╓╔С╔©╔у╔╖║╪╔╧╓г, лДбЙ╓о╓х╓С╓г╓Б╓й╓╞цы╓╓╓ю╓╠╓г╓╒╓К╓й╓И, ╔в╔Й╔С╔©╔э║╪╔х╓Р polled ╔Б║╪╔и╓кюъдЙ╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. &prompt.root; lptcontrol -p HP ╓н©╥╓╥╓╓╔в╔Й╔С╔©╓к╓о, ЁД╓Й╧Ч╓ъ╔Б║╪╔и╓г╩х╓╗╓й╓╓╓Б╓н╓╛╓╒╓К╓Х╓╕╓г╓╧(╢╟а╢╓к╓О╓╚╓ц╓©╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С╓╛). ╔©╔╓╔ъ╔С╔╟╓нлДбЙ╓н╓Х╓╕╓к╩в╓О╓Л╓ч╓╧. ╓О╓©╓╥╓н╔в╔М╔╟╔И╔Ю╓о╩Ч║╧ Signal 11 ╓н╔╗╔И║╪╓г╩ъ╓ч╓ц╓ф╓╥╓ч╓╓╓ч╓╧. Signal 11 ╔╗╔И║╪╓о╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓╛ ╣Ж╡д╓Рм©╓╗╓ф╓╓╓й╓╓╔А╔Б╔Й╓к╔╒╔╞╔╩╔╧╓╥╓Х╓╕╓х╓╥╓©╓х╓╜╓кх╞ю╦╓╥╓ч╓╧. ╓Ё╓н╓Х╓╕╓й╓Ё╓х╓╛╔И╔С╔ю╔Ю╓й╢жЁж╓г╣╞╓ц╓ф╓╓╓К╓Х╓╕╓й╓И, цМ╟у©╪╓╞д╢╨╨╓╥╓ф╓╓╓ц╓©йЩ╓╛ни╓╓╓г╓╧. ╓Ё╓н╪Й╓нлДбЙ╓о╓©╓╓╓ф╓╓╓н╬Л╧Г, ╟й╡╪╓н╓и╓а╓И╓╚╓г╓╧. ╓╫╓нлДбЙ╓╛фцдЙ╓н, ╓╒╓й╓©╓╛╪╚й╛╓гЁ╚х╞╓╥╓©╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓г╓н╓ъ╣╞╓ц╓ф╓╓╓К╓й╓И, ╓╒╓й╓©╓н╔Ё║╪╔и╓к╔п╔╟╓╛╓╒╓К╓н╓г╓╥╓Г╓╕. ╓╫╓Л╓╛ FreeBSD ╓н╔ы║╪╔╧╔╥╔╧╔ф╔Ю╓н╟ЛиТ╓х╢ьо╒╓╧╓КлДбЙ╓й╓И, ╔Ё║╪╔и╓к╔п╔╟╓╛╓╒╓К╓х╓╓╓╕╓Ё╓х╓к╓й╓Й╓ч╓╧. ╓╥╓╚╓╥╓ш╓х╓С╓и╓н╬Л╧Г, иАдл╓н FAQ ╓нфи╪т╓╛╓╫╓н╓Х╓╕╓й╔Ё║╪╔и╓Р╩х╓╕╓Х╓╕╓к╓й╓К╓╨╓ц╓ха╟╓к, ╓╫╓╕╓╓╓ц╓©лДбЙ╓ох╞╦╚╓╣╓Л, ╫╓ю╣╓╣╓Л╓ф╓╓╓К╓о╓╨╓г╓╧ (╓╫╓Л╓╛ -current ╓нлРлэ╓й╓н╓г╓╧╓╚╓И). ╓╫╓Л╓╛ FreeBSD ╓н╔п╔╟╓г╓о║ж╓й╓╓║в╓х╓╓╓╕╥ХдЙе╙╓й╔╠║╪╔╧╓х╓╥╓ф, ╓╫╓нлДбЙ╓нх╞ю╦╓╛╔в╔М╔╟╔И╔Ю╓Р╔Ё╔С╔я╔╓╔К╓╥╓ф╓╓╓К╓х╓╜╓г╓╒╓Й, ╔Ё╔С╔я╔╓╔КкХ╓ккХ╡С, ╔Ё╔С╔я╔╓╔И╓н╣Сф╟╓╛йя╓К╓х╓╓╓╕╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╓©╓х╓╗╓п, ╓╒╓й╓©╓╛ make buildworld ╓Р╪б╧т╓╥╓ф╓╓╓ф, ╔Ё╔С╔я╔╓╔И╓╛ ls.c ╓╚╓И ls.o ╓Р╔Ё╔С╔я╔╓╔К╓╥╓Х╓╕╓х╓╥╓©╓х╓╜╓к ╔Ё╔С╔я╔╓╔К╓к╪╨гт╓╥╓©╓х╓╥╓ч╓╧. ╓Б╓╕╟Леы make buildworld ╓Р╪б╧т╓╥╓©╓х╓╜╓к, ╓ч╓ц╓©╓╞ф╠╓╦╬Л╫Й╓г╔Ё╔С╔я╔╓╔К╓╛╪╨гт╓╥╓©╓н╓й╓И, ╓╫╓Л╓о build ╓╛╡У╓Л╓ф╓╓╓К (лУцМ: ╓д╓ч╓Й╔╫║╪╔╧╓к╔п╔╟╓╛╓╒╓К) ╓х╦ю╓╕╓Ё╓х╓г╓╧ -- ╔╫║╪╔╧╓Р╧╧©╥╓╥╓ф╓Д╓Й╓й╓╙╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╔Ё╔С╔я╔╓╔К╓╛йл╓н╬Л╫Й╓г╓╥╓╞╓╦╓ц╓ф╓╓╓©╓И, ╓╫╓Л╓о╔о║╪╔и╔╕╔╖╔╒╓нлДбЙ╓г╓╧. ╓╒╓й╓©╓н╓Д╓К╓ы╓╜╩Ж╓о: а╟╪т╓н╬Л╧Г╓о, ╓╫╓н╔в╔М╔╟╔И╔Ю╓н╢ж╟Ц╓ц╓©╔╒╔и╔Л╔╧╓ь╔╒╔╞╔╩╔╧╓╥╓Х╓╕╓х╓╥╓ф╓╓╓КиТй╛╓Р, gdb еЫ╓н╔г╔п╔ц╔╛╓г╦╚╓д╓╠╓ф╫╓ю╣╓╥╓ч╓╧. ╦Е╪т╓н╬Л╧Г╓о, ╔о║╪╔и╔╕╔╖╔╒╓клДбЙ╓╛╓й╓╓╓Ё╓х╓РЁн╓╚╓А╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓╫╓н╟Лхле╙╓й╦╤╟Ь╓х╓╥╓ф : ╔о║╪╔и╔г╔ё╔╧╔╞╓╛г╝╓Р╩Щ╓а╓╧╓╝╓ф╓╓╓К╓╚╓Бцн╓Л╓ч╓╩╓С: ╔╠║╪╔╧╓н╔у╔║╔С╓╛╓а╓Ц╓С╓хф╟╓╓╓ф╓╓╓ф╔г╔ё╔╧╔╞╓РнД╓Д╓╥╓ф╓╓╓К╓╚ Ён╓╚╓А╓ф╓╞╓ю╓╣╓╓ (╓©╓ж╓С, б╬╓ниТий╓Б╡Аг╝╓╥╓ф╓╓╓ч╓╧). CPU ╓╛╔╙║╪╔п║╪╔р║╪╔х╓╥╓ф╓╓╓ч╓╧: CPU ╓Р╔╙║╪╔п║╪╔╞╔М╔ц╔╞╓╥╓ф╓╓╓ч╓╩╓С╓╚? ╓╣╓Б╓й╓╠╓Л╓п CPU ╔у╔║╔С╓╛╩Ю╓С╓г╓╓╓К╓н╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓╓╓╨╓Л╓к╓╩╓Х, ╬╞╓й╓╞╓х╓БлДбЙ╡Р╥Х╓н╢ж╓г╓о ╔о║╪╔и╔╕╔╖╔╒╓╛ф╟╓╞╓ы╓╞╩ьдЙ╓╣╓Л╓©╬Р╥О╓гф╟╓╚╓╥╓ф╓╞╓ю╓╣╓╓. ╔╞╔М╔ц╔╞╓о╔г╔у╔╘╔К╔х╓нюъдЙ╓клА╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╓╒╓й╓©╓╛╔╞╔М╔ц╔╞╔╒╔ц╔в╓Р╓╥╓ф╓╓╓К╓н╓й╓И, цы╓╓╔╥╔╧╔ф╔Ю╓г╓Б, ╔╥╔╧╔ф╔Ю╓╛╬ф╓╜иу╓╓╓ф гЦ╓╓╢╧╓╗╓й╓╠╓Л╓п╓й╓И╓й╓╞╓й╓К╓Х╓Й╓╨╓ц╓х╔ч╔╥╓ю╓х╓╓╓╕╓Ё╓х╓Р Ёп╓╗╓ф╓╙╓╓╓©йЩ╓╛ни╓╓╓г╓╥╓Г╓╕. бГ╓╜╓╓╔Ё╔ъ╔Е╔к╔ф╔ё╓г╓офц╓к, ╓╒╓й╓©╓╛╓╫╓Л╓╛╟ба╢╓ю╓х╩в╓ц╓ф╓╓╓К╓╚╓и╓╕╓╚╓о╢ь╥╦╓й╓╞, ╔╙║╪╔п║╪╔╞╔М╔ц╔╞╓╥╓©╔╥╔╧╔ф╔Ю╓кх╞ю╦╓╥╓©лДбЙ╓к╓оф╠╬Пе╙╓г╓о╓╒╓Й╓ч╓╩╓С. ╡Ь╓╥╓╓╔А╔Б╔Й: ╓Б╓╥йё©Т╓н SIMM ╓Д DIMM ╓Р╩х╓ц╓ф╓╓╓К╓й╓И╓╫╓Л╓Ра╢иТх╢╓╓╓ф╓╚╓И Ёф SIMM ╓Д DIMM ╓Рйл╦д╓ках╓ъ╧Ч╓С╓ю╔╥╔╧╔ф╔Ю╓Рн╘╓а╬Е╓╡╓ф╓К╓Ё╓х╓г ╓и╓н DIMM/SIMM ╓╛╡Ь╓╥╓╓╓н╓╚, ╓╫╓Л╓х╓Бах╧Г╓О╓╩╓╛╟╜╓╓╓н╓╚ ╓хлДбЙ╓ниЩ╓╛╤╧╓ч╓Й╓ч╓╧. Ёз╢яе╙╓╧╓╝╓К╔ч╔╤║╪╔э║╪╔и╓нюъдЙ: ╓ш╓х╓С╓и╓н╬Л╧Г╓ки╦╫ЮюъдЙ╓г╫╫й╛╓й╔©╔╓╔ъ╔С╔╟╓Р, BIOS ╓нюъдЙ╓Д╔ч╔╤║╪╔э║╪╔и╬Е╓н╔╦╔Ц╔С╔я╔т╔С╓Рйя╓╗╓К╓Ё╓х╓г, ╓╣╓ч╓╤╓ч╓кйя╧╧╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╥╓╚╓╥╩Ч╓к╓о RAM ╓н ╔╒╔╞╔╩╔╧╔╕╔╖╔╓╔х╓РдЦ╓╞╓╥╓╧╓╝╓©╓Й RAM Speed: Turbo ╓Д ╓╫╓н╪Й╓н BIOS ╓нюъдЙ╓г╓╙╓╚╓╥╓й╣Сф╟╓╛╣╞╓Ё╓К╓Ё╓х╓╛╓╒╓Й╓ч╓╧. BIOS ╓Ри╦╫Ю╓нюъдЙ╓клА╓╧╓х╓╓╓╕╓н╓о╓╓╓╓╔╒╔╓╔г╔ё╔╒╓г╓╧╓╛, ╓╫╓на╟╓к╓╒╓й╓©╓нюъдЙ╓Р╫Я╓╜н╠╓А╓ф╓╙╓╓╓©йЩ╓╛╓╓╓╓╓г╓╥╓Г╓╕. ╔ч╔╤║╪╔э║╪╔и╓ь╓нее╦╩╓╛╟бдЙ╓╥╓ф╓╓╓й╓╓. ╓Б╓╥╩х╓ц╓ф╓╓╓й╓╓ I/O ╔э║╪╔и╓Д╔о║╪╔и╔г╔ё╔╧╔╞, CDROM еЫ╓╛╓╒╓К╓й╓И, ╟Лц╤╓╫╓Л╓И╓╚╓Иее╦╩╔╠║╪╔ж╔К╓Рх╢╓╜, ее╦╩╓╛╬╝╓╣╓йиИ╡ы╓й╓И╓й╓С╓х╓╚ф╟╨Н╓╧╓К╓╚Ёнг╖╓╥╓ч╓╥╓Г╓╕. ╓╒╓К╓╓╓ойл╓нее╦╩╓Р╩Н╓╥╓ф╓ъ╓ч╓╥╓Г╓╕. ╓╫╓н╩Ч╓о╓й╓К╓ы╓╞, ╬╞╓╥мфнл╓нбГ╓╜╓╓╓Б╓н╓г╩Н╓╥╓ч╓╥╓Г╓╕ (╓©╓х╓╗╓п, ╨ё╓нее╦╩мфнл╓╛ 250W ╓ю╓ц╓©╓И 300W ╓н╓Б╓н╓Р╩Н╓╥╓ч╓╧). SIG11 FAQ (╡╪╓к╪╗╓╥╓ч╓╧) ╓к╓о╓Ё╓Л╓И╓нлДбЙ╓н╓╧╓ы╓ф╓╛ ╬э╓╥╓╞юБлю╓╣╓Л╓ф╓╓╓ч╓╧. Linux ╓н╩Кею╓к╢П╓е╓╞╓Б╓н╓г╓╧╓╛, ╓Ё╓Л╓Бфи╓С╓г╓╙╓╓╓©йЩ╓╛╓╓╓╓╓г╓╥╓Г╓╕. ╓╫╓Ё╓г╓о╓ч╓©, ╔А╔Б╔Й╓н╔ф╔╧╔х╓Р╧т╓╕╔╫╔у╔х╔╕╔╖╔╒╓Д, ╔о║╪╔и╔╕╔╖╔╒╓╛╓й╓╪лДбЙ╓н╓╒╓К╔А╔Б╔Й╓Р╦╚ф╗╓╥╓ф╓╥╓ч╓╕╓╚╓к╓д╓╓╓ф╓Б ╣дою╓╣╓Л╓ф╓╓╓ч╓╧. ╨г╦Е╓к, ╓Ё╓Л╓И╓╛╓и╓Л╓Б╫У╓╠╓к╓й╓И╓й╓╚╓ц╓©╓И, FreeBSD ╓н╔п╔╟╓Рх╞╦╚╓╥╓©╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╟й╡╪╓нюБлю╓Рфи╓С╓г╬ЦЁ╡йС╧П╓РаВ╓ц╓ф╓╞╓ю╓╣╓╓. ╬э╨ы╓й FAQ ╓о, the SIG11 problem FAQ ╓к╓╒╓Й╓ч╓╧. ╣╞ф╟╓н╩Ч╓к╡Хлл╓╛©©╓ц╟е╓к╓й╓ц╓фф╠╢Э╓Б╪Х╓Л╓ч╓╩╓С. ╓Ё╓Л╓о ATI Mach 64 ╔с╔г╔╙╔╚║╪╔и╓н╢Шцн╓нлДбЙ╓г╓╧. ╓Ё╓нлДбЙ╓о╔╚║╪╔и╓╛╔╒╔и╔Л╔╧ 2e8 ╓Р╩х╓╓, 4 хжлэ╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓Б╓Ё╓Ё╓Р╩х╓╕╓х╓╓╓╕╓Ё╓х╓к╓╒╓Й╓ч╓╧. &man.sio.4; ╔и╔И╔╓╔п╓н╔п╔╟(╩емм?)╓н╓©╓А, 4 хжлэ╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓╛╓й╓╞╓ф╓Б, дл╬О╓Ё╓н╔╒╔и╔Л╔╧╓Р╩х╓╕ sio3(4 хжлэ╓н╔щ║╪╔х╓к╓╒╓©╓Й╓ч╓╧) ╓Рл╣╦З╓к╓╥╓ф╓Б, ╔и╔И╔╓╔п╓о╓Ё╓н╔╒╔и╔Л╔╧╓Р╓╣╓О╓Й╓ч╓╧. ╔п╔╟╓╛╫╓ю╣╓╣╓Л╓К╓ч╓г╓о, ╪║╓н╓Х╓╕╓к╓╥╓фбп╫Х╓╥╓ф╓╞╓ю╓╣╓╓. ╣╞ф╟╔в╔М╔С╔в╔х╓╛╫п╓©╓И ╓хфЧно╓╥╓ч╓╧ (╓Ё╓Л╓к╓Х╓Й╔╚║╪╔м╔К╓о╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔Б║╪╔и╓кфЧ╓Й╓ч╓╧). sio0, sio1, sio2, sio3(╓Ё╓Л╓И╓╧╓ы╓ф)╓Рл╣╦З╓к╓╥╓ч╓╧. ╓Ё╓Л╓к╓Х╓ц╓ф &man.sio.4; ╔и╔И╔╓╔п╓оф╟╨Н╓╥╓й╓╞╓й╓Й╓ч╓╧╓╛, лДбЙ╓о╓╒╓Й╓ч╓╩╓С. exit ╓х╔©╔╓╔в╓╥╓ф╣╞ф╟╓РбЁ╧т╓╥╓ч╓╧. ╓Б╓╥╔╥╔Й╔╒╔К╔щ║╪╔х╓Рм╜╦З╓к╓╥╓©╓╓╓н╓г╓╒╓Л╓п╟й╡╪╓нйя╧╧╓Р╧т╓й╓ц╓ф ©╥╓╥╓╓╔╚║╪╔м╔К╓Р╨Н╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. /usr/src/sys/i386/isa/sio.c ╓нцФ╓г 1 ╔У╫Й╓╒╓К 0x2e8 ╓х╓╓╓╕й╦╩ЗнС╓Рц╣╓╥, ╓Ё╓нй╦╩ЗнС╓х╓╫╓н╪Йа╟╓к╓╒╓К╔Ё╔С╔ч╓Р╨О╫Э╓╥╓ч╓╧(╦Е╓М╓н╔Ё╔С╔ч╓о╩д╓╥╓ч╓╧). ╦Е╓одл╬О╓н╪ЙбЁ╓╜╓к╓╥╓©╓╛╓ц╓ф©╥╓╥╓╓╔╚║╪╔м╔К╓Р╨Н╓Й╓ч╓╧. ╓Ё╓нбп╫Х╓Р╧т╓й╓ц╓©╦Е╓г╓Б╓ч╓ю X ╔╕╔ё╔С╔и╔╕╔╥╔╧╔ф╔Ю╓о╓╕╓ч╓╞ф╟╓╚╓й╓╓╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓╫╓н╬Л╧Г╓о, ╩хмя╓╥╓ф╓╓╓К XFree86 ╓╛╓╧╓╞╓й╓╞╓х╓Б XFree86 3.3.3 ╟й╧ъ╓г╓╒╓К╓Ё╓х╓РЁн╓╚╓А╓ф╓╞╓ю╓╣╓╓. ╓╫╓Л╟й╧ъ╓н╔п║╪╔╦╔Г╔С╓г╓о, Mach64 ╔╚║╪╔и╓Д╓╫╓Л╓И╓н╔╚║╪╔и╓н╓©╓А╓к╓д╓╞╓И╓Л╓© X ╔╣║╪╔п ╓нах╧Ч╓ъ╓Р╔╣╔щ║╪╔х╓╥╓ч╓╧. 128MB ╓н RAM ╓╛╓╒╓К╓н╓г╓╧╓╛, 64MB ╓╥╓╚г╖╪╠╓╥╓ч╓╩╓С. FreeBSD ╓╛╔А╔Б╔Й╓н╔╣╔╓╔╨╓Р BIOS ╓╚╓И╪Хфю╓╧╓КйЩк║╓ню╘╦б╓к╓Х╓Й, KB ц╠╟л╓г 16 ╔с╔ц╔хй╛╓ч╓г╓╥╓╚╦║╫п╓г╓╜╓ч╓╩╓С(╓╧╓й╓О╓а╨гбГ 65535KB=64MB ╓г╓╧. ╓Ё╓Л╓Х╓Й╬╞╓й╓╓╬Л╧Г╓Б╓╒╓Й╓ч╓╧. ╓╒╓К BIOS ╓н╬Л╧Г╓о╔А╔Б╔Й╔╣╔╓╔╨╓╛ 16MB ╓кю╘╦б╓╣╓Л╓ч╓╧). 64MB ╟й╬Е╓н╔А╔Б╔Й╓Рюя╓С╓г╓╓╓К╬Л╧Г, FreeBSD ╓о╓╫╓Л╓Р╦║╫п╓╥╓Х╓╕╓х╓╥╓ч╓╧. ╓╥╓╚╓╥╓╫╓н╩Н╓ъ╓о╪╨гт╓╧╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Ё╓нлДбЙ╓Р╡СхР╓╧╓К╓к╓о, ╟й╡╪╓к╪╗╓╧╔╚║╪╔м╔К╔╙╔в╔╥╔Г╔С╓Р╩хмя╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╢╟а╢╓й╔А╔Б╔Й╬ПйС╓Р BIOS ╓╚╓И╪Хфю╓╧╓КйЩк║╓Б╓╒╓Й╓ч╓╧╓╛, ╣╞ф╟╔ж╔М╔ц╔╞╓к╤У╓╜╓╛л╣╓╓╓©╓А╪баУ╓г╓╜╓ч╓╩╓С. ╣╞ф╟╔ж╔М╔ц╔╞╓нлДбЙ╓╛╡Р╥Х╓╣╓Л╓Л╓п, ╓╓╓д╓╚Ёхд╔ BIOS ╣║г╫╓Р╩хмя╓╥╓ф╢╟а╢╓й╔А╔Б╔Й╬ПйС╓Р╪Хфю╓г╓╜╓К╓Х╓╕╓к╓й╓К╓г╓╥╓Г╓╕. ╓х╓Й╓╒╓╗╓╨╦╫╨ъ╓о, ╔╚║╪╔м╔К╔╙╔в╔╥╔Г╔С╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓. options "MAXMEM=n" n ╓к╓о, ╔╜╔М╔п╔╓╔хц╠╟л╓г╔А╔Б╔Й╓ннл╓Р╩ьдЙ╓╥╓ч╓╧. 128MB ╓н╬Л╧Г╓о, 131072 ╓х╓й╓Й╓ч╓╧. FreeBSD 2.0 ╓╛ kmem_map too small! ╓х╦ю╓ц╓ф╔я╔к╔ц╔╞╓╥╓ч╓╧. ╔А╔ц╔╩║╪╔╦╓о, mb_map too small! ╓н╬Л╧Г╓Б╓╒╓Й╓ч╓╧. ╓Ё╓н╔я╔к╔ц╔╞╓о, ╔м╔ц╔х╔О║╪╔╞╔п╔ц╔у╔║(фц╓к mbuf ╔╞╔И╔╧╔©)╓н╡╬аш╔А╔Б╔Й╓╛л╣╓╞╓й╓ц╓©╓Ё╓х╓Р╪╗╓╥╓ч╓╧. ╟й╡╪╓н╔╙╔в╔╥╔Г╔С╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓кди╡ц╓╥╓ф mbuf ╔╞╔И╔╧╔©╓к╩хмя╓г╓╜╓К╡╬аш╔А╔Б╔Й╓ннл╓РаЩ╓Д╓╥╓ф╓╞╓ю╓╣╓╓. options "NMBCLUSTERS=n" n ╓к╓о, ф╠╩Ч╓к╩хмя╓╥╓©╓╓ TCP ╔Ё╔м╔╞╔╥╔Г╔С╓н©Т╓к╠Ч╓╦╓ф 512 ╓╚╓И 4096 ╓ч╓г╓н©Тцм╓Р╩ьдЙ╓г╓╜╓ч╓╧. ╓х╓Й╓╒╓╗╓╨ 2048 ╓Р╩Н╓╥╓ф╓ъ╓К╓н╓Р╓╙╓╧╓╧╓А╓╥╓ч╓╧. ╓Ё╓Л╓г╔я╔к╔ц╔╞╓о╢╟а╢╓нм╫ки╓г╓╜╓К╓о╓╨╓г╓╧. mbuf ╔╞╔И╔╧╔©╓нЁД╓ЙеЖ╓ф, ╩хмя╬У╤╥╓к╓д╓╓╓ф╓о, netstat -m ╓гцн╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. NMBCLUSTERS ╓н╔г╔у╔╘╔К╔хцм╓о 512 + MAXUSERS * 16 ╓г╓╧. ©╥╓╥╓╓╔╚║╪╔м╔К╓г╨ф╣╞ф╟╓╧╓К╓х CMAP busy panic ╓х╓й╓ц╓ф╔я╔к╔ц╔╞╓Р╣╞╓Ё╓╥╓ф╓╥╓ч╓╓╓ч╓╧. ╔у╔║╔╓╔К /var/db/kvm_*.db ╓к╓╙╓╓╓фхо╟оЁ╟╓н╔г║╪╔©╓Р╦║╫п╓╧╓К╓©╓А╓н╔М╔╦╔ц╔╞╓о╪╨гт╓╧╓К╓Ё╓х╓╛╓╒╓Й, ╓Ё╓╕╓╥╓©л╥╫Б╓н╓╒╓К╔у╔║╔╓╔К╓Р╩хмя╓╧╓К╓Ё╓х╓г╔я╔к╔ц╔╞╓Р╟З╓╜╣╞╓Ё╓╧╓Ё╓х╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓╛╣╞╓Ё╓ц╓©╓й╓И, ╔╥╔С╔╟╔К╔Ф║╪╔╤╓г╨ф╣╞ф╟╓╥╓©╦Е╓к, ╟й╡╪╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; rm /var/db/kvm_*.db ahc0: brkadrint, Illegal Host Access at seqaddr 0x0 ╓х╓╓╓╕╔╗╔И║╪╓╛╫п╓ч╓╧ ╓Ё╓Л╓о Ultrastor SCSI Host Adapter ╓х╬вфм╓╥╓ф╓╓╓ч╓╧. ╣╞ф╟╩Ч╓к kernel configuration ╔А╔к╔Е║╪╓кфЧ╓Й, лДбЙ╓Р╣╞╓Ё╓╥╓ф╓╓╓К uha0 ╓Р disable ╓к╓╥╓ч╓╥╓Г╓╕. sendmail ╓╛ mail loops back to myself ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓Р╫п╓╧╓н╓г╓╧╓╛. ╓Ё╓н╩Ж╓о, sendmail FAQ ╓к╪║╓н╓Х╓╕╓к╫Я╓╓╓ф╓╒╓Й╓ч╓╧. * "Local configuration error" ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛╫п╓ч╓╧. нЦ╓╗╓п: 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error ╓н╓Х╓╕╓йй╙╓г╓╧╓╛, ╓и╓н╓Х╓╕╓к╓╥╓©╓И╓Ё╓нлДбЙ╓Р╡Р╥Х╓г╓╜╓ч╓╧╓╚? ╓Ё╓Л╓о, ╓©╓х╓╗╓п domain.net ╓н╓Х╓╕╓й╔и╔А╔╓╔С╟╦╓ф╓н╔А║╪╔К╓Р MX record ╓г фцдЙ╓н╔ш╔╧╔х (╓Ё╓Ё╓г╓о relay.domain.net) ╓каВ╓М╓╕╓х╓╥╓©╓н╓к, ╓╫╓н╔ш╔╧╔х╓г╓о domain.net ╟╦╓ф╓н╔А║╪╔К╓Р╪У╓╠╪Х╓Л╓К╓Х╓╕╓йюъдЙ╓к ╓й╓ц╓ф╓╓╓й╓╓╬Л╧Г╓г╓╧. юъдЙ╓н╨щ╓к FEATURE(use_cw_file) ╓Р ╩ьдЙ╓╥╓ф╓╒╓К╬Л╧Г╓к╓о /etc/sendmail.cw ╓нцФ╓к domain.net ╓Р ди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╓╞╓о, /etc/sendmail.cf ╓нцФ╓к "Cw domain.net" ╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓о╓Д╦╫╨ъ╓н sendmail FAQ ╓о sendmail release ╓х╓о╟Л╫О╓к╓ойщ╪И╓╣╓Л╓ф╓╓╓ч╓╩╓С. ╓╥╓╚╓╥╪║╓н╔м╔ц╔х╔к╔Е║╪╔╧╓кдЙ╢Эе╙╓кеЙ╧ф╓╣╓Л╓ф╓ч╓╧. comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers, news.answers. ╓ч╓©, ╔А║╪╔К╥пмЁ╓г╔Ё╔т║╪╓РфЧ╪Й╓╧╓К╬Л╧Г╓о mail-server@rtfm.mit.edu ╟╦╓ч╓гкэй╦╓к send usenet/news.answers/mail/sendmail-faq ╓х╫Я╓╓╓фаВ╓Й╓ч╓╧. ╔Й╔Б║╪╔х╔ч╔╥╔С╬Е╓н╔у╔К╔╧╔╞╔Й║╪╔С╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓╛╓╕╓ч╓╞ф╟╓╚╓й╓╓ ╔Й╔Б║╪╔х╔ч╔╥╔С╓н╔©║╪╔ъ╔й╔К╔©╔╓╔в╓╛ FreeBSD ╓н╔Ё╔С╔╫║╪╔К╓ги╛мв╓х╓╣╓Л╓ф╓╓╓К cons25 ╟йЁ╟╓н╓Б╓н╓г╓╧. ╓Ё╓нлДбЙ╓Р╡Р╥Х╓╥╓╕╓КйЩк║╓о╓╓╓М╓╓╓М╓╒╓Й╓ч╓╧: ╔Й╔Б║╪╔х╔ч╔╥╔С╓к╔М╔╟╔╓╔С╓╥╓©╦Е, ╓╫╓н╔Й╔Б║╪╔х╔ч╔╥╔С╓╛ ansi ╓╚ sco ╓н╔©║╪╔ъ╔й╔К╔©╔╓╔в╓Рцн╓ц╓ф╓╓╓К╓й╓И, shell йя©Т╓н TERM ╓к╓╫╓Л╓И╓н╓╓╓╨╓Л╓╚╓РюъдЙ╓╥╓ч╓╧. FreeBSD ╓н╔Ё╔С╔╫║╪╔Кб╕╓г screen ╓н╓Х╓╕╓й VT100 ╔╗╔ъ╔Е╔Л║╪╔©╓Р╩хмя╓╥╓ч╓╧. screen ╓о╟Л╓д╓н╔©║╪╔ъ╔й╔К╓нцФ╓гйё©Т╓н╔╩╔ц╔╥╔Г╔С╓РйбнСф╟╨Н╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧╓╥, кэмХ╓н╣║г╫╓Бм╔╓Л╓ф╓╓╓ч╓╧. Ёф║╧╓н screen ╓н╔╕╔ё╔С╔и╔╕╓о VT100 ╔©║╪╔ъ╔й╔К╓н╓Х╓╕╓к©╤╓КиЯ╓╕╓н╓г, ╔Й╔Б║╪╔хб╕╓гюъдЙ╓╣╓Л╓К╓ы╓╜ TERM йя©Т╓о vt100 ╓х╓й╓Й╓ч╓╧. ╔Й╔Б║╪╔х╔ч╔╥╔С╓н╔©║╪╔ъ╔й╔К╔г║╪╔©╔ы║╪╔╧╓к cons25 ╓н╔╗╔С╔х╔Й╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ч╓╧. ╓Ё╓н╔╓╔С╔╧╔х║╪╔КйЩк║╓о╔Й╔Б║╪╔х╔ч╔╥╔С╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓к╟мб╦╓╥╓ч╓╧. ╔Й╔Б║╪╔х╓н╔╥╔╧╔ф╔Ю╓н╔╥╔╧╔ф╔Ю╢имЩ╔ч╔к╔Е╔╒╔К╓╛лР╓кн╘╓д╓Ё╓х╓г╓╥╓Г╓╕. FreeBSD б╕╓г X ╔╣║╪╔п╓Р╣╞ф╟╓╥╓ф, ╔Й╔Б║╪╔х╔ч╔╥╔С╓к xterm ╓Д rxvt ╓н╓Х╓╕╓й X ╔ы║╪╔╧╓н╔©║╪╔ъ╔й╔К╔╗╔ъ╔Е╔Л║╪╔©╓Р╩х╓ц╓ф╔М╔╟╔╓╔С╓╥╓ч╓╧. (лУцМ: фЭкэ╦Л╓╛и╛мв╓й╬Л╧Г╓о kterm еЫ╓Р мЬмя╓╥╓ч╓╧) ╔Й╔Б║╪╔х╔ш╔╧╔х╓н TERM йя©Т╓о xterm ╓Б╓╥╓╞╓о vt100(лУцМ: ╓Б╓╥╓╞╓о kterm) ╓кюъдЙ╓╥╓ч╓╧. ╩Д╓н╔ч╔╥╔С╓г calcru: negative time... ╓хи╫╪╗╓╣╓Л╓К╓н╓г╓╧╓╛ ╓Ё╓Л╓о, ЁД╓Й╧Ч╓ъ╓к╢ьо╒╓╧╓К╓╣╓ч╓╤╓ч╓йит╤Я╧Г╓к╓Х╓ц╓фх╞ю╦╓╥╓ч╓╧. ╓╒╓К╓╓╓о, ╓╒╓К╔г╔п╔╓╔╧╓╛╦╣║╧╩Щ╓ц╓ф╓╓╓К╔п╔╟╓╛и╫лл╡╫╓╥╓©╓н╓╚╓Бцн╓Л╓ч╓╩╓С. ╓Ё╓н╬и╬У╓Р╨ф╦╫╓╣╓╩╓К╟Л╓д╓нйЩк║╓х╓╥╓ф, ╔я╔И╔Л╔К╔щ║╪╔х╬Е╓г, TCP/IP ╓Р бГ╓╜╓й MTU ╓гаЖ╓И╓╩╓К╓х╓╓╓╕╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╔╟╔И╔у╔ё╔ц╔╞╔╒╔╞╔╩╔И╔Л║╪╔©╓╛╓Ё╓н╬и╬У╓Р╣╞╓Ё╓╧╓Ё╓х╓╛╓╒╓Й╓ч╓╧╓╛, ╓╫╓н╬Л╧Г╓о╓ч╓╨, ╔╚║╪╔и╓нЁД╓Й╧Ч╓ъюъдЙ╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓нлДбЙ╓ниШ╨Нмя╓х╓╥╓ф, ╔в╔М╔╩╔╧╓╛ SIGXCPU exceeded cpu time limit ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓х╓х╓Б╓к╫╙н╩╓╥╓ф╓╥╓ч╓╕, ╓х╓╓╓╕╓Б╓н╓╛╓╒╓Й╓ч╓╧. 1998 г╞ 11 ╥Н 29 фЭ╓к╦ЬЁ╚╓╣╓Л╓© FreeBSD 3.0 ╟й╧ъ╓г ╓Ё╓нлДбЙ╓╛╡Р╥Х╓╥╓й╓╓╓й╓И, ╪║╓н sysctl йя©Т╓Р╔╩╔ц╔х╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; sysctl -w kern.timecounter.method=1 ╓Ё╓Л╓о, ╔я╔у╔╘║╪╔ч╔С╔╧╓ь╤╞╓╓╠ф╤а╓Рм©╓╗╓ч╓╧╓╛, лДбЙ╓нх╞ю╦╓кхФ╓ы╓Л╓п╓╙╓╫╓И╓╞╣╓╓к╓й╓И╓й╓╓дЬеы╓г╓╥╓Г╓╕. ╓Б╓╥, ╓Ё╓Л╓г╓Б╓ч╓юлДбЙ╓╛╩д╓К╓Х╓╕╓й╓И, ╔╚║╪╔м╔К╔╙╔в╔╥╔Г╔С╓н NTIMECOUNTER ╓РбГ╓╜╓йцм╓каЩ╓Д╓╥╓ф╓╞╓ю╓╣╓╓. NTIMECOUNTER=20 ╓к╓ч╓гаЩ╓Д╓╥╓ф╓Б╡Р╥Х╓╥╓й╓╓╬Л╧Г╓о, ╥в╩Ч╫ХмЩ╓н©╝мЙю╜╓╛йщ╓ф╓й╓╓дЬ╓нЁД╓Й╧Ч╓ъ╓╛, ╓╫╓н╔ч╔╥╔С╬Е╓г╣╞╓Ё╓ц╓ф╓╓╓К╓Ё╓х╓Р╟улё╓╥╓ч╓╧. pcm0 not found ╓х╓╓╓╕и╫╪╗╓Р╦╚╓©╓Й ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓к╓о device pcm0 ╓х ╫Я╓╓╓ф╓╒╓К╓н╓к╔╣╔╕╔С╔и╔╚║╪╔и╓╛ pcm1 ╓х╓╥╓ф х╞╦╚╓╣╓Л╓©╓Й╓╥╓ч╓╧. ╓Ё╓Л╓о FreeBSD 3.x ╓г PCI ╓н╔╣╔╕╔С╔и╔╚║╪╔и╓Р╩х╓ц╓ф╓╓╓К╓х╓╜╓к х╞ю╦╓╥╓ч╓╧. pcm0 ╔г╔п╔╓╔╧╓о ISA ╓н╔╚║╪╔июЛмя╓км╫лС╓╣╓Л╓ф╓╓╓К╓Б╓н╓г╓╧. ╓Ё╓н╓©╓А, ╓╒╓й╓©╓╛ PCI ╔╚║╪╔и╓Р╩Щ╓ц╓ф╓╓╓К╓х╓╜╓о╓Ё╓н╔╗╔И║╪╓╛и╫╪╗╓╣╓Л, ╔╚║╪╔и╓о pcm1 ╓х╓╥╓ф╦║╫п╓╣╓Л╓ч╓╧. ╓Ё╓н╥ы╧П╓Р, ц╠╓к╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓неЖЁ╨╧т╓Р device pcm1 ╓кйя╧╧╓╧╓К╓Ё╓х╓г мчю╘╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╩╓С. ╓╫╓н╩Ч╓о pcm1 ╓╛ ISA ╔╚║╪╔и╓н╓©╓А╓км╫лС╓╣╓Л, PCI ╓н╔╚║╪╔и╓о pcm2 ╓х╓╥╓ф (pcm1 not found ╓н╥ы╧П╓х╓х╓Б╓к) ╦║╫п╓╣╓Л╓ч╓╧. PCI ╓н╔╣╔╕╔С╔и╔╚║╪╔и╓Р╩Щ╓ц╓ф╓╓╓К╓н╓й╓И╓п, ╟й╡╪╓н╓Х╓╕╓к╓╥╓ф snd0 ╔г╔п╔╓╔╧╓н╓╚╓О╓Й╓к snd1 ╓Р╨Н╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. &prompt.root; cd /dev &prompt.root; ./MAKEDEV snd1 ╓Ё╓н╬У╤╥╓о FreeBSD 4.x ╓г╓ою╦╓╦╓ч╓╩╓С. б©╓╞╓неьно╓н╥К╡л╓Х╓Й PnP цФ©╢╓к╨Н╓Йбь╓╗╓И╓Л, ╦╫╨ъ, pcm0 ╔г╔п╔╓╔╧╓о ISA ╔╚║╪╔июЛмя╓км╫лС╓╣╓Л╓©╓Б╓н╓г╓о╓й╓╞╓й╓Й╓ч╓╥╓©. ╔в╔И╔╟╔╒╔С╔и╔в╔Л╔╓╓н╔╚║╪╔и╓╛г╖╪╠╓╣╓Л╓й╓╞╓й╓Й╓ч╓╥╓© (╓ч╓©╓о, unknown ╓хг╖╪╠╓╣╓Л╓К╓Х╓╕╓к╓й╓Й╓ч╓╥╓©). ╦╫╨ъ╓н FreeBSD 4.x ╓о╓Х╓Й PnP цФ©╢╓к ╓й╓ц╓ф╓╓╓ч╓╧. ╓╫╓ниШ╨Нмя╓н╠ф╤а╓г, FreeBSD 3.x ╓гф╟╓╓╓ф╓╓╓© PnP ╔г╔п╔╓╔╧ (╓©╓х╓╗╓п╔╣╔╕╔С╔и╔╚║╪╔и╓ДфБб╒╔Б╔г╔Ю) ╓нцФ╓к╓о, ф╟╓╚╓й╓╞╓й╓ц╓ф╓╥╓ч╓ц╓©╓Б╓н╓Б╓╒╓Й╓ч╓╧. ╓Ё╓н╣Сф╟╓н╦╤╟Ь╓о Peter Wemm ╓╛ freebsd-questions ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓к╫Я╓╓╓©, ╟й╡╪╓н ║жFreeBSD 4.x ╓к╔╒╔ц╔в╔╟╔Л║╪╔и╓╥╓©╓х╓Ё╓МфБб╒╔Б╔г╔Ю╓╛ ╦╚╓д╓╚╓И╓й╓╞╓й╓ц╓©║в╓х╓╓╓╕╔А║╪╔К╓г╡РюБ╓╣╓Л╓ф╓╓╓ч╓╧. (╓О╓╚╓Й╓Д╓╧╓╞╓╧╓К╓©╓А╓к [] фБ╓к ╔Ё╔А╔С╔х╓Р╡ц╓╗╓ч╓╥╓©).
PnP BIOS ╓о╓╒╓И╓╚╓╦╓А, [╔Б╔г╔Ю╓Р] ╔щ║╪╔х╤У╢ж╓кб╦╨ъ╓╥╓ф╓╓╓К╓╚╓н╓Х╓╕╓кюъдЙ╓╥╓ч╓╧. ╓╫╓н╓©╓А [3.x ╓г╓о] ╫╬мХ╓н╪Йк║╓к╢П╓е╓╞ ISA ╔г╔п╔╓╔╧╓н╦║╨В╓к╓Х╓Й, ╔Б╔г╔Ю╓нб╦╨ъ╓Р║жх╞╦╚║в╓г╓╜╓ч╓╧. 4.0 ╓н ISA ╔Ё║╪╔и╓о, ╓Х╓Й PnP цФ©╢╓к╓й╓ц╓ф╓╓╓ч╓╧. [3.x ╓г╓о] ISA ╔г╔п╔╓╔╧╓н╦║╨В╓╛║ж╓о╓╟╓Л╓©║в╔г╔п╔╓╔╧╓Рх╞╦╚╓╥╓ф, ╪║╓к PNP ╔г╔п╔╓╔╧ ID ╓н╔ч╔ц╔а╓╛╧т╓й╓О╓Л╓К╓Ё╓х╓г╔Й╔╫║╪╔╧╓н╤╔╧Г╓╛х╞ю╦╓╥, ╔г╔п╔╓╔╧╓н╦║╨В╓к╪╨гт╓╧╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╓╥╓©╓╛╓ц╓ф, 4,0 ╓н ISA ╔Ё║╪╔и╓г╓о фС╫е╓к╦║╨В╓╥╓й╓╓╓Х╓╕, ╔в╔М╔╟╔И╔ч╔ж╔К╓й╔╚║╪╔и╓Р ╨г╫И╓кл╣╦З╓к╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓о, бп╠Ч╓╥╓ф╓╓╓К PnP ╔о║╪╔и╔╕╔╖╔╒╓н PnP ID ╓╛, м╫╓А╓О╓╚╓ц╓ф╓╓╓Ки╛мв╓╛╓╒╓К, ╓х╓╓╓╕╓Ё╓х╓Р╟улё╓╥╓ч╓╧. ╔Ф║╪╔╤╓╛╓Ё╓н╣Сф╟╓к╓Б╓ц╓х╪Й╓РфЧ╓Л╓И╓Л╓К╓Х╓╕╓к╓╧╓К╓Ё╓х╓╛ TODO ╔Й╔╧╔хцФ╓к╓╒╓╡╓И╓Л╓ф╓╓╓ч╓╧.
3.0 ╓гф╟╨Н╓╥╓ф╓╓╓©╔г╔п╔╓╔╧╓Р 4.0 ╓г╓Бф╟╨Н╓╧╓К╓Х╓╕╓к╓╧╓К╓к╓о, ╓╫╓Л╓н PnP ID ╓Рд╢╓ы, ISA ╔г╔п╔╓╔╧╓н╦║╨В╓╛ PnP ╔г╔п╔╓╔╧╓н╪╠йл╓к╩х╓ц╓ф╓╓╓К╔Й╔╧╔х╓к╓╫╓Л╓Рди╡ц╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔г╔п╔╓╔╧╓н╦║╨В╓к╩х╓О╓Л╓К &man.pnpinfo.8; ╓Рмя╓╓╓ф, PnP ID ╓Рфю╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓©╓х╓╗╓п, фБб╒╔Б╔г╔Ю╓к╢ь╓╧╓К &man.pnpinfo.8; ╓н╫пно╓о, ╟й╡╪╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. &prompt.root; pnpinfo 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) [more TAG lines elided] 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 и╛мв╓й╬ПйС╓о, ╫пно╓нкаф╛╓к╓╒╓К Vendor ID ╧т╓к╓╒╓Й╓ч╓╧. ╓╚╓ц╓Ё╓нцФ╓н 16 ©й©Т (нЦ╓нцФ╓г╓о 0x3024a341) ╓╛ PnP ID ╓г, д╬а╟╓нй╦╩ЗнС (PMC2430) ╓о╔Ф╔к║╪╔╞╓й ASCII ID ╓г╓╧. ╓Ё╓н╬ПйС╓о╔у╔║╔╓╔К /usr/src/sys/isa/sio.c ╓к ди╡ц╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓ч╓╨╪╨гт╓╥╓©╓х╓╜╓кхВ╓╗╓ф sio.c ╓н ╔п╔ц╔╞╔╒╔ц╔в╓Р╪Х╓К╓ы╓╜╓г╓╧. ╬ЦЁ╡йС╧П╓РаВ╓К╓©╓А╓к╫╓ю╣╔я╔ц╔а╓Р ╨Н╓К╩Ч╓к╓Би╛мв╓к╓й╓К╓г╓╥╓Г╓╕ (send-pr ╓╥╓Х╓╕╓х╓╥╓ф╓╓╓ч╓╧╓Х╓м║╘). sio.c ╓Рйт╫╦╓╥╓ф╟й╡╪╓н╧т╓Рц╣╓╥╓ф╓╞╓ю╓╣╓╓. static struct isa_pnp_id sio_ids[] = { ╓╫╓╥╓ф╓╒╓й╓©╓н╔г╔п╔╓╔╧╓н╔╗╔С╔х╔Й╓Рди╡ц╓╧╓Кю╣╓╥╓╓╬Л╫Й╓Рц╣╓╥╓ч╓╧. ╔╗╔С╔х╔Й╓о╟й╡╪╓н╓Х╓╕╓й╥а╓Р╓╥╓ф╓╓╓ф, &man.pnpinfo.8; ╓н ╫пно╓к╓╒╓К ╔г╔п╔╓╔╧╓нюБлю╓на╢иТ (╓Б╓╥╪Щ╓ч╓Л╓п) ╓╚╟ЛиТ╓х╓х╓Б╓к╧т╓н╠╕╓нйЩ╓н╔Ё╔А╔С╔хнн╟Х╓к╫Я╓╚╓Л╓ф╓╓╓К ASCII ╔ы╔С╔ю ID ╓г╔╫║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. {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 */ ╓╒╓й╓©╓н╔г╔п╔╓╔╧╓н16©й©Т╓н╔ы╔С╔ю ID ╓Рю╣╓╥╓╓╬Л╫Й╓к ди╡ц╓╥, ╔у╔║╔╓╔К╓Р╔╩║╪╔ж╓╥╓ф╔╚║╪╔м╔К╓Р╨Н╓Йд╬╓╥╓ф╨ф╣╞ф╟╓╥╓ч╓╧. ╓╒╓й╓©╓н╔г╔п╔╓╔╧╓о FreeBSD 3.x ╓н╩Ч╓хф╠╓╦╓Х╓╕╓к sio ╓х╓╥╓ф╦╚╓д╓╚╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓К╓о╓╨╓г╓╧.
top ╓Д systat ╓н ╪б╧тцФ╓к nlist failed ╓х╓╓╓╕ ╔╗╔И║╪╓╛╓г╓ч╓╧. ╓Ё╓н╔╗╔И║╪╓о, ╪б╧т╓╥╓Х╓╕╓х╓╥╓©╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓╛ ╓╒╓К╔╚║╪╔м╔К╔╥╔С╔э╔К╓Р╦║╨В╓╥╓©╥К╡л, ╡©╓И╓╚╓нмЩмЁ╓г╓╫╓н╦║╨В╓к╪╨гт╓╥╓©, ╓х╓╓╓╕╓Ё╓х╓Р╟улё╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓о, ╟й╡╪╓к╪╗╓╧╓╓╓╨╓Л╓╚╓нмЩмЁ╓к╓Х╓К╓Б╓н╓г╓╧. ╔╚║╪╔м╔К╓х╔Ф║╪╔╤╔И╔С╔и╓╛ф╠╢Э╓╥╓ф╓╓╓й╓╓ (╓д╓ч╓Й ╔╚║╪╔м╔К╓о©╥╓╥╓╓╓Б╓н╓Р╧╫цш╓╥╓©╓╛, installworld ╓о╧т╓й╓ц╓ф╓╓╓й╓╓. ╓╒╓К╓╓╓о╓╫╓н╣у) ╓н╓г, ╔╥╔С╔э╔К╔ф║╪╔ж╔К╓╛╔Ф║╪╔╤╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓н╧м╓╗╓ф╓╓╓К╓Б╓н╓х╟ш╓й╓ц╓ф╓╓╓К. ╓Б╓╥╓Ё╓н╔╠║╪╔╧╓й╓И, ╟Ло╒╓н╔╒╔ц╔в╔╟╔Л║╪╔и╪Й╫Г╓к╫╬╓ц╓ф╔╒╔ц╔в╔╟╔Л║╪╔и╓Р╧т╓й╓ц╓ф╓╞╓ю╓╣╓╓ (ю╣╓╥╓╓╓Д╓ЙйЩ╓о /usr/src/UPDATING ╓к╫Я╓╓╓ф╓╒╓Й╓ч╓╧). ╔╚║╪╔м╔К╓Р╔М║╪╔и╓╧╓К╓н╓к /boot/loader ╓Р╩х╓О╓╨, д╬юэ boot2 (&man.boot.8; ╩╡╬х) ╓╚╓И╔М║╪╔и╓╥╓ф╓╓╓К. ╓Б╓а╓М╓С /boot/loader ╓Р╩х╓О╓й╓╞╓х╓БлДбЙ╓о╓й╓╓╓н╓г╓╧╓╛, /boot/loader ╓о╟Лхле╙╓к, ╔Ф║╪╔╤╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓╚╓И╔╚║╪╔м╔К╔╥╔С╔э╔К╓Р ╔╒╔╞╔╩╔╧╓г╓╜╓К╓Х╓╕╓к╓╧╓К╓©╓А╓н╣║г╫╓Р╩Щ╓ц╓ф╓╓╓ч╓╧.
╬╕мя╔╒╔в╔Й╔╠║╪╔╥╔Г╔С лУ: ╩Ё╡╪ ╫ъ junkun@esys.tsukuba.ac.jp, 1997 г╞ 11 ╥Н 10 фЭ. ╓Ё╓н╬о╓о╓ч╓ю╓ч╓ю╬ПйС╓╛б╜╓Й╓ч╓╩╓С. ╬ПйС╓Рди╡ц╓╥╓ф╓╞╓Л╓К╓Х╓╕╓й╢К╤х╓Рбт╓ак╬╓С╓г╓╓╓ч╓╧. FreeBSD ╔╟╔К║╪╔в╓о╓Ё╓Ё╓к╨э╓ц╓ф╓╓╓К╢К╤х╓╚╓И╓н╤Ба╛е╙╓й╩ы╠Г╓Р╢Эбт╓╥╓ф╓о╓╓╓ч╓╩╓С╓н╓г, йТ╩е╨Н╤х╓н╟Л╓д╓х╓╥╓ф╥г╨э╓╥╓ф╓╓╓ч╓╧(╓╫╓╥╓ф FreeBSD ╓╛╥╦╓О╓КюКеа╓о, д╧╓╓лэ╓г╦╚╓К╓х FreeBSD ╓кбп╓╥╓ф╓Х╓╓йЩ╦Ч╓ьф╞╓╞╓х╩в╓ц╓ф╓╓╓ч╓╧). ╩Д╓©╓а╓о╬╕мя╔╫╔у╔х╔╕╔╖╔╒╔ы╔С╔ю╓к, ╓Ё╓Ё╓гю╫ий╓РюКеа╓╥╓ф╓Б╓И╓╕╓Ё╓х╓Рк╬╓С╓г╓╓╓ч╓╧. ╬э╓╥╓╞╓о, ╬╕мя╔╫╔у╔х╔╕╔╖╔╒╔ы╔С╔юмВ╓н╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. FreeBSD мя╓н Motif ╓о╓и╓╕╓Д╓ц╓©╓И╪Й╓кфЧ╓Й╓ч╓╧╓╚ FreeBSD мя╓ннВ╡ахг ELF Motif 2.1.20 (i386 хг, Alpha хг) ╓к╢ь╓╧╓К╬ПйС╓оApps2go ╓╚╓И ╪Й╓кфЧ╓Л╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓ню╫ий╓к╓о, ║жЁ╚х╞╪тхг(development edition)║в ╓х, ╓Х╓Й╟б╡а╓й║ж╔И╔С╔©╔╓╔Юхг(runtime edition)║в ╓нфС╓д╓нхг╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓И╓ню╫ий╓о╟й╡╪╓нй╙╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. OSF/Motif manager, xmbind, panner, wsm. uil, mrm, xm, xmcxx, ╔╓╔С╔╞╔К║╪╔и╔у╔║╔╓╔К╓Д Imake ╔у╔║╔╓╔К╓х╓╓╓ц╓©Ё╚х╞╪т╦Ч╓╠╔╜╔ц╔х FreeBSD 3.0 ╟й╧ъ╓гмЬмя╓г╓╜╓К ELF хг╔╧╔©╔ф╔ё╔ц╔╞╔И╔╓╔ж╔И╔Й, ╓╙╓Х╓с╔ю╔╓╔й╔ъ╔ц╔╞╔И╔╓╔ж╔И╔Й ╔г╔Б╔С╔╧╔х╔Л║╪╔╥╔Г╔С╔в╔М╔╟╔И╔Ю цМй╦╓╧╓К╨щ╓к╓о FreeBSD мя╓н Motif ╓г╓╒╓К╓Ё╓х╓Р╓╜╓а╓С╓х Ёнг╖╓╥╓ф╓╞╓ю╓╣╓╓(╓╒╓й╓©╓нмъ╓╥╓╓╔╒║╪╔╜╔ф╔╞╔а╔Ц╓Р╩ьдЙ╓╧╓К╓н╓Б к╨╓Л╓й╓╓╓г╓╞╓ю╓╣╓╓!). NetBSD ╓Д OpenBSD мя╓н Motif ╓Б╓ч╓©, Apps2go╓╚╓ИхнгД╓╣╓Л╓ф╓╓╓ч╓╧. ╦╫╨ъ, FTP ╓к╓Х╓К ╔ю╔╕╔С╔М║╪╔и╓н╓ъмЬмя╡дг╫╓г╓╧. ╓Х╓Й╬э╓╥╓╓╬ПйС╓о Apps2go WWW page лД╓╓╧Г╓О╓╩╓о Sales ╓ч╓©╓о Support ее╩р╔А║╪╔К╔╒╔и╔Л╔╧. ╓Б╓╥╓╞╓о phone (817) 431 8775 or +1 817 431-8775 б╬╓н FreeBSD мя Motif 2.1(ELF хг, a.out хг) ╓к╢ь╓╧╓К╬ПйС╓о Metro Link ╓╚╓И╪Й╓кфЧ╓Л╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓ню╫ий╓о╟й╡╪╓нй╙╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. OSF/Motif manager, xmbind, panner, wsm. uil, mrm, xm, xmcxx, ╔╓╔С╔╞╔К║╪╔и╔у╔║╔╓╔К╓Д Imake ╔у╔║╔╓╔К╓х╓╓╓ц╓©Ё╚х╞╪т╦Ч╓╠╔╜╔ц╔х ╔╧╔©╔ф╔ё╔ц╔╞╔И╔╓╔ж╔И╔Й, ╓╙╓Х╓с╔ю╔╓╔й╔ъ╔ц╔╞╔И╔╓╔ж╔И╔Й. (FreeBSD 3.0 ╟й╧ъ╓гмЬмя╓г╓╜╓К ELF хг╓╚, FreeBSD 2.2.8 ╟йа╟╓гмЬмя╓г╓╜╓К a.out хг╓Р╩ьдЙ╓╥╓ф╓╞╓ю╓╣╓╓) ╔г╔Б╔С╔╧╔х╔Л║╪╔╥╔Г╔С╔в╔М╔╟╔И╔Ю ю╟╥а╨я╓ъ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦ цМй╦╓╧╓К╨щ╓к╓о FreeBSD мя╓н Motif ╓г╓╒╓К╓Ё╓х╓Р╓╜╓а╓С╓х Ёнг╖╓╥╓ф╓╞╓ю╓╣╓╓. Linux мя╓н Motif ╓Б Metri Link ╓╚╓ИхнгД╓╣╓Л╓ф╓╓╓ч╓╧. ╦╫╨ъ, CDROM ╓╙╓Х╓с FTP ╓к╓Х╓К╔ю╔╕╔С╔М║╪╔и╓╛мЬмя╡дг╫╓г╓╧. FreeBSD мя╓н a.out хг Motif 2.0 ╓к╢ь╓╧╓К╬ПйС╓о Xi Graphics ╓╚╓И ╪Й╓кфЧ╓Л╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓ню╫ий╓о╟й╡╪╓нй╙╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. OSF/Motif manager, xmbind, panner, wsm. uil, mrm, xm, xmcxx, ╔╓╔С╔╞╔К║╪╔и╔у╔║╔╓╔К╓Д Imake ╔у╔║╔╓╔К╓х╓╓╓ц╓©Ё╚х╞╪т╦Ч╓╠╔╜╔ц╔х FreeBSD 2.2.8 ╟йа╟╓н╔п║╪╔╦╔Г╔С╓гмЬмя╓г╓╜╓К╔╧╔©╔ф╔ё╔ц╔╞╔И╔╓╔ж╔И╔Й, ╓╙╓Х╓с╔ю╔╓╔й╔ъ╔ц╔╞╔И╔╓╔ж╔И╔Й ╔г╔Б╔С╔╧╔х╔Л║╪╔╥╔Г╔С╔в╔М╔╟╔И╔Ю ю╟╥а╨я╓ъ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦ цМй╦╓╧╓К╨щ╓к╓о FreeBSD мя╓н Motif ╓г╓╒╓К╓Ё╓х╓Р╓╜╓а╓С╓х Ёнг╖╓╥╓ф╓╞╓ю╓╣╓╓. BSDI ╓Д Linux мя╓н Motif ╓Б╓ч╓©, Xi Graphics ╓╚╓ИхнгД╓╣╓Л╓ф╓╓╓ч╓╧. ╦╫╨ъ╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞ 4кГах╓г╓╧╓╛, ╬╜мХе╙╓к╓о CDE ╓н╓Х╓╕╓кеЩ╧Г╓╣╓Л╓© CD ╓кйя╓О╓К╓г╓╥╓Г╓╕. FreeBSD мя╓н CDE ╓о╓и╓╕╓Д╓ц╓©╓И╪Й╓кфЧ╓Й╓ч╓╧╓╚ ╟йа╟ Xi Graphics ╓Х╓Й FreeBSD мя╓н CDE ╓╛ хнгД╓╣╓Л╓ф╓╓╓ч╓╥╓©╓╛, ╦╫╨ъ╓о╢Ш╓кхнгД╓╛╫╙н╩╓╥╓ф╓╓╓ч╓╧. KDE б©╓╞╓нею╓г CDE ╓хнЮ╩В╓╥╓ф╓╓╓К╔╙║╪╔в╔С╔╫║╪╔╧╓н X11 ╔г╔╧╔╞╔х╔ц╔в╢д╤╜╓г╓╧. xfce ╓н ╔К╔ц╔╞ & ╔у╔ё║╪╔К(лУцМ: Ё╟╢я╓ДаЮ╨НйЩк║╓н╓Ё╓х)╓Б╣╓╓кфЧ╓К╓╚╓Бцн╓Л╓ч╓╩╓С. KDE, xfce ╓о, ╓╓╓╨╓Л╓Б FreeBSD Ports Collection ╓к╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╧Б╣║г╫╓й╬╕мя X ╔╣║╪╔п╓ц╓ф╓╒╓К╓С╓г╓╧╓╚? ╓о╓╓, Xi Graphics ╓х Metro Link ╓╚╓И, FreeBSD ╓ш╓╚ Intel ╔ы║╪╔╧╓н╔╥╔╧╔ф╔Ю╓гф╟╨Н╓╧╓К Accelerated-X ╓х╓╓╓╕ю╫ий╓╛хнгД╓╣╓Л╓ф╓╓╓ч╓╧. Metro Link ╓о, FreeBSD ╓н╔я╔ц╔╠║╪╔╦аЮ╨Н╔д║╪╔К╓РмЬмя╓╧╓К╓Ё╓х╓г мф╟в╓кюъдЙ╓╛╧т╓й╓╗╓К╓ш╓╚, ©Тб©╓╞╓н╔с╔г╔╙╔э║╪╔и╓Р╔╣╔щ║╪╔х╓╥╓© ╧Б╣║г╫╓й X ╔╣║╪╔п╓РдС╤║╓╥╓ф╓╓╓ч╓╧. гшиш╓о╔п╔╓╔й╔Й╥а╪╟╓н╓ъ╓г, FTP ╓╛мЬмя╡дг╫╓г╓╧. ╓Б╓а╓М╓С, ╓х╓ф╓Б╟б╡а($39)╓к╪Й╓кфЧ╓Л╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓©, Metro Link ╓о ELF хг, a.out хг╓н FreeBSD мя Motif ╓БхнгД╓╥╓ф╓╓╓ч╓╧(а╟╓Р╩╡╬х). ╓Х╓Й╬э╓╥╓╓╬ПйС╓о Metro Link WWW page лД╓╓╧Г╓О╓╩╓о Sales ╓ч╓©╓о Support ее╩р╔А║╪╔К╔╒╔и╔Л╔╧ ╓Б╓╥╓╞╓о phone (954) 938-0283 or +1 954 938-0283 Xi Graphics ╓╛дС╤║╓╥╓ф╓╓╓К╧Бю╜г╫╓й X ╔╣║╪╔п╓оЁз╓кюъдЙ╓Р╧т╓й╓╗╓К╓ш╓╚, ©Тб©╓╞╓н╔с╔г╔╙╔э║╪╔и ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╔╣║╪╔п╓о╔п╔╓╔й╔Й╓н╓ъ╓╛╢ч╓ч╓Л╓ч╓╧. FreeBSD мя╓х Linux мя╓неЩ╧Г╓╣╓Л╓©╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓кфЧ╓ц╓ф╓╓╓ч╓╧. Xi Graphics ╓о Laptop ╔╣╔щ║╪╔х╓кфц╡╫╓╥╓©╧Бю╜г╫ X ╔╣║╪╔п╓БдС╤║╓╥╓ф╓╓╓ч╓╧. ╔п║╪╔╦╔Г╔С 5.0 ╓н║ж╦ъ╢╧╔г╔Б║в╓╛л╣на╓гфЧ╪Й╓г╓╜╓ч╓╧. ╓ч╓© Xi Graphics ╓о FreeBSD мя╓н Motif ╓х CDE ╓БхнгД╓╥╓ф╓╓╓ч╓╧ (а╟╓Р╩╡╬х). ╓Х╓Й╬э╓╥╓╓╬ПйС╓о Xi Graphics WWW page лД╓╓╧Г╓╩╓о Sales ╓ч╓©╓о Support ╓Б╓╥╓╞╓о phone (800) 946 7433 or +1 303 298-7478. FreeBSD мя╓н╔г║╪╔©╔ы║╪╔╧╔╥╔╧╔ф╔Ю╓о╓╒╓Й╓ч╓╧╓╚? ╓Б╓а╓М╓С╓г╓╧. FreeBSD ╓н╔╕╔╖╔ж╔╣╔╓╔х╓к╓╒╓К ╬╕мя╔ы╔С╔ю║╪ ╓х╓╓╓╕╔╩╔╞╔╥╔Г╔С╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓ч╓©, FreeBSD Ports Collection ╓н╔г║╪╔©╔ы║╪╔╧╓н╔╩╔╞╔╥╔Г╔С╓Б╩╡╧м╓к╓й╓К╓г╓╥╓Г╓╕. Oracle ╓Р FreeBSD ╬Е╓гф╟╓╚╓╧╓Ё╓х╓о╓г╓╜╓ч╓╧╓╚? ╓о╓╓. Linux хг Oracle ╓Р FreeBSD ╓г╔╩╔ц╔х╔╒╔ц╔в╓╧╓К╓©╓А╓нйЩк║╓о, ╪║╓к╪╗╓╧╔з║╪╔╦╓к╬э╓╥╓╞╫Я╓╚╓Л╓ф╓╓╓ч╓╧. http://www.scc.nl/~marcel/howto-oracle.html http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd ╔Ф║╪╔╤╔╒╔в╔Й╔╠║╪╔╥╔Г╔С лУ: ╩Ё╡╪ ╫ъ junkun@esys.tsukuba.ac.jp, &a.jp.shou;, 1997 г╞ 11 ╥Н 8 фЭ. ╓╫╓╕╓╓╓╕╔Ф║╪╔╤╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓о╓и╓Ё╓к╓╒╓К╓н? FreeBSD╓к╟э©╒╓╣╓Л╓©╔╫╔у╔х╔╕╔╖╔╒╔я╔ц╔╠║╪╔╦╓к╓д╓╓╓ф╓о, FreeBSD Ports Collection ╓н╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓Ё╓н╔Й╔╧╔х╓к╓о╦╫╨ъ 3400 ╓Р╠ш╓╗╓К╧Юлэ╓╛╓╒╓Й, ╓╥╓╚╓БкХфЭ╧╧©╥╓╣╓Л╓ф╓╓╓ч╓╧. ╓Ё╓н╔з║╪╔╦╓Р╓Ё╓ч╓А╓кк╛╓Л╓К╓╚, freebsd-announce ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓Р╧ьфи╓╧╓К╓х, ©╥╓╥╓╞фЧ╓ц╓© ports ╓РдЙ╢Эе╙╓к╔а╔╖╔ц╔╞╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. бГиТй╛╓н ports ╓о 2.2 ╓х 3.x ╓╙╓Х╓с 4.x ╔ж╔И╔С╔а╓гмЬмя╓г╓╜╓К╓о╓╨╓г╓╧. б©╓╞╓о 2.1.x ╥о╓н╔╥╔╧╔ф╔Ю╓г╓Бф╠мм╓кф╟╨Н╓╧╓К╓г╓╥╓Г╓╕. FreeBSD ╓н╔Й╔Й║╪╔╧╓╛╫п╓Кеы╓к, ╓╫╓н╔Й╔Й║╪╔╧╓н╩Чею╓г╓н ports ╔д╔Й║╪╓н ╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓╛╩ё╓И╓Л, ports/ ╔г╔ё╔Л╔╞╔х╔Й╓к г╪╓А╓И╓Л╓К╓Ё╓х╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓ч╓©, package ╓х╓╓╓╕╧м╓╗╓Б╨нмя╓╣╓Л╓ф╓╓╓ч╓╧. ╓Ё╓Л╓о╢Пкэе╙╓к╓о gzip ╓г╟╣╫л╓╣╓Л╓©╔п╔╓╔й╔Й╔г╔ё╔╧╔х╔Й╔с╔Е║╪╔╥╔Г╔С╓к, ╔╓╔С╔╧╔х║╪╔К╩Ч╓к╢д╤╜╓к╧Г╓О╓╩╓©╨Н╤х╓╛и╛мв╓к╓й╓ц╓©╬Л╧Г, ╧т╓╕╣║г╫╓Рб©╬╞иу╓╠╡ц╓╗╓©╓Б╓н╓г╓╧. package ╓Р╩х╓╗╓п, ╓и╓н╓Х╓╕╓й╔у╔║╔╓╔К╓╛гшишй╙╓х╓╥╓ф╢ч╓ч╓Л╓ф╓╓╓К╓╚, ╓х╦ю╓ц╓©╨ы╓╚╓╓╩Жйа╓к╓╓╓а╓╓╓ахя╓О╓╣╓Л╓К╓Ё╓х╓й╓╞, ╢йц╠╓к╔╓╔С╔╧╔х║╪╔К╓Д╔╒╔С╔╓╔С╔╧╔х║╪╔К╓Р╥╚╓Ййж╓╧╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔╓╔С╔╧╔х║╪╔К╓╥╓©╓╓ package ╓╛╓╒╓К╓й╓И, /stand/sysinstall╓н, ║ж╔╓╔С╔╧╔х║╪╔К╦Е╓н FreeBSD ╓нюъдЙ╓Р╧т╓╕║в╓н╡╪╓к╓╒╓К package ╓н╔╓╔С╔╧╔х║╪╔К╔А╔к╔Е║╪╓Р╩х╓╕╓╚, package ╓н╔у╔║╔╓╔Кл╬╓Р╩ьдЙ╓╥╓ф pkg_add(1) ╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. package ╓н╔у╔║╔╓╔Кл╬╓к╓о, дл╬ОкЖхЬ╓к .tgz ╓╛╓д╓╓╓ф╓╓╓ч╓╧. CDROM ╓Р╓╢╩хмя╓нйЩ╓о, CD ╓н packages/All ╔г╔ё╔Л╔╞╔х╔Й╓╚╓И╓╫╓Л╓И╓н╔у╔║╔╓╔К╓РмЬмя╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓©, ╟й╡╪╓н╬Л╫Й╓╚╓И, FreeBSD ╓нЁф╪О╔п║╪╔╦╔Г╔С╓к╓╒╓О╓╩╓© package ╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓К ╓Ё╓х╓Б╓г╓╜╓ч╓╧. 2.2.8-RELEASE/2.2.8-STABLE мя ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/ 3.X-RELEASE/3.X-STABLE мя ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/ 4.X-RELEASE/4-STABLE мя ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/ 5.X-CURRENT мя ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current ╓╙╤А╓╞╓н╔ъ╔И║╪╔╣╔╓╔х╓Б╓╢мЬмя╓╞╓ю╓╣╓╓. ©╥╓╥╓╓ ports ╓╛бЁ║╧╓хди╡ц╓╣╓Л╓ф╓╓╓К╬Убж╓й╓н╓г, а╢╓ф╓н ports ╓к бп╠Ч╓╧╓К package ╓╛б╦╨ъ╓╧╓К╓О╓╠╓г╓о╓й╓╓╓Ё╓х╓РЁп╓╗╓ф╓╙╓╓╓ф╓╞╓ю╓╣╓╓. дЙ╢Эе╙╓к ftp.FreeBSD.org ╔ч╔╧╔©║╪╔╣╔╓╔х╓Рк╛╓Л╓ф, ╓и╓н╓Х╓╕╓й package ╓╛мЬмя╓г╓╜╓К╓н╓╚╔а╔╖╔ц╔╞╓╧╓К╓н╓Бни╓╓╓г╓╥╓Г╓╕. ╓й╓╪ /bin/sh ╓о╓Ё╓С╓й╓кдЦ╣║г╫╓й╓н╓г╓╧╓╚? ╓и╓╕╓╥╓ф bash ╓Дб╬╓н╔╥╔╖╔К╓Р╨нмя╓╥╓й╓╓╓н╓г╓╥╓Г╓╕? ╓╫╓Л╓о, POSIX ╓╛╓╫╓н╓Х╓╕╓й╔╥╔╖╔К╓╛╓╒╓К╓Ё╓х╓Р╣╛дЙ╓╥╓ф╓╓╓К╓╚╓И╓г╓╧. ╓Б╓ц╓х╧Ч╓ъфЧ╓ц╓©╡СеЗ: б©╓╞╓н╔Ф║╪╔╤╓о, б©╓╞╓н╔╥╔╧╔ф╔Ю╓гф╠╓╦╓Х╓╕╓кф╟╨Н╓г╓╜╓К╔╥╔╖╔К╔╧╔╞╔Й╔в╔х╓Р╫Я╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓╛, POSIX ╓г╔╥╔╖╔К╓Д╔Ф║╪╔ф╔ё╔Й╔ф╔ё╔Ё╔ч╔С╔и╓╛╨ы╓╞╣╛дЙ╓╣╓Л╓ф╓╓╓КмЩмЁ╓г╓╧. ╓ш╓х╓С╓и╓╧╓ы╓ф╓н╔╧╔╞╔Й╔в╔х╓о Bourne shell ╓г╫Я╓╚╓Л╓ф╓╓╓К╓н╓г╓╧╓╛, ╓╫╓Л╓о, ©Тб©╓╞╓н╫емв╓й╔в╔М╔╟╔И╔ъ╔С╔╟╔╓╔С╔©╔у╔╖╔╓╔╧(&man.make.1;, &man.system.3;, &man.popen.3;, ╓Д Perl ╓Д Tcl еЫ╓ннЮ╩В╓н ╧Б©Е╫Ю╔╧╔╞╔Й╔в╔х╦ю╦Л)╓╛, ╔Ё╔ч╔С╔и╓н╡Р╪А╓к Bourne shell ╓Р╩х╓╕╓╚╓И╓г╓╧. ╓Ё╓н╓Х╓╕╓к Bourne shell ╓╛╤к╓А╓фияхк╓к╓╚╓д╧╜хо╟о╓г╩х╓О╓Л╓ф╓╓╓К╓©╓А, агаА╓╞╣╞ф╟╓г╓╜╓фЁн╪б╓кф╟╨Н╓╥, ╔А╔Б╔Й╓Р╬╞╓╥╓╥╓╚╬цхЯ╓╥╓й╓╓╓х╓╓╓╕╓Ё╓х╓╛ ╫емв╓к╓й╓Й╓ч╓╧. ╢Шб╦╓н╪баУ╓о, ╩Д╓©╓а╓к╡дг╫╓й╦б╓Й╓Ё╓Л╓И╓нб©╓╞╓нмв╣А╓Рф╠╩Ч╓ккЧб╜╓╧╓К╓Ё╓х╓╛╓г╓╜╓К╨гни╓н╓Б╓н╓г╓╧. /bin/sh ╓Р╬╝╓╣╓╓╓ч╓ч╓кйщ╓д╓©╓А, ╩Д╓©╓а╓об╬╓н╔╥╔╖╔К╓╛╩Щ╓дмм║╧╓ййьмЬ╓й╣║г╫╓РдС╤║╓╥╓ф╓╓╓ч╓╩╓С. Ports ╔Ё╔Л╔╞╔╥╔Г╔С╓╛ bash ╓Д scsh, tcsh, zsh ╓й╓и╓н б©╣║г╫╓й╔╥╔╖╔К╓Р╢ч╓С╓г╓╓╓К╓╚╓И╓г╓╧. (╓Ё╓Л╓И╓н╔╥╔╖╔К╓╧╓ы╓ф╓н ╔А╔Б╔Й╩хмя╬У╤╥╓о, ps -u ╓н VSZ ╓Д RSS ╓н╧т╓г, ╓╒╓й╓©╪╚©х╓╛Ёнг╖╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧.) libc.so.3.0 ╓о╓и╓Ё╓к╓╒╓Й╓ч╓╧╓╚? FreeBSD 2.1.x ╓н╔╥╔╧╔ф╔Ю╓г 2.2 ╟й╧ъмя╓н package ╓Рф╟╓╚╓╫╓╕╓х╓╥╓ф╓╓╓ч╓╧╓м? а╟╓н╔╩╔╞╔╥╔Г╔С╓Рфи╓С╓г, ╔╥╔╧╔ф╔Ю╓к╧Г╓ц╓©ю╣╓╥╓╓ port/package ╓РфЧ╪Й╓╥╓ф╓╞╓ю╓╣╓╓. Error: can't find libc.so.4.0 ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛и╫╪╗╓╣╓Л╓К╓н╓г╓╧╓╛. ╡©╓╚╓н╪Й╟Ц╓╓╓г, 4.X ╓х 5.X ╓н╔╥╔╧╔ф╔Юмя package ╓Р╔ю╔╕╔С╔М║╪╔и╓╥, FreeBSD 2.X, ╓Б╓╥╓╞╓о 3.X ╓н╔╥╔╧╔ф╔Ю╓к╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╥╓ч╓ц╓©╓н╓г╓╥╓Г╓╕. бп╠Ч╓╧╓Кю╣╓╥╓╓╔п║╪╔╦╔Г╔С╓н package ╓Р╔ю╔╕╔С╔М║╪╔и╓╥╓ф╓╞╓ю╓╣╓╓. 386/486SX ╓н╔ч╔╥╔С╓г ghostscript ╓Рф╟╓╚╓╧╓х╔╗╔И║╪╓╛╓г╓ч╓╧. ╓╒╓й╓©╓н╔ч╔╥╔С╓к╓о©Тцм╠И╩╩╔в╔М╔╩╔ц╔╣╓╛еЦ╨э╓╣╓Л╓ф╓╓╓ч╓╩╓С╓м? ╔╚║╪╔м╔К╓к╔Ё╔в╔М╔╩╔ц╔╣╓нбЕ╓О╓Й╓х╓й╓К©Тцм╠И╩╩╔╗╔ъ╔Е╔Л║╪╔©╓Рди╡ц╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╟й╡╪╓н╔╙╔в╔╥╔Г╔С╓Р╔╚║╪╔м╔К╓н╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓кди╡ц╓╥╓ф, ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ф╓╞╓ю╓╣╓╓. options GPL_MATH_EMULATE ╓Ё╓н╔╙╔в╔╥╔Г╔С╓Рди╡ц╓╧╓К╬Л╧Г, MATH_EMULATE ╓н╧т╓Р╨О╫Э╓╥╓ф╓╞╓ю╓╣╓╓. SCO/iBCS2 ╓н╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓Р╪б╧т╓╧╓К╓х, socksys ╓гмН╓а╓ф╓╥╓ч╓╓╓ч╓╧. (FreeBSD 3.0 ╓х╓╫╓Л╟йа╟╓н╓ъ) ╓ч╓╨╨г╫И╓к /etc/sysconfig(╓ч╓©╓о /etc/rc.conf)╓нцФ╓н ╨г╦Е╓н╔╩╔╞╔╥╔Г╔С╓Рйт╫╦╓╥, ╟й╡╪╓нйя©Т╓Р YES ╓кд╬╓╥╓ч╓╧. # Set to YES if you want ibcs2 (SCO) emulation loaded at startup ibcs2=NO ╓Ё╓Л╓г╔╥╔╧╔ф╔Ю╓н╣╞ф╟╩Ч╓к ibcs2 ╔╚║╪╔м╔К╔Б╔╦╔Е║╪╔К╓╛фи╓ъ╧Ч╓ч╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. ╪║╓к /compat/ibcs2/dev/ ╓Р╟й╡╪╓н╓Х╓╕╓кйт╫╦╓╥╓ч╓╧. lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys -rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx open ╓Д close ╓н╫ХмЩ╓о, socksys ╓╚╓И /dev/null ╓ь╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓Рд╔╓К╓Ё╓х╓гбЕмя╓╥╓ч╓╧. ╩д╓Й╓н╫ХмЩ╓о, -CURRENT ╓кфЧ╓ц╓ф╓╓╓К╔Ё║╪╔и╓╛ц╢еЖ╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓о╟йа╟╓н╓Б╓н╓Х╓Й ╓╨╓ц╓х╔╧╔ц╔╜╔Й╓╥╓©йЩк║╓г╓╧. INN(╔╓╔С╔©║╪╔м╔ц╔х╔к╔Е║╪╔╧)╓нюъдЙйЩк║╓о? inn ╓н package ╓Д port ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓©╓╒╓х╓к Dave Barr's INN Page ╓Р╦╚╓ф╓ъ╓ч╓╥╓Г╓╕. ╫И©╢╪т╦Ч╓╠╓н INN FAQ ╓╛╓╒╓Й╓ч╓╧. ╓и╓н╔п║╪╔╦╔Г╔С╓н Microsoft FrontPage ╓Р╪Й╓кфЧ╓Л╓Ки╛мв╓╛╓╒╓Й╓ч╓╧╓╚? ╔К║╪╔╞, ports ╓Р╩х╓╕╓н╓ю! ╔я╔ц╔а╫ХмЩ╨я╓ъ╓н Apache ╓╛ ports ╔д╔Й║╪╓╚╓ИфЧ╪Й╓г╓╜╓ч╓╧. FreeBSD ╓о Java ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? ╓о╓╓. http://www.FreeBSD.org/java/ ╓Р╓╢мВ╓╞╓ю╓╣╓╓. фЭкэ╦ЛлУ ╓Б╓╒╓Й╓ч╓╧. 3.x-STABLE ╓Р╨э╓╩╓ф╓╓╓К╔ч╔╥╔С╓г port ╓╛╔Ё╔С╔я╔╓╔К╓г╓╜╓й╓╓╓Ё╓х╓╛╓╒╓Й╓ч╓╧. ╓╫╓Л╓о╓и╓╕╓╥╓ф╓г╓╧╓╚? ╓Б╓╥, ╓╫╓н╩Чею╓н -CURRENT ╓╚ -STABLE ╓кхФ╓ы╓ф╓╨╓ц╓х╦е╓╓╔п║╪╔╦╔Г╔С╓н FreeBSD ╓РмЬмя╓╥╓ф╓╓╓К╓й╓И, http://www.FreeBSD.org/ports/ ╓к╓╒╓К ports ╔╒╔ц╔в╔╟╔Л║╪╔и╔╜╔ц╔х╓╛и╛мв╓г╓╧. ╨г©╥╓н FreeBSD ╓РмЬмя╓╥╓ф╓╓╓К╓н╓кх╞ю╦╓╧╓К╬Л╧Г╓о╓╙╓╫╓И╓╞, -CURRENT ╓г╓ою╣╬О╓й╓н╓к -STABLE ╓г╓о╓╕╓ч╓╞ф╟╓╚╓й╓╞╓й╓К╓Х╓╕╓ййя╧╧╓╛╓╫╓н port ╓кбп╓╥╓ф╧т╓й╓О╓Л, ╪УмЩ╓╣╓Л╓ф╓╥╓ч╓ц╓ф╓╓╓К╓н╓г╓╥╓Г╓╕. ports ╔Ё╔Л╔╞╔╥╔Г╔С╓о -CURRENT ╓х -STABLE, н╬йЩ╓н╔ж╔И╔С╔а╓гф╟╓╚╓й╓╠╓Л╓п╓й╓И╓й╓╓╓Б╓н╓г╓╧╓н╓г, ╓Б╓╥╓╫╓Л╓Рх╞╦╚╓╥╓©╓И send-pr(1) ╔Ё╔ч╔С╔и╓Р╩х╓ц╓ф╔п╔╟╔Л╔щ║╪╔х╓ндС╫п╓Р╓╙╢Й╓╓╓╥╓ч╓╧. ld.so ╓о╓и╓Ё╓к╓╒╓Й╓ч╓╧╓╚? 3.1-R ╟й╧ъ╓й╓и╓н Elf ╡╫╓╣╓Л╓©╔ч╔╥╔С╓г Netscape Navigator ╓й╓и╓н aout ╥а╪╟╓н╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓Рф╟╓╚╓╧╓х╓╜╓к╓о, /usr/libexec/ld.so ╓х aout ╔И╔╓╔ж╔И╔Й╓н╔у╔║╔╓╔К╓╛и╛мв╓г╓╧. ╓╫╓Л╓И╓огшишй╙╓н compat22 ╓кг╪╓А╓И╓Л╓ф╓╓╓ч╓╧. /stand/sysinstall ╓Д compat22 ╔╣╔ж╔г╔ё╔Л╔╞╔х╔ЙфБ╓н install.sh ╓Р╩х╓ц╓ф compat22 ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. ╧Г╓О╓╩╓ф 3.1-R ╓х 3.2-R ╓н ERRATA ╓Б╓╙фи╓ъ╓╞╓ю╓╣╓╓. ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С лУ: &a.jp.kiroh;, 1997 г╞ 11 ╥Н 10 фЭ. ╔╚║╪╔м╔К╓Р╔╚╔╧╔©╔ч╔╓╔╨╓╥╓©╓╓╓С╓г╓╧╓╛, фЯ╓╥╓╓╓г╓╧╓╚? а╢аЁфЯ╓╥╓╞╓╒╓Й╓ч╓╩╓С. ╔╚║╪╔м╔К╓н╨ф╧╫цш╓Рд╢╓ы╓ф╓╞╓ю╓╣╓╓. ╓╕╓ч╓╞ф╟╨Н╓╧╓К╔╚║╪╔м╔К╓╛╓г╓╜╓©╓И, фЭиуфЧ╓Й╓н╔╚║╪╔м╔К╓н╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓Р kernel.YYMMDD ╓н╓Х╓╕╓к╨Ню╝╓╧╓К╓Ё╓х╓Р╓╙╓╧╓╧╓А╓╥╓ч╓╧. ╓Ё╓╕╓╥╓ф╓╙╓╠╓п, ╪║╓к╔╚║╪╔м╔К╓н╧╫цш╓Р╓Д╓ц╓ф╓╕╓ч╓╞╓╓╓╚╓й╓╞╓й╓ц╓ф╓╥╓ч╓ц╓ф╓Б, kernel.GENERIC ╓к╓О╓╤╓О╓╤лА╓Ки╛мв╓╛╓й╓╞╓й╓Й╓ч╓╧. ╓Ё╓Л╓о, GENERIC ╔╚║╪╔м╔К╓г╔╣╔щ║╪╔х╓╣╓Л╓й╓╓╔г╔п╔╓╔╧╓╚╓И╣╞ф╟╓╥╓ф╓╓╓К╬Л╧Г╓о, фц╓к╫емв╓г╓╧(╥п╦Ё╪т╓о╦Л╓К╓ц╓ф╓Д╓д╓г╓╧). _hw_float ╓╛л╣╓╓╓н╓г, ╔╚║╪╔м╔К╓н╔Ё╔С╔я╔╓╔К╓╛╓╕╓ч╓╞╓╓╓╜╓ч╓╩╓С. ©Дб╛╓г╓╧╓╠╓и, ©Тцм╠И╩╩╔Ё╔в╔М╔╩╔ц╔╣╓Р╩Щ╓ц╓ф╓й╓╓╓╚╓И╓х╩в╓ц╓ф, npx0 ╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓╚╓И╨О╫Э╓╥╓а╓Ц╓ц╓©╓С╓╦╓Ц╓й╓╓╓г╓╧╓╚? npx0 ╓ои╛©э╓г╓╧. ╔Ё╔в╔М╔╩╔ц╔╣╓╛╓й╓╞╓ф╓Б, npx0 ╔г╔п╔╓╔╧╓о╨О╫Э╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С. ╓О╓©╓╥╓н╔╚║╪╔м╔К╓о╓и╓╕╓╥╓ф╓Ё╓С╓й╓кбГ╓╜╓╓ (10MB ╟й╬Е) ╓н╓г╓╥╓Г╓╕╓╚? ╓Ё╓Л╓о╔г╔п╔ц╔╟╔Б║╪╔и╓г╔╚║╪╔м╔К╓Р╧╫цш╓╥╓ф╓╓╓К╓Ё╓х╓╛╦╤╟Ь╓г╓╧. ╔г╔п╔ц╔╟╔Б║╪╔и╓г╧╫цш╓╣╓Л╓©╔╚║╪╔м╔К╓о, ╔г╔п╔ц╔╟╓кмя╓╓╓И╓Л╓КкдбГ╓й╔╥╔С╔э╔К╬ПйС╓Р╢ч╓С╓г╓╓╓К╓©╓А, ╔╚║╪╔м╔К╓н╔╣╔╓╔╨╓╛хС╬О╓кбГ╓╜╓╞╓й╓Й╓ч╓╧. ╓©╓ю╓╥ FreeBSD 3.0 ╓х╓╫╓Л╟й╧ъ╓н╔╥╔╧╔ф╔Ю╓н╬Л╧Г╓о ╔╚║╪╔м╔К╓н╔╣╔╓╔╨╓о╬╝╓╣╓╞╓й╓Й╓ч╓╧╓╥, ╔г╔п╔ц╔╟╔╚║╪╔м╔К╓Р╪б╧т╓╧╓К╩Ч╓н╔я╔у╔╘║╪╔ч╔С╔╧╓ндЦ╡╪╓Б╓╒╓Й╓ч╓╩╓С. ╓ч╓©, ╓╫╓н╔╚║╪╔м╔К╓о╔╥╔╧╔ф╔Ю╓╛╔я╔к╔ц╔╞╓╥╓©╬Л╧Г╓км╜мя╓г╓╧. ╓╥╓╚╓╥, мфнл╓н╬╝╓╣╓й╔г╔ё╔╧╔╞╓г╔╥╔╧╔ф╔Ю╓Р╠©мя╓╥╓ф╓╓╓©╓Й, ц╠╓к╔г╔п╔ц╔╟╔╚║╪╔м╔К╓Р╪б╧т╓╥╓©╓╞╓й╓╓╬Л╧Г╓о, ╟й╡╪╓нн╬йЩ╓╛еЖ╓ф╓о╓ч╓ц╓ф╓╓╓К╓╚╓и╓╕╓╚Ёнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓к╟й╡╪╓н╧т╓╛╫Я╓╚╓Л╓ф╓╓╓й╓╓╓Ё╓х. makeoptions DEBUG=-g config ╓Р╪б╧т╓╧╓К╨щ, ╔╙╔в╔╥╔Г╔С╓Риу╓╠╓ф╓╓╓й╓╓╓Ё╓х. ╬Е╓к╫Я╓╚╓Л╓©╩ьдЙ╓он╬йЩ╓х╓Б╔╚║╪╔м╔К╓Р╔г╔п╔ц╔╟╔Б║╪╔и╓г╧╫цш╓╧╓К╓©╓А╓н╓Б╓н╓г╓╧. ╬Е╓н╪Й╫Г╓Р╫╬╓ц╓ф╓╓╓К╦б╓Й, ╔╚║╪╔м╔К╓РиАдл╓к╧╫цш╓╥╓ф╔╣╔╓╔╨╓н╬╝╓╣╓й╔╚║╪╔м╔К╓Рфю╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╫╓н╬Л╧Г╓н╔╚║╪╔м╔К╔╣╔╓╔╨╓о, ╓╙╓Х╓╫ 1.5MB ╓╚╓И 2MB дЬеы╓к╓й╓Й╓ч╓╧. ╔ч╔К╔а╔щ║╪╔х╔╥╔Й╔╒╔К╓н╔Ё║╪╔и╓гЁД╓Й╧Ч╓ъ╓╛╬вфм╓╥╓ф╓╓╓ч╓╧. Q. ╔ч╔К╔а╔щ║╪╔х╔╥╔Й╔╒╔К╓Р ╔╣╔щ║╪╔х╓╧╓К╔Ё║╪╔и╓Р╢ч╓С╓ю╔╚║╪╔м╔К╓Р╔Ё╔С╔я╔╓╔К╓╥╓Х╓╕╓х╓╧╓К╓х, ╨г╫И╓н╔щ║╪╔х╓ю╓╠╦║╫п╓╣╓Л, ╩д╓Й╓н╔щ║╪╔х╓оЁД╓Й╧Ч╓ъ╓н╤╔╧Г╓н╓©╓А╔╧╔╜╔ц╔в╓╣╓Л╓©╓х╦ю╓О╓Л╓ч╓╧. ╓и╓╕╓Д╓ц╓©╓И╓╓╓╓╓г╓╥╓Г╓╕╓╚? A. ╓Ё╓Ё╓г╓нлДбЙ╓о, FreeBSD ╓к╓о╔о║╪╔и╔╕╔╖╔╒╓ч╓©╓о╔╫╔у╔х╔╕╔╖╔╒╓н╤╔╧Г╓к╓Х╓Й, ╔╚║╪╔м╔К╓╛╔╞╔И╔ц╔╥╔Е╓╧╓К╓н╓Рки╓╟╔Ё║╪╔и╓╛╢ч╓ч╓Л╓ф╓╓╓К╓х╓╓╓╕ею╓г╓╧. ╡Р╥Х╓╧╓К╓к╓о, ╨г╫И╓н╔щ║╪╔х╓к╓ю╓╠ IRQ ╓нюъдЙ╓Р╫Я╓╜, ╩д╓Й╓о IRQ ╓нюъдЙ╓Р╨О╫Э╓╥╓ч╓╧. ╟й╡╪╓кнЦ╓Р╪╗╓╥╓ч╓╧. # 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 ╔╚║╪╔м╔К╓Р╧╫цш╓к╓╓╓д╓Б╪╨гт╓╥╓ч╓╧. GENERIC ╔╚║╪╔м╔К╓Б╧╫цш╓г╓╜╓ч╓╩╓С. ╓╣╓ч╓╤╓ч╓ймЩмЁ╓╛╧м╓╗╓И╓Л╓ч╓╧. ╟й╡╪, ╫Г╓кнС╣╜╓╥╓ч╓╧. ╓╒╓й╓©╓о©╥╓╥╓╓ make buildkernel ╓Д make installkernel ╔©║╪╔╡╔ц╔х╓Р╩х╓О╓╨, ╦╫╨ъаЖ╓ц╓ф╓╓╓К╔╥╔╧╔ф╔Ю╓Р╧╫цш╓╥╓©╩Ч╓х╟ш╓й╓К╔╫║╪╔╧╔д╔Й║╪╓Р ╧╫цш╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К (╓©╓х╓╗╓п, 4.0-RELEASE ╓н╔╥╔╧╔ф╔Ю╬Е╓г 4.2-RELEASE ╓Р╧╫цш╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К) ╓н╓г╓о╓й╓╓╓г╓╥╓Г╓╕╓╚? ╓Б╓╥╔╥╔╧╔ф╔Ю╓Р╔╒╔ц╔в╔╟╔Л║╪╔и╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К╓н╓й╓И, /usr/src/UPDATING ╔у╔║╔╓╔К╓Р ╤╕дл╧Юлэ (COMMON ITEMS) юА╓кцМ╟у╓╥╓й╓╛╓И╨г╦Е╓ч╓г╓╙фи╓ъ╓╞╓ю╓╣╓╓. ╓╒╓й╓©╓о©╥╓╥╓╓ make buildkernel ╓Д make installkernel ╔©║╪╔╡╔ц╔х╓Р ╩х╓ц╓ф╓╓╓К╓н╓к╓Б╢ь╓О╓И╓╨, make buildworld ╓Р╧т╓й╓ц╓ф╓╓╓й╓╓╓н╓г╓о╓й╓╓╓г╓╥╓Г╓╕╓╚? make buildkernel ╔©║╪╔╡╔ц╔х╓о, make buildworld ╔©║╪╔╡╔ц╔х╓к╓Х╓ц╓ф╨Н╓И╓Л╓К╔у╔║╔╓╔К╓к╟мб╦╓╥╓ф╓╓╓ч╓╧ ╓╫╓н╓©╓А, make buildkernel ╓╛ю╣╬О╓к╫╙н╩╓╧╓К╓©╓А╓к╓о make buildworld ╔©║╪╔╡╔ц╔х╓╛ю╣╬О╓к╢╟н╩╓╥╓ф╓╓╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╧╫цш╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К╓н╓╛ FreeBSD-STABLE ╓ю╓ц╓©╓х╓╥╓ф╓Б, ╓╒╓й╓©╓╛фЧ╪Й╓╥╓©╔╫║╪╔╧╔д╔Й║╪╓╛╡©╓И╓╚╓нмЩмЁ╓г ╫Я╓╜╢╧╓О╓ц╓©╓Й, ╡У╓Л╓ф╓╥╓ч╓ц╓ф╓╓╓К╓н╓╚╓Бцн╓Л╓ч╓╩╓С. FreeBSD-STABLE ╓о╓ш╓х╓С╓и╓н╬Л╧Г, ╓╜╓а╓С╓х╧╫цш╓г╓╜╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧╓╛, Ён╪б╓к╧╫цш╡дг╫╓г╓╒╓К╓Ё╓х╓╛йщ╬з╓╣╓Л╓ф╓╓╓К╓н╓о ╔Й╔Й║╪╔╧хг╓ю╓╠╓г╓╧. ╟Леы╔╫║╪╔╧╔д╔Й║╪╓Р╨ф╪Хфю╓╥╓ф, лДбЙ╓╛╡Р╥Х╓╥╓й╓╓╓╚╓и╓╕╓╚╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, ╓╒╓К╔╣║╪╔п╓╚╓И╪Хфю╓╥╓©╩Ч╓клДбЙ╓╛х╞ю╦╓╥╓©╓И, йл╓н╔╣║╪╔п╓Р╩Н╓╧╓н╓Б╦З╡л╓╛╓╒╓К╓╚╓Бцн╓Л╓ч╓╩╓С. ╔╥╔╧╔ф╔Ю╢имЩ лУ: ╓к╓╥╓╚ nishika@cheerful.com, 1997 г╞ 11 ╥Н 12 фЭ. ╔╥╔╧╔ф╔Ю╔╧╔©║╪╔х╔╒╔ц╔в╔у╔║╔╓╔К╓о╓и╓Ё╓к╓╒╓К╓н╓г╓╧╓╚? FreeBSD 2.0.5R ╓╚╓И 2.2.1R ╓ч╓г╓о, ╔в╔И╔╓╔ч╔Й╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓о /etc/sysconfig ╓к╓╒╓Й╓ч╓╧. ╔╙╔в╔╥╔Г╔С╓о╓╧╓ы╓ф, ╓Ё╓н╔у╔║╔╓╔К╓х /etc/rc ╓╙╓Х╓с /etc/netstart╓х╓╓╓ц╓©, йл╓н╔у╔║╔╓╔К╓к╩ьдЙ╓╣╓Л╓ф╓╓╓ч╓╧. ╔у╔║╔╓╔К /etc/sysconfig ╓Р╦╚╓ф, ╔╥╔╧╔ф╔Ю╓ке╛╧Г╓╧╓К╓Х╓╕╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╔у╔║╔╓╔К╓к╓о, ╓╫╓Л╓╬╓Л╓н╬Л╫Й╓к╡©╓Р╫Я╓╠╓п╓╓╓╓╓н╓╚╓Ри╫╓╧╔Ё╔А╔С╔х╓╛╓©╓╞╓╣╓С╫Я╓╚╓Л╓ф╓╓╓ч╓╧. FreeBSD 2.2.2 ╓╚╓И 3.0 ╓ч╓г╓н╔╥╔╧╔ф╔Ю╓г╓о, /etc/sysconfig ╓о, ╓Х╓Йй╛╓Й╓Д╓╧╓╓л╬а╟╓н rc.conf ╓к╡Чл╬╓╣╓Л, ╓╫╓Л╓к╫╬╓ц╓ф╫Я╪╟╓Б╓╓╓╞╓ж╓С╡Ч╓А╓И╓Л╓ф╓╓╓ч╓╧. /etc/netstart ╓Б /etc/rc.network ╓к╡Чл╬╓╣╓Л, а╢иТ╓н╔у╔║╔╓╔К╓Р cp /usr/src/etc/rc* /etc ╓г╟Леы╓к╔Ё╔т║╪╓╧╓К╓Ё╓х╓╛╫пмХ╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. FreeBSD 3.1 ╓х╓╫╓Л╟й╧ъ╓г╓о, /etc/rc.conf ╓╛ /etc/defaults/rc.conf ╓к╟эф╟╓╥╓ч╓╥╓©. ╓Ё╓н╔у╔║╔╓╔К╓Рйт╫╦╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С! бЕ╓О╓Й╓к, /etc/defaults/rc.conf ╓нцФ╓гйя╓╗╓©╓╓╔╗╔С╔х╔Й╓н╧т╓Р /etc/rc.conf ╓к╔Ё╔т║╪╓╥, ╓╫╓Ё╓гйя╧╧╓╧╓К╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. ╓©╓х╓╗╓п named ╓Р╣╞ф╟╓╥╓©╓╓╓х╓╥╓ч╓╥╓Г╓╕. FreeBSD 3.1 ╓╚╓╫╓Л╟й╧ъ╓н╔╥╔╧╔ф╔Ю╓г FreeBSD иуб╟╓н DNS ╔╣║╪╔п╓Р╣╞ф╟╓╧╓К╓к╓о, ╪║╓н╓Х╓╕╓к╓╧╓К╓ю╓╠╓г╓╧. &prompt.root; echo named_enable="YES" >> /etc/rc.conf FreeBSD 3.1 ╓╚╓╫╓Л╟й╧ъ╓г╔М║╪╔╚╔К╔╣║╪╔с╔╧╓Р╣╞ф╟╓╧╓К╓©╓А╓к╓о, /usr/local/etc/rc.d ╔г╔ё╔Л╔╞╔х╔Й╓к╔╥╔╖╔К╔╧╔╞╔Й╔в╔х╓Рцж╓╜╓ч╓╧. ╔╥╔╖╔К╔╧╔╞╔Й╔в╔х╓о╣╞ф╟╡дг╫╓кюъдЙ╓╥, ╔у╔║╔╓╔Кл╬╓╛ .sh ╓г╫╙╓О╓ц╓ф╓╓╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. FreeBSD 3.0 ╓х╓╫╓Л╟йа╟╓н╔Й╔Й║╪╔╧╓г╓о, /etc/rc.local ╓Рйт╫╦╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔у╔║╔╓╔К /etc/rc.serial ╓о╔╥╔Й╔╒╔К╔щ║╪╔х╓н╫И╢Э╡╫(╓©╓х╓╗╓п╔щ║╪╔х╓нюъдЙ╓Р╦гдЙ╓╥╓©╓ЙеЫ║╧)╓н╓©╓А╓к╓╒╓Й╓ч╓╧. ╔у╔║╔╓╔К /etc/rc.i386 ╓о iBCS2 ╔╗╔ъ╔Е╔Л║╪╔╥╔Г╔С╓н╓Х╓╕╓й Intel ╔╒║╪╔╜╔ф╔╞╔а╔Ц╦гм╜╓нюъдЙ╓Д, PC ╔╥╔╧╔ф╔Ю╔Ё╔С╔╫║╪╔КюъдЙ╓н╓©╓А╓к╓╒╓Й╓ч╓╧. ╢йц╠╓к╔Ф║╪╔╤╓Рди╡ц╓╧╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓╓н╓г╓╧╓╚? adduser ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, pw ╔Ё╔ч╔С╔и╓Рмя╓╓╓К╓Ё╓х╓г, ╓╣╓И╓к╨ы╓╚╓╓аЮ╨Н╓╛╡дг╫╓г╓╧. ╔Ф║╪╔╤╓Р╨О╫Э╓╧╓К╓к╓о rmuser ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ╥╚╓Ййж╓╥╓к╓й╓Й╓ч╓╧╓╛, pw ╓г╓Б╧╫╓╓╓ч╓╩╓С. FreeBSD ╔╥╔╧╔ф╔Ю╓к©╥╓╥╓╓╔о║╪╔и╔г╔ё╔╧╔╞╓Рди╡ц╓╧╓К╓к╓о? www.FreeBSD.org ╓к╫Я╓╚╓Л╓ф╓╓╓К╔г╔ё╔╧╔╞╔у╔╘║╪╔ч╔ц╔х╔а╔Е║╪╔х╔Й╔╒╔К╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ©╥╓╥╓╓╔Й╔Ю║╪╔п╔ж╔К╔и╔И╔╓╔ж╓Р╩Щ╓ц╓ф╓╓╓ч╓╧╓╛, ╓и╓╕╓Д╓ц╓ф╩х╓╕╓н? ╓╫╓н╔Й╔Ю║╪╔п╔ж╔К╔и╔И╔╓╔ж╓╛ ZIP ╓г╓╒╓Л EZ drive ╓г╓╒╓Л (╓╒╓К╓╓╓о╓Б╓╥╓╫╓╕╓╓╓╕иВ╓к╩х╓╓╓©╓╓╓н╓й╓И, ╔у╔М╔ц╔т║╪╓г╓╒╓Л), ╓ч╓©╔о║╪╔и╔г╔ё╔╧╔╞╓г╓╒╓Л, ╟Лц╤╔╥╔╧╔ф╔Ю╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓фг╖╪╠╓╣╓Л, ╔╚║╪╔х╔Й╔ц╔╦, ╔у╔М╔ц╔т║╪еЫ║╧╓╛ачфЧ╓╣╓Л╓ф╓╓╓Л╓п, ╓Ё╓х╓о╓и╓н╔г╔п╔╓╔╧╓г╓Ба╢╓╞ф╠╓╦╓Х╓╕╓к©й╓ъ╓ч╓╧. (╓Ё╓н╔╩╔╞╔╥╔Г╔С╓оMark Mayo's ZIP FAQ ╓к╢П╓е╓╓╓ф╓╓╓ч╓╧.) ZIP ╔и╔И╔╓╔ж╓Д╔у╔М╔ц╔т║╪╓г, ╓╧╓г╓к DOS ╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓г ╔у╔╘║╪╔ч╔ц╔х╓╥╓ф╓╒╓К╬Л╧Г, ╪║╓н╔Ё╔ч╔С╔и╓Р╩х╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓Л╓о╔у╔М╔ц╔т║╪╓н╬Л╧Г╓г╓╧. &prompt.root; mount -t msdos /dev/fd0c /floppy ╫п╡ы╩Ч╓нюъдЙ╓н ZIP ╔г╔ё╔╧╔╞╓г╓о╓Ё╓╕╓г╓╧. &prompt.root; mount -t msdos /dev/da2s4 /zip ╓╫╓нб╬╓н╔г╔ё╔╧╔╞╓к╢ь╓╥╓ф╓о, fdisk ╓Д /stand/sysinstall ╓Р╩х╓ц╓ф, ╓и╓н╓Х╓╕╓к╔Л╔╓╔╒╔╕╔х╓╣╓Л╓ф╓╓╓К╓╚Ён╓╚╓А╓ф╓╞╓ю╓╣╓╓. ╟й╧ъ╓о ZIP ╔и╔И╔╓╔ж╓╛ 3 хжлэ╓н SCSI ╔г╔ё╔╧╔╞╓г, da2 ╓хг╖╪╠╓╣╓Л╓ф╓╓╓К╬Л╧Г╓ннЦ╓г╓╧. б╬©м╓х╤╕м╜╓╥╓й╓╠╓Л╓п╓й╓И╓й╓╓╔у╔М╔ц╔т║╪╓Д╔Й╔Ю║╪╔п╔ж╔К╔г╔ё╔╧╔╞ ╓г╓й╓╠╓Л╓п, BSD ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╨э╓╩╓ф╓╥╓ч╓╕╓н╓╛ни╓╓╧м╓╗╓г╓╥╓Г╓╕. ╔М╔С╔╟╔у╔║╔╓╔Кл╬╓Б╔╣╔щ║╪╔х╓╣╓Л, ╔я╔у╔╘║╪╔ч╔С╔╧╓о╬╞╓й╓╞╓х╓Б 2 гэ╓о╦Ч╬Е╓╥╓ч╓╧╓╥, ╓╙╓ч╓╠╓к╓╨╓ц╓х╟бдЙ╓╥╓ф╓╓╓ч╓╧. ╓ч╓╨╨г╫И╓к, DOS ╔Л╔ы╔К╓г╓н╔я║╪╔ф╔ё╔╥╔Г╔С / ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Рл╣╦З╓к╓╥╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╩хмя╓╧╓К╓н╓о fdisk ╓г╓Б /stand/sysinstall ╓г╓Б╥К╧╫╓г╓╧. йё©Т╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓РфЧ╓Л╓К╓Ё╓х╓Р╧мн╦╓╧╓К и╛мв╓╛╓й╓╓╓Х╓╕╓ймфнл╓н╬╝╓╣╓й╔и╔И╔╓╔ж╓н╬Л╧Г╓о, ╪║╓н╓Х╓╕╓к FAT ╔я║╪╔ф╔ё╔╥╔Г╔С╔ф║╪╔ж╔К (╔╧╔И╔╓╔╧) а╢бн╓РхТ╓п╓╥╓ф, BSD ╓н╔я║╪╔ф╔ё╔╥╔Г╔СюъдЙ╓Р╧т╓╕╓ю╓╠╓гни╓╓╓г╓╥╓Г╓╕. &prompt.root; dd if=/dev/zero of=/dev/rda2 count=2 &prompt.root; disklabel -Brw da2 auto йё©Т╓н BSD ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╓д╓╞╓К╬Л╧Г, disklabel ╓╚ /stand/sysinstall ╓Р╩х╓╓╓ч╓╧. ╦гдЙ╔г╔ё╔╧╔╞╬Е╓к╔╧╔О╔ц╔внн╟Х╓Р╡ц╓╗╓К╬Л╧Г, ╓╫╓╕╓╓╓╕╓Ё╓х╓Р╓╥╓©╓╓╓х╩в╓╕╓н╓о╓Б╓ц╓х╓Б╓г╓╧╓╛, ZIP ╓н╓Х╓╕╓й╔Й╔Ю║╪╔п╔ж╔К╔и╔И╔╓╔ж╓н╬Е╓г╓о╓╫╓╕╓╓╓╕╧м╓╗╓оите╛юз ╓г╓╥╓Г╓╕. ╨г╦Е╓к, ©╥╓╥╓╓╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╓д╓╞╓Й╓ч╓╧. ╔г╔ё╔╧╔╞а╢бн╓Р╩хмя╓╧╓К ZIP ╔и╔И╔╓╔ж╓н╬Л╧Г╓о, ╟й╡╪╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; newfs /dev/rda2c ╪║╓к╔ч╔╕╔С╔х╓╥╓ч╓╧. &prompt.root; mount /dev/da2c /zip ╓ч╓©, ╪║╓н╓Х╓╕╓й╧т╓Р /etc/fstab ╓кфЧ╓Л╓ф╓╙╓╞╓н╓Бни╓╓╧м╓╗╓г╓╥╓Г╓╕. mount /zip ╓хфЧно╓╧╓К╓ю╓╠╓г╔ч╔╕╔С╔х╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. /dev/da2c /zip ffs rw,noauto 0 0 ╪╚й╛╓н crontab ╔у╔║╔╓╔К╓Рйт╫╦╓╥╓©╦Е root: not found ╓н╓Х╓╕╓й╔А╔ц╔╩║╪╔╦╓╛╠Д║╧╓хи╫╪╗╓╣╓Л╓К╓н╓г╓╧╓╛, ╓Ё╓Л╓о╓й╓╪╓г╓╧╓╚? ╓Ё╓Л╓одл╬О, ╔╥╔╧╔ф╔Ю crontab (/etc/crontab) ╓Рйт╫╦╓╥, &man.crontab.1; ╓Р╩х╓ц╓ф╔╓╔С╔╧╔х║╪╔К╓╥╓©╬Л╧Г╓к╣╞╓Ё╓Й╓ч╓╧. &prompt.root; crontab /etc/crontab ╓Ё╓нйЩк║╓ою╣╓╥╓╞╓╒╓Й╓ч╓╩╓С. ╔╥╔╧╔ф╔Ю crontab ╓н╔у╔╘║╪╔ч╔ц╔х╓о &man.crontab.1; ╓╛╧╧©╥╓╧╓КЁф╔Ф║╪╔╤╓н crontab ╓х╓о╟ш╓й╓Й╓ч╓╧ (╔у╔╘║╪╔ч╔ц╔х╓наЙ╟Цею╓н╬э╨ы╓о &man.crontab.5; ╓гюБлю╓╣╓Л╓ф╓╓╓ч╓╧). ╓Б╓╥╓Ё╓н╓Х╓╕╓йаЮ╨Н╓Р╓╥╓ф╓╥╓ч╓ц╓©╓й╓И, ╓╒╓И╓©╓й crontab ╓о╦М╓ц╓©╔у╔╘║╪╔ч╔ц╔х╓н /etc/crontab ╓н╔Ё╔т║╪╓к╓й╓ц╓ф╓╥╓ч╓ц╓ф╓╓╓К╓╚╓И╓г╓╧. ╟й╡╪╓н╔Ё╔ч╔С╔и╓г╨О╫Э╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; crontab -r ╨ёеы /etc/crontab ╓Рйт╫╦╓╧╓К╩Ч╓о, ╓╫╓нйя╧╧╓Р &man.cron.8; ╓кеа╓╗╓К╓Х╓╕╓йаЮ╨Н╓Р╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С. &man.cron.8; ╓о, ╪╚ф╟е╙╓к╓╫╓нйя╧╧╓Рг╖╪╠╓╧╓К╓╚╓И╓г╓╧. ╓Б╓╥╓╒╓й╓©╓╛╡©╓╚╓Р╟ЛфЭ╟Л╡С, ╓╒╓К╓╓╓о╟Л╫╣╢ж╓Д╟Л╔Ж╥Н╓к╟Л╡С╓ю╓╠ ╪б╧т╓╣╓╩╓©╓╓╓й╓И, ╔╥╔╖╔К╔╧╔╞╔Й╔в╔х╓Р /usr/local/etc/periodic ╓кди╡ц╓╥, &man.periodic.8; ╔Ё╔ч╔С╔и╓к╔╥╔╧╔ф╔Ю╓н cron ╔╧╔╠╔╦╔Е║╪╔К╓╚╓И б╬╓ндЙ╢Эе╙╓й╔╥╔╧╔ф╔Ю╓н╔©╔╧╔╞╓х╓х╓Б╓к ╪б╧т╓╣╓╩╓©╓ш╓╕╓╛ни╓╓╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Ё╓н╔╗╔И║╪╓н╪б╨щ╓н╦╤╟Ь╓о, ╔╥╔╧╔ф╔Ю crontab ╓к╓о ╓и╓н╔Ф║╪╔╤╦╒╦б╓г╔Ё╔ч╔С╔и╓Р╪б╧т╓╧╓К╓╚╓Р╩ьдЙ╓╧╓Км╬й╛╓й╔у╔ё║╪╔К╔и╓╛╓╒╓К╓Ё╓х╓к╓Х╓К╓Б╓н╓г╓╧. FreeBSD ╓ке╨иу╓╣╓Л╓ф╓╓╓Ки╦╫Ю╓н╔╥╔╧╔ф╔Ю crontab ╓к╓о, ╓╧╓ы╓ф╓н╔╗╔С╔х╔Й╓к root ╓╛╫Я╓╚╓Л╓ф╓╓╓ч╓╧. ╓Ё╓н crontab ╓╛ root ╔Ф║╪╔╤╓н crontab (╔╥╔╧╔ф╔Ю crontab ╓х╓о ╟ш╓й╓Й╓ч╓╧) ╓х╓╥╓ф╩х╓О╓Л╓©╬Л╧Г, &man.cron.8; ╓о root ╓Р╪б╧т╓╧╓К╔Ё╔ч╔С╔и╓н╨г╫И╓нц╠╦Л╓ю╓хг╖╪╠╓╥╓ч╓╧╓╛, ╓╫╓н╓Х╓╕╓й╔Ё╔ч╔С╔и╓об╦╨ъ╓╥╓й╓╓╓н╓г╓╧. rc.conf ╓Д╓╫╓нб╬╓н ╔╧╔©║╪╔х╔╒╔ц╔в╔у╔║╔╓╔К╓Р╫Я╓╜╢ж╟Ц╓╗╓ф╓╥╓ч╓╓╓ч╓╥╓©. ╓╥╓╚╓Б╓╫╓н╓©╓А╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓╛╔Й║╪╔и╔╙╔С╔Й║╪╓к╓й╓ц╓ф╓╥╓ч╓ц╓ф╓╓╓ф йт╫╦╓╛╓г╓╜╓ч╓╩╓С. ╓и╓╕╓╧╓Л╓п╓╓╓╓╓г╓╧╓╚? ╔╥╔╖╔К╓н╔я╔╧л╬╓РфЧно╓╧╓К╔в╔М╔С╔в╔х╓╛и╫╪╗╓╣╓Л╓©╓х╓╜╓к, ц╠╓к ENTER ╓Р╡║╓╥, mount / ╓Р ╪б╧т╓╥╓ф╓╫╔К║╪╔х╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╨ф╔ч╔╕╔С╔х╓╣╓╩╓К╓ч╓╧. ╓ч╓©, ╓╙╣╓╓кфЧ╓Й╓н╔╗╔г╔ё╔©╓╛╓╒╓К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р ╔ч╔╕╔С╔х╓╧╓К╓©╓А╓к mount -a -t ufs ╓Р ╓╧╓Ки╛мв╓╛╓╒╓К╓╚╓Бцн╓Л╓ч╓╩╓С. ╓╒╓й╓©╓н╓╙╣╓╓кфЧ╓Й╓н╔╗╔г╔ё╔©╓╛ ╔м╔ц╔х╔О║╪╔╞╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╬Е╓к╓╒╓К╬Л╧Г╓о, ╔м╔ц╔х╔О║╪╔╞╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╔ч╔╕╔С╔х╓╧╓Ка╟╓к╔м╔ц╔х╔О║╪╔╞╓Р ╪Йф╟╓гюъдЙ╓╧╓К╓╚, &man.ed.1; ╓н╓Х╓╕╓й╔М║╪╔╚╔К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓к╓╒╓К ╔╗╔г╔ё╔©╓Р╩х╓╕╓╚╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. &man.vi.1; ╓Д &man.emacs.1; ╓нмм╓й╔у╔К╔╧╔╞╔Й║╪╔С╔╗╔г╔ё╔©╓Р ╩х╓╕╓д╓Б╓Й╓й╓И export TERM=cons25 ╓х ╓Д╓ц╓ф╔╗╔г╔ё╔©╓╛ &man.termcap.5; ╔г║╪╔©╔ы║╪╔╧╓╚╓Ию╣╓╥╓╓ ╔г║╪╔©╓Рфи╓ъ╪Х╓Л╓К╓Х╓╕╓к╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓Ё╓Л╓Р╧т╓ц╓©╓╒╓х╓о╓╓╓д╓Б╓хф╠мм, /etc/rc.conf ╓Рйт╫╦╓╥╓ф╢ж╟Ц╓╓╓РдШю╣╓╧╓К╓Ё╓х╓╛╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. ╔╚║╪╔м╔К╣╞ф╟╔А╔ц╔╩║╪╔╦╓нд╬╦Е╓ки╫╪╗╓╣╓Л╓©╔╗╔И║╪╔А╔ц╔╩║╪╔╦╓к╓о, лДбЙ╓н╣╞╓Ё╓ц╓©╔у╔║╔╓╔КфБ╓г╓н╧тхж╧Ф╓Ри╫╪╗╓╣╓Л╓ф╓╓╓К╓о╓╨╓г╓╧. ╓и╓н╓Х╓╕╓к╓╥╓©╓И DOS ╓нЁхд╔╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╔ч╔╕╔С╔х╓г╓╜╓ч╓╧╓╚? DOS Ёхд╔╔я║╪╔ф╔ё╔╥╔Г╔С╓о, ╓╧╓ы╓ф╓н╢Пкэ╔я║╪╔ф╔ё╔╥╔Г╔С╓н╦Е╓кг╖╪╠╓╣╓Л╓ч╓╧. ╓©╓х╓╗╓п, 2бФлэ╓н SCSI╔и╔И╔╓╔ж╓нЁхд╔╔я║╪╔ф╔ё╔╥╔Г╔С╓к E ╔я║╪╔ф╔ё╔╥╔Г╔С╓╛╓╒╓К╓х╓╥╓ч╓╧╓х, ╓Ё╓Л╓о /dev ╓к║ж╔╧╔И╔╓╔╧ 5 ║в╓н╔╧╔з╔╥╔Ц╔К╔у╔║╔╓╔К╓Р╨Н╓Ки╛мв╓╛╓╒╓Й, /dev/da1s5 ╓х╓╥╓ф╔ч╔╕╔С╔х╓╣╓Л╓ч╓╧. &prompt.root; cd /dev &prompt.root; ./MAKEDEV da1s5 &prompt.root; mount -t msdos /dev/da1s5 /dos/e б╬╓н╔╥╔╧╔ф╔Ю╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р FreeBSD ╓г╔ч╔╕╔С╔х╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╧╓╚? Digital UNIX: UFS CDROM ╓од╬юэ FreeBSD ╓г╔ч╔╕╔С╔х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. Digital UNIX ╓Д╓╫╓Л╟йЁ╟╓н╔╥╔╧╔ф╔Ю╓н╔╣╔щ║╪╔х╓╧╓К UFS ╓н╔г╔ё╔╧╔╞╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╔ч╔╕╔С╔х╓╧╓К╓Ё╓х╓о╓Б╓ц╓хйё╩╗╓й╓Ё╓х╓г, ╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓н╔г╔ё╔╧╔╞╔я║╪╔ф╔ё╔╥╔Г╔С╓н╬э╨ы╓к╟мб╦╓╥╓ч╓╧. Linux: 2.2 ╟й╧ъ╓о ext2fs ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╔╣╔щ║╪╔х╓╥╓ч╓╧. ╔ч╔к╔Е╔╒╔К╓н mount_ext2fs ╓Р╦╚╓ф╓╞╓ю╓╣╓╓. ╓Х╓Йб©╓╞╓н╬ПйС╓╛╓╒╓Й╓ч╓╧. NT: FreeBSD мя╓нфи╓ъ╓ю╓╥╓н╓ъ╡дг╫╓й NTFS ╔и╔И╔╓╔п╓╛╓╒╓Й╓ч╓╧. ╬э╓╥╓╞╓о, Mark Ovens ╩А╓к╓Х╓ц╓ф╫Я╓╚╓Л╓©╔а╔Е║╪╔х╔Й╔╒╔К http://ukug.uk.freebsd.org/~mark/ntfs_install.html ╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓Ё╓нлДбЙ╓к╓д╓╓╓фб╬╓н╬ПйС╓╛╓╒╓Л╓п, б╬╓н©м╓╚╓И╢╤╪у╓╣╓Л╓К╓г╓╥╓Г╓╕. ╓и╓н╓Х╓╕╓к╓╥╓©╓И FreeBSD ╓Р NT ╔М║╪╔ю║╪╓╚╓И╣╞ф╟╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧╓╚? ╓Ё╓н╪Й╫Г╓о 2.2.x ╓х(╣╞ф╟╓╛ 3 ╓д╓н╔╧╔ф║╪╔╦╓кй╛╓╚╓Л╓ф╓╓╓К)3.x ╓н╔╥╔╧╔ф╔Ю╓х╓гб©╬╞╟ш╓й╓Й╓ч╓╧. FreeBSD ╓н╔м╔╓╔ф╔ё╔ж╔К║╪╔х╔я║╪╔ф╔ё╔╥╔Г╔С╓н╨г╫И╓н╔╩╔╞╔©╓Р╔у╔║╔╓╔К╓к╓╥╓ф DOS/NT ╔я║╪╔ф╔ё╔╥╔Г╔С╬Е╓кцж╓╞╓х╓╓╓╕╡Х╢Эе╙╓й╔╒╔╓╔г╔ё╔╒╓╛╓╒╓Й╓ч╓╧. ╔у╔║╔╓╔Кл╬╓Р c:\bootsect.bsd(c:\bootsect.dos ╓╚╓И╓нх╞аш╓г╓╧)╓х╓╥╓©╓х╓╥╓ч╓╧. c:\boot.ini╔у╔║╔╓╔К╓Р╪║╓н╓Х╓╕╓кйт╫╦╓╥╓ч╓╧. [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" ╓Ё╓н╪Й╫Г╓о, мЬмя╓╥╓ф╓╓╓К╔╥╔╧╔ф╔Ю╓╛ 2.2.x ╓г╓╒╓Й, DOS, NT, FreeBSD ╓╒╓К╓╓╓о╓╫╓нб╬╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓╛╓╧╓ы╓ф, ф╠╓╦╔г╔ё╔╧╔╞╓н╓╫╓Л╓╬╓Л╓н fdisk ╔я║╪╔ф╔ё╔╥╔Г╔С╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╓Ё╓х╓РашдЙ╓╥╓ф╓╓╓ч╓╧. ╩Д╓н╬Л╧Г╓о, DOS ╓х NT ╓о╨г╫И╓н╔я║╪╔ф╔ё╔╥╔Г╔С, FreeBSD╓о 2хжлэ╓к╓╒╓Й╓ч╓╧. ╓ч╓©, FreeBSD ╓о MBR ╓Р╩х╓О╓╨╓к, ╔м╔╓╔ф╔ё╔ж╔я║╪╔ф╔ё╔╥╔Г╔С╓╚╓И╣╞ф╟╓╧╓К╓Х╓╕╓к╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╒╓Й╓ч╓╧. (лУцМ: FreeBSD ╓н╔╓╔С╔╧╔х║╪╔К╓г╓о╔ж║╪╔х╔ч╔м╔╦╔Ц╓Р╩х╓О╓╨╓ки╦╫Ю MBR ╓Р╩х╓╕╬Л╧Г╓каЙеЖ╓╥╓ч╓╧) (╓Б╓╥ NTFS ╓кйя╢╧╓╥╓ф╓╥╓ч╓ц╓ф╓╓╓К╓й╓И)DOS ╔у╔╘║╪╔ч╔ц╔х╓н╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓╚ FAT ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р /mnt ╓к DOS ╔ч╔╕╔С╔х╓╥╓ч╓╧. &prompt.root; dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1 ╨ф╣╞ф╟╓╥╓ф╓╥╓ф DOS ╓╚ NT ╓кюзбь╓╗╓ч╓╧. NTFS ╔Ф║╪╔╤╓о bootsect.bsd ╓Д bootsect.lnx ╓Р╔у╔М╔ц╔т║╪╔г╔ё╔╧╔╞╓╚╓И C:\ ╓ь╔Ё╔т║╪╓╥╓ч╓╧. boot.ini ╓н╔у╔║╔╓╔Кб╟ю╜(╔я║╪╔ъ╔ц╔╥╔Г╔С)╓нйя╧╧╓Р╟й╡╪╓н╓Х╓╕╓к╧т╓й╓╓╓ч╓╧. > attrib -s -r c:\boot.ini ╬Е╓ннЦ╓н boot.ini ╓г╪╗╓╥╓©╓Х╓╕╓йю╣╓╥╓╓╔╗╔С╔х╔Й╓Р╡ц╓╗, ╔у╔║╔╓╔Кб╟ю╜╓Р╦╣╓клА╓╥╓ч╓╧. > attrib +s +r c:\boot.ini FreeBSD ╓╛ MBR ╓╚╓И╣╞ф╟╓╧╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓К╬Л╧Г, ╓╫╓Л╓╬╓Л╓н╔м╔╓╔ф╔ё╔ж╔я║╪╔ф╔ё╔╥╔Г╔С╓╚╓И╣╞ф╟╓╧╓К╓Х╓╕╓кюъдЙ╓╥╓©╦Е╓г, DOS ╓╚╓И fdisk ╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╦╣╓клА╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD 3.X ╓к╓╙╓╠╓К╪Й╫Г╓о, ╓Ё╓Л╓Х╓Й╓╓╓╞╓ж╓С╢йц╠╓г╓╧. FreeBSD ╓╛ NT ╣╞ф╟╔я║╪╔ф╔ё╔╥╔Г╔С╓х╓╥╓фф╠╓╦╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╬Л╧Г╓к╓о, /boot/boot1 ╓Рц╠╫Ц╓к C:\BOOTSECT.BSD ╓ь╔Ё╔т║╪╓╥╓ч╓╧. ╓Б╓╥ FreeBSD ╓╛╟ш╓й╓ц╓©╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╬Л╧Г╓к╓о, /boot/boot1 ╓г╓оф╟╨Н╓╥╓ч╓╩╓С╓н╓г, /boot/boot0 ╓╛и╛мв╓г╓╧. ╓Ё╓Ё╓г /boot/boot1 ╓нбЕ╓О╓Й╓к /boot/boot0 ╓Р╔Ё╔т║╪╓╧╓К╓Х╓╕╓й╓Ё╓х╓Р╓╥╓ф╓о╓╓╓╠╓ч╓╩╓С! ╓╫╓╕╓╧╓К╓х, ╔я║╪╔ф╔ё╔╥╔Г╔С╔ф║╪╔ж╔К╓Р╬Е╫Я╓╜╓╥╓ф╓╥╓ч╓╓, ╔Ё╔С╔т╔Е║╪╔©╓╛╣╞ф╟╓г╓╜╓й╓╞╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╧. /boot/boot0 ╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╓к╓о, sysinstall ╓н╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓РмЬмя╓╧╓К╓╚╓и╓╕╓╚©р╓м╓И╓Л╓К╡Хлл╓г FreeBSD ╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓Ра╙бР╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. /boot/boot0 ╓н╔я║╪╔ф╔ё╔╥╔Г╔С╔ф║╪╔ж╔КиТй╛╓о NULL й╦╩З╓гкД╓А╓И╓Л╓ф╓╓╓К╓н╓г╓╧╓╛, sysinstall ╓о /boot/boot0 ╓Р MBR ╓к╔Ё╔т║╪╓╧╓Ка╟╓к╔я║╪╔ф╔ё╔╥╔Г╔С╔ф║╪╔ж╔К╓Р╓╜╓а╓С╓х╔Ё╔т║╪╓╥╓ф╓╞╓Л╓К╓╚╓И╓г╓╧. FreeBSD ╔ж║╪╔х╔ч╔м║╪╔╦╔Ц╓о╨г╦Е╓к╣╞ф╟╓╥╓© OS ╓Р╣╜о©╓╧╓К╓©╓А╓к ╔я║╪╔ф╔ё╔╥╔Г╔С╔ф║╪╔ж╔К╓н╨г╦Е╓к╣╞ф╟╓╥╓© OS ╓н╔╗╔С╔х╔Й╓к╓╒╓К╔╒╔╞╔ф╔ё╔ж╔у╔И╔╟╓Р╔╩╔ц╔х╓╥, 512 ╔п╔╓╔ха╢бн╓Р MBR ╓к╫Я╓╜лА╓╥╓ч╓╧. ╓Ё╓Л╓о /boot/boot0 ╓Р C:\BOOTSECT.BSD ╓к╔Ё╔т║╪╓╥, ╔╗╔С╔х╔Й╓н╟Л╓д╓к╔╒╔╞╔ф╔ё╔ж╔у╔И╔╟╓Р╔╩╔ц╔х╓╥╓ф╤У╓н╔я║╪╔ф╔ё╔╥╔Г╔С╔ф║╪╔ж╔К╓Р MBR ╓к╫Я╓╜╧Ч╓Ю╓Ё╓х╓хф╠╓╦╓г╓╧. FreeBSD ╓х Linux ╓Р LILO ╓╚╓И╣╞ф╟╓╧╓К╓к╓о? FreeBSD ╓х Linux ╓╛ф╠╓╦╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╬Л╧Г, ц╠╓к Linux ╟йЁ╟╓н OS ╓Р╣╞ф╟╓╧╓К╓©╓А╓н LILO ╓н╔╓╔С╔╧╔х║╪╔К╪Й╫Г╓к ╫╬╓╗╓п╓╓╓╓╓ю╓╠╓г╓╧. хС╬О╓к╢йц╠╓к╓г╓о╓╒╓Й╓ч╓╧╓╛, ╣╜╓╥╓ф╓ъ╓ч╓╥╓Г╓╕. Linux ╓Р╣╞ф╟╓╥, /etc/lilo.conf ╓к╟й╡╪╓н╧т╓Р╡ц╓╗╓ф ╓╞╓ю╓╣╓╓. other=/dev/hda2 table=/dev/hda label=FreeBSD (╬Е╣╜╓н╪Й╫Г╓о FreeBSD ╓н╔╧╔И╔╓╔╧╓╛ Linux ╓╚╓И /dev/hda2 ╓х╓╓╓╕л╬а╟╓г╦╚╓╗╓ф╓╓╓К╓х╡╬дЙ╓╥╓ф╓╓╓ч╓╧. ╓╒╓й╓©╓нюъдЙ╓к╓╒╓О╓╩╓ф╓╞╓ю╓╣╓╓) ╓╫╓н╦Е, lilo ╓Р root ╓г╪б╧т╓╧╓Л╓п╢╟н╩╓г╓╧. FreeBSD ╓╛йл╓н╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ф╓╓╓К╓н╓й╓И, LILO ╓н╔╗╔С╔х╔Й╓к loader=/boot/chain.b ╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. нЦ╓╗╓п, ╓Ё╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. other=/dev/dab4 table=/dev/dab loader=/boot/chain.b label=FreeBSD ╬Л╧Г╓к╓Х╓ц╓ф╓о, фС╓длэ╓н╔г╔ё╔╧╔╞╓Рю╣╓╥╓╞╣╞ф╟╓╧╓К╓©╓А╓к FreeBSD ╔ж║╪╔х╔М║╪╔ю╓к BIOS ╔и╔И╔╓╔жхж╧Ф╓Р╩ьдЙ╓╧╓Ки╛мв╓╛╓╒╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. нЦ╓╗╓п, FreeBSD SCSI ╔г╔ё╔╧╔╞╓╛ BIOS ╓к╓Х╓ц╓ф BIOS ╔г╔ё╔╧╔╞ 1 ╓х╓╥╓фг╖╪╠╓╣╓Л╓К╓н╓й╓И, FreeBSD ╓н╔ж║╪╔х╔М║╪╔ю╓н╔в╔М╔С╔в╔х╓г, ╪║╓н╓Х╓╕╓к╩ьдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. Boot: 1:da(0,a)/kernel FreeBSD 2.2.5 ╓Д╓╫╓Л╟й╧ъ╓нхг╓г╓о, ╣╞ф╟╩Ч╓к╬Е╣╜╓н╓Ё╓х╓Р╧т╓й╓╕ ╓ю╓╠╓г╪╚ф╟е╙╓к boot(8) ╓╛юъдЙ╓╣╓Л╓ч╓╧. Linux+FreeBSD mini-HOWTO ╓╛ FreeBSD ╓х Linux ╓х╓РаЙ╦ъ╓к╩х╓╗╓К╓Х╓╕╓к╓╧╓К╓©╓А╓н╓Х╓╓╩╡╧м╩Яна╓к╓й╓К╓г╓╥╓Г╓╕. FreeBSD ╓х Linux ╓Р BootEasy ╓╚╓И╣╞ф╟╓╧╓К╓к╓о? LILO ╓Р╔ч╔╧╔©║╪╔ж║╪╔х╔Л╔Ё║╪╔и(MBR)╓г╓о╓й╓╞ Linux ╓н╣╞ф╟╔я║╪╔ф╔ё╔╥╔Г╔С╓к╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓г BootEasy ╓╚╓И LILO ╓Р╣╞ф╟╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. Windows95 ╓х Linux ╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г╓о, ╓╓╓╨╓Л╓к╓╩╓Х╦Е╪т╓нйЩ╓╛╓╙╓╧╓╧╓А╓г╓╧. Windows95 ╓Р╨ф╔╓╔С╔╧╔х║╪╔К╓╧╓Ки╛мв╓к╓╚╓И╓Л╓©╓х╓╜, Linux ╓Р╣╞ф╟╡дг╫╓клА╓╧╪ЙбЁ╓╜╓╛╢йц╠╓г╓╧╓Ю╓╚╓И╓г╓╧ (Windows95 ╓ойп╤Ч╓й╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓г, ╔ч╔╧╔©║╪╔ж║╪╔х╔Л╔Ё║╪╔и(MBR)╓╚╓Иб╬╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓Рди╓╓й╖╓ц╓ф╓╥╓ч╓╕╓н╓г╓╧). ║ж╢М╦╠Ёп╦Г╓нюЛмя(dangerously dedicated)╔г╔ё╔╧╔╞║в╓о╥Р╧╞╓к╟╜╓╓╓н? ╔╓╔С╔╧╔х║╪╔К╨Н╤хцФ, ╔о║╪╔и╔г╔ё╔╧╔╞╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓Рюз╓К╨щ╓к 2 ╓д╓нйЩк║╓Ра╙╓ж╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔г╔у╔╘╔К╔х╓нйЩк║╓г╓о, fdisk ╓н╔ф║╪╔ж╔К╔╗╔С╔х╔Й(FreeBSD ╓г╓о╔╧╔И╔╓╔╧╓х╦ф╓п╓Л╓К) ╓Р╩х╓ц╓ф, ╪╚©х╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╩хмя╓╧╓К FreeBSD ╓н╔╧╔И╔╓╔╧╓Р, ф╠╓╦╔ч╔╥╔С╓нб╬╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓х╦ъ╢╧ю╜╓н╓╒╓К╥а╓к╓╥╓ч╓╧. ╓╫╓Л╓киу©О╓╥╓ф, ╔ж║╪╔х╔╩╔Л╔╞╔©╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓Л╓п, ╔г╔ё╔╧╔╞╬Е╓н╩хмя╡дг╫╓й╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓Рюз╓Йбь╓╗╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Б╓╕╟Л╓д╓нйЩк║╓о╔г╔ё╔╧╔╞а╢╓ф╓Р FreeBSD ╓г╩х╓╕╓х╓╓╓╕╓Б╓н╓г, ╓Ё╓н╬Л╧Г╓ш╓╚╓н╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓х╓н╦ъ╢╧ю╜╓Р╧мн╦╓╥╓й╓╓╓Ё╓х╓к╓й╓Й╓ч╓╧. ╓г╓о, ╓й╓╪╓Ё╓Л╓╛ ║ж╢М╦╠Ёп╦Г╓н║в╓х╦ю╓О╓Л╓К╓н╓г╓╥╓Г╓╕? ╓Ё╓н╔Б║╪╔и╓н╔г╔ё╔╧╔╞╓╛, дл╬О╓н PC ╓н╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓╛м╜╦З╓й fdisk ╔ф║╪╔ж╔К╓х╦╚╓й╓╧╬ПйС╓Р╩Щ╓ц╓ф╓╓╓й╓╓╓╚╓И╓г╓╧. ╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓н╫пмХг║╡©╓к╓Х╓Й╓ч╓╧╓╛, ╓╫╓н╓Х╓╕╓й╔г╔ё╔╧╔╞╓Рх╞╦╚╓╥╓©╓х╓╜, ╥ы╧П╓Р╫п╓╧╓Б╓н╓Б╓╒╓Й╓ч╓╧. ╓ч╓©, ╓Б╓ц╓х╟╜╓╓╬Л╧Г, Ёнг╖╓Бдл╧П╓Б╓й╓╥╓к BSD ╓н╔ж║╪╔х╔╧╔х╔И╔ц╔в╓к╔ю╔А║╪╔╦╓Рм©╓╗╓К╓Б╓н╓Б╓╒╓К╓г╓╥╓Г╓╕. ╓╣╓И╓к╓о, ║ж╢М╦╠Ёп╦Г╓н║в╔г╔ё╔╧╔╞╔Л╔╓╔╒╔╕╔х╓об©©Т╓н BIOS, AWARD(нЦ╓╗╓п HP Netserver ╓Д Micronics ╔╥╔╧╔ф╔Ю, б╬б©©Т╓г╩хмя╓╣╓Л╓ф╓╓╓©)╓Д Symbios/NCR(©м╣╓╓н╓╒╓КSCSI ╔Ё╔С╔х╔М║╪╔И 53C8xx мя)╓й╓и╓Р╨╝мП╓╣╓╩╓К╓Ё╓х╓╛й╛╓╚╓ц╓ф╓╓╓ч╓╧. ╓Ё╓Л╓о╢╟а╢╓й╔Й╔╧╔х╓г╓о╓╒╓Й╓ч╓╩╓С. б╬╓к╓Б╓ч╓ю╓ч╓ю╓╒╓Й╓ч╓╧. ╓Ё╓н╨╝мП╓нцШ╦У╓о, ╣╞ф╟╩Ч╓к╔╥╔╧╔ф╔Ю╓╛╔М╔ц╔╞╓╧╓К╓х╓╓╓╕╓ю╓╠╓г╓й╓╞, FreeBSD ╓н╔ж║╪╔х╔╧╔х╔И╔ц╔в╓╛╪╚й╛╪╚©х╓Р╦╚╓д╓╠╓И╓Л╓й╓╓╓©╓А╓ки╫╪╗╓╧╓К read error ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓й╓и╓к╓Б╦╫╓Л╓К╓Ё╓х╓г╓╥╓Г╓╕. ╓╫╓Б╓╫╓Б╓╓╓ц╓©╓╓╓й╓╪╓Ё╓н╔Б║╪╔и╓╛╓╒╓К╓н╓г╓╥╓Г╓╕╓╚? ╓Ё╓Л╓о╓О╓╨╓╚╓к©Т╔╜╔М╔п╔╓╔х╓н╔г╔ё╔╧╔╞мфнл╓РюАлС╓╧╓К╓н╓ъ╓г╓╒╓Й, ©╥╣╛╔╓╔С╔╧╔х║╪╔К╓г╪б╨щ╓клДбЙ╓Рю╦╓╨╓К╓н╓г╓╧. ║ж╢М╦╠Ёп╦Г╓н║в╔Б║╪╔и╓н╣╞╦╩╓о©╥╓╥╓╓ FreeBSD ╔╓╔С╔╧╔х║╪╔И╓г╓н, BIOS ╓╚╓И╦╚╓╗╓К╔г╔ё╔╧╔╞╓н ║ж╔╦╔╙╔А╔х╔Й║в╓нцм╓х╔г╔ё╔╧╔╞╪╚©х╓х╓ню╟╧Гю╜╓х╓╓╓╕, ╓Б╓ц╓х╓Б╟Лхле╙╓йлДбЙ╓н╓р╓х╓д╓Р╡СхР╓╥╓©╓╓╓х╓╓╓╕мв╣А╓╛гь╥й╓к╓╒╓Й╓ч╓╧. ║ж╔╦╔╙╔А╔х╔Й║в╓о╩ЧбЕцы╓Л╓нЁ╣г╟╓г╓╧╓╛, л╓╓ю╓к PC BIOS ╓х╔г╔ё╔╧╔╞╓ь╓наЙ╦ъ╨Нмя╓нцФЁк╓Р╓й╓╥╓ф╓╓╓ч╓╧. FreeBSD ╓н╔╓╔С╔╧╔х║╪╔И╓╛╔╧╔И╔╓╔╧╓Р╨Н╓К╩Ч, ╔г╔ё╔╧╔╞╬Е╓н╔╧╔И╔╓╔╧╓Р BIOS ╓╛╦╚╓д╓╠╓И╓Л╓К╓Х╓╕╓к, ╔╧╔И╔╓╔╧╟лцж╓Р╔г╔ё╔╧╔╞╬Е╓к╣╜о©╓╥╓ч╓╧. ╓╫╓Л╓╛╦М╓ц╓ф╓╓╓Л╓п, ╣╞ф╟╓г╓╜╓й╓╞╓й╓ц╓ф╓╥╓ч╓╕╓г╓╥╓Г╓╕. ║ж╢М╦╠Ёп╦Г╓н║в╔Б║╪╔и╓о╓Ё╓Л╓Р, лДбЙ╓Рц╠╫Ц╓к╓╧╓К╓Ё╓х╓г╡СхР╓╥╓Х╓╕╓х╓╥╓ч╓╧. ╬У╤╥╓к╓Х╓ц╓ф╓о╓Ё╓Л╓г╓╕╓ч╓╞╓╓╓╜╓ч╓╧. ╓╥╓╚╓╥╪║а╠╓н╨Ж╓х╓╥╓ф╩х╓О╓Л╓ф╓╓╓К╓к╡А╓╝╓ч╓╩╓С. ╓Ё╓нлДбЙ╓Р╡Р╥Х╓╧╓К╓Б╓ц╓хни╓╓йЩк║╓о╓╓╓╞╓И╓г╓Б╓╒╓К╓н╓г╓╧. ╓г╓о, ╔╓╔С╔╧╔х║╪╔К╩Ч╓к║ж╢М╦╠Ёп╦Г╓нюЛмя║в╔Б║╪╔и╓╛и╛мв╓к╓й╓К ╬У╤╥╓Р╡СхР╓╧╓К╓к╓о╓и╓╕╓╧╓Л╓п╓Х╓╓╓н╓г╓╥╓Г╓╕╓╚? ╓ч╓╨ BIOS ╓╛йС╧П╓╧╓К╔г╔ё╔╧╔╞╓н╔╦╔╙╔А╔х╔Й╓нцм╓РЁп╓╗╓ф╓╙╓╞╓Ё╓х╓╚╓И╓о╓╦╓А╓ч╓╥╓Г╓╕. boot: ╔в╔М╔С╔в╔х╓г ╓Р╩ьдЙ╓╧╓К╓╚, ╔М║╪╔ю╓г boot -v ╓х╩ьдЙ╓╥╓ф, ╣╞ф╟╩Ч╓к╔╚║╪╔м╔К╓к╓Ё╓нцм╓Ри╫╪╗╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔╓╔С╔╧╔х║╪╔И╓╛╣╞ф╟╓╧╓Кд╬а╟╓к, ╔╚║╪╔м╔К╓╛╔╦╔╙╔А╔х╔Йцм╓н╔Й╔╧╔х╓Ри╫╪╗╓╧╓К╓г╓╥╓Г╓╕. ╔я╔к╔ц╔╞╓Р╣╞╓Ё╓╣╓й╓╓╓г╓╞╓ю╓╣╓╓. ╔╓╔С╔╧╔х║╪╔И╓╛╣╞ф╟╓╧╓К╓н╓Рбт╓а, ╣у╔╧╔╞╔М║╪╔К╓г╓╣╓╚╓н╓э╓ц╓фцм╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. иАдл╓о BIOS ╔г╔ё╔╧╔╞╔Ф╔к╔ц╔ххж╧Ф╓о, FreeBSD ╓╛╔г╔ё╔╧╔╞╓Р╦║╫п╓╧╓К╫Г╫Ь╓хф╠мм╓г╓╒╓Й, ╨г╫И╓к IDE, ╪║╓к SCSI ╓х╓й╓Й╓ч╓╧. ╔г╔ё╔╧╔╞╓Р╔╧╔И╔╓╔╥╔С╔╟╓╧╓К╨щ╓к, FDISK ╓н╡Хлл╓ги╫╪╗╓╣╓Л╓К╔г╔ё╔╧╔╞╓н╔╦╔╙╔А╔х╔Й╓╛ю╣╓╥╓╓╓Ё╓х(BIOS ╓нйж╓╧цм╓х╟Лцв╓╥╓ф╓╓╓К╓╚)╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. кЭ╟Л╟ш╓й╓ц╓ф╓╓╓©╓И g ╓Р╡║╓╥╓ф╫╓ю╣╓╥╓ф╓╞╓ю╓╣╓╓. ╔г╔ё╔╧╔╞╓к╓ч╓ц╓©╓╞╓й╓к╓Б╓й╓╓╬Л╧Г╓Д, б╬╓н╔╥╔╧╔ф╔Ю╓╚╓И╩Щ╓ц╓ф╓╜╓©╔г╔ё╔╧╔╞╓н╬Л╧Г╓о ╓Ё╓Л╓Р╧т╓й╓╕и╛мв╓╛╓╒╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Ё╓Л╓о╓╫╓н╔г╔ё╔╧╔╞╓╚╓И╣╞ф╟╓╣╓╩╓Х╓╕╓х╓╥╓ф╓╓╓К╬Л╧Г╓к╓н╓ъ, лДбЙ╓к╓й╓К╓Ё╓х╓кцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓о╓╫╓н╔г╔ё╔╧╔╞╓Р╓╕╓ч╓╓╤Я╧Г╓╓╓кб╬╓н╔г╔ё╔╧╔╞╓х╤Хйл╓╥╓ф╓╞╓Л╓ч╓╧. ╔г╔ё╔╧╔╞╓н╔╦╔╙╔А╔х╔Й╓к╓д╓╓╓ф BIOS ╓х FreeBSD ╢ж╓г╟Лцв╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓©╓И, ╓Ё╓нлДбЙ╓о╓ш╓э╡Р╥Х╓╥╓©╓х╩в╓ц╓ф╓Х╓╓╓г╓╥╓Г╓╕. ╓╫╓╥╓ф╓Б╓о╓Д║ж╢М╦╠Ёп╦Г╓нюЛмя║в╔Б║╪╔и╓ои╛мв╓╒╓Й╓ч╓╩╓С. ╓╥╓╚╓╥, ╓ч╓ю╣╞ф╟╩Ч╓к╤╡ищ╓н read error ╔А╔ц╔╩║╪╔╦╓╛╫п╓К╓Х╓╕╓г╓╒╓Л╓п, ╓╙╣╖╓Й╓РйШ╓╡╓ф©╥╓╥╓╓╔г╔ё╔╧╔╞╓РгЦ╓╓╓ч╓╥╓Г╓╕. ╓Б╓╕╪╨╓╕╓Б╓н╓о╡©╓Б╓╒╓Й╓ч╓╩╓С. ║ж╢М╦╠Ёп╦Г╓нюЛмя╔г╔ё╔╧╔╞║в╓Рдл╬О╓н PC ╓г╓н╩хмяк║╓клА╓╧╓к╓о, ╦╤б╖╓х╓╥╓ф 2 ╓дйЩк║╓╛╓╒╓Й╓ч╓╧. 1 ╓д╓о╫╫й╛╓й NULL ╔п╔╓╔х╓Р MBR ╓к╫Я╓╜╧Ч╓С╓г, ╓╜╓©╓К╓ы╓╜╔╓╔С╔╧╔х║╪╔И╓к╔г╔ё╔╧╔╞╓о╓ч╓ц╓╣╓И╓ю╓х╩в╓╓╧Ч╓ч╓╩╓КйЩк║╓г╓╧. нЦ╓╗╓п, ╓Ё╓С╓й╢╤╓╦╓г╓╧. &prompt.root; dd if=/dev/zero of=/dev/rda0 count=15 ╓ч╓©, ╔ч╔к╔Е╔╒╔К╓к╓о╫Я╓╚╓Л╓ф╓╓╓й╓╓ DOS ╓н║ж╣║г╫║в > fdisk /mbr ╓о, BSD ╔ж║╪╔х╔╧╔х╔И╔ц╔в╓Рди╓╓й╖╓ц╓ф╓╞╓Л╓К╬Е╓к, ©╥╓╥╓╓╔ч╔╧╔©║╪╔ж║╪╔х╔Л╔Ё║╪╔и╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓Л╓ч╓╧. ╓и╓н╓Х╓╕╓к╓╥╓©╓И╔╧╔О╔ц╔внн╟Х╓РаЩ╓Д╓╩╓ч╓╧╓╚? ╔╧╔О╔ц╔в╔я║╪╔ф╔ё╔╥╔Г╔С╓н╔╣╔╓╔╨╓РаЩ╓Д╓╧╓н╓╛╨гни╓нйЩк║╓г╓╧╓╛, йл╓н╔г╔ё╔╧╔╞╓Рди╡ц╓╥╓й╓╞╓ф╨я╓Ю╓х╓╓╓╕мЬею╓н╓╒╓КйЩк║╓╛╓╒╓Й╓ч╓╧. ╥п╦Ё╓╚╓Ифю╓©╟Лхле╙╓ййЩк║╓о╔А╔╓╔С╔А╔Б╔Й╓н 2гэдЬеы╓н╔╧╔О╔ц╔внн╟Х╓Р ╓х╓К╓х╓╓╓╕╓Б╓н╓г╓╧. ╓╥╓╚╓╥╓╢╓╞╬╝╓╣╓й╔А╔╓╔С╔А╔Б╔Й╓╥╓╚╓й╓╓╬Л╧Г╓о, ╓╫╓Л╟й╬Е╓н╔╧╔О╔ц╔в╓Р╧╫ю╝╓╥╓©╓╓╓х╩в╓╕╓г╓╥╓Г╓╕. ╓ч╓©, ╬╜мХ╓н╔А╔Б╔Й╓н ╔╒╔ц╔в╔╟╔Л║╪╔и╓кхВ╓╗, ╦Е╓г╔╧╔О╔ц╔в╓н╧╫ю╝╓Рйя╧╧╓╧╓Ки╛мв╓╛╓й╓╓╓Х╓╕╓к ╫╫й╛╓й╔╧╔О╔ц╔в╓Р╧╫ю╝╓╥╓ф╓╙╓╞╓Ё╓х╓они╓╓╧м╓╗╓г╓╧. ╔╧╔О╔ц╔в╓Рйл╓н╔г╔ё╔╧╔╞╬Е╓кди╡ц╓╧╓К╓Ё╓х╓о, ц╠╫Ц╓кф╠╓╦╔г╔ё╔╧╔╞╬Е ╓к╔╧╔О╔ц╔в╓Рди╡ц╓╧╓К╬Л╧Г╓Х╓Й╓Б╧Бб╝╓кф╟╨Н╓╧╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. нЦ╓к╣С╓╡╓Л╓п, ╓╒╓К╔г╔ё╔╧╔╞╬Е╓н╔╫║╪╔╧╓Р╔Ё╔С╔я╔╓╔К╓╥╓ф╓╓╓К╓х╓╥╓ф, ╔╧╔О╔ц╔в╓╛йл╓н╔г╔ё╔╧╔╞╬Е╓к╨Н╓И╓Л╓ф╓╓╓Л╓п, ╓Ё╓Л╓И╓╛ф╠╓╦╔г╔ё╔╧╔╞╬Е ╓к╓╒╓К╬Л╧Г╓Х╓Й╓БцгаЁб╝╓╓╓г╓╧. SCSI ╔г╔ё╔╧╔╞╓н╬Л╧Г╓офц╓к╓╫╓╕╓ю╓х╦ю╓╗╓ч╓╧. ╔г╔ё╔╧╔╞╓╛йё©Т╓╒╓К╬Л╧Г, ╔╧╔О╔ц╔в╔я║╪╔ф╔ё╔╥╔Г╔С╓РЁф╔г╔ё╔╧╔╞╓к ╨Н╓К╓Х╓╕╓к╧╫ю╝╓╧╓К╓х, ╩хмяцФ╓н╔г╔ё╔╧╔╞╬Е╓к╔╧╔О╔ц╔в╓Рцж╓╓╓©╓х╓╥╓ф╓Б, дл╬О╓н╬Л╧Г╓ом╜╠в╓г╓╧. ╟Лхле╙╓к, ╔╥╔╧╔ф╔Ю╓к╓╒╓К╧Бб╝╓й╔г╔ё╔╧╔╞╓к╓о ╔╧╔О╔ц╔в╓Р╨Н╓К╓Х╓╕╓к╓╧╓ы╓╜╓г╓╥╓Г╓╕. FreeBSD ╓о╔г╔у╔╘╔К╔х╓г╔╓╔С╔©║╪╔Й║╪╔ж╓й╔╧╔О╔ц╔в╔г╔п╔╓╔╧╓Р 4╓д╓ч╓г ╔╣╔щ║╪╔х╓╥╓ч╓╧. йё©Т╓н╔╧╔О╔ц╔в╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╧╫ю╝╓╧╓К╨щ╓к, иАдл╓о╓╫╓Л╓И╓РбГбнф╠╓╦╓╞╓И╓╓╓нбГ╓╜╓╣╓к╓╥╓ф╨Н╓Й╓©╓╓╓х╓Ё╓М╓г╓╧╓╛, ╔╚║╪╔м╔К╓н╔Ё╔╒╔ю╔С╔в╓Р╪Х╓К╓н╓кет╧Г╓╛ни╓╓╓Х╓╕╓к╔А╔╓╔С╓н ╔╧╔О╔ц╔в╔я║╪╔ф╔ё╔╥╔Г╔С╓РбГ╓╜╓А╓к╓х╓К©м╓Б╓╓╓ч╓╧. ╔А╔╓╔С╓н╔╧╔О╔ц╔в╔я║╪╔ф╔ё╔╥╔Г╔С╓о╔╚║╪╔м╔К╓н╔Ё╔╒╓╛╓х╓Л╓К╓Х╓╕╓к ╨гдЦ╓г╓Б╪б╔А╔Б╔Й╓хф╠╓╦бГ╓╜╓╣╓к╓╧╓ы╓╜╓г╓╥╓Г╓╕. IDE ╔и╔И╔╓╔ж╓оф╠╩Ч╓кф╠╓╦╔а╔Ц╔м╔К╬Е╓нйё©Т╓н╔и╔И╔╓╔ж╓к╓о ╔╒╔╞╔╩╔╧╓г╓╜╓ч╓╩╓С (FreeBSD ╓о mode 4 ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓й╓╓╓н╓г, ╓╧╓ы╓ф╓н IDE ╔г╔ё╔╧╔╞ I/O ╓о programmed ╓г╓╧). IDE ╓н╬Л╧Г╓г╓╒╓ц╓ф╓Б╓Д╓о╓Й, ╔╧╔О╔ц╔в╓Рйл╓н╔о║╪╔и╔г╔ё╔╧╔╞╬Е╓к ╨Ню╝╓╧╓К╓Ё╓х╓Р╓╙╓╧╓╧╓А╓╥╓ч╓╧. ╔и╔И╔╓╔ж╓о╪б╓к╟б╓╓╓Б╓н╓г╓╧, ©╢гш╓╧╓К╓ю╓╠л╣бл╓г╓╧. NFS ╠ш╓╥╓к╔╧╔О╔ц╔т╔С╔╟╓╣╓╩╓КйЩк║╓о, ╔╧╔О╔ц╔вмя╓н╔М║╪╔╚╔К╔г╔ё╔╧╔╞╓╛л╣╓╓╬Л╧Г╓к╓н╓ъ©Д╬╘╓╣╓Л╓ч╓╧. NFS ╠ш╓╥╓н╔╧╔О╔ц╔т╔С╔╟╓оцы╓╞, FreeBSD 4.x ╓Х╓Йа╟╓н╔Й╔Й║╪╔╧╓г╓о ╦Зн╗╓╛╟╜╓╓╓н╓г╓╧╓╛, 4.0 ╟й╧ъ╓г╓о╓╫╓Л╓й╓Й╓к╧Бб╝╓к╓й╓Й╓ч╓╧. ╓╫╓╕╓о╓╓╓ц╓ф╓Б, мЬмя╓г╓╜╓К╔м╔ц╔х╔О║╪╔╞╓нбю╓╣╓кю╘╦б╓╣╓Л╓ч╓╧╓╥, NFS ╔╣║╪╔п╓км╬╥в╓йиИ╡ы╓╛╓╚╓╚╓Й╓ч╓╧. ╓Ё╓Л╓о 64MB╓н vn-swap ╓Р╨Н╓КнЦ╓г╓╧(╓Ё╓Ё╓г╓о /usr/swap0 ╓х╓╥╓ч╓╧╓╛, ╓Б╓а╓М╓С╧╔╓╜╓йл╬а╟╓Р╩х╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧). ╔╚║╪╔м╔К╓╛╪║╓н╧т╓Р╢ч╓Ю╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓╚╓И╧╫ю╝╓╣╓Л╓ф╓╓╓К╓╚╓Р Ёнг╖╓╥╓ч╓╧. GENERIC ╔╚║╪╔м╔К╓к╓о, ╓Ё╓н╧т╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. pseudo-device vn 1 #Vnode driver (turns a file into a device) vn ╔г╔п╔╓╔╧╓Р╨Н╓Й╓ч╓╧ &prompt.root; cd /dev &prompt.root; sh ./MAKEDEV vn0 ╔╧╔О╔ц╔в╔у╔║╔╓╔К╓Р╨Н╓Й╓ч╓╧(/usr/swap0) &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 /etc/rc.conf ╓г╔╧╔О╔ц╔в╔у╔║╔╓╔К╓Рм╜╦З╡╫╓╣╓╩╓ч╓╧ swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. ╔ч╔╥╔С╓Р╨ф╣╞ф╟╓╥╓ч╓╧ ╔╧╔О╔ц╔в╔у╔║╔╓╔К╓Р╓╧╓╟╓км╜╦З╡╫╓╣╓╩╓©╓╓╓н╓й╓И╟й╡╪╓н╓Х╓╕╓к╔©╔╓╔в╓╥╓ч╓╧. &prompt.root; vnconfig -ce /dev/vn0c /usr/swap0 swap ╔в╔Й╔С╔©╓н╔╩╔ц╔х╔╒╔ц╔в╓глДбЙ╓╛╓╒╓Й╓ч╓╧ ╔о╔С╔и╔ж╔ц╔╞╓н╔в╔Й╔С╔©╓ниТй╛╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ц╣╓╥╓ф╓╓╓КлДбЙ╓н╓ш╓х╓С╓и╓╛╫Я╓╚╓Л╓ф╓╓╓К╓о╓╨╓г╓╧. FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║ж╔в╔Й╔С╔©╓нмЬмя║в╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╩Д╓н╔╥╔╧╔ф╔Ю╓н╔╜║╪╔э║╪╔и╔ч╔ц╔т╔С╔╟╓о╢ж╟Ц╓ц╓ф╓╓╓ч╓╧. kbdcontrol ╔в╔М╔╟╔И╔Ю╓о, ╔╜║╪╔э║╪╔и╔ч╔ц╔в╔у╔║╔╓╔К╓Рфи╓ъ╧Ч╓Ю╓©╓А╓н╔╙╔в╔╥╔Г╔С╓РхВ╓╗╓ф╓╓╓ч╓╧. /usr/share/syscons/keymaps ╓н╡╪╓к╓©╓╞╓╣╓С╓н╔ч╔ц╔в╔у╔║╔╓╔К╓╛╓╒╓Й╓ч╓╧. ╔╥╔╧╔ф╔Ю╓к╢ьо╒╓н╓╒╓К╓Б╓н╓Р╟Л╓да╙╓С╓г, ╔М║╪╔и╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; kbdcontrol -l uk.iso /usr/share/syscons/keymaps ╓хЁхд╔╩р .kbd ╓о, ╓и╓а╓И╓Б kbdcontrol ╓к╓Х╓ц╓ф╩хмя╓╣╓Л╓ч╓╧. ╓Ё╓Л╓о /etc/sysconfig(╓ч╓©╓о rc.conf) цФ╓гюъдЙ╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓н╔у╔║╔╓╔КцФ╓к╓╒╓К╓╫╓Л╓╬╓Л╓н╔Ё╔А╔С╔х╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD 2.0.5R ╓Д╓╫╓Л╟й╧ъ╓нхг╓г╓о, ╔ф╔╜╔╧╔х╔у╔╘╔С╔х╓Д╔╜║╪╔э║╪╔и╔ч╔ц╔т╔С╔╟╓к╢ь╥╦╓н╓╒╓К╓Б╓н╓о╓╧╓ы╓ф, /usr/share/examples/syscons ╓нцФ╓к╓╙╓╣╓А╓И╓Л╓ф╓╓╓ч╓╧. ╦╫╨ъ╟й╡╪╓н╔ч╔ц╔т╔С╔╟╓╛╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. Belgian ISO-8859-1 Brazilian 275 keyboard Codepage 850 Brazilian 275 keyboard ISO-8859-1 Danish Codepage 865 Danish ISO-8859-1 French ISO-8859-1 German Codepage 850 German ISO-8859-1 Italian ISO-8859-1 Japanese 106 Japanese 106x Latin American Norwegian ISO-8859-1 Polish ISO-8859-2 (programmer's) Russian Codepage 866 (alternative) Russian koi8-r (shift) Russian koi8-r Spanish ISO-8859-1 Swedish Codepage 850 Swedish ISO-8859-1 Swiss-German ISO-8859-1 United Kingdom Codepage 850 United Kingdom ISO-8859-1 United States of America ISO-8859-1 United States of America dvorak United States of America dvorakx ╣╞ф╟╩Ч╓к, unknown: <PNP0303> can't assign resources ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛и╫╪╗╓╣╓Л╓К╓н╓г╓╧╓╛? ╓Ё╓н╔А╔ц╔╩║╪╔╦╓о, ╔в╔И╔╟╔╒╔С╔и╔в╔Л╔╓ (Plug-and-Play) ╔г╔п╔╓╔╧╓╛╦║╫п╓╣╓Л╓©╓╛, ╦╫╨ъмЬмя╓╥╓ф╓╓╓К╔╚║╪╔м╔К╓к╓обп╠Ч╓╧╓К╔и╔И╔╓╔п╓╛╓й╓╓, ╓х╓╓╓╕╓Ё╓х╓Р╪╗╓╥╓ф╓╓╓ч╓╧. фц╓кЁ╡╓о╓╒╓Й╓ч╓╩╓С. ╓Ё╓н╔А╔ц╔╩║╪╔╦╓Ри╫╪╗╓╣╓╩╓©╓╞╓й╓╓╓х╩в╓О╓Л╓КйЩ╓о, ╓╪╓р╔г╔п╔╓╔╧╔и╔И╔╓╔п╓Р FreeBSD Project ╓ч╓г send-pr ╓╥╓ф╓╞╓ю╓╣╓╓. ╔Ф║╪╔╤╔г╔ё╔╧╔╞╔╞╔╘║╪╔©╓╛ю╣╬О╓кф╟╨Н╓╥╓ф╓╓╓й╓╓╓Х╓╕╓г╓╧. / ╓к╓о╔г╔ё╔╧╔╞╔╞╔╘║╪╔©╓РюъдЙ╓╥╓й╓╓╓г╓╞╓ю╓╣╓╓. ╔╞╔╘║╪╔©╔у╔║╔╓╔К╓╛цж╓╚╓Л╓К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╬Е╓к ╔╞╔╘║╪╔©╔у╔║╔╓╔К╓Рцж╓╞╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. Filesystem Quota file /usr /usr/admin/quotas /home /home/admin/quotas ╓О╓©╓╥╓н ccd ╓о, ╡©╓╛е╛╧Г╓╥╓ф╓╓╓й╓╓(Inappropriate)╓н╓г╓╥╓Г╓╕? ╪║╓н╓Х╓╕╓й╬и╬У╓╛╦╫╓Л╓ч╓╧. &prompt.root; ccdconfig -C ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format дл╬О╓Ё╓н╦╫╬щ╓о╔©╔╓╔в╓Р║жл╓╩хмя (unused)║в╓н╓ч╓чйЭ╓ц╓ф╓╙╓╚╓Л╓© c ╔я║╪╔ф╔ё╔╥╔Г╔С╓Р╓д╓й╓╡╓Х╓╕╓х╓╥╓©╬Л╧Г╓к╦╫╓Л╓ч╓╧. ccd ╔и╔И╔╓╔п╓о FS_BSDFFS ╔©╔╓╔в╓Р╔ы║╪╔╧╓х╓╧╓К╔я║╪╔ф╔ё╔╥╔Г╔С╓Рмв╣А╓╥╓ч╓╧. ╓д╓й╓╡╓Х╓╕╓х╓╥╓ф╓╓╓К╔г╔ё╔╧╔╞╓н╔г╔ё╔╧╔╞╔И╔ы╔К╓Рйт╫╦╓╥╓ф, ╔я║╪╔ф╔ё╔╥╔Г╔С╓н╔©╔╓╔в╓Р 4.2BSD ╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. ╓и╓╕╓╥╓ф╓О╓©╓╥╓н ccd ╓н╔г╔ё╔╧╔╞╔И╔ы╔К╓Рйя╧╧╓╧╓К╓Ё╓х╓╛╓г╓╜╓й╓╓╓н╓г╓╥╓Г╓╕? ╪║╓н╓Х╓╕╓й╬и╬У╓╛╦╫╓Л╓ч╓╧. &prompt.root; disklabel ccd0 (it prints something sensible here, so let's try to edit it) &prompt.root; disklabel -e ccd0 (edit, save, quit) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label ╓Ё╓Л╓о ccd ╓╚╓Ийж╓╣╓Л╓К╔г╔ё╔╧╔╞╔И╔ы╔К╓╛, ╪б╓о╔г╔ё╔╧╔╞╬Е╓к╓о╓й╓╓╓ч╓ц╓©╓╞╓н╣╤╓н╬ПйС╓ю╓╚╓И╓г╓╧. ╓Ё╓Л╓Рлю╪╗е╙╓к╫Я╓╜д╬╓╧╓Ё╓х╓глДбЙ╓Р╡Р╬ц╓г╓╜╓ч╓╧, ╓╫╓Л╓к╓о, ╓д╓╝╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; disklabel ccd0 > /tmp/disklabel.tmp &prompt.root; disklabel -Rr ccd0 /tmp/disklabel.tmp &prompt.root; disklabel -e ccd0 (this will work now) FreeBSD ╓о System V ╓н IPC ╔в╔Й╔ъ╔ф╔ё╔ж╓Р╔╣╔щ║╪╔х╓╥╓ч╓╧╓╚? ╓о╓╓. FreeBSD ╓о System-V ╔╧╔©╔╓╔К╓н IPC ╓Р╔╣╔щ║╪╔х╓╥╓ч╓╧. ╤╕м╜╔А╔Б╔Й, ╔А╔ц╔╩║╪╔╦, ╔╩╔ч╔у╔╘╓╛╢ч╓ч╓Л╓ч╓╧. ╟й╡╪╓н╧т╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓к╡ц╓╗╓К╓х, ╔╣╔щ║╪╔х╓╛м╜╦З╓к╓й╓Й╓ч╓╧. options SYSVSHM # enable shared memory options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging FreeBSD 3.2 ╓х╓╫╓Л╟й╧ъ╓г╓о, ╓Ё╓Л╓И╓н╔╙╔в╔╥╔Г╔С╓╛╓╒╓И╓╚╓╦╓А GENERIC ╔╚║╪╔м╔К╓к╢ч╓ч╓Л╓ф╓╓╓ч╓╧╓н╓г, ╓╒╓й╓©╓н╔╥╔╧╔ф╔Ю╓к╓о╓╧╓г╓ках╓ъ╧Ч╓ч╓Л╓ф╓╓╓ч╓╧. ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ф╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. UUCP ╓г╔А║╪╔К╓РгшаВ╓╧╓К╓к╓о sendmail ╓Р╓и╓╕╩х╓╗╓п╓Х╓╓╓н╓г╓╧╓╚? FreeBSD ╓киуб╟╓╥╓ф╓╓╓К sendmail ╓о, ╔╓╔С╔©║╪╔м╔ц╔х╓кд╬юэ╓д╓й╓╛╓ц╓ф╓╓╓К╔╣╔╓╔х╓к╓╒╓О╓╩╓фюъдЙ╓╥╓ф╓╒╓Й╓ч╓╧. UUCP ╥пмЁ╓г mail ╓Р╦Р╢╧╓╥╓©╓╓╬Л╧Г╓к╓о sendmail ╓нюъдЙ╔у╔║╔╓╔К╓Р╡Ч╓А╓ф╔╓╔С╔╧╔х║╪╔К╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. /etc/sendmail.cf ╓Р╪╚й╛╓н╪Й╓г╡Чб╓╓╧╓К╓н╓о╫Ц©Х╪Г╣а╪т╓н╓Д╓К╓Х╓╕╓й╩Ж╓г╓╧. sendmail ╓н version 8 ╓о m4 ╓н╓Х╓╕╓й╔в╔Й╔в╔М╔╩╔ц╔╣╓Рдл╓╥╓фюъдЙ╔у╔║╔╓╔К╓Рю╦ю╝╓╧╓К©╥╓╥╓╓╔╒╔в╔М║╪╔а╓Р╪Х╓ц╓ф╓╙╓Й, ╓Х╓ЙцЙ╬щ╡╫╓╣╓Л╓©╔Л╔ы╔К╓нюъдЙ╔у╔║╔╓╔К╓Рйт╫╦╓╥╓ч╓╧. /usr/src/usr.sbin/sendmail/cf ╔г╔ё╔Л╔╞╔х╔Й╓нцФ╓к╓╒╓КюъдЙ╔у╔║╔╓╔К╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╓╧╓ы╓ф╓н╔╫║╪╔╧╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╓╓й╓╓╬Л╧Г╓к╓о sendmail ╓нюъдЙ╔д║╪╔К╓о, йл╓н tar ╔у╔║╔╓╔К╓к╓ч╓х╓А╓ф╓╒╓Й╓ч╓╧. CD-ROM ╓╛ mount ╓╣╓Л╓ф╓╓╓К╬Л╧Г╓к╓о, ╪║╓н╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmail ╓Ё╓Л╓о╓©╓ц╓©©Т 100Kbyte ╓г╓╧╓╚╓И©╢гш╓й╓╓╓г╓╥╓Г╓╕. cf ╔г╔ё╔Л╔╞╔х╔Й╓к╓╒╓К README ╓к, m4 ╓г╓нюъдЙ╓н╢Пкэе╙╓йюБлю╓╛╓╒╓Й╓ч╓╧. UUCP ╓г╓нгшаВ╓н╓©╓А╓к╓о, mailertable ╓Р╩хмя╓╧╓Л╓п ╓Х╓╓╓г╓╥╓Г╓╕. ╓Ё╓Л╓к╓Х╓ц╓ф, sendmail ╓╛гшаВйЩ╪╟╓Р╥ХдЙ╓╧╓К╔г║╪╔©╔ы║╪╔╧╓Р ╨Ню╝╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓╨╓о╓╦╓А╓к, .mc ╔у╔║╔╓╔К╓Р╨Ню╝╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. /usr/src/usr.sbin/sendmail/cf/cf ╓х╓╓╓╕╔г╔ё╔Л╔╞╔х╔Й╓╛, ╓Ё╓Л╓И╓н╔у╔║╔╓╔К╓Р╨Ню╝╓╧╓К╬Л╫Й╓г╓╧. ╢Ш╓к╓╓╓╞╓д╓╚нЦ╓╛╓╒╓К╓х╩в╓╓╓ч╓╧. ╓Ё╓Л╓╚╓И╨Ню╝╓╧╓К╔у╔║╔╓╔К╓нл╬а╟╓Р foo.mc ╓х╓╧╓К╓х, sendmail.cf ╓Р╣А╓А╓ф╓╓╓К╓Х╓╕╓й╥а╪╟╓кйя╢╧╓╧╓К╓к╓о, ╪║╓н╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/sendmail.cf и╦╫Юе╙╓й .mc ╔у╔║╔╓╔К╓о╪║╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. include(`../m4/cf.m4') VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(nodns) FEATURE(nocanonify) FEATURE(mailertable) define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP nodns ╓х nocanonify ╓х╓╓╓╕╩ьдЙ╓Р╓╧╓К╓Ё╓х╓г, mail ╓нгшаВ╓к DNS ╓Р╩хмя╓╥╓й╓╞╓й╓Й╓ч╓╧. UUCP_RELAY ╓х╓╓╓╕ ╧т╓к╢ь╓╥╓ф╓о, ╓╒╓КмЩмЁ╓╚╓Ии╛мв╓г╓╧╓╛╓╫╓Л╓ой╧╓╚╓й╓╓╓г╓╞╓ю╓╣╓╓. .UUCP ╓г╫╙╓О╓К╡╬аш╔и╔А╔╓╔С╓Р╫ХмЩ╓╧╓К╓Ё╓х╓н╓г╓╜╓К╔╓╔С╔©║╪╔м╔ц╔х╬Е╓г╓н ╔ш╔╧╔хл╬╓Р╓Ё╓Ё╓к╫Я╓╓╓ф╓╞╓ю╓╣╓╓. дл╬О╓о, ISP ╓н mail ╔Й╔Л║╪╔ш╔╧╔х╓Р ╫Я╓╞╓Ё╓х╓к╓й╓К╓х╩в╓╓╓ч╓╧. ╓Ё╓Л╓╛╫╙н╩╓╥╓©╓И, ╪║╓к /etc/mailertable ╓х╓╓╓╕╔у╔║╔╓╔К╓╛и╛мв╓г╓╧. и╦╫Юе╙╓йнЦ╓о╪║╓н╓х╓╙╓Й╓г╓╧. # # makemap hash /etc/mailertable.db < /etc/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: ╦╚╓Л╓пй╛╓╚╓К╓Х╓╕╓к, ╓Ё╓Л╓о╪б╨ъ╓╧╓КюъдЙ╓н╔у╔║╔╓╔К╓г╓╧. ╓о╓╦╓А╓н 3 ╧т╓о╔и╔А╔╓╔Сл╬╓г╩ьдЙ╓╣╓Л╓©╔А║╪╔К╓╛ default ╓н╥по╘╓ггшаВ╓╣╓Л╓╨╓к, ║ж╤Аф╩║в╓╧╓К╓©╓А╓к UUCP ╓гны╓Й╓н╔╣╔╓╔х╓каВ╓К╓©╓А╓нфцйл╓й╬У╤╥╓Р ╫ХмЩ╓╧╓К╓Б╓н╓г╓╧. ╪║╓н╧т╓о Ethernet ╓г╓д╓й╓╛╓ц╓ф╓╓╓К╔М║╪╔╚╔К╓н╔и╔А╔╓╔С╓кбп╓╥╓ф╓о SMTP ╓гаВ╓К╓©╓А╓нюъдЙ╓г╓╧. ╨г╦Е╓к, UUCP ╓г╓нны╓Й╓н╔╣╔╓╔х╓╛. UUCP ╓г╫╙╓О╓К╡╬аш╔и╔А╔╓╔С╓н╫Я╪╟╓г ╩ьдЙ╓╣╓Л╓ф╓╙╓Й, default ╓н rule ╓Р uucp-neighbour! recipient ╓г╬Е╫Я╓╜╓╧╓К╓©╓А╓н╓Б╓н╓г╓╧. ╟Лхж╨г╦Е╓н╧т╓о╓╓╓д╓Б╔и╔ц╔х╓Р╟Л╓д╫Я╓╜╓ч╓╧. ╓Ё╓Л╓о, ╓Ё╓Ё╓ч╓г╓н╧т╓г╔ч╔ц╔а╓╥╓й╓╚╓ц╓©╓╧╓ы╓ф╓н╔ш╔╧╔х╓к╔ч╔ц╔а╓╥, ╓Ё╓н╔╣╔╓╔х╓╚╓Ию╓Ё╕╓к╦Ч╓╠╓ф╫п╓ф╓╓╓╞╓©╓А╓н mail gateway ╓к UUCP ╓ггшаВ╓╧╓К╓©╓А╓н╓Б╓н╓г╓╧. uucp-dom: ╓кбЁ╓╠╓ф╫Я╓╚╓Л╓ф╓╓╓К╔н║╪╔ил╬╓о, uuname ╔Ё╔ч╔С╔и╓г╩ьдЙ╓╧╓К╓Ё╓х╓к╓Х╓ц╓ф UUCP ╓гд╬юэгшаВ╓╣╓Л╓Кю╣╓╥╓╓╔н║╪╔ил╬╓г╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╨г╦Е╓к, ╓Ё╓н╔у╔║╔╓╔К╓о╩хмя╓╧╓Ка╟╓к DBM ╔г║╪╔©╔ы║╪╔╧╓н╔у╔║╔╓╔К╓к йя╢╧╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓Р╧т╓й╓╕╔Ё╔ч╔С╔и╔И╔╓╔С╓о mailertable ╓н╨г╫И╓н╔Ё╔А╔С╔х╓к╫Я╓╓╓ф╓╒╓Й╓ч╓╧. mailertable ╓Рйя╧╧╓╥╓©╩Ч╓к╓о, и╛╓╨╓Ё╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. ╨г╦Е╓н╔р╔С╔х╓г╓╧: ╓Б╓╥фцдЙ╓н╔А║╪╔КгшаВ╓╛╓╕╓ч╓╞╨Нф╟╓╧╓К╓╚╓и╓╕╓╚ Ён╓╚╓А╓©╓╓╬Л╧Г╓к╓о, sendmail ╓н ╔╙╔в╔╥╔Г╔С╓Р ╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╔╙╔в╔╥╔Г╔С╓к╓Х╓ц╓ф sendmail ╓о ╔╒╔и╔Л╔╧╔ф╔╧╔х╔Б║╪╔и╓г╣╞ф╟╓╥╓ч╓╧. 0 ╓н╦Е╓кгшаВ╓╥╓©╓╓╔╒╔и╔Л╔╧╓Р╫Я╓╓╓ф╓╞╓ю╓╣╓╓. ╨г╦Е╓н╧т╓к, ╪б╨щ╓к╩хмя╓╣╓Л╓К mail agent, ╓Ё╓н mail agent ╓гаВ╓И╓Л╓КаВ©╝юХ╓н╔ш╔╧╔х, ╓╫╓╥╓ф (б©й╛йя╢╧╓╣╓Л╓ф╓╓╓К) ╔╒╔и╔Л╔╧╓╛и╫╪╗╓╣╓Л╓ч╓╧. ╓Ё╓н╔Б║╪╔и╓Рх╢╓╠╓К╓к╓о Control-D ╓Р╡║╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 foo@interface-business.de rewrite: ruleset 0 input: foo @ interface-business . de ... rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \ < @ interface-business . de > > ^D ╔ю╔╓╔╒╔К╔╒╔ц╔в╓г╔╓╔С╔©║╪╔м╔ц╔х╓кюэбЁ╓╧╓К╢д╤╜╓г╔А║╪╔К╓Р╔╩╔ц╔х╔╒╔ц╔в╓╧╓К╓к╓о╓и╓╕╓Д╓К╓н? юее╙╓к IP ╔╒╔и╔Л╔╧╓╛ЁД╓ЙеЖ╓ф╓И╓Л╓К╬Л╧Г╓о, ╔г╔у╔╘╔К╔х╓н╬Убж╓Рйя╧╧╓╧╓Ки╛мв╓о╓╒╓Й╓ч╓╩╓С. ЁД╓ЙеЖ╓ф╓И╓Л╓©л╬а╟╓Р╔ш╔╧╔х╔м║╪╔Ю╓х ╓╧╓К╓ю╓╠╓г, sendmail ╓╛╦Е╓н╓Ё╓х╓Р╟З╓╜╪У╓╠╓ф╓╞╓Л╓ч╓╧. ╔ю╔╓╔╒╔К╔╒╔ц╔в ppp ╓Р╔╓╔С╔©║╪╔м╔ц╔хюэбЁ╓к╩хмя╓╥, ф╟е╙╓к IP ╔╒╔и╔Л╔╧╓╛ЁД╓ЙеЖ╓ф╓И╓Л╓К╬Л╧Г╓о, ╔╓╔С╔©║╪╔м╔ц╔х╔╣║╪╔с╔╧╔в╔М╔п╔╓╔ю(ISP)╓н╔А║╪╔К╔╣║╪╔п╓к╔А║╪╔К╔э╔ц╔╞╔╧╓╛╓╒╓К╓о╓╨╓г╓╧. ISP ╓н╔и╔А╔╓╔С╓╛ myISP.com ╓г, ╓╒╓й╓©╓н╔Ф║╪╔╤л╬╓╛ user ╓ю╓х╡╬дЙ╓╥╓ч╓╧. ╓ч╓©, ╓╒╓й╓©╓╛╪╚й╛╓н╔ч╔╥╔С╓Р bsd.home ╓х╦ф╓С╓г╓╙╓Й, ISP ╓╛ relay.myISP.com ╓Р╔А║╪╔К╔Й╔Л║╪╓х╓╥╓ф╩хмя╓г╓╜╓К╓х╦ю╓ц╓ф╓╓╓К╓х╓╥╓ч╓╥╓Г╓╕. ╔А║╪╔К╔э╔ц╔╞╔╧╓╚╓И╔А║╪╔К╓Р╪Х╓ц╓ф╓╞╓К╓©╓А╓к╓о, ╡С╪Щ(retrieval)╔╗║╪╔╦╔╖╔С╔х╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. Fetchmail ╓об©╪Об©мм╓й╔в╔М╔х╔Ё╔К╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓К╓н╓г╓╙╢╚╓А╓г╓╧. ISP ╓╛╩хмя╓╥╓ф╓╓╓К╓н╓о, бГдЯ POP3 ╔в╔М╔х╔Ё╔К╓г╓╧. ╔Ф║╪╔╤ ppp ╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г, /etc/ppp/ppp.linkup ╓к╟й╡╪╓н╓Х╓╕╓к╣╜╫р╓╧╓К╓х, ╔╓╔С╔©║╪╔м╔ц╔х╓хюэбЁ╓╛╢╟н╩╓╥╓©╩Чею╓г╪╚ф╟е╙╓к╔А║╪╔К╓Р╪Хфю╓╧╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. MYADDR: !bg su user -c fetchmail ╔М║╪╔╚╔К╓г╓й╓╓╔╒╔╚╔╕╔С╔х╓к╔А║╪╔К╓РгшаВ╓╧╓К╓н╓к sendmail ╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г(╦Е╫р), ╬Е╓к╪╗╓╥╓©╔╗╔С╔х╔Й╓н╦Е╓к !bg su user -c "sendmail -q" ╓Р╣╜╫р╓╥╓ч╓╧. ╓Ё╓Л╓о╔м╔ц╔х╔О║╪╔╞юэбЁ╓╛Ённ╘╓╥╓©╓И╓╧╓╟╓к sendmail ╓кн╞╓ц╓ф╓╓╓К mailqueue ╓Р╤╞ю╘е╙╓к╫ХмЩ╓╣╓╩╓К╓Х╓╕╓к╓╥╓ч╓╧. ╓Ё╓ннЦ╓г╓о, user ╓╛ bsd.home ╓к╔╒╔╚╔╕╔С╔х╓Р╩Щ╓а, bsd.home ╬Е╓н user ╓н╔ш║╪╔Ю╔г╔ё╔Л╔╞╔х╔Й╓к, ╟й╡╪╓н╓Х╓╕╓й .fetchmailrc ╔у╔║╔╓╔К╓╛╓д╓╞╓И╓Л╓ф╓╓╓К╓Ё╓х╓РашдЙ╓╥╓ф╓╓╓ч╓╧. poll myISP.com protocol pop3 fetchall pass MySecret; ╦ю╓╕╓ч╓г╓Б╓й╓╞, ╓Ё╓н╔у╔║╔╓╔К╓о user ╟йЁ╟╓н╔Ф║╪╔╤╓╛фи╓Ю╓Ё╓х╓╛╫пмХ╓й╓╓╓Х╓╕╓к╓╥╓й╓╞╓ф╓о╓й╓Й╓ч╓╩╓С. фБмф╓к╔я╔╧╔О║╪╔и MySecret ╓╛╢ч╓ч╓Л╓ф╓╓╓К╓╚╓И╓г╓╧. ю╣╓╥╓╓ from: ╔ь╔ц╔ю╓Р╓д╓╠╓ф╔А║╪╔К╓РаВ╓К╓©╓А╓к╓о, sendmail ╓к user@bsd.home ╓г╓о╓й╓╞ user@myISP.com ╓Р╩хмя╓╧╓К╓Х╓╕╤╣╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔А║╪╔К╓Р╓Х╓ЙаА╓╞е╬аВ╓╧╓К╓©╓А╓к, а╢╓ф╓н╔А║╪╔К╓Р relay.myISP.com ╓ьаВ╓К╓Х╓╕╓к sendmail ╓к ╩ь╪╗╓╥╓ф╓╙╓╞╓н╓Бни╓╓╓г╓╥╓Г╓╕. ╬Е╓нмв╥О╓РкЧ╓©╓╧╓к╓о, ╟й╡╪╓н╓Х╓╕╓й .mc ╔у╔║╔╓╔К╓╛е╛╓╥╓ф╓╓╓ч╓╧. VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`myISP.com')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.myISP.com') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE', `deferred')dnl .mc ╔у╔║╔╓╔К╓╚╓И sendmail.cf ╓ь╓нйя╢╧йЩк║╓к╓д╓╓╓ф╓о, а╟╓н╔╩╔╞╔╥╔Г╔С╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. sendmail.cf ╓Р╧╧©╥╓╥╓©╦Е╓к sendmail ╓Р╔Й╔╧╔©║╪╔х╓╧╓К╓н╓Б╓╙к╨╓Л╓й╓╞. ╓╥╓ч╓ц╓©! root ╓н╔я╔╧╔О║╪╔и╓Рк╨╓Л╓ф╓╥╓ч╓ц╓©! ╧╡╓ф╓й╓╓╓г╓╞╓ю╓╣╓╓! ц╠╓к╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╥, ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓к╟э╓К╓©╓А╓к Boot: ╓хи╫╪╗╓╣╓Л╓К╔в╔М╔С╔в╔х╓г boot -s ╓хфЧно╓╥╓ф╓╞╓ю╓╣╓╓. (FreeBSD ╓н 3.2 ╓Х╓Йа╟╓н╔Й╔Й║╪╔╧╓г╓о -s╓х╓й╓Й╓ч╓╧. ) ╓и╓н╔╥╔╖╔К╓Р╩х╓╕╓н╓╚╓х╓╓╓╕╪алД╓к╓о, ENTER ╔╜║╪╓Р╡║╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; ╓к╟э╓К╓Ё╓х╓╛╓г╓╜╓К╓г╓╥╓Г╓╕. mount -u / ╓хфЧно╓╥╓ф ╔К║╪╔х╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓нфи╓ъ╫Я╓╜╓Р╨ф╔ч╔╕╔С╔х╓╥, mount -a ╓хфЧно╓╥╓ф, ╓╧╓ы╓ф╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╔ч╔╕╔С╔х╓╥д╬╓╥╓©╦Е, passwd root ╓хфЧно╓╥╓ф root ╓н╔я╔╧╔О║╪╔и╓РюъдЙ╓╥д╬╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓н╦Е, exit ╓хфЧно╓╧╓Л╓п, ╣╞ф╟╓╛бЁ╓╠╓И╓Л╓ч╓╧. Control-Alt-Delete ╓г╔╥╔╧╔ф╔Ю╓╛╨ф╣╞ф╟╓╥╓й╓╓╓Х╓╕╓к╓╧╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓? FreeBSD 2.2.7-RELEASE ╟й╧ъ╓г syscons(╔г╔у╔╘╔К╔х╓н╔Ё╔С╔╫║╪╔К╔и╔И╔╓╔п) ╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г╓к╓о, ╪║╓н╧т╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓кди╡ц╓╥╓ф ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥, ╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. options SC_DISABLE_REBOOT FreeBSD 2.2.5-RELEASE ╟й╧ъ╓г PCVT ╔Ё╔С╔╫║╪╔К╔и╔И╔╓╔п╓Р╩хмя╓╥╓ф╓╓╓К ╬Л╧Г╓к╓о, ф╠мм╓к╪║╓н╧т╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓кди╡ц╓╥╓ф ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥, ╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. options PCVT_CTRL_ALT_DEL ╬Е╓к╓╒╓╡╓©╓Б╓н╓Х╓Й╓Б╦е╓╓ FreeBSD ╓н╬Л╧Г, ╦╫╨ъ╔Ё╔С╔╫║╪╔К╓╛╩хмя╓╥╓ф╓╓╓К╔╜║╪╔ч╔ц╔в╓Рйт╫╦╓╥, ╔╜║╪╔О║╪╔и boot ╓Р nop ╓к╫Я╓╜╢╧╓╗╓ф╓╞╓ю╓╣╓╓. /usr/share/syscons/keymaps/us.iso.kbd ╓к╓╒╓Й╓ч╓╧. ╓╫╓нйя╧╧╓Рх©╠г╓╣╓╩╓Х╓╕╓х╓╥╓ф, ╓Ё╓н╔╜║╪╔ч╔ц╔в╓н╔М║╪╔и╓Рлю╪╗е╙╓к╧т╓й╓╕╓©╓А╓к, /etc/rc.conf ╓Р╪б╧т╓╧╓ы╓╜╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Б╓а╓М╓Сб╬╓н╧Я╓н╔╜║╪╔ч╔ц╔в╓Р╩х╓ц╓ф╓╓╓К╓н╓г╓╒╓Л╓п, бЕ╓О╓Й╓к╓╫╓н╔╜║╪╔ч╔ц╔в╔у╔║╔╓╔К╓Рйт╫╦╓╥╓ф╓╞╓ю╓╣╓╓. DOS ╓н╔ф╔╜╔╧╔х╔у╔║╔╓╔К╓Р UNIX ╓н╔ф╔╜╔╧╔х╔у╔║╔╓╔К╓кю╟╥а╓╧╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓? ц╠╓к╪║╓н perl ╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.user; perl -i.bak -npe 's/\r\n/\n/g' file ... file ╓ниТй╛╓к╓о╫ХмЩ╓╧╓К╔у╔║╔╓╔К╓Р╩ьдЙ╓╥╓ф╓╞╓ю╓╣╓╓. ю╟╥а╦Е╓н╔у╔║╔╓╔К╓о╦╣╓н╔у╔║╔╓╔Кл╬╓г╨Ню╝╓╣╓Л, ю╟╥аа╟╓н╔у╔║╔╓╔К╓о╔п╔ц╔╞╔╒╔ц╔в╓х╓╥╓ф╦╣╓н ╔у╔║╔╓╔Кл╬╓нкЖхЬ╓кЁхд╔╩р .bak ╓н╓д╓╠╓И╓Л╓©л╬а╟╓г╨Ню╝╓╣╓Л╓ч╓╧. ╓╒╓К╓╓╓о tr(1) ╔Ё╔ч╔С╔и╓Р╩х╓╕╓Ё╓х╓Б╓г╓╜╓ч╓╧. &prompt.user; tr -d '\r' < dos-text-file > unix-file dos-text-file ╓о DOS ╥а╪╟╓н╔ф╔╧╔х╔у╔║╔╓╔К, unix-file ╓к╓ойя╢╧╓╣╓Л╓©╫пно╓╛Ёйг╪╓╣╓Л╓ч╓╧. perl ╓Р╩х╓╕╓Х╓Й╓ш╓С╓н╓а╓Г╓ц╓т╓Йб╝╓╞╓й╓Й╓ч╓╧. л╬а╟╓г╩ьдЙ╓╥╓ф╔в╔М╔╩╔╧╓к╔╥╔╟╔й╔К╓РаВ╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓? killall(1) ╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓. su ╓╛ not in root's ACL ╓х╦ю╓ц╓ф╩Д╓Рг╨╓ч╓╩╓К╓н╓о╓й╓╪? Kerberos ╓нг╖╬з╔╥╔╧╔ф╔Ю╓╚╓И╓╞╓К╔╗╔И║╪╓г╓╧. ╓Ё╓нлДбЙ╓оцвл©е╙╓й╓Б╓н╓г╓о╓й╓╞, ╓╕╓ц╓х╓╙╓╥╓╓╓х╓╓╓ц╓©╓Б╓н╓г╓╧. su ╓к ╔╙╔в╔╥╔Г╔С╓Р╓д╓╠╓ф╣╞ф╟╓╧╓К╓╚, ╪║╓н╪алД╓гюБлю╓╣╓Л╓ф╓╓╓КйЩк║╓г Kerberos ╓Р╔╒╔С╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. Kerberos ╓Р╔╒╔С╔╓╔С╔╧╔х║╪╔К╓╧╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓╓н? ╔╥╔╧╔ф╔Ю╓╚╓И Kerberos ╓Р╨О╫Э╓╧╓К╓к╓о, ╓╒╓й╓©╓нф╟╓╚╓╥╓ф╓╓╓К╔Й╔Й║╪╔╧╓н bin ╔г╔ё╔╧╔х╔Й╔с╔Е║╪╔╥╔Г╔С╓Р╨ф╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥ CDROM ╓Р╩Щ╓ц╓ф╓╓╓К╓н╓й╓И, ╓╫╓н CDROM ╓Р╔ч╔╕╔С╔х(╔ч╔╕╔С╔х╔щ╔╓╔С╔х╓о /cdrom ╓х╡╬дЙ)╓╥╓ф, ╪║╓н╓Х╓╕╓кфЧно╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; cd /cdrom/bin &prompt.root; ./install.sh ╣©╩В╔©║╪╔ъ╔й╔К╓Рди╡ц╓╧╓К╓к╓о? telnet, ssh, X, screen ╓Р╓©╓╞╓╣╓СмЬмя╓╣╓Л╓ф╓╓╓К╬Л╧Г, ╣©╩В╔©║╪╔ъ╔й╔К╓╛б╜╓Й╓й╓╞╓й╓ц╓ф╓╓╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓РаЩ╓Д╓╧╓к╓о╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. ╪║╓н╧т╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓кди╡ц╓╥╓ф pseudo-device pty 256 ©╥╓©╓к╔╚║╪╔м╔К╓Р╨Н╓Й╔╓╔С╔╧╔х║╪╔К╓╥╓ч╓╧. ╪║╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф &prompt.root; cd /dev &prompt.root; ./MAKEDEV pty{1,2,3,4,5,6,7} ©╥╓©╓й╔©║╪╔ъ╔й╔Кмя╓н 256 ╦д╓н╔г╔п╔╓╔╧╔н║╪╔и╓Р╨Н╓Й╓ч╓╧. /etc/ttys ╓Рйт╫╦╓╥ 256 ╦д╓н╔©║╪╔ъ╔й╔К╓╢╓х╓ндЙ╣а╓Рди╡ц╓╥╓ч╓╧. ╢Шб╦╓н╔╗╔С╔х╔Й║╪╓н╥а╪╟╓к╓╒╓О╓╩╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. нЦ╓╗╓п╓Ё╓С╓й╢╤╓╦╓г╓╧. ttyqc none network ю╣╣╛и╫╦╫╓Р╩х╓ц╓©╩ьдЙ╓о tty[pqrsPQRS][0-9a-v] ╓х╓й╓Й╓ч╓╧. ©╥╓╥╓╓╔╚║╪╔м╔К╓г╔╥╔╧╔ф╔Ю╓Р╨ф╣╞ф╟╓╧╓К╓х╢╟н╩╓г╓╧. snd0 ╔г╔п╔╓╔╧╓Р╨Ню╝╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╩╓С! snd ╓х╓╓╓╕╔г╔п╔╓╔╧╓об╦╨ъ╓╥╓ч╓╩╓С. ╓Ё╓нл╬а╟╓о, FreeBSD ╔╣╔╕╔С╔и╔и╔И╔╓╔п╓к╓Х╓ц╓ф╨Ню╝╓╣╓Л╓К╓╣╓ч╓╤╓ч╓й╔г╔п╔╓╔╧, mixer ╓Д sequencer, dsp ╓й╓и╓РаМ╬н╓╥╓©╓Б╓н╓г╓╧. ╓Ё╓Л╓И╓н╔г╔п╔╓╔╧╓Р╨Ню╝╓╧╓К╓к╓о, ╪║╓н╓Х╓╕╓к╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. &prompt.root; cd /dev &prompt.root; sh MAKEDEV snd0 ╨ф╣╞ф╟╓╩╓╨╓к╓Б╓╕╟Леы /etc/rc.conf ╓Рфи╓ъ╧Ч╓С╓г /etc/rc ╓РЁ╚╩о╓╣╓╩╓К╓к╓о? ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓к╟э╧т╓╥╓ф, ╔ч╔К╔а╔Ф║╪╔╤╔Б║╪╔и╓клА╓ц╓ф╓╞╓ю╓╣╓╓. ╔Ё╔С╔╫║╪╔К╓г╪║╓н╓Х╓╕╓к╪б╧т╓╥╓ч╓╧. &prompt.root; shutdown now(цМ: ╓Д ╓оиу╓╠╓ч╓╩╓С) &prompt.root; return &prompt.root; exit ╨╫╬Л(sandbox)╓х╓о╡©╓г╓╧╓╚? ╨╫╬Л(Sandbox) ╓х╓о╔╩╔╜╔Е╔Й╔ф╔ёмя╦Л╓н╟Л╓д╓г, ╪║╓нфС╓д╓н╟улё╓╛╓╒╓Й╓ч╓╧. ╟Л╓длэ╓о, ║ж╡╬аше╙╓й║ькийи║ы╓г╟о╓ч╓Л╓ф╓╓╓К╔в╔М╔╩╔╧║в╓г╓╧. ╓╫╓н║ькийи║ы╓о, ╓╫╓н╔в╔М╔╩╔╧╓к©╞фЧ╓╥╓©бХ╩╟╪т╓╛, ╓╣╓И╓к╔╥╔╧╔ф╔Ю╓н╧╜╓╓хо╟о╓к╠ф╤а╓Рм©╓╗╓К╓Ё╓х╓Рки╓╟╓Х╓╕╓кюъ╥в╓╣╓Л╓ч╓╧. ╓Ё╓н╔в╔М╔╩╔╧╓н©╤иЯ╓╓╓о, ║ькийи║ы╓нцФ╓ю╓╠╓кю╘╦б╓╣╓Л╓К, ╓хи╫╦╫╓г╓╜╓ч╓╧. ╓д╓ч╓Й, ╓Ё╓н╔в╔М╔╩╔╧╓к╓╙╓╓╓ф, ║ькийи║ы╓Р╠ш╓╗╓К╓Х╓╕╓й╔Ё║╪╔и╓н╪б╧т╓о ╓г╓╜╓й╓╓╓х╓╓╓╕╟улё╓г╓╧. ╓╫╓н╓©╓А, ╔Ё║╪╔и╓н╪б╧т╓к╓╙╓╠╓К╔╩╔╜╔Е╔Й╔ф╔ё╓о Ён╓╚╓й╓Б╓н╓г╓╒╓К╓хйщ╬з╓г╓╜, ╪б╧т╓н╬э╨ы╓йдиюв╓Р╧т╓й╓╕и╛мв╓о╓й╓╞╓й╓Й╓ч╓╧. ╓╫╓н║ькийи║ы╓х╓о, нЦ╓╗╓п╔Ф║╪╔╤ ID ╓╛╓╫╓Л╓к╓╒╓©╓К╓г╓╥╓Г╓╕. ╓Ё╓ндЙ╣а╓о, security(7) ╓Д named(8) ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓гмя╓╓╓И╓Л╓ф╓╓╓ч╓╧. ntalk ╔╣║╪╔с╔╧(/etc/inetd.conf ╩╡╬х╓н╓Ё╓х)╓РнЦ╓к╓х╓ц╓ф╓ъ╓ч╓╧. ╓Ё╓н╔╣║╪╔с╔╧╓о╓╚╓д╓ф, ╪б╧т╩Ч╓н ╔Ф║╪╔╤ ID ╓х╓╥╓ф root ╓Рмя╓╓╓ф╓╓╓ч╓╥╓©╓╛, ╦╫╨ъ╓г╓о tty ╓х╓╓╓╕╔Ф║╪╔╤ ID ╓гф╟╨Н╓╥╓ч╓╧. ╔Ф║╪╔╤ tty ╓о, ntalk ╓Р╥пмЁ╓╥╓ф╔╥╔╧╔ф╔Ю╓н©╞фЧ╓кю╝╦Ы╓╥╓©бХ╩╟╪т╓╛ ╓╫╓н╔Ф║╪╔╤ ID ╟й╬Е╓н╦╒╦б╓Рфю╓К╓Ё╓х╓Р, ╓Х╓Й╟Лаь╨╓фЯ╓к╓╧╓К╓©╓А╓кюъ╥в╓╣╓Л╓©╨╫╬Л(sandbox)╓й╓н╓г╓╧. фС╓длэ╓о║ж╔╥╔ъ╔Е╔Л║╪╔х╓╣╓Л╓©╔ч╔╥╔С╓нфБб╕╓г╪б╧т╓╣╓Л╓К╔в╔М╔╩╔╧║в╓н╓Ё╓х╓г, ╓Ё╓а╓И╓о╓Х╓ЙцФЁке╙╓г╓╧. иАдл╓к╧м╓╗╓Л╓п, ╓╒╓К╔в╔М╔╩╔╧╓к©╞фЧ╓╧╓К╓Ё╓х╓╛╓г╓╜╓КбХ╩╟╪т╓о, ╔ч╔╥╔С╓н╓Х╓Й╧╜╓╓хо╟о╓к╓Б©╞фЧ╓г╓╜╓К╓х©╝╓╦╓К╓Б╓н╓й╓н╓г╓╧╓╛, ╓Ё╓н╪О╓н╔в╔М╔╩╔╧╓н╬Л╧Г, ╓╫╓Л╓о╪б╨щ╓к╓о╔╥╔ъ╔Е╔Л║╪╔х╓╣╓Л╓©╔ч╔╥╔С╓к ©╞фЧ╓╥╓©╓ю╓╠╓й╓н╓г, ╦╫╪б╓н╔г║╪╔©╓Рйя╧╧╓╧╓К╓Ё╓х╓о╡©╟Л╓д╓г╓╜╓ч╓╩╓С. ╓Ё╓Л╓Р╪б╦╫╓╧╓К╓©╓А╓н╨г╓Б╧╜╓╞мя╓╓╓И╓Л╓ф╓╓╓КйЩк║╓о, ╔╥╔ъ╔Е╔Л║╪╔х╓╣╓Л╓©╢д╤╜╓Р╔╣╔ж╔г╔ё╔Л╔╞╔х╔Й╓к╧╫цш╓╥, ╓╫╓н╔г╔ё╔Л╔╞╔х╔Й╓к chroot ╓╥╓ф, ╓╫╓н╔г╔ё╔Л╔╞╔х╔Й╓г ╔в╔М╔╩╔╧╓Р╪б╧т╓╧╓К╓Ё╓х(╓д╓ч╓Й, ╓╫╓н╔в╔М╔╩╔╧╓к╓х╓ц╓ф / ╓о ╔╥╔╧╔ф╔Ю╓н╪б╨щ╓н╔К║╪╔х╔г╔ё╔Л╔╞╔х╔Й / ╓г╓о╓й╓╞, chroot ╓╣╓Л╓©╔╣╔ж╔г╔ё╔Л╔╞╔х╔Й╓Р╩ь╓╧)╓г╓╧. ╧╜╓╞мя╓╓╓И╓Л╓ф╓╓╓К╓Б╓╕╟Л╓д╓нйЩк║╓╛╓╒╓Й╓ч╓╧. ╓╫╓Л╓о, ╢Ш╓кб╦╨ъ╓╥╓ф╓╓╓К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р фи╓ъ╧Ч╓ъюЛмя(read-only)╓г╔ч╔╕╔С╔х╓╥, ╓╫╓н╬Е╓к, ╓╒╓К╔в╔М╔╩╔╧╓кбп╓╥╓ф ╓╫╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓╛╫Я╓╜╧Ч╓ъ╡дг╫╓г╓╒╓К╓Х╓╕╓к╦╚╓╩╓К╓Х╓╕╓й, ╓Б╓╕╟Л╓д╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓наь╓Рмя╟у╓╧╓К╓Б╓н╓г╓╧. ╓╧╓К╓х, ╓╫╓н╔в╔М╔╩╔╧╓о╔у╔║╔╓╔К╓Р╫Я╓╜╧Ч╓Ю╓Ё╓х╓╛╓г╓╜╓К╓хг╖╪╠╓╥, ╪б╨щ╓к╫Я╓╜╧Ч╓Ю╓Ё╓х╓╛╓г╓╜╓К╓н╓Б╓╫╓нфцдЙ╓н╔в╔М╔╩╔╧╓ю╓╠ - ╔╥╔╧╔ф╔Ю╓к╓╒╓Кб╬╓н╔в╔М╔╩╔╧╓о╫Я╓╜╧Ч╓А╓й╓╓╓н╓кбп╓╥╓ф - ╓г╓╒╓К╓х╓╓╓╕╬У╤╥╓Р╪б╦╫╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓н╪О╓н╨╫╬Л(sandbox)╓о, ╓╫╓нхС╬О╓кф╘╡Ае╙╓йю╜╪а╓Р╩х╓ц╓ф, ╔Ф║╪╔╤(╓Б╓╥╓╞╓о©╞фЧ╪т)╓╛ ╓╫╓н╩Ж╪б╓к╣╓иу╓╚╓й╓╓╓Х╓╕╓к╪б╦╫╓╣╓Л╓ч╓╧. UNIX ╓о, фБиТе╙╓кфС╓д╓н╨╫╬Л(sandbox)╓Р╪баУ╓╥╓ф╓╓╓ч╓╧. ╟Л╓д╓о╔в╔М╔╩╔╧╔Л╔ы╔К╓н╓Б╓н, ╓Б╓╕╟Л╓д╓о╔Ф║╪╔╤ ID ╔Л╔ы╔К╓н╓Б╓н╓г╓╧. UNIX ╔в╔М╔╩╔╧╓оа╢╓ф, б╬╓н UNIX ╔в╔М╔╩╔╧╓╚╓И╢╟а╢╓кЁжн╔╓╣╓Л╓ф╓╓╓ч╓╧. ╓и╓н╔в╔М╔╩╔╧╓Б, б╬╓н╔в╔М╔╩╔╧╓н╔╒╔и╔Л╔╧╤У╢ж╓Рйя╧╧╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╩╓С. ╓Ё╓Л╓о, ╓╒╓К╔в╔М╔╩╔╧╓╛б╬╓н╔в╔М╔╩╔╧╓н╔╒╔и╔Л╔╧╤У╢ж╓Р╬Е╫Я╓╜╓г╓╜╓К╓Х╓╕╓й, ╔╞╔И╔ц╔╥╔Е╓к╓д╓й╓╛╓К╧т╟ы╓╛мф╟в╓к╪б╦╫╓г╓╜╓К Windows ╓х╓оа╢╓╞╟ш╓й╓К╓Б╓н╓г╓╧. UNIX ╔в╔М╔╩╔╧╓о, фцдЙ╓н╔Ф║╪╔╤ ID ╓╛╫Йм╜╓╥╓ч╓╧. ╓Б╓╥, ╪б╧т╪т╓н╔Ф║╪╔╤ ID ╓╛ root ╔Ф║╪╔╤╓н╓Б╓н╓г╓й╓╠╓Л╓п, ╔Ф║╪╔╤ ID ╓о, б╬╓н╔Ф║╪╔╤╓╛╫Йм╜╓╧╓К╔в╔М╔╩╔╧╓╚╓И ╓╫╓н╔в╔М╔╩╔╧╓Р╪И╓К╣║г╫╓Р╡л╓©╓╧╓О╓╠╓г╓╧. ╓ч╓©, ╓╫╓н╔Ф║╪╔╤ ID ╓о, ╔г╔ё╔╧╔╞╬Е╓к╓╒╓К╔г║╪╔©╓Р йщ╦Н╓╧╓К╓н╓к╓Б╩х╓О╓Л╓ф╓╓╓ч╓╧. ╔╩╔╜╔Е╔╒╔Л╔ы╔К (securelevel) ╓ц╓ф╡©╓г╓╧╓╚? ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓х╓о╔╚║╪╔м╔К╓к╪баУ╓╣╓Л╓ф╓╓╓К╔╩╔╜╔Е╔Й╔ф╔ё╣║╧╫╓н╟Л╓д╓г╓╧. ╢йц╠╓к╦ю╓╕╓х, ╔╚║╪╔м╔К╓о╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛ю╣╓нцм╓н╩Ч╓к, ╓╒╓КфцдЙ╓наЮ╨Н╓Рю╘╦б╓╥╓ч╓╧. ╓Ё╓ню╘╦б╓о, ╓©╓х╓╗╔╧║╪╔я╔Ф║╪╔╤ (root ╓н╓Ё╓х) ╓г╓╒╓ц╓ф╓БнЦЁ╟╓г╓о╓╒╓Й╓ч╓╩╓С. ╓Ё╓нй╦╓Р╫Я╓╓╓ф╓╓╓К╩Чею╓г╓о, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╣║╧╫╓Р╩х╓ц╓ф╟й╡╪╓н╓Х╓╕╓йаЮ╨Н╓Рю╘╦б╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. schg (system immutable flag) ╓н╓Х╓╕╓й╔у╔║╔╓╔К╔у╔И╔╟╓нйя╧╧ /dev/mem ╓╙╓Х╓с /dev/kmem ╥пмЁ╓г╓н╔╚║╪╔м╔К╔А╔Б╔Й╓ь╓н╫Я╓╜╧Ч╓ъ ╔╚║╪╔м╔К╔Б╔╦╔Е║╪╔К╓н╔М║╪╔и &man.ipfirewall.4; ╔К║╪╔К╓нйя╧╧ ╡тф╞цФ╓н╔╥╔╧╔ф╔Ю╓г╔╩╔╜╔Е╔╒╔Л╔ы╔К╓н╬Убж╓Р╔а╔╖╔ц╔╞╓╧╓К╓к╓о, ╪║╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ч╓╧. &prompt.root; sysctl kern.securelevel ╫пно╓к╓о, &man.sysctl.8; йя©Т (╨ё╓н╬Л╧Г╓о kern.securelevel) ╓х©Т╩З╓╛╦╫╓Л╓ч╓╧. ©Т╩З╓╛╦╫╨ъ╓н╔╩╔╜╔Е╔╒╔Л╔ы╔К╓нцм╓г╓╧. ╓Ё╓Л╓╛╓Б╓╥ю╣╓нцм╓й╓И, ╡©╓И╓╚╓н╔╩╔╜╔Е╔╒╔Л╔ы╔К╓к╓Х╓Кю╘╦б╓╛м╜╦З╓к╓й╓ц╓ф╓╓╓ч╓╧. ╔╥╔╧╔ф╔Ю╡тф╞цФ╓к╔╩╔╜╔Е╔╒╔Л╔ы╔К╓Р╡╪╓╡╓К╓Ё╓х╓о╓г╓╜╓ч╓╩╓С. ╓Ё╓Л╓о, ╓╫╓Л╓Р╡дг╫╓к╓╧╓К╓х╔╩╔╜╔Е╔╒╔Л╔ы╔К╓н╟улё╓╛╓й╓╞╓й╓ц╓ф╓╥╓ч╓╕╓╚╓И╓г╓╧. ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛ю╣╓нцм╓г╓й╓╓╓Ё╓х╓Рмв╣А╓╧╓КаЮ╨Н (╓©╓х╓╗╓п installworld ╓ДфЭиу╓нйя╧╧╓й╓и) ╓Р╧т╓й╓╕и╛мв╓╛╓╒╓К╬Л╧Г╓о, /etc/rc.conf ╓к╓╒╓К╔╩╔╜╔Е╔╒╔Л╔ы╔К╓нюъдЙ (kern_securelevel ╓х kern_securelevel_enable ╓х╓╓╓╕йя©Т) ╓Рйя╧╧╓╥╓ф╨ф╣╞ф╟╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓к╢ь╓╧╓К╬э╓╥╓╓╬ПйС╓Д, Ёф╔Л╔ы╔К╓г╪б╦╫╓╣╓Л╓К╣║г╫╓к╢ь╓╥╓ф╓о &man.init.8; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓окЭг╫╓х╓╓╓╕╓О╓╠╓г╓о╓й╓╞, ╪Еею╓Б©Тб©╓╞б╦╨ъ╓╥╓ч╓╧. ╓ч╓©, ╬Л╧Г╓к╓Х╓ц╓ф╓о, ╔╩╔╜╔Е╔Й╔ф╔ё╓РдЦ╡╪╓╣╓╩╓ф╓╥╓ч╓╕╓Ё╓х╓Б╓╒╓Й╓ч╓╧. ╨г╓БбГ╓╜╓йлДбЙ╓н╟Л╓д╓к, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓н╣║г╫╓Рм╜╦З╓к╓╧╓К╓к╓о, ╣╞ф╟╫ХмЩ╓г╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛юъдЙ╓╣╓Л╓К╓ч╓г╓к╩х╓О╓Л╓К╓╧╓ы╓ф╓н╔у╔║╔╓╔К╓Р йщ╦Н╓╧╓Ки╛мв╓╛╓╒╓К╓х╓╓╓╕╓Ё╓х╓╛╓╒╓Й╓ч╓╧. ╓Б╓╥╧╤╥Б╪т╓╛, ╔╥╔╧╔ф╔Ю╓╛╔╩╔╜╔Е╔╒╔Л╔ы╔К╓РюъдЙ╓╧╓Ка╟╓к╔Ё║╪╔и╓Р╪б╧т╓╧╓К╓Ё╓х╓╛╓г╓╜╓К╓х╓╥╓©╓И, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓к╓Х╓Кйщ╦Н╓ол╣╟улё╓к╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╧ (╣╞ф╟╩Ч╓к╓одЦ╓╓╔╩╔╜╔Е╔╒╔Л╔ы╔К╓г╓╥╓╚╪б╧т╓г╓╜╓й╓╓╫ХмЩ╓Р╧т╓й╓╕и╛мв╓╛╓╒╓К╓©╓А, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓нюъдЙ╓о, ╣╞ф╟╫ХмЩ╓н╨г╦Е╓нйЩ╓г╧т╓й╓О╓Л╓ч╓╧). ╣╞ф╟╫ХмЩ╓г╩х╓О╓Л╓К╓╧╓ы╓ф╓н╔у╔║╔╓╔К╓Рйщ╦Н╓╧╓К╓Ё╓х╓о╣╩╫яе╙╓кит╡дг╫╓г╓╧. ╓Б╓╥╓╫╓╕╓г╓╜╓©╓х╓╥╓ф╓Б, ╔╥╔╧╔ф╔Ю╓нйщ╪И╓о╓ч╓╣╓к╟╜л╢╓х╓й╓К╓г╓╥╓Г╓╕. юъдЙ╔у╔║╔╓╔К╟Л╓д╫Я╓╜╢╧╓╗╓К╓н╓к╓Б, ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓кюзбь╓╗╓й╓╠╓Л╓п╓й╓И╓й╓╞╓й╓К╓н╓г╓╧╓╚╓И. ╟й╬Е╓гюБлю╓╥╓©фБмф╓Д╓╫╓нб╬╓нею╓к╓д╓╓╓ф╓о, ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓г╓Бни╓╞оцбЙ╓к╓н╓э╓Й╓ч╓╧. ╣дою╓н╓Х╓╕╓╧╓Р╓Ё╓н╔з║╪╔╦╓╚╓И╦║╨В╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓о, ╓╓╓╨╓Л╓Х╓ЙнЁеы╓н╨ы╓╚╓╓╣║╧╫╓к╓х╓ц╓фбЕ╓О╓К╓ю╓М╓╕╓х╧м╓╗╓ф╓╓╓К©м║╧╓Б╓╓╓ч╓╧╓╛, ╓╫╓нею╓к╓д╓╓╓ф╓о╓ч╓юитф╘лю╓й╓ч╓ч╓г╓╧. ╓и╓╕╓╚цМ╟у╓╧╓К╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. ╔у╔М╔ц╔т║╪╓Д CDROM ╓Дб╬╓н╔Й╔Ю║╪╔п╔ж╔К╔А╔г╔ё╔╒╓н╔ч╔╕╔С╔х╓Р╟Лхл╔Ф║╪╔╤║╪╓к╣Ж╡д╓╧╓К╓к╓о? ╟Лхл╔Ф║╪╔╤║╪╓г╓Б╔г╔п╔╓╔╧╓Р╔ч╔╕╔С╔х╓г╓╜╓К╓Х╓╕╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╪Й╫Г╓о╪║╓н╓х╓╙╓Й╓г╓╧. root ╓к╓й╓ц╓ф, sysctl йя©Т╓г╓╒╓К vfs.usermount ╓Р 1 ╓кюъдЙ╓╥╓ч╓╧. &prompt.root; sysctl -w vfs.usermount=1 root ╓к╓й╓ц╓ф, ╔Й╔Ю║╪╔п╔ж╔К╔А╔г╔ё╔╒╓к╢ьо╒╓╧╓К╔ж╔М╔ц╔╞╔г╔п╔╓╔╧╓ке╛юз╓й╔я║╪╔ъ╔ц╔╥╔Г╔С╓РюъдЙ╓╥╓ч╓╧. нЦ╓х╓╥╓ф, ╨г╫И╓н╔у╔М╔ц╔т║╪╔г╔п╔╓╔╧╓Р╔Ф║╪╔╤║╪╓╛╔ч╔╕╔С╔х╓г╓╜╓К╓Х╓╕╓к╓╧╓К╓к╓о, ╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; chmod 666 /dev/fd0 operator ╔╟╔К║╪╔в╓к╫Йб╟╓╧╓К╔Ф║╪╔╤╓╛ CDROM ╔и╔И╔╓╔ж╓Р╔ч╔╕╔С╔х╓г╓╜╓К╓Х╓╕╓к╓╧╓К╓к╓о ╟й╡╪╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; chgrp operator /dev/cd0c &prompt.root; chmod 640 /dev/cd0c ╨г╦Е╓к vfs.usermount=1 ╓х╓╓╓╕╧т╓Р /etc/sysctl.conf ╔у╔║╔╓╔К╓кди╡ц╓╥, ╔ж║╪╔х╩Ч╓к╔╩╔ц╔х╓╣╓Л╓К╓Х╓╕╓к╓╥╓ф╓╙╓╜╓ч╓╧. ╓Ё╓Л╓г, ╓╧╓ы╓ф╓н╔Ф║╪╔╤╓о ╔у╔М╔ц╔т║╪ /dev/fd0 ╓Р ╪╚©х╓н╫Йм╜╓╧╓К╔г╔ё╔Л╔╞╔х╔Й╓ь╔ч╔╕╔С╔х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/fd0 ~/my-mount-point ╓Ё╓Л╓г, operator ╔╟╔К║╪╔в╓к╫Йб╟╓╧╓К╔Ф║╪╔╤╓о CDROM /dev/cd0c ╓Р ╪╚©х╓н╫Йм╜╓╧╓К╔г╔ё╔Л╔╞╔х╔Й╓ь╔ч╔╕╔С╔х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/cd0c ~/my-mount-point ╔г╔п╔╓╔╧╓н╔╒╔С╔ч╔╕╔С╔х╓о╢йц╠╓г╓╧. &prompt.user; umount ~/my-mount-point ╓╥╓╚╓╥, vfs.usermount ╓Рм╜╦З╓к╓╧╓К╓Ё╓х╓о, ╔╩╔╜╔Е╔Й╔ф╔ё╬Е╓Х╓╓╓Ё╓х╓г╓о╓╒╓Й╓ч╓╩╓С. MSDOS ╥а╪╟╓н╔А╔г╔ё╔╒╓к╔╒╔╞╔╩╔╧╓к╓о, Ports ╔Ё╔Л╔╞╔╥╔Г╔С╓к╓╒╓К ╔я╔ц╔╠║╪╔╦ mtools ╓Р╩хмя╓╥╓©йЩ╓╛╓Х╓╓╓г╓╥╓Г╓╕. ╔╥╔╧╔ф╔Ю╓Р©╥╓╥╓╓╣ПбГ╔г╔ё╔╧╔╞╓ь╟э╓╧╓к╓о╓и╓╕╓╧╓К╓н╓г╓╧╓╚ ? ╟Лхжни╓╓╓н╓о©╥╓╥╓╓╔г╔ё╔╧╔╞╓к OS ╓Р╨ф╔╓╔С╔╧╔х║╪╔К╓╥╓ф, ╓╫╓Л╓╚╓И╔Ф║╪╔╤╔г║╪╔©╓Р╟э╓╧╓Ё╓х╓г╓╧. фц╓к╓╒╓й╓©╓╛ -stable ╓Р йё©Т╓н╔Й╔Й║╪╔╧╓Р╦ы╓╓╓гди╓╓Ёщ╓╠╓ф╓╓╓К╬Л╧Г╓к╓о╓Ё╓нйЩк║╓Р╓╙╓╧╓╧╓А╓╥╓ч╓╧. ╓╒╓й╓©╓о &man.boot0cfg.8; ╓Р╩х╓╕╓Ё╓х╓г booteasy ╓Рн╬йЩ╓н ╔г╔ё╔╧╔╞╓к╔╓╔С╔╧╔х║╪╔К╓г╓╜, ©╥╓╥╓╓гшцж╓гкЧб╜╓╥╓ф╓╓╓К╢ж ╔г╔Е╔╒╔К╔ж║╪╔х╓╛╓г╓╜╓ч╓╧. ╓Ё╓Л╓Р╧т╓ц╓©╓╒╓х╔г║╪╔©╓Р╟э╓╧ йЩк║╓Рц╣╓╧╓й╓И╪║╓нцймН╓офи╓ъхТ╓п╓╥╓ф╓╞╓ю╓╣╓╓. ╡©╓Б╓й╓╓╔г╔ё╔╧╔╞╓ь╔╓╔С╔╧╔х║╪╔К╓╥╓й╓╓╓Ё╓х╓к╥Х╓А╓©╓й╓И╓п /stand/sysinstall, ╓й╓Й &man.fdisk.8; ╓х &man.disklabel.8; ╓й╓Й╓Р╩х╓ц╓ф©╥╓╥╓╓╔г╔ё╔╧╔╞╓к ╔я║╪╔ф╔ё╔╥╔Г╔С╓х╔г╔ё╔╧╔╞╔И╔ы╔К╓Р╨Н╓И╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓ч╓© &man.boot0cfg.8; ╓г booteasy ╓Рн╬йЩ╓н╔г╔ё╔╧╔╞╓к ╔╓╔С╔╧╔х║╪╔К╓╥╓ф, ╔Ё╔т║╪╓н╨Н╤х╓╛╫╙╓О╓ц╓©╓╒╓х╓к ╦е╓╓╔╥╔╧╔ф╔Ю╓╚╓И╓г╓Б©╥╓╥╓╓╔г╔ё╔╧╔╞╓╚╓И╓г╓Б╣╞ф╟╓г╓╜╓К╓Х╓╕╓к ╓╥╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╨Н╤х╓н╬э╨ы╓о formatting-media tutorial ╓Р╦╚╓ф╓╞╓ю╓╣╓╓. ©╥╓╥╓╓╔г╔ё╔╧╔╞╓нн╘╓а╬Е╓╡╓╛╫╙╓О╓ц╓ф╔г║╪╔©╓н╟эф╟╓Р бт╓д╓п╓╚╓Й╓к╓й╓Й╓ч╓╥╓©. ╓╥╓╚╓╥хА╓╥╓╓╓╚╓й, л╣╟г╓Д╓©╓И╓х ╔Ё╔т║╪╓╧╓Л╓п╓╓╓╓╓х╓╓╓╕╓Б╓н╓г╓о╓╒╓Й╓ч╓╩╓С. ╔г╔п╔╓╔╧╔у╔║╔╓╔К (/dev) ╓Д╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓й╓и╓о ╪╨гт╓н╦╣╓к╓й╓Й╓ч╓╧. ╓Ё╓Л╓И╓РмЩ╡Р╓╧╓К╔д║╪╔К, ╓╧╓й╓О╓а &man.dump.8; ╓Д &man.tar.1; еЫ╓Р╩х╓╕и╛мв╓╛╓╒╓Й╓ч╓╧. ╓О╓©╓╥╓о╔г║╪╔©╓н╟эе╬╓Р╔╥╔С╔╟╔К╔Ф║╪╔╤╓г╧т╓╕╓Ё╓х╓Р╢╚╓А╓ч╓╧╓╛ юДбп╓х╦ю╓╕╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. ╓╒╓й╓©╓о &man.dump.8; ╓х &man.restore.8; ╟йЁ╟╓н╓Б╓н╓г root ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╟э╧т╓╥╓ф╓о╓й╓Й╓ч╓╩╓С. &man.tar.1; ╔Ё╔ч╔С╔и╓г╓Б╓©╓ж╓С╓╕╓ч╓╞╧т╓╞╓г╓╥╓Г╓╕╓╛, ╓Д╓И╓й╓╓╓ш╓╕╓╛╓╓╓╓╓г╓╥╓Г╓╕. ╔я║╪╔ф╔ё╔╥╔Г╔С╟Л╓д╓Р ╓Б╓╕╟Л╓д╓н╓╚╓И╓н╔я║╪╔ф╔ё╔╥╔Г╔С╓к╟э╓╧╓х╓╜╓о &man.dump.8; ╓х &man.restore.8; ╩х╓╕╓ы╓╜╓г╓╧. ╔я║╪╔ф╔ё╔╥╔Г╔С╓н╔г║╪╔©╓Р©╥╓╥╓╓╔я║╪╔ф╔ё╔╥╔Г╔С╓к╟э╓╧╓н╓к dump ╓Р╩х╓╕╓Д╓ЙйЩ╓о╟й╡╪╓ндл╓Й╓г╓╧. ©╥╓╥╓╓╔я║╪╔ф╔ё╔╥╔Г╔С╓к newfs ╓Р╓╚╓╠╓К. ╓╫╓Л╓Р╩цдЙе╙╓й╔ч╔╕╔С╔х╔щ╔╓╔С╔х╓к╔ч╔╕╔С╔х╓╧╓К. ╓╫╓н╔г╔ё╔Л╔╞╔х╔Й╓к cd. ╦е╓╓╔я║╪╔ф╔ё╔╥╔Г╔С╓Р dump ╓╥, ╓╫╓н╫пно╓Р╔я╔╓╔в╓г©╥╓╥╓╓йЩ╓ь. ╓©╓х╓╗╓п root ╓Р /dev/ad1s1a ╓ь, ╩цдЙе╙╓й╔ч╔╕╔С╔х╔щ╔╓╔С╔х╓Р /mnt ╓х╓╥╓ф╟э╓╫╓╕╓х╓╧╓К╓х╟й╡╪╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. &prompt.root; newfs /dev/ad1s1a &prompt.root; mount /dev/ad1s1a &prompt.root; cd /mnt &prompt.root; dump 0uaf - / | restore xf - ╓Б╓╥╔я║╪╔ф╔ё╔╥╔Г╔С╓н╧╫ю╝╓Рйя╓╗╓Х╓╕╓х╩в╓ц╓ф╓╓╓К╓й╓И - ╓д╓ч╓Й╟Л╓д╓ю╓ц╓©╓Б╓н╓РфС╓д╓к╓╥╓©╓ЙфС╓д╓ю╓ц╓©╓Б╓н╓Р╓╞╓ц╓д╓╠╓©╓Й ╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К╓й╓И, ╪╚а╟╓г╓╒╓К╔г╔ё╔Л╔╞╔х╔Й╟й╡╪╓н╓╧╓ы╓ф╓Р ©╥╓╥╓╓╬Л╫Й╓ь╟э╓╧и╛мв╓╛╫п╓ф╓╞╓К╓╚╓Бцн╓Л╓ч╓╩╓С. &man.dump.8; ╓о ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓кф╞╓╞╓н╓г╓Ё╓нлэе╙╓к╓о╩х╓╗╓ч╓╩╓С. ╓Ё╓н╬Л╧Г╓о &man.tar.1; ╓Р╩х╓╓╓ч╓╧. ╟Лхл╓к /old ╓╚╓И /new ╓ь╓н╟эф╟╓о &man.tar.1; ╓г ╟й╡╪╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; (cd /old; tar cf - .) | (cd /new; tar xpf -) /old ╓кб╬╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓╛ ╔ч╔╕╔С╔х╓╣╓Л╓ф╓╓╓ф, ╓╫╓н╔г║╪╔©╓н╟эф╟╓ч╓г╓о╧м╓╗╓ф╓й╓╓╓й╓И╓п ╨г╫И╓н &man.tar.1; ╓к 'l' ╔у╔И╔╟╓Рди╡ц╓╥╓ч╓╧. &prompt.root; (cd /old; tar clf - .) | (cd /new; tar xpf -). tar ╓н╓╚╓О╓Й╓к cpio(1) ╓Д pax(1), cpdup (ports/sysutils/cpdup) еЫ╓Р ╩х╓ц╓ф╓Б╧╫╓╓╓ч╓╩╓С. ╔╥╔╧╔ф╔Ю╓Р╨г©╥╓н -STABLE ╓к╔╒╔ц╔в╔г║╪╔х╓╥╓Х╓╕╓х╓╥╓©╓н╓г╓╧╓╛ -RC ╓Д -BETA ╓к╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╥╓©! ╡©╓╛╣╞╓Ё╓ц╓©╓н╓г╓╧╓╚? ц╩╓╓еЗ╓╗: ╓©╓ю╓нл╬а╟╓г╓╧. RC ╓о ╔Й╔Й║╪╔╧╦УйД (Release Candidate) ╓к мЁмХ╓╧╓К╓Б╓н╓г, ╔Й╔Й║╪╔╧╓╛╢ж╤А╓г╓╒╓К╓Ё╓х╓Р╟улё╓╥╓ч╓╧. ╓ч╓©, FreeBSD ╓к╓╙╓╠╓К -BETA ╓одл╬О, ╔Й╔Й║╪╔╧а╟╓н╔Ё║╪╔и╔у╔Й║╪╔╨╢Э╢ж╓кфЧ╓ц╓ф╓╓╓К╓х╓╓╓╕╟улё╓к╓й╓Й╓ч╓╧. д╧╓╓еЗ╓╗: FreeBSD ╓о╓╫╓н╔Й╔Й║╪╔╧╓Р 2 ╔Ж╫Й╓╒╓К╓╕╓а╓н ╟ЛйЩ╓╚╓Игию╦╓╣╓╩╓ч╓╧. 3.0-RELEASE ╓Д 4.0-RELEASE ╓нмм╓й (0 ╓н╔ч╔╓╔й║╪хж╧Ф╓Р╩Щ╓д) ╔А╔╦╔Ц║╪╔Й╔Й║╪╔╧╓о, ╟Лхл╓к -CURRENT ╓х╦ф╓п╓Л╓К Ё╚х╞хг╓нн╝╓Л╓╚╓Ий╛╢Т╓╣╓╩╓И╓Л╓ф╓г╓╜╓ч╓╧. 3.1-RELEASE ╓Д 4.2-RELEASE ╓й╓и╓н╔ч╔╓╔й║╪╔Й╔Й║╪╔╧╓о╔╒╔╞╔ф╔ё╔ж╓й -STABLE ╔ж╔И╔С╔а (╩ч) ╓н ╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓г╓╧. ╔Й╔Й║╪╔╧╓Р╨Н╓К╩Ч╓к╓й╓К╓х╓╫╓Л╓Рй╛╢Т╓╣╓╩╓К╔ж╔И╔С╔а╓о фцдЙ╓н╔в╔М╔╩╔╧╓ьфмфЧ╓╥╓ч╓╧. ╓╫╓н╔в╔М╔╩╔╧╓н╟Л╓д╓о ╔Ё║╪╔и╔у╔Й║╪╔╨ (╔Ё║╪╔и╓неЮ╥К) ╓г╓╧. ╔Ё║╪╔и╔у╔Й║╪╔╨╓╛ ╩о╓ч╓К╓х, ╓╫╓н╔ж╔И╔С╔а╓нл╬а╟╓╛╔Й╔Й║╪╔╧╓к╓й╓М╓╕╓х╓╥╓ф╓╓╓К╓Ё╓х╓Р х©╠г╓╧╓К╓Б╓н╓кйя╓╗╓И╓Л╓ч╓╧. ╓©╓х╓╗╓п, 4.0-STABLE ╓х ╦ф╓п╓Л╓ф╓╓╓©╔ж╔И╔С╔а╓ол╬а╟╓╛ 4.1-BETA ╓ь╓х йя╓╗╓И╓Л, ╔Ё║╪╔и╔у╔Й║╪╔╨╓х╔Й╔Й║╪╔╧а╟╓н╔ф╔╧╔х╓╛ ╩о╓ч╓ц╓©╓Ё╓х╓Р╪╗╓╥╓ч╓╧. ╔п╔╟╓н╫╓ю╣╓о╔Й╔Й║╪╔╧╓н╟ЛиТ╓х╓╥╓ф╔Ё╔ъ╔ц╔х╓╣╓Л╓ч╓╧. ╔╫║╪╔╧╔Ё║╪╔и╓╛╔Й╔Й║╪╔╧╓н╥а╓Р╪Х╓ц╓©╓й╓Ил╬а╟╓╛ 4.1-RC ╓ь╓х йя╓╗╓И╓Л, ╓╫╓Л╓╚╓И╔Й╔Й║╪╔╧╓╛╨Н╓И╓Л╓К╓Ё╓х╓Р╪╗╓╥╓ч╓╧. ╓р╓х╓©╓с RC ╓н╔╧╔ф║╪╔╦╓к╓й╓ц╓ф╓╥╓ч╓╕╓х, х╞╦╚╓╣╓Л╓© ╓Б╓ц╓х╓Бцвл©е╙╓й╔п╔╟╓н╫╓ю╣╓╥╓╚╓г╓╜╓й╓╞╓й╓Й╓ч╓╧. ╓р╓х╓©╓с╔Й╔Й║╪╔╧╓╛ (╓Ё╓ннЦ╓г╓о 4.1-RELEASE) ╨Н╓И╓Л╓Л╓п, ╓╫╓н╔ж╔И╔С╔а╓о 4.1-STABLE ╓х╡Чл╬╓╣╓Л╓ч╓╧. ©╥╓╥╓╓╔╚║╪╔м╔К╓РфЧ╓Л╓Х╓╕╓х╓╥╓©╓н╓г╓╧╓╛, chflags ╓к╪╨гт╓╥╓ч╓╧. ╓и╓╕╓╧╓Л╓пни╓╓╓н╓г╓╥╓Г╓╕? ╢йц╠╓й╡СеЗ: б©й╛, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛ 0 ╓Х╓ЙбГ╓╜╓╞╓й╓ц╓ф╓╓╓К╓н╓г╓╥╓Г╓╕. д╬юэ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓г╨ф╣╞ф╟╓╥╓ф, ╔╚║╪╔м╔К╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╞╓ю╓╣╓╓. ╬э╓╥╓╓╡СеЗ: FreeBSD ╓г╓о, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛ 0 ╓Х╓ЙбГ╓╜╓╓╬Л╧Г, ╔╥╔╧╔ф╔Ю╔у╔И╔╟╓нйя╧╧╓╛╤ь╩ъ╓╣╓Л╓ч╓╧. ╦╫╨ъ╓н╔╩╔╜╔Е╔╒╔Л╔ы╔К╓о, ╪║╓н╔Ё╔ч╔С╔и╓Р╩х╓ц╓фд╢╓ы╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.root; sysctl kern.securelevel ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓Р╡╪╓╡╓КаЮ╨Н╓о, ╓г╓╜╓й╓╓╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓╫╓н╓©╓А, ╔╚║╪╔м╔К╓Р╔╓╔С╔╧╔х║╪╔К╓╧╓К╓к╓о, ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓г╣╞ф╟╓╧╓К╓╚, /etc/rc.conf ╓н╔╩╔╜╔Е╔Й╔ф╔ёюъдЙ╓Рйя╧╧╓╥╓ф╨ф╣╞ф╟╓╧╓Ки╛мв╓п╓╒╓Й╓ч╓╧. ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓н╬э╨ы╓о &man.init.8; ╓Р, rc.conf ╓н╬э╨ы╓о /etc/defaults/rc.conf ╓╙╓Х╓с, &man.rc.conf.5; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╔╥╔╧╔ф╔Ю╓н╩Ч╧О╓Р 1 иц╟й╬Ейя╧╧╓╧╓К╓Ё╓х╓╛╓г╓╜╓й╓╓╓н╓г╓╧! ╓и╓╕╓╧╓Л╓пни╓╓╓н╓г╓╥╓Г╓╕? ╢йц╠╓й╡СеЗ: б©й╛, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛ 1 ╓Х╓ЙбГ╓╜╓╞╓й╓ц╓ф╓╓╓К╓н╓г╓╥╓Г╓╕. д╬юэ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓г╨ф╣╞ф╟╓╥╓ф, ╩Ч╧О╓нйя╧╧╓Р╓╥╓ф╓╞╓ю╓╣╓╓. ╬э╓╥╓╓╡СеЗ: FreeBSD ╓г╓о, ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓╛ 1 ╓Х╓ЙбГ╓╜╓╓╬Л╧Г, 1 иц╟й╬Е╓н╩Ч╧Ойя╧╧╓╛╤ь╩ъ╓╣╓Л╓ч╓╧. ╦╫╨ъ╓н╔╩╔╜╔Е╔╒╔Л╔ы╔К╓о, ╪║╓н╔Ё╔ч╔С╔и╓Р╩х╓ц╓фд╢╓ы╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.root; sysctl kern.securelevel ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓Р╡╪╓╡╓КаЮ╨Н╓о, ╓г╓╜╓й╓╓╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓╫╓н╓©╓А, ╔╥╔╧╔ф╔Ю╓н╩Ч╧О╓Рйя╧╧╓╧╓К╓к╓о, ╔╥╔С╔╟╔К╔Ф║╪╔╤╔Б║╪╔и╓г╣╞ф╟╓╧╓К╓╚, /etc/rc.conf ╓н╔╩╔╜╔Е╔Й╔ф╔ёюъдЙ╓Рйя╧╧╓╥╓ф╨ф╣╞ф╟╓╧╓Ки╛мв╓п╓╒╓Й╓ч╓╧. ╔╩╔╜╔Е╔╒╔Л╔ы╔К╓н╬э╨ы╓о &man.init.8; ╓Р, rc.conf ╓н╬э╨ы╓о /etc/defaults/rc.conf ╓╙╓Х╓с, &man.rc.conf.5; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╓╢мВ╓╞╓ю╓╣╓╓. &man.rpc.statd.8; ╓к╔А╔Б╔Й╔Й║╪╔╞╓Р╦╚╓д╓╠╓ч╓╥╓©! ╔А╔Б╔Й╓Р 256 ╔А╔╛╔п╔╓╔х╓Б╩х╓ц╓ф╓╓╓ч╓╧. ╓╓╓╓╓╗. ╓╫╓Л╓о╔А╔Б╔Й╔Й║╪╔╞╓г╓о╓╒╓Й╓ч╓╩╓С╓╥, 256 ╔А╔╛╔п╔╓╔х╓н╔А╔Б╔Й╓Р╩х╓ц╓ф╓╓╓К, ╓х╓╓╓╕╓Ё╓х╓г╓Б╓╒╓Й╓ч╓╩╓С. ╓╙╓╫╓И╓╞ (╓ш╓х╓С╓и╓н╬Л╧Г), ╫ХмЩ╓кет╧Г╓╛ни╓╓╓Х╓╕╓кхС╬О╓к╓©╓╞╓╣╓С╓ннл╓н╔А╔Б╔Й╓Р ╓╫╓н╔в╔М╔╩╔╧╓н╔╒╔и╔Л╔╧╤У╢ж╓к╔ч╔ц╔т╔С╔╟╓╥╓ф╓╓╓К╓н╓г╓╥╓Г╓╕. ╣╩╫яе╙╓й╦╚цо╓╚╓И╧м╓╗╓ф╓Б, ╓Ё╓Л╓обГ╓╜╓йЁ╡╓╛╓╒╓К╓Ё╓х╓г╓о╓й╓╞, ц╠╓к &man.top.1; ╓Д &man.ps.1; ╓х╓╓╓ц╓©╔д║╪╔К╓ни╫╪╗╓к╠ф╤а╓╛╓╒╓КдЬеы╓г╓╧. &man.rpc.statd.8; ╓о, (/var ╓к╓╒╓К) ╔╧╔ф║╪╔©╔╧╔у╔║╔╓╔К╓Р╪╚й╛╓н╔╒╔и╔Л╔╧╤У╢ж╓к╔ч╔ц╔т╔С╔╟╓╥╓ч╓╧. ╔ч╔ц╔т╔С╔╟╓о, ╦Е╓гбГ╓╜╓й╤У╢ж╓╛и╛мв╓к╓й╓ц╓©╩Ч╓к╨ф╔ч╔ц╔т╔С╔╟╓╥╓й╓╓╓г╨я╓Ю╓Х╓╕, хС╬О╓кбГ╓╜╓й╔╣╔╓╔╨╓Р╩ьдЙ╓╥╓ф╧т╓й╓О╓Л╓ч╓╧. ╓Ё╓Л╓о, ╔╫║╪╔╧╔Ё║╪╔и╓к╢ч╓ч╓Л╓К &man.mmap.2; ╢ь©Т╓н╔ч╔ц╔т╔С╔╟д╧╓Р╪╗╓╧╟З©Т╓к 0x10000000 ╓╛╩ьдЙ╓╣╓Л╓ф╓╓╓К╓Ё╓х╓╚╓И╓Бй╛╓╚╓Й╓ч╓╧. ╓Ё╓н©Т╩З╓╛ IA32 ╔╒║╪╔╜╔ф╔╞╔а╔Ц╓н╩Щ╓д╔╒╔и╔Л╔╧╔╧╔з║╪╔╧а╢бн╓н 16 й╛╓н 1, ╓╧╓й╓О╓а, ╓а╓Г╓╕╓и 256 ╔А╔╛╔п╔╓╔х╓каЙеЖ╓╧╓К╓н╓г╓╧. X Window System ╓х╡╬аш╔Ё╔С╔╫║╪╔К лУ: &a.motoyuki; 1997 г╞ 11 ╥Н 13 фЭ. X ╓Рф╟╓╚╓╥╓©╓╓╓н╓г╓╧╓╛, ╓и╓╕╓╧╓Л╓п╓╓╓╓╓н╓г╓╧╓╚? ╓Б╓ц╓х╓Б╢йц╠╓ййЩк║╓о FreeBSD ╓н╔╓╔С╔╧╔х║╪╔К╓н╨щ╓к X ╓Рф╟╓╚╓╧╓Ё╓х╓Р╩ьдЙ╓╧╓К╓ю╓╠╓г╓╧. ╓╫╓Л╓╚╓И xf86config ╔д║╪╔К╓н╔и╔╜╔Е╔А╔С╔х╓Рфи╓С╓г╓Ё╓Л╓к╫╬╓ц╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╔д║╪╔К╓о╓╒╓й╓©╓н╔╟╔И╔у╔ё╔ц╔╞╔╚║╪╔и╓Д╔ч╔╕╔╧╓й╓и╓к╧Г╓О╓╩╓ф XFree86(tm) ╓нюъдЙ╓Р╧т╓╕╓н╓Р╫У╓╠╓ф╓╞╓Л╓ч╓╧. Xaccel ╔╣║╪╔п║╪╓к╓д╓╓╓фд╢╓ы╓ф╓ъ╓К╓н╓Б╓╓╓╓╓г╓╥╓Г╓╕. ╬э╓╥╓╞╓о Xi Graphics ╓к╓д╓╓╓ф ╓╚ Metro Link ╓Р╓╢мВ╓╞╓ю╓╣╓╓. X ╓Р╪б╧т╓╥╓Х╓╕╓х╓╥╓ф startx ╓хфЧно╓╥╓©╓н╓г╓╧╓╛, KDENABIO failed (Operation not permitted) ╓х╓╓╓╕╔╗╔И║╪╓╛и╫╪╗╓╣╓Л╓ч╓╧. ╡©╓╚╓╙╓╚╓╥╓й╓Ё╓х╓Р╓Д╓ц╓ф╓╥╓ч╓ц╓©╓С╓г╓╥╓Г╓╕╓╚? ╓╒╓й╓©╓н╔╥╔╧╔ф╔Ю╓о╧Б╓╓╔╩╔╜╔Е╔╒╔Л╔ы╔К╓г╠©мя╓╣╓Л╓ф╓╓╓ч╓╧╓м? ╪б╓о, ╧Б╓╓╔╩╔╜╔Е╔╒╔Л╔ы╔К╓г X ╓Р╣╞ф╟╓╧╓К╓Ё╓х╓о╓г╓╜╓й╓╓╓н╓г╓╧. ╓и╓╕╓╥╓ф╓й╓н╓╚╓к╓д╓╓╓ф╓о, &man.init.8; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓к╫Я╓╚╓Л╓ф╓╓╓ч╓╧. ╓г╓о, бЕ╓О╓Й╓к╓и╓╕╓╧╓Л╓пни╓╓╓н╓╚╓╙еЗ╓╗╓╥╓ч╓╥╓Г╓╕. ╢Пкэе╙╓к 2 ╓д╓нйЩк║╓╛╓╒╓Й╓ч╓╧. ╟Л╓д╓о╔╩╔╜╔Е╔╒╔Л╔ы╔К╓Р 0 ╓к╓╧╓К (дл╬О, ╓Ё╓Л╓о /etc/rc.conf ╓г╩ьдЙ╓╥╓ч╓╧) ╓Ё╓х, ╓Б╓╕╟Л╓д╓о╣╞ф╟╩Ч (╔╩╔╜╔Е╔╒╔Л╔ы╔К╓Р╬Е╓╡╓Ка╟) ╓к &man.xdm.1; ╓Р╪б╧т╓╧╓К╓╚╓г╓╧. ╣╞ф╟╩Ч╓к &man.xdm.1; ╓Р╪б╧т╓╧╓КйЩк║╓н╬э╨ы╓к╓д╓╓╓ф╓о, ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╩Д╓н╔ч╔╕╔╧╓о╓й╓╪ X ╓гф╟╓╚╓й╓╓╓н╓г╓╥╓Г╓╕╓╚? syscons (╔г╔у╔╘╔К╔х╓н╔Ё╔С╔╫║╪╔К╔и╔И╔╓╔п) ╓Р╩х╓ц╓ф╓╓╓К╓н╓г╓╒╓Л╓п, ╓╫╓Л╓╬╓Л╓н╡╬аш╔╧╔╞╔Й║╪╔С╓г╔ч╔╕╔╧╔щ╔╓╔С╔©║╪╓Р╔╣╔щ║╪╔х╓╧╓К╓Х╓╕╓к FreeBSD ╓РюъдЙ╓г╓╜╓ч╓╧. X ╓г╓н╔ч╔╕╔╧╓н╬вфм╓РхР╓╠╓К╓©╓А╓к, syscons ╓о /dev/sysmouse ╓х╓╓╓╕╡╬аш╔г╔п╔╓╔╧╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. кэй╙╓н╔ч╔╕╔╧╔г╔п╔╓╔╧╓╚╓ИфЧно╓╣╓Л╓©а╢╓ф╓н╔ч╔╕╔╧╓н╔╓╔ы╔С╔х╓о, moused ╓Р╥пмЁ╓╥╓ф sysmouse ╔г╔п╔╓╔╧╓ь╫пно╓╣╓Л╓ч╓╧. ╟Л╓д╟й╬Е╓н╡╬аш╔Ё╔С╔╫║╪╔К╓х X ╓н н╬йЩ╓г ╔ч╔╕╔╧╓Р╩х╓╓╓©╓╓╬Л╧Г, ╓Р╩╡╬х╓╥╓ф moused ╓РюъдЙ╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╥╓ф, /etc/XF86Config ╓Рйт╫╦╓╥, ╪║╓н╓Х╓╕╓к╫Я╓╚╓Л╓ф╓╓╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. Section Pointer Protocol "SysMouse" Device "/dev/sysmouse" ..... ╬Е╓ннЦ╓о, XFree86 3.3.2 ╟й╧ъ╓н╬Л╧Г╓ннЦ╓г╓╧. ╓╫╓Л╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓г╓о, Protocol ╓х╓╓╓╕иТй╛╓Р MouseSystems ╓хцж╓╜╢╧╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. X ╓г /dev/mouse ╓Р╩х╓╕╓н╓Р╧╔╓Ю©м╓Б╓╓╓ч╓╧. ╓Ё╓н╬Л╧Г╓о, /dev/mouse ╓Р /dev/sysmouse ╓к╔Й╔С╔╞╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; cd /dev &prompt.root; rm -f mouse &prompt.root; ln -s sysmouse mouse ╓О╓©╓╥╓н╔ч╔╕╔╧╓к╓о╔ш╔╓║╪╔К╣║г╫╓╛иу╓╓╓ф╓╓╓К╓н╓г╓╧╓╛, X ╓г╩х╓╕╓Ё╓х╓о╓г╓╜╓ч╓╧╓╚? ╓о╓╓, ╓Б╓а╓М╓С╩х╓╗╓ч╓╧╓╛, ╓╫╓н╓©╓А╓к╓о X ╔╞╔И╔╓╔╒╔С╔х╔в╔М╔╟╔И╔Ю╓Ре╛юз╓кюъдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓к╓д╓╓╓ф╓о, Colas Nahaboo ╩А╓н╔╕╔╖╔ж╔з║╪╔╦(http://www.inria.fr/koala/colas/mouse-wheel-scroll/) ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. imwheel ╓х╓╓╓╕╔в╔М╔╟╔И╔Ю╓Р╩х╓╕╬Л╧Г╓о, ╪║╓н╓Х╓╕╓й╢йц╠╓й╪Й╫Г╓к╓╥╓©╓╛╓ц╓ф╓╞╓ю╓╣╓╓. ╔ш╔╓║╪╔К╔╓╔ы╔С╔х╓нйя╢╧ imwheel ╓о, ╔ч╔╕╔╧╓н╔э╔©╔С 4, ╔э╔©╔С 5 ╓Р╔╜║╪╡║╡╪╔╓╔ы╔С╔х╓кйя╢╧╓╧╓К╔в╔М╔╟╔И╔Ю╓г╓╧. ╓╫╓н╓©╓А╔ш╔╓║╪╔К╔ч╔╕╔╧╓гмЬмя╓╧╓К╓к╓о, ╔ч╔╕╔╧╔ш╔╓║╪╔К╓н╔╓╔ы╔С╔х╓Р╔э╔©╔С 4, ╔э╔©╔С 5 ╓н╔╓╔ы╔С╔х╓кйя╢╧╓╧╓К╔ч╔╕╔╧╔и╔И╔╓╔п╓РмЬмя╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓нйя╢╧╓Р╧т╓й╓╕╓к╓офС╓д╓нйЩк║╓╛╓╒╓Й╓ч╓╧. ╟Л╓д╓о &man.moused.8; ╓г╧т╓й╓╕йЩк║, фС╓д╓А╓о X ╔╣║╪╔п╪╚©х╓кйя╢╧╓Р╧т╓й╓О╓╩╓КйЩк║╓г╓╧. ╔ш╔╓║╪╔К╔╓╔ы╔С╔х╓нйя╢╧╓к &man.moused.8; ╓Р╩х╓╕ &man.moused.8; ╓к╔╓╔ы╔С╔х╓Рйя╢╧╓╣╓╩╓К╓к╓о, &man.moused.8; ╣╞ф╟╩Ч╓к╔╙╔в╔╥╔Г╔С ╓Рди╡ц╓╥╓ч╓╧. ╓©╓х╓╗╓п, иАцй &man.moused.8; ╓Р moused -p /dev/psm0 ╓х╓╥╓ф╣╞ф╟╓╥╓ф╓╓╓К╓й╓И, ╓╫╓нбЕ╓О╓Й╓к moused -p /dev/psm0 -z 4 ╓х╓╥╓ч╓╧. ╓Б╓╥, /etc/rc.conf ╓Р╩х╓ц╓ф╪╚ф╟е╙╓к╣╞ф╟╓╧╓К╓Х╓╕╓кюъдЙ╓╥╓ф╓╓╓К╓й╓И, /etc/rc.conf ╓нцФ╓н moused_flags ╓х╓╓╓╕йя©Т╓к ╓Рди╡ц╓╧╓К╓ю╓╠╓г╓╧. ╓╫╓╥╓ф, 5 ╔э╔©╔С╔ч╔╕╔╧╓Р╩х╓╕╓Ё╓х╓Р X ╔╣║╪╔п╓кеа╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓Р╧т╓й╓╕╓к╓о /etc/XF86Config ╓н Pointer ╔╩╔╞╔╥╔Г╔С╓к Buttons 5 ╓х╓╓╓╕╧т╓Рди╡ц╓╧╓К╓ю╓╠╓г╓╧. ╓╫╓╕╓╧╓К╓х /etc/XF86Config ╓н Pointer ╓о, ╓©╓х╓╗╓п╪║╓н╓Х╓╕╓к╓й╓К╓г╓╥╓Г╓╕. moused ╓к╓Х╓Кйя╢╧╓РмЬмя╓╥╓ф╔ш╔╓║╪╔К╔ч╔╕╔╧╓Р╩хмя╓╧╓К╓©╓А╓н XF86Config ╓н <quote>Pointer</quote> ╔╩╔╞╔╥╔Г╔С╓нюъдЙнЦ Section "Pointer" Protocol "SysMouse" Device "/dev/sysmouse" Buttons 5 EndSection X ╔╣║╪╔п╓Р╩х╓ц╓©╔ш╔╓║╪╔К╔╓╔ы╔С╔х╓нйя╢╧ &man.moused.8; ╓Р╣╞ф╟╓╥╓ф╓╓╓й╓╚╓ц╓©╓Й, ╔ш╔╓║╪╔К╔╓╔ы╔С╔х╓нйя╢╧╓к &man.moused.8; ╓Р╣╞ф╟╓╥╓©╓╞╓й╓╓╬Л╧Г╓к╓о, ╓╫╓нбЕ╓О╓Й╓к X ╔╣║╪╔п╓Р╩х╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓Л╓к╓о, /etc/XF86Config ╔у╔║╔╓╔К╓Р╫Я╓╜╢╧╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓ч╓╨╨г╫И╓ки╛мв╓й╓н╓о, ╔ч╔╕╔╧╓╛╓и╓н╔в╔М╔х╔Ё╔К╓Р╩х╓ц╓ф╓╓╓К╓н╓╚╓РЁнг╖╓╧╓К╓Ё╓х╓г╓╧. ╓ш╓х╓С╓и╓н╔ш╔╓║╪╔К╔ч╔╕╔╧╓о IntelliMouse ╔в╔М╔х╔Ё╔К╓Р╩хмя╓╥╓ф╓╓╓ч╓╧╓╛, XFree86 ╔╣║╪╔п╓о╓╫╓нб╬╓н╔в╔М╔х╔Ё╔К, ╓©╓х╓╗╓п Logitech MouseMan+ ╔ч╔╕╔╧╓╛мЬмя╓╥╓ф╓╓╓К MouseManPlusPS/2 ╔в╔М╔х╔Ё╔К╓й╓и╓Б╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╩хмя╓╣╓Л╓ф╓╓╓К╔в╔М╔х╔Ё╔К╓╛Ёнг╖╓г╓╜╓©╓И Pointer ╔╩╔╞╔╥╔Г╔С╓к Protocol ╓н╧т╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╓д╓╝╓к, ╔ш╔╓║╪╔К╓н╔╧╔╞╔М║╪╔К╔╓╔ы╔С╔х╓Р╔ч╔╕╔╧╔э╔©╔С 4, ╔ч╔╕╔╧╔э╔©╔С 5 ╓кЁД╓ЙеЖ╓ф╓К╓Ё╓х╓Р X ╔╣║╪╔п╓кеа╓╗╓ч╓╧. ╓Ё╓Л╓Р╧т╓й╓╕╓к╓о ZAxisMapping ╔╙╔в╔╥╔Г╔С╓Р╩хмя╓╥╓ч╓╧. ╓©╓х╓╗╓п, &man.moused.8; ╓╛╣╞ф╟╓╥╓ф╓╓╓й╓╓╬Убж╓г, PS/2 ╔ч╔╕╔╧╔щ║╪╔х╓к IntelliMouse ╓╛юэбЁ╓╣╓Л╓ф╓╓╓К╓х╓╥╓©╓И /etc/XF86Config ╓о╓╙╓╫╓И╓╞╪║╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. X ╔╣║╪╔п╓к╓Х╓Кйя╢╧╓РмЬмя╓╥╓ф╔ш╔╓║╪╔К╔ч╔╕╔╧╓Р╩хмя╓╧╓К╓©╓А╓н XF86Config ╓н <quote>Pointer</quote> ╔╩╔╞╔╥╔Г╔С╓нюъдЙнЦ Section "Pointer" Protocol "IntelliMouse" Device "/dev/psm0" ZAxisMapping 4 5 EndSection imwheel ╓н╔╓╔С╔╧╔х║╪╔К ╓╣╓ф, ╓д╓╝╓к Ports Collection ╓╚╓И imwheel ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ч╓╧. ╓Ё╓Л╓╛╓╒╓К╓н╓о x11 ╔╚╔ф╔╢╔Й╓г╓╧. ╓Ё╓н╔в╔М╔╟╔И╔Ю╓о, ╔ч╔╕╔╧╔╓╔ы╔С╔х╓Р╔╜║╪╔э║╪╔и╔╓╔ы╔С╔х╓кйя╢╧╓╥╓ч╓╧. ╓©╓х╓╗╓п, ╔ч╔╕╔╧╔ш╔╓║╪╔К╓Ра╟╓к╡С╓╥╓©╩Ч, imwheel ╓о PageUp ╓Р╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╔в╔М╔╟╔И╔Ю╓каВ╓К╓Х╓╕╓йф╟╨Н╓Р╓╧╓К╓О╓╠╓г╓╧. Imwheel ╓о╔ш╔╓║╪╔К╔╓╔ы╔С╔х╓х╔╜║╪╔э║╪╔и╡║╡╪╓нбп╠Ч╓РюъдЙ╔у╔║╔╓╔К╓Р╩х╓ц╓фюъдЙ╓╧╓К╓©╓А, ╔╒╔в╔Й╔╠║╪╔╥╔Г╔СкХ╓к╟ш╓й╓Кбп╠Ч╓Р╩Щ╓©╓╩╓К╓Ё╓х╓Б╡дг╫╓г╓╧. imwheel ╓н╔г╔у╔╘╔К╔х╓нюъдЙ╔у╔║╔╓╔К╓о /usr/X11R6/etc/imwheelrc ╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ч╓╧. ╓Ё╓Л╓Р ~/.imwheelrc ╓к╔Ё╔т║╪╓╥╓фйт╫╦╓╥, ╓╙╧╔╓╜╓й╓Х╓╕╓к imwheel ╓гмЬмя╓╥╓©╓╓╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓нюъдЙ╓Р╔╚╔╧╔©╔ч╔╓╔╨╓╥╓ф╓╞╓ю╓╣╓╓. юъдЙ╔у╔║╔╓╔К╓н╫Я╪╟╓о &man.imwheel.1; ╓кюБлю╓╣╓Л╓ф╓╓╓ч╓╧. Emacs ╓г Imwheel ╓Р╩х╓╕╓Х╓╕╓кюъдЙ╓╧╓К (и╛©э╓г╓о╓╒╓Й╓ч╓╩╓С) emacs ╓Д Xemacs ╓гмЬмя╓╧╓К╓к╓о, ~/.emacs ╓к╓╓╓╞╓И╓╚╫Я╓╜╡ц╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. emacs ╓н╬Л╧Г╓о╪║╓ниТй╛╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. <application>Imwheel</application> ╓РмЬмя╓╧╓К╓©╓А╓н <application>Emacs</application> ╓нюъдЙнЦ ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines) (global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Xemacs ╓н╬Л╧Г╓о ~/.emacs ╓к╪║╓ниТй╛╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. <application>Imwheel</application> ╓РмЬмя╓╧╓К╓©╓А╓н <application>XEmacs</application> ╓нюъдЙнЦ ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines) (define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Imwheel ╓н╪б╧т ╔╓╔С╔╧╔х║╪╔К╓╛╢╟н╩╓╥╓ф╓╓╓Л╓п, ц╠╓к xterm(лУцМ: фЭкэ╦Л╢д╤╜╓г╧╜╓╞╩х╓О╓Л╓ф╓╓╓К kterm ╓г╓Б╧╫╓╓╓ч╓╩╓С)╓╚╓И imwheel ╓РфЧно╓╧╓К╓ю╓╠╓г╣╞ф╟╓г╓╜╓ч╓╧. ╣╞ф╟╓╧╓К╓х╔п╔ц╔╞╔╟╔И╔╕╔С╔и╓гф╟╨Н╓╥, ╓╧╓╟╓кмЬмя╓г╓╜╓ч╓╧. imwheel ╓Р╓╓╓д╓Б╩х╓╕╓Х╓╕╓кюъдЙ╓╧╓К╓к╓о, .xinitrc ╓╚ .xsession ╓н╔у╔║╔╓╔К╓к╓╫╓н╓ч╓ч╔Ё╔ч╔С╔и╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. imwheel ╓╛ PID ╔у╔║╔╓╔К╓к╢ь╓╧╓К╥ы╧П╓Ри╫╪╗╓╧╓К╓╚╓Бцн╓Л╓ч╓╩╓С╓╛, л╣╩К╓╥╓ф╓Б╢М╦╠╓о╓╒╓Й╓ч╓╩╓С. ╓Ё╓н╥ы╧П╓╛╟улё╓Р╩Щ╓д╓н╓о, Linux хг╓н imwheel ╓ю╓╠╓г╓╧. X ╓н╔А╔к╔Е║╪╓Д╔ю╔╓╔╒╔М╔╟╔э╔ц╔╞╔╧╓╛╓╕╓ч╓╞ф╟╓╜╓ч╓╩╓С. Num Lock ╔╜║╪╓Р╔╙╔у╓к╓╥╓ф╓╞╓ю╓╣╓╓. Num Lock ╔╜║╪╓╛╔г╔у╔╘╔К╔х╓г╣╞ф╟╩Ч╓к╔╙╔С╓к╓й╓К╬Л╧Г╓о, XF86Config ╔у╔║╔╓╔К╓н Keyboard ╔╩╔╞╔╥╔Г╔С╓к╟й╡╪╓н╧т╓Р╡ц╓╗╓ф╓Б╓╓╓╓╓г╓╥╓Г╓╕. # Let the server do the NumLock processing. This should only be # required when using pre-R6 clients ServerNumLock лУцМ ╓Ё╓нлДбЙ╓о XFree86 3.2 ╟й╧ъ╓г╓о╡Р╥Х╓╥╓ф╓╓╓ч╓╧. ╡╬аш╔Ё╔С╔╫║╪╔К╓х╓о╡©╓г╓╧╓╚? ╓и╓╕╓Д╓ц╓©╓И╩х╓╗╓ч╓╧╓╚? ╡╬аш╔Ё╔С╔╫║╪╔К╓о, ╢йц╠╓к╓╓╓╕╓х, ╔м╔ц╔х╔О║╪╔╞╓Д X ╓Рф╟╓╚╓╧╓й╓и╓нйё╩╗╓й╓Ё╓х╓Р╧т╓й╓О╓╨╓к, ╓╓╓╞╓д╓╚╓н╔╩╔ц╔╥╔Г╔С╓Рф╠╩Ч╓к╧т╓й╓╕╓Ё╓х╓Р╡дг╫╓к╓╥╓ч╓╧. ╔╥╔╧╔ф╔Ю╓н╔╧╔©║╪╔х╩Ч╓к╓о, ╣╞ф╟╔А╔ц╔╩║╪╔╦╓╛╫п╓©╦Е╓к login ╔в╔М╔С╔в╔х╓╛и╫╪╗╓╣╓Л╓ч╓╧. ╓╫╓Ё╓г ╔М╔╟╔╓╔Сл╬╓х╔я╔╧╔О║╪╔и╓РфЧно╓╧╓К╓х 1 хжлэ╓н╡╬аш╔Ё╔С╔╫║╪╔К╬Е╓г╩е╩Ж(╓╒╓К╓╓╓ом╥╓с)╓Р╩о╓А╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. б╬╓н╔╩╔ц╔╥╔Г╔С╓Р╩о╓А╓©╓╓╬Л╧Г╓Б╓╒╓К╓г╓╥╓Г╓╕. ╓╫╓Л╓оф╟╓╚╓╥╓ф╓╓╓К╔в╔М╔╟╔И╔Ю╓н╔и╔╜╔Е╔А╔С╔х╓Р╦╚╓©╓Й, FTP ╓не╬аВ╓╛╫╙╓О╓К╓ч╓гбт╓д╢ж, ╔А║╪╔К╓Рфи╓Б╓╕╓х╓╥╓©╓Й╓╧╓К╓Ё╓х╓╚╓Б╓╥╓Л╓ч╓╩╓С. Alt-F2 ╓Р╡║╓╧(Alt ╔╜║╪╓Р╡║╓╥╓й╓╛╓И F2 ╔╜║╪╓Р╡║╓╧) ╓х, 2 хжлэ╓н║ж╡╬аш╔Ё╔С╔╫║╪╔К║в╓г ╔М╔╟╔╓╔С╔в╔М╔С╔в╔х╓╛бт╣║╓╥╓ф╓╓╓К╓Ё╓х╓╛╓О╓╚╓Й╓ч╓╧. ╨г╫И╓н╔╩╔ц╔╥╔Г╔С╓клА╓Й╓©╓╓╓х╓╜╓о Alt-F1 ╓Р╡║╓╥╓ч╓╧. и╦╫Ю╓н FreeBSD╔╓╔С╔╧╔х║╪╔К╓г╓о, 3 кГ(3.3-RELEASE ╓г╓о 8 кГ)╓н╡╬аш╔Ё╔С╔╫║╪╔К╓╛м╜╦З╓к╓й╓ц╓ф╓╓╓ф, Alt-F1, Alt-F2, Alt-F3 ╓г╡╬аш╔Ё╔С╔╫║╪╔К╢ж╓нюзбь╓╗╓Р╧т╓й╓╓╓ч╓╧. ╓Х╓Йб©╓╞╓н╡╬аш╔Ё╔С╔╫║╪╔К╓Рм╜╦З╓к╓╧╓К╓к╓о, /etc/ttys ╓Рйт╫╦╓╥╓ф Virtual terminals ╓н╔Ё╔А╔С╔х╧т╓н╦Е╓к ttyv4 ╓╚╓И ttyvc ╓н╪Йа╟╓ч╓г╓н╔╗╔С╔х╔Й╓Р╡ц╓╗╓ч╓╧(╟й╡╪╓ннЦ╓оюХф╛╓к╓о╤УгР╓офЧ╓Й╓ч╓╩╓С). # /etc/ttys ╓к╓о ttyv3 ╓╛╓╒╓Й╓ч╓╧╓н╓г # "off" ╓Р "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 б©╓╞╓╧╓К╓╚╬╞╓й╓╞╓╧╓К╓╚╓о╓╒╓й╓©╓н╪╚мЁ╓г╓╧. ╓Х╓Йб©╓╞╓н╡╬аш╔©║╪╔ъ╔й╔К╓Р╩х╓╕╓х╓Х╓Йб©╓╞╓н╔Й╔╫║╪╔╧╓Р╩х╓╕╓Ё╓х╓к╓й╓Й╓ч╓╧. 8MB ╟й╡╪╓н╔А╔Б╔Й╓╥╓╚╓й╓╓╬Л╧Г╓о╓Ё╓Л╓о╫емв╓йлДбЙ╓г╓╧. ╓Б╓╥и╛мв╓╛╓╒╓Л╓п secure ╓Р insecure ╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. X ╓Р╩х╓╓╓©╓╓╓н╓г╓╒╓Л╓п, ╨гдЦ╟Л╓д╓н╡╬аш╔©║╪╔ъ╔й╔К(╓н╔╗╔С╔х╔Й)╓Р╩х╓О╓╨╓к╩д╓╥╓ф╓╙╓╞╓╚, off ╓к╓╥╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╓д╓ч╓Й, 12 ╦д╓н Alt-╔у╔║╔С╔╞╔╥╔Г╔С╔╜║╪а╢╓ф╓г╔М╔╟╔╓╔С╔в╔М╔С╔в╔х╓Р ╫п╓╥╓©╓╓╓н╓й╓И╓п, ╩дг╟╓й╓╛╓И X ╓омЬмя╓г╓╜╓й╓╓╓х╓╓╓╕╓Ё╓х╓г╓╧. ф╠╓╦╔ч╔╥╔С╓г X ╔╣║╪╔п║╪╓Бф╟╓╚╓╥╓©╓╓╓н╓й╓И╓п 11 ╦д╓╥╓╚╩х╓╗╓ч╓╩╓С. ╡╬аш╔Ё╔С╔╫║╪╔К╓Рл╣╦З╓к╓╧╓К╓Б╓ц╓х╓Б╢йц╠╓ййЩк║╓о, ╔Ё╔С╔╫║╪╔К╓Р off ╓к╓╧╓К╓Ё╓х╓г╓╧. нЦ╓╗╓п 12 ╦да╢╓ф╓н╔©║╪╔ъ╔й╔К╓РЁД╓ЙеЖ╓ф╓ф╓╓╓К╬Убж╓г X ╓Рф╟╓╚╓╥╓©╓╓╓х╓╜╓о, ╡╬аш╔©║╪╔ъ╔й╔К 12 ╓Рйя╧╧╓╥╓ч╓╧. ttyvb "/usr/libexec/getty Pc" cons25 on secure ╓Ё╓Л╓Р╪║╓н╓Х╓╕╓кйя╧╧╓╥╓ч╓╧. ttyvb "/usr/libexec/getty Pc" cons25 off secure ╔╜║╪╔э║╪╔и╓к╔у╔║╔С╔╞╔╥╔Г╔С╔╜║╪╓╛ 10 ╦д╓╥╓╚╓й╓╓╓н╓г╓╒╓Л╓п, ╪║╓н╓Х╓╕╓кюъдЙ╓╥╓ч╓╧. ttyv9 "/usr/libexec/getty Pc" cons25 off secure ttyva "/usr/libexec/getty Pc" cons25 off secure ttyvb "/usr/libexec/getty Pc" cons25 off secure (╓Ё╓Л╓И╓н╧т╓Р╬ц╓╧╓ю╓╠╓г╓Б╓╓╓╓╓г╓╧.) /etc/ttys ╓Рйт╫╦╓╥╓©╓И, ╪║╓о╫╫й╛╓й©Т╓н╡╬аш╔©║╪╔ъ╔й╔К╔г╔п╔╓╔╧╓Р╨Н╓И╓й╓╞╓ф╓о╓й╓Й╓ч╓╩╓С. ╓Б╓ц╓х╓Б╢йц╠╓ййЩк║╓Р╪╗╓╥╓ч╓╧. &prompt.root; cd /dev &prompt.root; ./MAKEDEV vty12(12 ╦д╓н╔г╔п╔╓╔╧╓Р╓д╓╞╓К╬Л╧Г) ╓╣╓ф, ╡╬аш╔Ё╔С╔╫║╪╔К╓Рм╜╦З╓к╓╧╓К╓Б╓ц╓х╓Б╢йц╠(╓╫╓╥╓фЁн╪б)╓ййЩк║╓о, ╨ф╣╞ф╟╓╧╓К╓Ё╓х╓г╓╧. ╓╥╓╚╓╥, ╨ф╣╞ф╟╓╥╓©╓╞╓й╓╓╬Л╧Г╓о, X ╔╕╔ё╔С╔и╔╕╔╥╔╧╔ф╔Ю╓Р╫╙н╩╓╣╓╩╓ф╪║╓нфБмф╓Р(root ╦╒╦б╓г)╪б╧т╓╥╓ч╓╧. &prompt.root; kill -HUP 1 ╫емв╓йею╓о, ╓Ё╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╧╓Ка╟╓к X ╔╕╔ё╔С╔и╔╕╔╥╔╧╔ф╔Ю╓Р╢╟а╢╓к╫╙н╩╓╣╓╩╓ф╓╙╓╞╓Ё╓х╓г╓╧. ╓Б╓╥╓╫╓╕╓╥╓й╓╓╓х kill ╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓©╦Е, ╔╥╔╧╔ф╔Ю╓о╓╙╓╫╓И╓╞╔о╔С╔╟╔╒╔ц╔в╓╧╓К╓г╓╥╓Г╓╕. X ╓╚╓И╡╬аш╔Ё╔С╔╫║╪╔К╓кюзбь╓╗╓К╓к╓о╓и╓╕╓╧╓Л╓п╓Х╓╓╓н╓г╓╧╓╚? ╡╬аш╔Ё╔С╔╫║╪╔К╓ьлА╓К╓к╓о Ctrl Alt Fn ╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓. ╨г╫И╓н╡╬аш╔Ё╔С╔╫║╪╔К╓ь╓о Ctrl Alt F1 ╓глА╓Л╓ч╓╧. ╔ф╔╜╔╧╔х╔Ё╔С╔╫║╪╔К╓ь╟э╓ц╓©╦Е╓о, ╓╫╓нцФ╓г╟эф╟╓╧╓К╓н╓к ╨ёеы╓о╓╓╓д╓Б╓и╓╙╓Й Alt Fn ╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓. X ╓н╔╩╔ц╔╥╔Г╔С╓ьлА╓К╓к╓о X ╓наЖ╓ц╓ф╓╓╓К╡╬аш╔Ё╔С╔╫║╪╔К╓ь юз╓Йбь╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Б╓╥╓╒╓й╓©╓╛ X ╓Р╔Ё╔ч╔С╔и╔И╔╓╔С╓╚╓И ╪б╧т╓╥╓ф╓╓╓©╓н╓г╓╒╓Л╓п (╓©╓х╓╗╓п startx ╓Р╩х╓╕) X ╓н╔╩╔ц╔╥╔Г╔С╓о╓╫╓Л╓Р╪б╧т╓╥╓©╔ф╔╜╔╧╔х╔Ё╔С╔╫║╪╔К╓г╓о╓й╓╞ ╨г╫И╓н╩х╓О╓Л╓ф╓╓╓й╓╓╡╬аш╔Ё╔С╔╫║╪╔К╓кЁД╓ЙеЖ╓ф╓И╓Л╓ф╓╓╓К╓о╓╨╓г╓╧. ╓╒╓й╓©╓╛╡╬ашц╪кЖ╓Р 8 ╦дмя╟у╓╥╓ф╓╓╓К╬Л╧Г╓о X ╓Р 9 хжлэ╓н ╔Ё╔С╔╫║╪╔К╓к╓╓╓К╓о╓╨╓г, Alt F9 ╓Р╩х╓╕╓Ё╓х╓к╓й╓Й╓ч╓╧. лУцМ X ╓клА╓К╓к╓о, 3 кГ╓н╡╬аш╔Ё╔С╔╫║╪╔К╓╛м╜╦З╓к╓й╓ц╓ф╓╓╓К╬Л╧Г╓о Alt-F4 ╓г╓╧. м╜╦З╓й╡╬аш╔Ё╔С╔╫║╪╔К╓н©Т +1 ╓н╔у╔║╔С╔╞╔╥╔Г╔С╔╜║╪╓н ╟лцж╓к X ╓╛ЁД╓ЙеЖ╓ф╓И╓Л╓ч╓╧. XDM ╓Р╣╞ф╟╩Ч╓к╣╞ф╟╓╣╓╩╓К╓к╓о╓и╓╕╓╥╓ч╓╧╓╚? xdm ╓н╣╞ф╟йЩк║╓к╓д╓╓╓ф, ╓╫╓н╧м╓╗йЩ╓к╓офС╓д╓нн╝ги╓╛╓╒╓Й╓ч╓╧. ╓╒╓Кн╝ги╓г╓одС╤║╓╣╓Л╓©нЦ╓Р╩хмя╓╥╓ф xdm ╓Р /etc/ttys ╓╚╓И╣╞ф╟╓╥, б╬╓нн╝ги╓г╓о xdm ╓Рц╠╓к rc.local ╓ч╓©╓о /usr/local/etc/rc.d ╓к╓╒╓К X.sh ╔╧╔╞╔Й╔в╔х╓╚╓И╣╞ф╟╓╥╓ч╓╧. ╓и╓а╓И╓Бю╣╓╥╓╞, йрйЩ╓╛ф╟╨Н╓╥╓й╓╓╬Л╧Г╓о, ╓Б╓╕йрйЩ╓╛ф╟╨Н╓╧╓К╓г╓╥╓Г╓╕. ╓и╓а╓И╓Б╬Л╧Г╓г╓Б╥К╡л╓оф╠╓╦╓г╓╒╓Й, X ╓о╔╟╔И╔у╔ё╔╚╔К╓й login: ╔в╔М╔С╔в╔х╓Ри╫╪╗╓╥╓ч╓╧. ttys ╓РмЬмя╓╧╓КйЩк║╓нмЬею╓о, ╓и╓н vty ╓г X ╓╛╣╞ф╟╓╥╓©╓╚╓н╣╜о©╓╛╩д╓╩╓К╓Ё╓х╓х, ╔М╔╟╔╒╔╕╔х╩Ч╓к X ╔╣║╪╔п╓Р╨ф╣╞ф╟╓╧╓Кюуг╓╓Р init ╓к╡║╓╥╓д╓╠╓К╓Ё╓х╓╛╓г╓╜╓К╓Ё╓х╓г╓╥╓Г╓╕. rc.local ╓╚╓И╔М║╪╔и╓╣╓Л╓К╬Л╧Г, xdm ╓о╟З©Т╓Р╩Щ╓©╓╨╓к(╓╧╓й╓О╓а, ╔г║╪╔Б╔С╓х╓╥╓ф)╣╞ф╟╓╥╓ч╓╧. xdm ╓о getty ╓╛╣╞ф╟╓╥╓©╦Е╓к╔М║╪╔и╓╣╓Л╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓╫╓╕╓г╓й╓╓╓х, xdm ╓о getty ╓х╬вфм╓╥, ╔Ё╔С╔╫║╪╔К╓Р╔М╔ц╔╞╔╒╔╕╔х╓╥╓ф╓╥╓ч╓╓╓ч╓╧. ╓Ё╓нлДбЙ╓кбп╫Х╓╧╓К╨га╠╓нйЩк║╓о, ╣╞ф╟╔╧╔╞╔Й╔в╔х(лУцМ: rc.local ╓н╓Ё╓х)╓г 10 иц╓ш╓и╓н sleep ╓Р╪б╧т╓╣╓╩, ╓╫╓н╦Е╓к xdm ╓Р╔М║╪╔и╓╧╓К╓Ё╓х╓г╓╧. /etc/ttys ╓╚╓И xdm ╓Р╣╞ф╟╓╣╓╩╓ф╓╓╓К╬Л╧Г╓к╓о, xdm ╓х getty ╓╛╬вфм╓╧╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╓Ё╓нлДбЙ╓Р╡СхР╓╧╓К╓к╓о, /usr/X11R6/lib/X11/xdm/Xservers ╓к vt хж╧Ф╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. :0 local /usr/X11R6/bin/X vt4 ╬Е╓ннЦ╓о, /dev/ttyv3 ╓Р X ╔╣║╪╔п╓кбп╠Ч╓╣╓╩╓ч╓╧. хж╧Ф╓о 1 ╓╚╓И╩о╓ч╓Й╓ч╓╧╓н╓гцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓. X ╔╣║╪╔п╓о vty ╓Р 1 ╓╚╓И©Т╓╗╓ч╓╧╓╛, FreeBSD ╔╚║╪╔м╔К╓о vty ╓Р 0 ╓╚╓И©Т╓╗╓ч╓╧. xconsole ╓Рф╟╓╚╓╫╓╕╓х╓╧╓К╓х Couldn't open console ╓х╔╗╔И║╪╓╛╫п╓ч╓╧. X ╓Р startx ╓г╣╞ф╟╓╥╓ч╓╧╓х, /dev/console ╓н╔я║╪╔ъ╔ц╔╥╔Г╔С╓о йя╧╧╓╛╓г╓╜╓й╓╓╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧╓н╓г, xterm -C ╓Д xconsole ╓оф╟╓╜╓ч╓╩╓С. ╓Ё╓Л╓о╔Ё╔С╔╫║╪╔К╓н╔я║╪╔ъ╔ц╔╥╔Г╔С╓╛, и╦╫Ю╓г╓о╓╫╓н╓Х╓╕╓кюъдЙ╓╣╓Л╓ф╓╓╓К╓╚╓И╓г╓╧. ╔ч╔К╔а╔Ф║╪╔╤╔╥╔╧╔ф╔Ю╓г╓о, ╔Ф║╪╔╤╓нц╞╓Б╓╛╔╥╔╧╔ф╔Ю╔Ё╔С╔╫║╪╔К╓к╫Я╓╜╧Ч╓Ю╓Ё╓х╓╛╡дг╫╓г╓╒╓Ки╛мв╓ои╛╓╨╓╥╓Б╓╒╓Й╓ч╓╩╓С. VTY ╓Р╩х╓╓д╬юэ╔ч╔╥╔С╓к╔М╔╟╔╓╔С╓╧╓К╔Ф║╪╔╤╓н╓©╓А╓к, ╓Ё╓н╓Х╓╕╓йлДбЙ╓Р╡Р╥Х╓╧╓К╓©╓А╓к fbtab ╓х╓╓╓╕╔у╔║╔╓╔К╓╛╓╒╓Й╓ч╓╧. мвею╓Р╫р╓ы╓К╓х, ╪║╓н╓Х╓╕╓й╥а╪╟╓н╧т╓Р fbtab ╓к╡ц╓╗╓ч╓╧. /dev/ttyv0 0600 /dev/console ╓╫╓╕╓╧╓К╓х, /dev/ttyv0 ╓╚╓И╔М╔╟╔╓╔С╓╥╓©╔Ф║╪╔╤╓╛ ╔Ё╔С╔╫║╪╔К╓Р╫Йм╜╓╧╓К╓Ё╓х╓к╓й╓К╓г╓╥╓Г╓╕. ╓О╓©╓╥╓о╓╓╓д╓Б XFree86 ╓Р╟Лхл╔Ф║╪╔╤╓╚╓И╣╞ф╟╓╥╓ф╓╓╓©╓н╓г╓╧╓╛, ╨г╤А╓к╓й╓ц╓ф root ╔Ф║╪╔╤╓г╓й╓╠╓Л╓п╓й╓И╓й╓╓╓х╦ю╓О╓Л╓К╓Х╓╕╓к╓й╓Й╓ч╓╥╓©. ╓╧╓ы╓ф╓н X ╔╣║╪╔п╓о, ╔с╔г╔╙╔о║╪╔и╔╕╔╖╔╒╓кд╬юэ╔╒╔╞╔╩╔╧╓╧╓К╓©╓А╓к root ╔Ф║╪╔╤╓г╪б╧т╓╣╓Л╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╦е╓╓╔п║╪╔╦╔Г╔С╓н XFree86 (<= 3.3.6) ╓к╢ч╓ч╓Л╓К╓╧╓ы╓ф╓н╔╣║╪╔п╓о, ╪╚ф╟е╙╓к root ╦╒╦б╓г╪б╧т╓╣╓Л╓К╓Х╓╕╓к (root ╔Ф║╪╔╤╓к setuid ╓╣╓Л╓ф) ╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ч╓╧. X ╔╣║╪╔п╓обГ╓╜╓╞йё╩╗╓й╔в╔М╔╟╔И╔Ю╓г╓╒╓Й, ╓Ё╓Л╓олю╓И╓╚╓к╔╩╔╜╔Е╔Й╔ф╔ё╓Р╢М╦╠╓к╩╞╓╧мв╟Ь╓х╓й╓Й╓ч╓╧. ╓╫╓н╓©╓А©╥╓╥╓╓╔п║╪╔╦╔Г╔С╓н XFree86 ╓г╓о, ╔╣║╪╔п╓Р root ╔Ф║╪╔╤╓к seruid ╓╥╓й╓╓╓г╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Х╓╕╓к╓й╓Й╓ч╓╥╓©. X ╔╣║╪╔п╓Р root ╔Ф║╪╔╤╓гф╟╓╚╓╧╓х╓╓╓╕╓н╓о, лю╓И╓╚╓к╔╩╔╜╔Е╔Й╔ф╔ёе╙╓ките╛еЖ╓г╪У╓╠фЧ╓Л╓И╓Л╓й╓╓╓Ё╓х╓г╓╧. X ╓Р╟Лхл╔Ф║╪╔╤╓г╪б╧т╓╧╓К╓к╓о, фС╓д╓нйЩк║╓╛╓╒╓Й╓ч╓╧. ╟Л╓д╓о xdm ╓Д, ╓╫╓нб╬╓н╔г╔ё╔╧╔в╔Л╔╓╔ч╔м║╪╔╦╔Ц (╓©╓х╓╗╓п kdm ╓й╓и) ╓Р╩х╓╕╓Ё╓х, ╓Б╓╕╟Л╓д╓о Xwrapper ╓Р╩х╓╕╓Ё╓х╓г╓╧. xdm ╓о, ╔╟╔И╔у╔ё╔╚╔К╓й╔М╔╟╔╓╔С╡Хлл╓Р╟╥╓╕╔г║╪╔Б╔С╓г╓╧. дл╬О, ╣╞ф╟╩Ч╓к╪б╧т╓╣╓Л, Ёф╔Ф║╪╔╤╓нг╖╬з╓х╔Ф║╪╔╤╔╩╔╥╔Г╔С╓РЁ╚╩о╓╣╓╩╓К╣║г╫╓Р╪б╦╫╓╥╓ч╓╧. ╢Пкэе╙╓к, getty ╓х login ╓н╔╟╔И╔у╔ё╔ц╔╞хг, ╓х╧м╓╗╓фни╓╓╓г╓╥╓Г╓╕. xdm ╓н╬э╨ы╓к╓д╓╓╓ф╓о, XFree86 ╢ьо╒й╦╫Я ╓╙╓Х╓с FAQ ╧Юлэ╓Р╓╢мВ╓╞╓ю╓╣╓╓. Xwrapper ╓х╓о, X ╔╣║╪╔пмя╓н╔И╔ц╔я (wrapper) ╓н╓Ё╓х╓г╓╧. ╓Ё╓Л╓ои╛мв╓й╔╩╔╜╔Е╔Й╔ф╔ё╓РЁнйщ╓╥╓д╓д, ╟Лхл╔Ф║╪╔╤╓╛ X ╔╣║╪╔п╓Р╪б╧т╓г╓╜╓К╓Х╓╕╓к╓╥╓©╬╝╓╣╓й╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓г, ╔Ё╔ч╔С╔и╔И╔╓╔С╟З©Т╓ню╣еЖю╜╔а╔╖╔ц╔╞╓Р╧т╓й╓╓, ╓╫╓Л╓Рдл╡А╓╧╓Л╓пе╛юз╓й X ╔╣║╪╔п╓Р╣╞ф╟╓╥╓ч╓╧. ╡©╓И╓╚╓нмЩмЁ╓г╔г╔ё╔╧╔в╔Л╔╓╔ч╔м║╪╔╦╔Ц╓Р╩х╓╓╓©╓╞╓й╓╓╬Л╧Г╓к ╓Ё╓Л╓Р╩х╓╕╓хни╓╓╓г╓╥╓Г╓╕. Ports Collection а╢бн╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ф╓╓╓Л╓п, /usr/ports/x11/wrapper ╓к╓╒╓Й╓ч╓╧. ╩Д╓н PS/2 ╔ч╔╕╔╧╓о X ╔╕╔ё╔С╔и╔╕╔╥╔╧╔ф╔Ю╬Е╓г╓╕╓ч╓╞ф╟╓╜╓ч╓╩╓С. ╓╒╓й╓©╓н╔ч╔╕╔╧╓х╔ч╔╕╔╧╔и╔И╔╓╔п╓╛╓╕╓ч╓╞ф╠╢Э╓╥╓ф╓╓╓й╓╓╓╚╓И╓╚╓Б╓╥╓Л╓ч╓╩╓С. FreeBSD 2.2.5 ╓ч╓г╓н╔п║╪╔╦╔Г╔С╓г╓о, X ╓╚╓И╡╬аш╔©║╪╔ъ╔й╔К╓ьюзбь╓╗╓ф, ╓ч╓© X ╓ьлА╓К╓х╨фф╠╢Э╓╧╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Ё╓нлДбЙ╓╛╓Х╓╞╣╞╓╜╓К╓Х╓╕╓г╓╒╓Л╓п, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С ╔у╔║╔╓╔К╓к╪║╓н╔╙╔в╔╥╔Г╔С╓Р╫Я╓╓╓ф╔╚║╪╔м╔К╓Р╨ф╧╫ю╝╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. options PSM_CHECKSYNC ╓Б╓╥, ╔╚║╪╔м╔К╓н╨ф╧╫цш╓Р╧т╓й╓ц╓©╓Ё╓х╓╛╓й╓╓╓н╓г╓╒╓Л╓п, ╔╚║╪╔м╔К╓Р╧╫цш╓╧╓К╓н╧Ю╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╔╙╔в╔╥╔Г╔С╓к╓Х╓Й, ╔ч╔╕╔╧╓х╔и╔И╔╓╔п╓нф╠╢Э╓глДбЙ╓╛╣╞╓╜╓К╡дг╫ю╜╓о╬╞╓й╓╞╓й╓К╓г╓╥╓Г╓╕. ╓Б╓╥╓╫╓Л╓г╓Б╓Ё╓нлДбЙ╓╛╣╞╓╜╓К╓Х╓╕╓й╓И╓п, ╨фф╠╢Э╓╣╓╩╓К╓к╓о╔ч╔╕╔╧╓Рф╟╓╚╓╣╓й╓╓╓Х╓╕╓к╓╥╓ф╓╙╓╓╓ф ╔ч╔╕╔╧╔э╔©╔С╓н╓и╓Л╓╚╓Р╡║╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╔╙╔в╔╥╔Г╔С╓о╩дг╟╓й╓╛╓И╓╧╓ы╓ф╓н╔╥╔╧╔ф╔Ю╓гф╞╓╞╓О╓╠╓г╓о╓й╓╞, ╓ч╓©, PS/2 ╔ч╔╕╔╧╔щ║╪╔х╓к╓д╓й╓╛╓Л╓ф╓╓╓К╓н╓╛ ╔©╔ц╔в(tap)╣║г╫╓Р╩Щ╓д ╔╒╔К╔в╔╧╪рю╫ GlidePoint ╔г╔п╔╓╔╧╓н╬Л╧Г, ╔©╔ц╔в╣║г╫╓╛л╣╦З╓х╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╧. FreeBSD 2.2.6 ╟й╧ъ╓н╔п║╪╔╦╔Г╔С╓г╓о, ф╠╢Э╓н╔а╔╖╔ц╔╞йЩк║╓╛╬╞╓╥╡Ча╠╓╣╓Л╓©╓н╓ги╦╫Ю╓гм╜╦З╓к╓й╓ц╓ф╓╓╓ч╓╧. GlidePoint ╓г╓Б╓╕╓ч╓╞ф╞╓╜╓ч╓╧(ф╠╢Э╔а╔╖╔ц╔╞╓╛и╦╫Ю╓н╣║г╫╓к╓й╓ц╓©╓н╓г PSM_CHECKSYNC ╔╙╔в╔╥╔Г╔С╓о╓Ё╓Л╓И╓н╔п║╪╔╦╔Г╔С╓╚╓И╓о╨О╫Э╓╣╓Л╓ч╓╥╓©). ╓╥╓╚╓╥╓й╓╛╓И, ╓ч╓Л╓к╔и╔И╔╓╔п╓╛╢ж╟Ц╓ц╓ф(лУцМ: лДбЙ╓╛╓й╓╓╓н╓к)ф╠╢Э╓к╢ь╓╥╓флДбЙ╓╛╓╒╓К╓хйС╧П╓╥, ╔╚║╪╔м╔К╓╚╓И psmintr: out of sync (xxxx != yyyy) ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛╫пно╓╣╓Л╓ф, ╔ч╔╕╔╧╓╛ю╣╓╥╓╞ф╟╨Н╓╥╓ф╓╓╓й╓╓╓Х╓╕╓к╦╚╓╗╓К ╓Ё╓х╓╛╓╒╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Б╓╥╓Ё╓н╓Х╓╕╓й╓Ё╓х╓╛╣╞╓Ё╓К╬Л╧Г╓к╓о, PS/2 ╔ч╔╕╔╧╔и╔И╔╓╔п╓н╔у╔И╔╟╓к 0x100 ╓Р╩ьдЙ╓╥╓фф╠╢Э╔а╔╖╔ц╔╞╓Рл╣╦З╓к╓╥╓ф╓╞╓ю╓╣╓╓. ╔╥╔╧╔ф╔Ю╓н╣╞ф╟╩Ч╓к ╣╞ф╟╔╙╔в╔╥╔Г╔С╓Рм©╓╗╓ф UserConfig ╓кфЧ╓Й╓ч╓╧. boot: -c boot: UserConfig ╓н╔Ё╔ч╔С╔и╔И╔╓╔С╓г╟й╡╪╓н╓Х╓╕╓кфЧно╓╥╓ф╓╞╓ю╓╣╓╓. UserConfig> flags psm0 0x100 UserConfig> quit MouseSystems ╓н PS/2 ╔ч╔╕╔╧╓╛╓╕╓ч╓╞ф╟╓╜╓ч╓╩╓С. MouseSystems ╓н PS/2 ╔ч╔╕╔╧╓н╓╒╓К╔Б╔г╔К╓о, ╧Б╡РаЭеы╔Б║╪╔и╓н╬Л╧Г╓к╓н╓ъю╣╓╥╓╞ф╟╨Н╓╧╓К╓х╓╓╓╕╓Ё╓х╓╛йС╧П╓╣╓Л╓ф╓╓╓ч╓╧. ╓╫╓Л╟йЁ╟╓н╔Б║╪╔и╓г╓о, ╔ч╔╕╔╧╔╚║╪╔╫╔К╓╛╓╥╓Г╓ц╓а╓Е╓╕╔╧╔╞╔Й║╪╔С╨╦╬Е╓к╧т╓ц╓ф╓╥╓ч╓╕╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╩дг╟╓й╓╛╓И FreeBSD 2.0.X ╓Д 2.1.X ╓н╔п║╪╔╦╔Г╔С╓г╓о, ╓Ё╓нлДбЙ╓н╡Р╥Х╓╧╓КйЩк║╓о╓╒╓Й╓ч╓╩╓С. 2.2 ╓╚╓И 2.2.5 ╓н╔п║╪╔╦╔Г╔С╓г╓о, ╟й╡╪╓н╔я╔ц╔а╓Р /sys/i386/isa/psm.c ╓ке╛мя╓╥╔╚║╪╔м╔К╓н╨ф╧╫цш╓Р╧т╓й╓ц╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥, ╔╚║╪╔м╔К╓н╨ф╧╫цш╓Р╧т╓й╓ц╓©╓Ё╓х╓╛╓й╓╓╓н╓г╓╒╓Л╓п, ╔╚║╪╔м╔К╓н╧╫цш╓н╧Ю╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. @@ -766,6 +766,8 @@ if (verbose >= 2) log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n", unit, i); + set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH); + #if 0 set_mouse_scaling(sc->kbdc); /* 1:1 scaling */ set_mouse_mode(sc->kbdc); /* stream mode */ FreeBSD 2.2.6 ╟й╧ъ╓н╔п║╪╔╦╔Г╔С╓г╓о, PS/2 ╔ч╔╕╔╧╔и╔И╔╓╔п╓н╔у╔И╔╟╓к 0x04 ╓Р╩ьдЙ╓╥╓ф╔ч╔╕╔╧╓Р╧Б╡РаЭеы╔Б║╪╔и╓к╓╥╓ч╓╧. ╔╥╔╧╔ф╔Ю╓н╣╞ф╟╩Ч╓к ╣╞ф╟╔╙╔в╔╥╔Г╔С╓Рм©╓╗╓ф UserConfig ╓кфЧ╓Й╓ч╓╧. boot: -c UserConfig ╓н╔Ё╔ч╔С╔и╔И╔╓╔С╓г╟й╡╪╓н╓Х╓╕╓кфЧно╓╥╓ф╓╞╓ю╓╣╓╓. UserConfig> flags psm0 0x04 UserConfig> quit ╔ч╔╕╔╧╓к╢ь╓╧╓Кит╤Я╧Г╓нб╬╓н╦╤╟Ь╓н╡дг╫ю╜╓к╓д╓╓╓ф╓о, д╬а╟╓н╔╩╔╞╔╥╔Г╔С╓Б╦╚╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. X ╓н╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓Р╧╫цш╓╧╓К╩Ч╓к, imake can't find Imake.tmpl ╓х╓й╓Й╓ч╓╧. ╓и╓Ё╓к╓╒╓К╓н╓г╓╥╓Г╓╕╓╚? Imake.tmpl ╓о X ╓ни╦╫Ю╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╧╫цш╔д║╪╔К╓г╓╒╓К Imake ╔я╔ц╔╠║╪╔╦╓н╟ЛиТ╓г╓╧. Imake.tmpl ╓о, X ╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓н╧╫цш╓ки╛мв╓йб©╓╞╓н╔ь╔ц╔ю╔у╔║╔╓╔К╓хф╠мм╓к, X ╓н╔в╔М╔╟╔И╔Ю╔г╔ё╔╧╔х╔Й╔с╔Е║╪╔╥╔Г╔С╓к╢ч╓ч╓Л╓ф╓╓╓ч╓╧. sysinstall ╓Р╩х╓╕╓╚, ╪Йф╟╓г X ╓н╔г╔ё╔╧╔х╔Й╔с╔Е║╪╔╥╔Г╔С╔у╔║╔╓╔К╓╚╓И╔╓╔С╔╧╔х║╪╔К╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔ч╔╕╔╧╓н╔э╔©╔С╓РфЧ╓Лбь╓╗╓КйЩк║╓о╓╒╓Й╓ч╓╧╓╚? .xinitrc ╓╚ .xsession ╓г xmodmap ╓х╓╓╓╕╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. ╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓н╔╓╔С╔╧╔х║╪╔К╓о╓и╓╕╓╧╓К╓н╓г╓╧╓╚. ╓и╓Ё╓г╦╚╓д╓╠╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧╓╚? FreeBSD 3.1 ╓н╔Й╔Й║╪╔╧д╬а╟╓к, ╣╞ф╟╔А╔ц╔╩║╪╔╦╓ни╫╪╗╢Э╢ж╓к ╓╓╓О╓Ф╓К "╔╧╔в╔И╔ц╔╥╔Е" ╔╧╔╞╔Й║╪╔С╓Ри╫╪╗╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓К©╥╓╥╓╓╣║г╫╓╛ди╡ц╓╣╓Л╓ч╓╥╓©. ╓╓╓ч╓н╓х╓Ё╓М╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓о 256 ©╖╓н╔с╔ц╔х╔ч╔ц╔в(*.BMP)╓╚ ZSoft PCX(*.PCX)╔у╔║╔╓╔К╓г╓╧. ╓╫╓Л╓к╡ц╓╗╓ф, и╦╫Ю╓н VGA ╔╒╔ю╔в╔©╓г╓нф╟╨Н╓╣╓╩╓К╓к╓о 320x200 ╟й╡╪╓н╡РаЭеы╓г╓╒╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔╚║╪╔м╔К╓к VESA ╔╣╔щ║╪╔х╓Рди╡ц╓╧╓Л╓п 1024x768 ╓ч╓г╓н╓Х╓ЙбГ╓╜╓╓╔с╔ц╔х╔ч╔ц╔в╓Р╩хмя╓г╓╜╓ч╓╧. VESA ╔╣╔щ║╪╔х╓Рм╜╦З╡╫╓╧╓К╓к╓о╓ч╓╨, ╔╚║╪╔м╔К╓╛ VM86 ╔╚║╪╔м╔К╔╙╔в╔╥╔Г╔С╓х╓х╓Б╓к╔Ё╔С╔я╔╓╔К╓╣╓Л╓ф╓╓╓Ки╛мв╓╛╓╒╓К╓Ё╓х╓кцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓. VESA ╔╣╔щ║╪╔х╓╫╓н╓Б╓н╓о VESA ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔╙╔в╔╥╔Г╔С ╓к╓Х╓ц╓фд╬юэ╔╚║╪╔м╔КцФ╓к╔Ё╔С╔я╔╓╔К╓╧╓К╓╚, ╣╞ф╟╩Ч╓к VESA kld ╔Б╔╦╔Е║╪╔К╓Рфи╓ъ╧Ч╓ч╓╩╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓Р╩х╓╕╓к╓о, FreeBSD ╓н╣╞ф╟╔в╔М╔╩╔╧╓Р╔Ё╔С╔х╔М║╪╔К╓╧╓К╔╧╔©║╪╔х╔╒╔ц╔в╔у╔║╔╓╔К╓Р╫Я╓╜╢╧╓╗╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓И╓н╔у╔║╔╓╔К╓о FreeBSD 3.2 ╓н╔Й╔Й║╪╔╧╟йа╟╓кйя╧╧╓╣╓Л╓ч╓╥╓©╓н╓г, ╦╫╨ъ╓о, ╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓Рфи╓ъ╧Ч╓ЮйЩк║╓╛фС╓д╓╒╓Й╓ч╓╧. FreeBSD 3.1 ╓н╬Л╧Г ╓ч╓╨╨г╫И╓н╔╧╔ф╔ц╔в╓о, ╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓н╔с╔ц╔х╔ч╔ц╔вхг╓Рц╣╓╥╓ф╓╞╓К╓Ё╓х╓г╓╧. 3.1-RELEASE ╓г╓о Windows ╓н╔с╔ц╔х╔ч╔ц╔в╥а╪╟╓н╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓ю╓╠╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╓╙к╬╓ъ╓н╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓Р╦╚╓д╓╠╓©╓й╓И, ╓╫╓Л╓Р /boot/splash.bmp ╓к╔Ё╔т║╪╓╥╓ч╓╧. ╪║╓к, ╓Ё╓Л╓И╓н╧т╓╛╫Я╓╚╓Л╓© /boot/loader.rc ╔у╔║╔╓╔К╓╛и╛мв╓г╓╧. load kernel load -t splash_image_data /boot/splash.bmp load splash_bmp autoboot FreeBSD 3.2 ╟й╧ъ╓н╬Л╧Г PCX ╥а╪╟╓н╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓н╔╣╔щ║╪╔х╓╛ди╡ц╓╣╓Л╓К╓хф╠╩Ч╓к, FreeBSD 3.2 ╓к╓о╣╞ф╟╔в╔М╔╩╔╧╓РюъдЙ╓╧╓К, ╓Х╓ЙюЖнЩ╓╣╓Л╓©йЩк║╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╓Б╓╥╓╙к╬╓ъ╓й╓И, ╬Е╓к╪╗╓╥╓© FreeBSD 3.1 мя╓нйЩк║╓Р╩х╓╕╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╓Б╓╥╓╫╓╕╓╥╓©╓╞╓ф, ╓╚╓д PCX ╥а╪╟╓Р╩х╓╓╓©╓╓╓й╓И, splash_bmp ╓Р splash_pcx ╓хфи╓ъ╢╧╓╗╓ф╓╞╓ю╓╣╓╓. ╓╫╓╕╓г╓о╓й╓╞╓ф, ©╥╓╥╓╓╣╞ф╟юъдЙйЩк║╓Р╩х╓╕╓н╓й╓И, ╪║╓н©Т╧т╓╛╫Я╓╚╓Л╓© /boot/loader.rc ╔у╔║╔╓╔К╓х, include /boot/loader.4th start ╪║╓н©Т╧т╓╛╢ч╓ч╓Л╓© /boot/loader.conf ╔у╔║╔╓╔К╓Р╨Н╓К╓Ё╓х╓╛и╛мв╓г╓╧. splash_bmp_load="YES" bitmap_load="YES" ╓Ё╓ннЦ╓г╓о, ╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓х╓╥╓ф /boot/splash.bmp ╓Р╩х╓╕╓Ё╓х╓РашдЙ╓╥╓ф╓╓╓ч╓╧. PCX ╥а╪╟╓н╔у╔║╔╓╔К╓Р╩х╓╕╬Л╧Г╓к╓о, ╓╫╓н╔у╔║╔╓╔К╓Р /boot/splash.pcx ╓к╔Ё╔т║╪╓╥╓ф, ╬Е╓г╪╗╓╥╓©╓Х╓╕╓к /boot/loader.rc ╓Р╨Н╓Й╓ч╓╧. ╓╫╓╥╓ф, ╪║╓нфБмф╓н /boot/loader.conf ╓х╓╓╓╕╔у╔║╔╓╔К╓Р╨Н╓ц╓ф╓╞╓ю╓╣╓╓. splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" ╓╣╓ф, ╓╒╓х╓о╔╧╔в╔И╔ц╔╥╔Е╔╧╔╞╔Й║╪╔С╓Рмя╟у╓╧╓К╓ю╓╠╓г╓╧. ╓╫╓Л╓к╓о http://www.baldwin.cx/splash/ ╓н╔╝╔Ц╔И╔Й║╪╓Р╔╣║╪╔у╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. X ╓г Windows(tm) ╔╜║╪╓Р╩х╓╕╓Ё╓х╓о╓г╓╜╓К╓н╓г╓╥╓Г╓╕╓╚? ╓о╓╓, ╓Б╓а╓М╓С. ╓и╓╕╓╓╓╕ф╟╨Н╓Р╓╧╓К╓╚╓к╓д╓╓╓фдЙ╣а╓╧╓К╓к╓о &man.xmodmap.1; ╓Р╩х╓╓╓ч╓╧. и╦╫Юе╙╓й "Windows(tm)" ╔╜║╪╔э║╪╔и╓н╬Л╧Г, бп╠Ч╓╧╓К╔╜║╪╔Ё║╪╔и╓о 3 ╪ОнЮ╓╒╓Й╓ч╓╧. 115 - ╨╦╓н Ctrl ╓х Alt ╓н╢ж╓к╓╒╓К Windows(tm) ╔╜║╪ 116 - ╠╕╓н Alt ╓х Gr ╓н╢ж╓к╓╒╓К Windows(tm) ╔╜║╪ 117 - ╠╕╓н Ctrl ╓н╨╦ны╓к╓╒╓К╔А╔к╔Е║╪╔╜║╪ ╨╦╓к╓╒╓К Windows(tm) ╔╜║╪╓Р╡║╓╧╓х╔╚╔С╔ч╣╜╧Ф╓╛фЧно╓╣╓Л╓К╓Х╓╕╓к╓╧╓К╓к╓о, ╓Ё╓С╓йиВ╓к╓╥╓ч╓╧. &prompt.root; xmodmap -e "keycode 115 = comma" юъдЙ╓Рх©╠г╓╣╓╩╓К╓к╓о, ╓╙╓╫╓И╓╞╔╕╔ё╔С╔и╔╕╔ч╔м║╪╔╦╔Ц╓Р╨ф╣╞ф╟╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. Windows(tm) ╔╜║╪╓н╔╜║╪╔ч╔ц╔в╓Р X ╣╞ф╟╩Ч╓ккХ╡С, ╪╚ф╟е╙╓км╜╦З╡╫╓╧╓К╓к╓о xmodmap ╔Ё╔ч╔С╔и╓Р ~/.xinitrc ╓кди╡ц╓╧╓К╓╚, ╓Б╓╥╓╞╓о╓╙╓╧╓╧╓А╓г╓╜╓КйЩк║╓х╓╥╓ф ~/.xmodmaprc ╓х╓╓╓╕╔у╔║╔╓╔К╓Р╨Ню╝╓╥╓ф, ╓╫╓н╔у╔║╔╓╔К╓н╟Л╧т╟Л╧т╓к xmodmap ╓н╔╙╔в╔╥╔Г╔С╓Р╣╜╫р╓╥, ╪║╓н╟Л╧т xmodmap $HOME/.xmodmaprc ╓Р ~/.xinitrc ╓кди╡ц╓╧╓К╓х╓╓╓╕йЩк║╓╛╓╒╓Й╓ч╓╧. ╓©╓х╓╗╓п, юХ╓ш╓и╓╒╓╡╓©╩╟╓д╓н╔╜║╪╓Р F13, F14, F15 ╓кЁД╓ЙеЖ╓ф╓К╓х╓╥╓ч╓╧. ╓Ё╓╕╓╥╓ф╓╙╓╠╓п, ╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓Д╔╕╔ё╔С╔и╔╕╔ч╔м║╪╔╦╔Ц╓нйьмЬ╓й╣║г╫╓Р ╓╫╓н╩╟╓д╓н╔╜║╪╓к╢йц╠╓кЁД╓ЙеЖ╓ф╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓╕╓╧╓К╓к╓о, ╪║╓нфБмф╓Р ~/.xmodmaprc ╓кди╡ц╓╥╓ч╓╧. keycode 115 = F13 keycode 116 = F14 keycode 117 = F15 ╓О╓©╓╥╓о fvwm2 ╓Р╩х╓ц╓ф╓╓╓ф, F13 ╓Р╔╚║╪╔╫╔К╡╪╓н╔╕╔ё╔С╔и╔╕╓н╔╒╔╓╔Ё╔С╡╫, F14 ╓Р╔╕╔ё╔С╔и╔╕╓на╟лл/гьлл╡╫, F15 ╓Р, ╓╒╓©╓╚╓Б╔г╔╧╔╞╔х╔ц╔в╓к╔╚║╪╔╫╔К╓╛б╦╨ъ╓╥╓й╓╓╓╚╓н╓Х╓╕╓к, ╔А╔╓╔С╔О║╪╔╞╔╧╔з║╪╔╧(╔╒╔в╔Й╔╠║╪╔╥╔Г╔С)╓н╔А╔к╔Е║╪╓Р╦ф╓с╫п╓╩╓К╣║г╫╓кЁД╓ЙеЖ╓ф╓ф╓╓╓ч╓╧. ╨г╦Е╓н╣║г╫╓о, ╓╫╓н╔г╔╧╔╞╔х╔ц╔в╓╛╓ч╓ц╓©╓╞╦╚╓╗╓й╓╓╓х╓╜╓кйьмЬ╓г╓╧. (╓ч╓©, ╔╜║╪╔х╔ц╔в╓н╔М╔╢╓к╓Б╓т╓ц╓©╓Й╓г╓╧) ╪║╓ннЦ╓о, ╓О╓©╓╥╓╛╓╫╓н╓Х╓╕╓кЁД╓ЙеЖ╓ф╓Р╧т╓й╓╕╓©╓А╓к╩х╓ц╓ф╓╓╓К ~/.fvwmrc ╓н╔╗╔С╔х╔Й╓г╓╧. Key F13 FTIWS A Iconify Key F14 FTIWS A RaiseLower Key F15 A A Menu Workplace Nop ╔м╔ц╔х╔О║╪╔╜╔С╔╟ лУ: &a.jp.arimura;, &a.jp.shou;, ╓к╓╥╓╚ nishika@cheerful.com, &a.jp.kiroh;, 1998 г╞ 10 ╥Н 4 фЭ. ╔г╔ё╔╧╔╞╔Л╔╧╔ж║╪╔х(diskless boot) ╓к╢ь╓╧╓К╬ПйС╓о╓и╓Ё╓гфю╓И╓Л╓ч╓╧╓╚? ╔г╔ё╔╧╔╞╔Л╔╧╔ж║╪╔х(diskless boot) ╓х╓╓╓╕╓н╓о, FreeBSD ╓╛╔м╔ц╔х╔О║╪╔╞╬Е╓г╣╞ф╟╓╥, и╛мв╓й╔у╔║╔╓╔К╓Р╪╚й╛╓н╔о║╪╔и╔г╔ё╔╧╔╞╓г╓о╓й╓╞╓ф╔╣║╪╔п╓╚╓Ифи╓ъ╧Ч╓Ю╓Б╓н╓г╓╧. ╬э╨ы╓к╓д╓╓╓ф╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║ж╔г╔ё╔╧╔╞╔Л╔╧╔ж║╪╔х║в╓Рфи╓С╓г╓╞╓ю╓╣╓╓. FreeBSD ╓Р╔м╔ц╔х╔О║╪╔╞╓н╔К║╪╔©(router)╓х╓╥╓ф╩хмя╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╧╓╚? ╔╓╔С╔©║╪╔м╔ц╔хи╦╫Ю╓Д╓Ё╓Л╓ч╓г╓н╓Х╓╓╥п╦Ё╓к╓Х╓ц╓ф╩ье╕╓╣╓Л╓ф╓╓╓Кдл╓Й, FreeBSD ╓ои╦╫Ю╓г╓о╔я╔╠╔ц╔х╓Ре╬аВ(forward)╓╧╓К╓Х╓╕╓кюъдЙ╓╣╓Л╓ф╓╓╓ч╓╩╓С. ╓╥╓╚╓╥, rc.conf ╓нцФ╓г╪║╓нйя©Т╓нцм╓Р YES ╓х╓╧╓К╩Ж╓к╓Х╓ц╓ф╓Ё╓н╣║г╫╓Рм╜╦З╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. gateway_enable=YES # Set to YES if this host will be a gateway ╓Ё╓н╔╙╔в╔╥╔Г╔С╓к╓Х╓ц╓ф sysctl ╓нйя©Т net.inet.ip.forwarding ╓╛ 1 ╓к╓й╓Й╓ч╓╧. ╓ш╓х╓С╓и╓н╬Л╧Г, ╔К║╪╔©╓к╓д╓╓╓ф╓н╬ПйС╓Рф╠╓╦╔м╔ц╔х╔О║╪╔╞╓нб╬╓н╥в╩╩╣║еЫ╓кцн╓И╓╩╓К╓©╓А╓к, ╥по╘ю╘╦Ф╓н╓©╓А╓н╔в╔М╔╩╔╧╓РаЖ╓И╓╩╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. FreeBSD ╓к╓о BSD ╓ни╦╫Ю╥по╘ю╘╦Ф╔г║╪╔Б╔С╓г╓╒╓К routed ╓╛иуб╟╓╥╓ф╓╓╓ч╓╧╓╛, ╓Х╓Ййё╩╗╓й╬У╤╥╓кбп╫Х╓╧╓К╓©╓А╓к╓о GaTeD(http://www.gated.org/ ╓╚╓ИфЧ╪Й╡дг╫)╓Р╩хмя╓╧╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. 3_5Alpha7 ╓к╓╙╓╓╓ф FreeBSD ╓╛╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓ч╓╧. цМ╟у╓╥╓ф╓ш╓╥╓╓╓н╓о, FreeBSD ╓Р╓Ё╓н╓Х╓╕╓к╓╥╓ф╩хмя╓╥╓ф╓╓╓К╬Л╧Г╓г╓Б, ╔К║╪╔©╓к╢ь╓╧╓К╔╓╔С╔©║╪╔м╔ц╔хи╦╫Ю╓ни╛мв╬Р╥О╓Р╢╟а╢╓к╓окЧ╓©╓╥╓ф╓╓╓й╓╓ ╓х╓╓╓╕╓Ё╓х╓г╓╧. ╓╥╓╚╓╥, иАдл╓к╩хмя╓╧╓К╬Л╧Г╓к╓о╓ш╓х╓С╓илДбЙ╓╒╓Й╓ч╓╩╓С. Win95 ╓наЖ╓ц╓ф╓╓╓К╔ч╔╥╔С╓Р, FreeBSD ╥пмЁ╓г╔╓╔С╔©║╪╔м╔ц╔х╓кюэбЁ╓г╓╜╓ч╓╧╓╚? дл╬О, ╓Ё╓н╪алД╓╛╫п╓ф╓╞╓К╬У╤╥╓о╪╚бП╓кфСбФ╓н PC ╓╛╓╒╓Й, ╟ЛбФ╓г╓о FreeBSD ╓╛, ╓Б╓╕╟ЛбФ╓г╓о Win95 ╓╛аЖ╓ц╓ф╓╓╓К╓Х╓╕╓й╬Л╧Г╓г╓╧. ╓Ё╓Ё╓г╓Д╓М╓╕╓х╓╥╓ф╓╓╓╕╩Ж╓о FreeBSD ╓наЖ╓ц╓ф╓╓╓К╥в╩╩╣║╓Р╔╓╔С╔©║╪╔м╔ц╔х ╓кюэбЁ╓╥, Win95 ╓наЖ╓ц╓ф╓╓╓К╔ч╔╥╔С╓╚╓И╓о FreeBSD ╓наЖ╓ц╓ф╓╓╓К╔ч╔╥╔С╓Р╥пмЁ╓╥╓фюэбЁ╓Р╧т╓й╓╕╩Ж╓г╓╧. ╓Ё╓Л╓офС╓да╟╓н╪алД╓нфцйл╓й╬Л╧Г╓каЙеЖ╓╥╓ч╓╧. ... ╓г, еЗ╓╗╓о║ж╓о╓╓║в╓г╓╧. FreeBSD 3.x ╓н╔Ф║╪╔╤╔Б║╪╔и ppp ╓к╓о ╔╙╔в╔╥╔Г╔С╓╛╓╒╓Й╓ч╓╧. ppp ╓Р ╔╙╔в╔╥╔Г╔Сиу╓╜╓г╣╞ф╟╓╥, /etc/rc.conf ╓к╓╒╓К gateway_enable ╓Р YES ╓кюъдЙ╓╥╓ч╓╧. ╓╫╓╥╓ф Windows ╔ч╔╥╔С╓Рю╣╓╥╓╞юъдЙ╓╧╓Л╓п, ╓╜╓а╓С╓хф╟╨Н╓╧╓К╓г╓╥╓Г╓╕. юъдЙ╓к╢ь╓╧╓К╓╣╓И╓к╬э╓╥╓╓╬ПйС╓о, Steve Sims ╩А╓к╓Х╓К Pedantic PPP Primer ╓к╓╒╓Й╓ч╓╧. ╔╚║╪╔м╔К╔Б║╪╔и ppp ╓РмЬмя╓╧╓К╬Л╧Г╓Д, ╔╓╔С╔©║╪╔м╔ц╔х╓х╓н╔╓║╪╔╣╔м╔ц╔хюэбЁ╓╛мЬмя╓г╓╜╓К╬Л╧Г╓о, natd ╓РмЬмя╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н FAQ ╓н natd ╓н╔╩╔╞╔╥╔Г╔С╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ISC ╓╚╓И╔Й╔Й║╪╔╧╓╣╓Л╓ф╓╓╓К BIND ╓н╨г©╥хг╓о╔Ё╔С╔я╔╓╔К╓г╓╜╓й╓╓╓С╓г╓╥╓Г╓╕╓╚? BIND ╓нгшишй╙╓х FreeBSD ╓х╓г╓о cdefs.h ╓х╓╓╓╕╔у╔║╔╓╔К╓нцФ╓г╔г║╪╔©╥©╓нл╥╫Б╓╛╓╒╓Й╓ч╓╧. compat/include/sys/cdefs.h ╓Р╨О╫Э╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD ╓г SLIP ╓х PPP ╓о╩х╓╗╓ч╓╧╓╚? ╩х╓╗╓ч╓╧. FreeBSD ╓Рмя╓╓╓фб╬╓н╔╣╔╓╔х╓кюэбЁ╓╧╓К╬Л╧Г╓к╓о, slattach, sliplogin, pppd ╓╫╓╥╓ф ppp ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╦╚╓ф╓╞╓ю╓╣╓╓. pppd ╓х ppp ╓о, PPP ╓н╔╣║╪╔п, ╔╞╔И╔╓╔╒╔С╔хн╬йЩ╓н╣║г╫╓Р╩Щ╓ц╓ф╓╓╓ч╓╧. sliplogin ╓о SLIP ╓н╔╣║╪╔пюЛмя╓г, slattach ╓о SLIP ╓н╔╞╔И╔╓╔╒╔С╔хюЛмя╓г╓╧. ╓Ё╓Л╓И╓н╔в╔М╔╟╔И╔Ю╓н╡РюБ╓╛, FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н╟й╡╪╓н╔╩╔╞╔╥╔Г╔С╓к╓╒╓Й╓ч╓╧. SLIP ╔╣║╪╔п SLIP ╔╞╔И╔╓╔╒╔С╔х ╔╚║╪╔м╔К PPP ╔Ф║╪╔╤╔Б║╪╔и PPP ║ж╔╥╔╖╔К╔╒╔╚╔╕╔С╔х║в╓Рдл╓╦╓ф╓н╓ъ╔╓╔С╔©║╪╔м╔ц╔х╓ь╔╒╔╞╔╩╔╧╡дг╫╓й╬Л╧Г, slirp package ╓ъ╓©╓╓╓й╓Б╓н╓╛мъ╓╥╓╞╓й╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С╓м. ╓Ё╓Л╓Р╩х╓╗╓п, ╔М║╪╔╚╔К╔ч╔╥╔С╓╚╓Ид╬юэ ftp ╓Д http ╓н╓Х╓╕╓й╔╣║╪╔с╔╧╓к(╦бдЙе╙╓г╓о╓╒╓Й╓ч╓╧╓╛)╔╒╔╞╔╩╔╧╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. FreeBSD ╓о NAT ╓╚ IP ╔ч╔╧╔╚╔Л║╪╔и╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧╓╚? ╔М║╪╔╚╔К╓й╔╣╔ж╔м╔ц╔х (╟ЛбФ╟й╬Е╓н╔М║╪╔╚╔К╔ч╔╥╔С) ╓Р╩Щ╓ц╓ф╓╓╓К╓╛, ╔╓╔С╔©║╪╔м╔ц╔х╔в╔М╔п╔╓╔ю╓╚╓И 1 ╓д╓╥╓╚ IP ╔╒╔и╔Л╔╧╓нЁД╓ЙеЖ╓ф╓Р╪У╓╠╓ф╓╓╓й╓╓╬Л╧Г(╓ч╓©╓о IP ╔╒╔и╔Л╔╧╓Рф╟е╙╓кЁД╓ЙеЖ╓ф╓И╓Л╓ф╓╓╓К╬Л╧Г╓г╓Б), natd ╔в╔М╔╟╔И╔Ю╓Р╩х╓╓╓©╓╞╓й╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С╓м. natd ╓Р╩х╓╗╓п, 1 ╓д╓╥╓╚ IP ╔╒╔и╔Л╔╧╓Р╩Щ╓ц╓ф╓╓╓й╓╓╬Л╧Г╓г╓Б, ╔╣╔ж╔м╔ц╔ха╢бн╓Р╔╓╔С╔©║╪╔м╔ц╔х╓кюэбЁ╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ppp ╓Бф╠мм╓н╣║г╫╓Р╩Щ╓ц╓ф╓╙╓Й, ╔╧╔╓╔ц╔а╓гм╜╦З╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓и╓а╓И╓н╬Л╧Г╓Б alias ╔И╔╓╔ж╔И╔Й╓╛╩х╓О╓Л╓ч╓╧. /dev/ed0 ╔г╔п╔╓╔╧╓Р╨Ню╝╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╩╓С. Berkeley UNIX ╓к╓╙╓╠╓К╔м╔ц╔х╔О║╪╔╞╓н╧╫ю╝╓к╓╙╓╓╓ф, ╔м╔ц╔х╔О║╪╔╞╓н╔╓╔С╔©╔у╔╖║╪╔╧╓о╔╚║╪╔м╔К╔Ё║╪╔и╓╚╓И╓н╓ъ, д╬юэ╓╒╓д╓╚╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Х╓Й╬э╓╥╓╞цн╓Й╓©╓╓╬Л╧Г╓о, /etc/rc.network ╓х╓╓╓╕╔у╔║╔╓╔К╓Д, ╓Ё╓н╔у╔║╔╓╔К╓нцФ╓к╫Я╓╓╓ф╓╒╓К, ╓╣╓ч╓╤╓ч╓й╔в╔М╔╟╔И╔Ю╓к╓д╓╓╓ф╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╦╚╓ф╓╞╓ю╓╣╓╓. ╓╫╓Л╓г╓Б╓ч╓юй╛╓╚╓И╓й╓╓╬Л╧Г╓к╓о, б╬╓н BSD ╥о╓н OS ╓н╔м╔ц╔х╔О║╪╔╞╢имЩ╓к╓д╓╓╓ф╓нкэ╓Рфи╓Ю╓ы╓╜╓г╓╥╓Г╓╕. ╓╢╓╞╬╞╓╥╓ннЦЁ╟╓Р╓н╓╬╓╓╓ф╓о, FreeBSD ╓н╔м╔ц╔х╔О║╪╔╞╢имЩ╓о SunOS 4.0 ╓Д Ultrix ╓х╢Пкэе╙╓кф╠╓╦╓г╓╧. Ethernet ╔╒╔и╔Л╔╧╓н╔╗╔╓╔Й╔╒╔╧(alias)╓о╓и╓н╓Х╓╕╓к╓╥╓фюъдЙ╓г╓╜╓ч╓╧╓╚? ifconfig ╓н╔Ё╔ч╔С╔и╔И╔╓╔С╓к netmask 0xffffffff ╓Рди╡ц╓╥╓ф, ╪║╓н╓Х╓╕╓к╫Я╓╓╓ф╓╞╓ю╓╣╓╓. &prompt.root; ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff 3C503 ╓гб╬╓н╔м╔ц╔х╔О║╪╔╞╔щ║╪╔х╓Р╩хмя╓╧╓К╓к╓о╓и╓н╓Х╓╕╓к╓╧╓Л╓п╓Х╓╓╓г╓╧╓╚? б╬╓н╔щ║╪╔х╓Р╩хмя╓╥╓©╓╓╬Л╧Г╓к╓о, ifconfig ╓н╔Ё╔ч╔С╔и╔И╔╓╔С╓к╔я╔И╔А║╪╔©╓Рди╡ц╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╔г╔у╔╘╔К╔х╓г╓о link0 ╓╛мя╓╓╓И╓Л╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧. BNC ╓н╓╚╓О╓Й╓к AUI ╔щ║╪╔х╓Р╩хмя╓╥╓©╓╓╬Л╧Г╓к╓о, link2 ╓х╓╓╓╕╔я╔И╔А║╪╔©╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓И╓н╔у╔И╔╟╓о, /etc/rc.conf ╓к╓╒╓К ifconfig_* ╓нйя©Т╓Р╩х╓ц╓ф╩ьдЙ╓╣╓Л╓К╓о╓╨╓г╓╧. FreeBSD ╓х╓н╢ж╓г NFS ╓╛╓╕╓ч╓╞╓г╓╜╓ч╓╩╓С. PC мя╓н╔м╔ц╔х╔О║╪╔╞╔╚║╪╔и╓к╓Х╓ц╓ф╓о, NFS ╓н╓Х╓╕╓й, ╔м╔ц╔х╔О║╪╔╞╓Р╧С╩х╓╧╓К╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓к╓╙╓╓╓флДбЙ╓Р╣╞╓Ё╓╧╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╓Ё╓нею╓к╢ь╓╥╓ф╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║жNFS║в╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╡©╦н Linux ╓н╔г╔ё╔╧╔╞╓Р NFS ╔ч╔╕╔С╔х╓г╓╜╓й╓╓╓н╓г╓╥╓Г╓╕╓╚? Linux ╓н NFS ╓н╔Ё║╪╔и╓к╓о, ╣Ж╡д╓╣╓Л╓©╔щ║╪╔х╓╚╓И╓н╔Й╔╞╔╗╔╧╔х╓╥╓╚╪У╓╠╓д╓╠╓й╓╓╓Б╓н╓╛╓╒╓Й╓ч╓╧. ╟й╡╪╓Р╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. &prompt.root; mount -o -P linuxbox:/blah /mnt ╡©╦н Sun ╓н╔г╔ё╔╧╔╞╓Р NFS ╔ч╔╕╔С╔х╓г╓╜╓й╓╓╓н╓г╓╥╓Г╓╕╓╚? SunOS 4.X ╓╛аЖ╓ц╓ф╓╓╓К Sun Workstation ╓о, ╣Ж╡д╓╣╓Л╓©╔щ║╪╔х╓╚╓И╓н╔ч╔╕╔С╔хмв╣А╓╥╓╚╪У╓╠╓д╓╠╓ч╓╩╓С. ╟й╡╪╓Р╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. &prompt.root; mount -o -P sunbox:/blah /mnt mountd ╓╚╓И can't change attributes ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛╓╨╓ц╓х╫пбЁ╓╠╓ф╓╓╓ф, FreeBSD ╓н NFS ╔╣║╪╔п╓г╓о bad exports list ╓хи╫╪╗╓╣╓Л╓ч╓╧. ╓Ё╓Л╓о╡©╓╛╦╤╟Ь╓й╓н╓г╓╥╓Г╓╕? ╨г╓Бни╓╞╓╒╓КлДбЙ╓о, &man.exports.5; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓н╟й╡╪╓ниТй╛╓Рю╣╓╥╓╞мЩ╡Р╓╥╓ф╓╓╓й╓╓╓Ё╓х╓г╓╧.
╓Ё╓н╔у╔║╔╓╔К╓нЁф╧т (# ╓г╓о╓╦╓ч╓К╔Ё╔А╔С╔х╧т╓Р╫Э╓╞) ╓о, NFS ╔╣║╪╔п╓н╔М║╪╔╚╔К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓кб╦╨ъ╓╧╓К, б╬╓н╔ш╔╧╔х╓к╔╗╔╞╔╧╔щ║╪╔х╓╣╓Л╓К╔ч╔╕╔С╔х╔щ╔╓╔С╔х (йё©Т╡д) ╓х, ╓╫╓Л╓кбп╓╧╓К╔╗╔╞╔╧╔щ║╪╔х╔у╔И╔╟╓Р╩ьдЙ╓╥╓ч╓╧. фцдЙ╓н╔╗╔╞╔╧╔щ║╪╔хюХ╔ш╔╧╔х╓╙╓Х╓с, ╓╧╓ы╓ф╓н╔ш╔╧╔х╓ке╛мя╓╣╓Л╓К╔г╔у╔╘╔К╔х╔╗╔С╔х╔Й╓он╬йЩ╓х╓Б, ╔╣║╪╔п╓нЁф╔М║╪╔╚╔К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓кбп╓╥╓ф╟Л╡С╓ю╓╠╓╥╓╚╩ьдЙ╓г╓╜╓ч╓╩╓С.
╓╣╓ф, ╓╒╓Й╓╛╓а╓й╢ж╟Ц╓╓╓Р╓╢мВ╓к╓й╓Л╓п╓о╓ц╓╜╓Й╓╧╓К╓г╓╥╓Г╓╕. ╓Б╓╥ /usr ╟й╡╪╓╛ц╠╟Л╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓г╓╒╓К (╓д╓ч╓Й /usr ╓к╡©╓Б╔ч╔╕╔С╔х╓╣╓Л╓й╓╓) ╬Л╧Г, ╪║╓н exports ╔Й╔╧╔х╓ою╣╓╥╓╞╓╒╓Й╓ч╓╩╓С. /usr/src client /usr/ports client ╟Л╓д╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓кбп╓╥╓фб╟ю╜╓н╩ьдЙ╓╛фС╧т╓к╓й╓ц╓ф╓╓╓ч╓╧. /usr ╓оф╠╓╦╔ш╔╧╔х client ╓к╔╗╔╞╔╧╔щ║╪╔х╓╣╓Л╓ч╓╧╓╚╓И, ю╣╓╥╓╓╫Я╓╜йЩ╓о╪║╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. /usr/src /usr/ports client ╓Б╓╕╟Леы╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓нй╦╬о╓РЁнг╖╓╧╓К╓х, ╓╒╓К╔ш╔╧╔х╓к╔╗╔╞╔╧╔щ║╪╔х╓╣╓Л╓КЁф╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓нб╟ю╜╓о ╓╧╓ы╓ф╟Л╧т╓к╫Я╓╚╓Л╓ф╓╓╓й╓╠╓Л╓п╓й╓И╓й╓╓, ╓х╓й╓ц╓ф╓╓╓ч╓╧ (╓Ё╓Ё╓г╓о,║ж╔╒╔╞╔╩╔╧╡дг╫╓й╓╧╓ы╓ф╓н╔ш╔╧╔х║в ╓Б╟Л╓д╓нфхн╘╓╥╓©╔ш╔╧╔х╓х╓╥╓ф╟╥╓О╓Л╓К╓Ё╓х╓кцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓). ╓Ё╓н╓Ё╓х╓о, ╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓Р╔╗╔╞╔╧╔щ║╪╔х╓╧╓К╓©╓А╓к ╢Ял╞╓й╫Я╪╟╓Р╩х╓О╓й╓╠╓Л╓п╓й╓И╓й╓╓╦╤╟Ь╓к╓Б╓й╓ц╓ф╓╓╓К╓н╓г╓╧╓╛, ╓ш╓х╓С╓и╓н©м╓к╓х╓ц╓ф, ╓Ё╓Л╓олДбЙ╓к╓о╓й╓И╓й╓╓╓г╓╥╓Г╓╕. ╪║╓к╪╗╓╧╓н╓о, м╜╦З╓й exports ╔Й╔╧╔х╓ннЦ╓г╓╧. ╓Ё╓Ё╓г╓о, /usr ╓х /exports ╓╛╔М║╪╔╚╔К╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓г╓╧. # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=0 client01 /usr/src /usr/ports client02 # The "client" machines have root and can mount anywhere # up /exports. The world can mount /exports/obj read-only /exports -alldirs -maproot=0 client01 client02 /exports/obj -ro
PPP ╓г NeXTStep ╓кюэбЁ╓╧╓К╨щ╓клДбЙ╓╛╓╒╓К╓н╓г╓╧╓╛. /etc/rc.conf ╓нцФ╓г╪║╓нйя©Т╓Р NO ╓к╓╥╓ф, TCP extension ╓Рл╣╦З╓к╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. tcp_extensions=NO Xylogic ╓н Annex ╓Бф╠мм╓нлДбЙ╓╛╓╒╓Й╓ч╓╧╓н╓г, Annex ╥пмЁ╓г PPP ╓Р╧т╓й╓╕╬Л╧Г╓к╓Б╓Ё╓нйя╧╧╓Р╧т╓ц╓ф╓╞╓ю╓╣╓╓. IP ╔ч╔К╔а╔╜╔Ц╔╧╔х(multicast)╓Рм╜╦З╓к╓╧╓К╓к╓о? FreeBSD 2.0 ╓╚╓╫╓Л╟й╧ъ╓г╓о, и╦╫Ю╓н╬Убж╓г╢╟а╢╓к╔ч╔К╔а╔╜╔Ц╔╧╔х╓кбп╠Ч╓╥╓ф╓╓╓ч╓╧. ╦╫╨ъ╩хмя╓╥╓ф╓╓╓К╥в╩╩╣║╓Р╔ч╔К╔а╔╜╔Ц╔╧╔х╓н╔К║╪╔©(router)╓х╓╥╓ф╩хмя╓╧╓К╓к╓о, MROUTING ╓х╓╓╓╕╔╙╔в╔╥╔Г╔С╓РдЙ╣а╓╥╓©╔╚║╪╔м╔К╓Р╨Н╓ц╓©╓╕╓╗╓г, mrouted ╓РаЖ╓И╓╩╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. 2.2 ╓╚╓╫╓Л╟й╧ъ╓н FreeBSD ╓й╓И╓п, /etc/rc.conf ╓г╔у╔И╔╟ mrouted_enable ╓Р YES ╓к╔╩╔ц╔х╓╥╓ф╓╙╓╞╓Ё╓х╓г, ╣╞ф╟╩Ч╓к mrouted ╓Р╣╞ф╟╓г╓╜╓ч╓╧. MBONE мя╓н╔д║╪╔К╓о ports фБ╓нюЛмя╓н╔╚╔ф╔╢╔Й║╪ mbone ╓к╓╒╓Й╓ч╓╧. vic ╓Д vat ╓х╓╓╓ц╓©╡Я╣дмя╓н╔д║╪╔К╓Рц╣╓╥╓ф╓╓╓К╬Л╧Г╓о, ╓Ё╓н╬Л╫Й╓Р╦╚╓ф╓╞╓ю╓╣╓╓. ╬э╓╥╓╓╬ПйС╓о Mbone Information Web ╓к╓╒╓Й╓ч╓╧. DEC ╓н PCI ╔а╔ц╔в╔╩╔ц╔х╓Рмя╓╓╓ф╓╓╓К╔м╔ц╔х╔О║╪╔╞╔╚║╪╔и╓к╓о, ╓и╓н╓Х╓╕╓йй╙╓╛╓╒╓Й╓ч╓╧╓╚? Glen Foster ╩А╓к╓Х╓К╟ЛмВ╓к, ╨г╤А╓ню╫ий╓Рди╡ц╓╥╓©╓Б╓н╓Р╟й╡╪╓к╪╗╓╥╓ч╓╧. Vendor Model ---------------------------------------------- ASUS PCI-L101-TB Accton ENI1203 Cogent EM960PCI Compex ENET32-PCI D-Link DE-530 Dayna DP1203, DP2100 DEC DE435, DE450 Danpex EN-9400P3 JCIS Condor JC1260 Linksys EtherPCI Mylex LNP101 SMC EtherPower 10/100 (Model 9332) SMC EtherPower (Model 8432) TopWare TE-3500P Znyx (2.2.X) ZX312, ZX314, ZX342, ZX345, ZX346, ZX348 (3.X) ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd) ╡©╦н╪╚й╛╓н╔╣╔╓╔х╓н╔ш╔╧╔х╓кбп╓╥╓ф FQDN ╓Р╩хмя╓╧╓Ки╛мв╓╛╓╒╓К╓н╓г╓╧╓╚? ╪б╨щ╓к╓о╓╫╓н╔ш╔╧╔х╓ойл╓н╔и╔А╔╓╔С╓к╓╒╓К╓н╓г╓о╓й╓╓╓г╓╧╓╚. ╓©╓х╓╗╓п, foo.bar.edu ╓х╓╓╓╕╔и╔А╔╓╔С╓нцФ╓╚╓И, bar.edu ╔и╔А╔╓╔С╓к╓╒╓К mumble ╓х╓╓╓╕╔ш╔╧╔х╓Р╩ьдЙ╓╥╓©╓╓╬Л╧Г╓к╓о, mumble ╓ю╓╠╓г╓о╔ю╔А╓г, mumble.bar.edu ╓х╓╓╓╕ FQDN(fully-qualified domain name) ╓г╩ьдЙ╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. еаеЩе╙╓к, BSD ╓н BIND ╓н╔Й╔╬╔К╔п(resolver)╓г╓о╓Ё╓н╓Х╓╕╓й╩Ж╓о╡дг╫╓г╓╥╓©╓╛, FreeBSD ╓кфЧ╓ц╓ф╓╓╓К bind ╓н╦╫╨ъ╓н╔п║╪╔╦╔Г╔С╓г╓о, ╪╚й╛╟йЁ╟╓н╔и╔А╔╓╔С╓кбп╓╥╓ф FQDN ╓г╓й╓╓йлл╬╓Р╪╚ф╟е╙╓к╓д╓╠╓ф╓╞╓Л╓К╓Х╓╕╓й╩Ж╓о╓╒╓Й╓ч╓╩╓С. ╓╥╓©╓╛╓ц╓ф mumble ╓х╓╓╓╕╔ш╔╧╔хл╬╓о, mumble.foo.bar.edu ╓х╓╓╓╕л╬а╟╓╚, ╓Б╓╥╓╞╓о root ╔и╔А╔╓╔СфБ╓к╓╒╓К╬Л╧Г╓к╓╥╓╚е╛мя╓╣╓Л╓ч╓╩╓С. ╓Ё╓Л╓о, mumble.bar.edu ╓х mumble.edu ╓х╓╓╓╕╓Ё╓х╓й╓ц╓©╔и╔А╔╓╔Сл╬╓кбп╓╥╓ф╔ш╔╧╔хл╬╓н╔╣║╪╔а╓╛╧т╓й╓О╓Л╓ф╓╓╓© ╟йа╟╓н©╤╓КиЯ╓╓╓х╓о╟ш╓й╓ц╓©╓Б╓н╓г╓╧. ╓Ё╓н╓Х╓╕╓й╩Ж╓╛╟╜╓╓нЦ╓Б╓╥╓╞╓о ╔╩╔╜╔Е╔Й╔ф╔ё╔ш║╪╔К╓х╓ъ╓й╓╣╓Л╓КмЩмЁ╓к╓д╓╓╓ф╓о RFC 1535 ╓Р╦╚╓ф╓╞╓ю╓╣╓╓. /etc/resolv.conf ╓нцФ╓г domain foo.bar.edu ╓х╫Я╓╓╓ф╓╒╓К╧т╓Р, search foo.bar.edu bar.edu ╓н╓Х╓╕╓к╫Я╓╜╓╚╓╗╓К╓Ё╓х╓г, ╬Е╓н╓Х╓╕╓й╩Ж╓╛╓г╓╜╓ч╓╧. ╓╥╓╚╓╥, RFC 1535 ╓к╓╒╓К╓Х╓╕╓к, ╦║╨В╫Г╫Ь╓╛║жфБиТ(local)╓хЁ╟иТ(public)╓н╢имЩ╓н╤╜Ё╕║в╓Р╓ч╓©╓╛╓й╓╓╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. ╓╧╓ы╓ф╓н╔м╔ц╔х╔О║╪╔╞╓наЮ╨Н╓кбп╓╥╓ф Permission denied ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛и╫╪╗╓╣╓Л╓К╓н╓г╓╧╓╛. IPFIREWALL ╔╙╔в╔╥╔Г╔С╓Риу╓╠╓ф╔╚║╪╔м╔К╓Р╔Ё╔С╔я╔╓╔К╓╥╓©╬Л╧Г╓к╓о, 2.1-STABLE ╓нЁ╚х╞╓несцФ╓╚╓Ийя╧╧╓к╓й╓ц╓© 2.1.7R ╓ни╦╫Юе╙╓ййЩ©к╓х╓╥╓ф, лю╪╗е╙╓к╣Ж╡д╓╣╓Л╓ф╓╓╓й╓╓╓╧╓ы╓ф╓н╔я╔╠╔ц╔х╓омН╓х╓╣╓Л╓КюъдЙ ╓к╓й╓ц╓ф╓╓╓К╩Ж╓РЁп╓╗╓ф╓╙╓╓╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╔у╔║╔╓╔╒╔╕╔╘║╪╔К╓нюъдЙ╓Р╢ж╟Ц╓╗╓©╬Л╧Г╓к╔м╔ц╔х╔О║╪╔╞╓наЮ╨Н╓╛╨ф╓с╓г╓╜╓К ╓Х╓╕╓к╓╧╓К╓к╓о, root ╓г╔М╔╟╔╓╔С╓╥╓ф╪║╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.root; ipfw add 65534 allow all from any to any /etc/rc.conf ╓к firewall_type='open' ╓Рди╡ц╓╥╓ф╓Б╓Х╓╓╓г╓╥╓Г╓╕. FreeBSD ╓н╔у╔║╔╓╔╒╔╕╔╘║╪╔К╓нюъдЙ╓к╓д╓╓╓ф╓н╬ПйС╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║ж╔у╔║╔╓╔╒╔╕╔╘║╪╔К║в╓к╓╒╓Й╓ч╓╧. IPFW ╓н╔╙║╪╔п╔ь╔ц╔и╓о╓и╓н╓╞╓И╓╓╓г╓╥╓Г╓╕╓╚? ╓Ё╓неЗ╓╗╓о, ╩х╓ц╓ф╓╓╓К╔К║╪╔К╔╩╔ц╔х╓х╔в╔М╔╩╔ц╔╣╓н╔╧╔т║╪╔и╓к╓Х╓ц╓ф╓ш╓х╓С╓и╥Х╓ч╓Й╓ч╓╧. ╔╓║╪╔╣╔м╔ц╔х╓кбп╓╥╓ф╬╞╓╥╓н╔К║╪╔К╔╩╔ц╔х╓ю╓╠╓Р╩х╓ц╓ф╓╓╓К╬Л╧Г╓к╓о, ╓ш╓х╓С╓и╓╫╓н╠ф╤а╓ол╣╩К╓г╓╜╓КдЬеы╓г╓╧. ╪б╨щ╓нб╛дЙцм╓Р╦╚╓й╓╓╓хкЧб╜╓г╓╜╓й╓╓йЩ║╧╓н╓©╓А╓к, ╪б╨щ╓нб╛дЙ╥К╡л╓Р╓╙╦╚╓╩╓╥╓ч╓╥╓Г╓╕. ╪║╓нб╛дЙ╓о 486-66(лУцМ: Intel ╪рю╫ CPU i486, 66MHz ╓н╓Ё╓х)╬Е╓г 2.2.5-STABLE ╓Р╩хмя╓╥╓ф╧т╓й╓О╓Л╓ч╓╥╓©. IPFW ╓ойя╧╧╓╛╡ц╓╗╓И╓Л╓ф, ip_fw_chk ╔К║╪╔а╔СфБ╓г╓╚╓╚╓К╩Ч╢ж╓Р б╛дЙ╓╥╓ф 1000 ╔я╔╠╔ц╔хкХ╓к╥К╡л╓Р╔Ё╔С╔╫║╪╔К╓ки╫╪╗╓╧╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓╫╓Л╓╬╓Л 1000 ╓╨╓д╓н╔К║╪╔К╓╛фЧ╓ц╓ф╓╓╓К 2 ╓д╓н╔К║╪╔К╔╩╔ц╔х╓г╔ф╔╧╔х╓╛╧т╓й╓О╓Л╓ч╓╥╓©. ╓р╓х╓длэ╓н╔К║╪╔К╔╩╔ц╔х╓о╨г╟╜╓н╔╠║╪╔╧╓Р╦╚╓К╓©╓А╓к ipfw add deny tcp from any to any 55555 ╓х╓╓╓╕╔К║╪╔К╓Р╥╚╓Ййж╓╥╓©╓Б╓н╓г╓╧. IPFW ╓н╔я╔╠╔ц╔х╔а╔╖╔ц╔╞╔К║╪╔а╔С╓о, ╔я╔╠╔ц╔х╓╛(╔щ║╪╔ххж╧Ф╓н╓╩╓╓╓г)╓Ё╓н╔К║╪╔К╓к╔ч╔ц╔а╓╥╓й╓╓╓Ё╓х╓╛╓О╓╚╓К╓ч╓г╓к, ╡©еы╓Б╪б╧т╓╣╓Л╓ч╓╧. ╓╫╓н╓©╓А, ╓Ё╓Л╓о╨г╟╜╓н╔╠║╪╔╧╓Р╪╗╓╥╓ч╓╧. ╓Ё╓н╔К║╪╔К╓Р 999 ╦д╥╚╓Ййж╓╥йб╓ы╓©╦Е╓к allow ip from any to any ╓╛╫Я╓╚╓Л╓ф╓╓╓ч╓╧. 2╓длэ╓н╔К║╪╔К╔╩╔ц╔х╓о, ╓й╓К╓ы╓╞аА╓╞╔а╔╖╔ц╔╞╓╛╫╙н╩╓╧╓К╓Х╓╕╓к╫Я╓╚╓Л╓©╓Б╓н╓г╓╧. ipfw add deny ip from 1.2.3.4 to 1.2.3.4 ╓Ё╓н╔К║╪╔К╓г╓о, х╞©╝╦╣╓н IP ╔╒╔и╔Л╔╧╓╛╔ч╔ц╔а╓╥╓й╓╓╓н╓г, ╔а╔╖╔ц╔╞╓о╓╧╓╟╓к╫╙н╩╓╥╓ч╓╧. ╬Е╓н╔К║╪╔К╔╩╔ц╔х╓х╓╙╓й╓╦╓Х╓╕╓к, 1000 ╦длэ╓н╔К║╪╔К╓о allow ip from any to any ╓г╓╧. 1 ╓длэ╓н╔К║╪╔К╔╩╔ц╔х╓н╬Л╧Г, ╔я╔╠╔ц╔х╓╒╓©╓Й╓н╔╙║╪╔п╔ь╔ц╔и╓о╓╙╓Х╓╫ 2.703ms/packet, ╓Ё╓Л╓о╓ю╓╓╓©╓╓ 1 ╓д╓н╔К║╪╔К╓╒╓©╓Й 2.7 ╔ч╔╓╔╞╔Миц╓╚╓╚╓ц╓ф╓╓╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. ╓╥╓©╓╛╓ц╓ф, ╓Ё╓н╔К║╪╔К╓к╓╙╓╠╓К╔я╔╠╔ц╔х╫ХмЩ╩Ч╢ж╓нмЩоюе╙╓й╦бЁ╕╓о, кХицлС 370 ╔я╔╠╔ц╔х╓г╓╧. 10Mbps ╓н╔╓║╪╔╣╔м╔ц╔х╓г 1500 ╔п╔╓╔х╟й╡╪╓н╔я╔╠╔ц╔х╔╣╔╓╔╨╓Р╡╬дЙ╓╧╓К╓х, ╔п╔С╔ииЩ╓нмЬмя╦Зн╗╓о 55.5% ╓╛╦бЁ╕╓х╓й╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. 2 ╓длэ╓н╔К║╪╔К╔╩╔ц╔х╓г╓о, ╓╫╓Л╓╬╓Л╓н╔я╔╠╔ц╔х╓╛╓╙╓Х╓╫ 1.172ms╓г╫ХмЩ╓╣╓Л╓ф╓╓╓ч╓╧╓н╓г, ╓ю╓╓╓©╓╓ 1 ╓д╓н╔К║╪╔К╓╒╓©╓Й 1.2 ╔ч╔╓╔╞╔Миц╓╚╓╚╓ц╓ф╓╓╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. ╔я╔╠╔ц╔х╫ХмЩ╩Ч╢ж╓нмЩоюе╙╓й╦бЁ╕╓о, кХицлС 853 ╔я╔╠╔ц╔х╓х╓й╓Й╓ч╓╧╓н╓г, 10Mbps Ethernet ╓н╔п╔С╔ииЩ╓Р╩х╓╓юз╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓н╔ф╔╧╔х╓г╓н╔К║╪╔К©Т╓об©╡А╓╝╓К╓©╓А, ╪б╨щ╓к╩хмя╓╧╓К╨щ╓н╥К╡л╓Рх©╠г╓╥╓ф╓╓╓КлУ╓г╓о╓╒╓Й╓ч╓╩╓С. ╓Ё╓Л╓И╓о╬Е╓к╪╗╓╥╓©©Тцм╓Р╫п╓╧╓©╓А╓ю╓╠╓кмя╓╓╓И╓Л╓©╓Б╓н╓г╓╧. ╦Зн╗╓нни╓╓╔К║╪╔К╔╩╔ц╔х╓Р╨Н╓К╓©╓А╓к╓о, ╪║╓н╓Х╓╕╓й╩Ж╓Р╧м╓╗╓ф╓╙╓╠╓п╓Х╓╓╓г╓╥╓Г╓╕. ║жЁндЙ╓╥╓ф╓╓╓К║в╔К║╪╔К╓оюХф╛╓нйЩ╓к╩Щ╓ц╓ф╓╜╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓о, б©©Т╓н TCP ╓н╔х╔И╔у╔ё╔ц╔╞╓╛╓Ё╓н╔К║╪╔К╓г╫ХмЩ╓╣╓Л╓К╓©╓А╓г╓╧. ╓╫╓╥╓ф╓Ё╓н╔К║╪╔К╓на╟╓к╓о allow tcp ╓х╓╓╓╕╣╜╫р╓Рцж╓╚╓й╓╓╓г╓╞╓ю╓╣╓╓. ни╓╞╩х╓О╓Л╓К╔К║╪╔К╓Р, ╓╒╓ч╓Йни╓╞╩х╓О╓Л╓й╓╓╔К║╪╔К╓Х╓Й╓Б а╟╓нйЩ╓к(╓Б╓а╓М╓С╔у╔║╔╓╔╒╔╕╔╘║╪╔К╓н╣Ж╡дюъдЙ╓Рйя╓╗╓й╓╓хо╟о╓г) ╩Щ╓ц╓ф╓╜╓ф╓╞╓ю╓╣╓╓. ipfw -a l ╓н╓Х╓╕╓╥╓ф╔я╔╠╔ц╔х©Т╓неЩ╥в╓Р╪Х╓К╓Ё╓х╓г, ╓и╓н╔К║╪╔К╓╛╨г╓Б╓Х╓╞╩х╓О╓Л╓ф╓╓╓К╓╚╓Рд╢╓ы╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &man.ipfw.8; fwd ╔К║╪╔К╓Р╩х╓ц╓фб╬╓н╔ч╔╥╔С╓к╔╣║╪╔с╔╧╓Р╔Й╔ю╔╓╔Л╔╞╔х╓╥╓©╓н╓г╓╧╓╛, ╓╕╓ч╓╞ф╟╓╓╓ф╓╞╓Л╓й╓╓╓Х╓╕╓г╓╧. ╓и╓╕╓╥╓ф╓й╓С╓г╓╥╓Г╓╕? ╓╙╓╫╓И╓╞, ╓╒╓й╓©╓╛╢Эбт╓╥╓ф╓╓╓Кф╟╨Н╓х╓о, ц╠╓й╓К╔я╔╠╔ц╔хе╬аВ╓г╓о╓й╓╞╔м╔ц╔х╔О║╪╔╞╔╒╔и╔Л╔╧йя╢╧ (NAT) ╓х╦ф╓п╓Л╓К╓Б╓н╓ю╓╚╓И╓г╓╥╓Г╓╕. fwd ╔К║╪╔К╓ой╦╩З╓и╓╙╓Й, кэеЖ╓ке╬аВ╓╥╓╚╧т╓й╓╓╓ч╓╩╓С. ╔я╔╠╔ц╔х╓нцФ©х╓к╓д╓╓╓ф╓о╟Люз╪Й╓Р╡ц╓╗╓й╓╓╓н╓г╓╧. ╓╫╓н╓©╓А, ╪║╓н╓Х╓╕╓й╔К║╪╔К╓РюъдЙ╓╥╓©╓х╓╧╓К╓х, 01000 fwd 10.0.0.1 from any to foo 21 ╟╦юХ╔╒╔и╔Л╔╧╓к foo ╓х╫Я╓╚╓Л╓©╔я╔╠╔ц╔х╓╛ ╓Ё╓н╔К║╪╔К╓РюъдЙ╓╥╓©╔ч╔╥╔С╓кеЧцЕ╓╥╓©╬Л╧Г, ╓╫╓н╔я╔╠╔ц╔х╓о 10.0.0.1 ╓ке╬аВ╓╣╓Л╓ч╓╧╓╛, ╟╦юХ╔╒╔и╔Л╔╧╓о foo ╓н╓ч╓ч╓к╓й╓Й╓ч╓╧. ╓д╓ч╓Й, ╔я╔╠╔ц╔х╓к╟╦юХ╔╒╔и╔Л╔╧╓╛ 10.0.0.1 ╓к╫Я╓╜╢╧╓╗╓И╓Л╓К╓х╓╓╓╕╓Ё╓х╓о╓╒╓Й╓ч╓╩╓С. ╪╚й╛╟╦╓г╓й╓╓╔я╔╠╔ц╔х╓Р╪У╓╠╓х╓ц╓©╔ч╔╥╔С╓о, ╓╙╓╫╓И╓╞╓ш╓х╓С╓и╓н╬Л╧Г, ╓╫╓н╔я╔╠╔ц╔х╓Ргк╢Ч╓╧╓К╓х╩в╓╓╓ч╓╧. ╓╫╓н╓©╓А fwd ╔К║╪╔К╓о, ╓╫╓н╔К║╪╔К╓Р╫Я╓╓╓©╔Ф║╪╔╤╓╛╟у©ч╓╥╓©╓Х╓╕╓к╓оф╟╓╚╓й╓╓╓Ё╓х╓╛ни╓╞╓╒╓Й╓ч╓╧. ╓Ё╓нф╟╨Н╓о╔п╔╟╓г╓о╓й╓╞, ╩емм╓й╓н╓г╓╧. ╔╣║╪╔с╔╧╓не╬аВ╓Р╓╜╓а╓С╓хф╟╨Н╓╣╓╩╓КйЩк║╓к╓д╓╓╓ф╓о, ╔╣║╪╔с╔╧╓н╔Й╔ю╔╓╔Л╔╞╔х╓к╢ь╓╧╓К FAQ ╓Д &man.natd.8; ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦, Ports Collection ╓к╓╓╓╞╓д╓╚╢ч╓ч╓Л╓ф╓╓╓К╔щ║╪╔хе╬аВ╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓й╓и╓Р╓╢мВ╓к╓й╓К╓хни╓╓╓г╓╥╓Г╓╕. ╔╣║╪╔с╔╧мв╣А╓Рб╬╓н╔ч╔╥╔С╓к╔Й╔ю╔╓╔Л╔╞╔х╓╧╓К╓к╓о? FTP ╓й╓и╓н╔╣║╪╔с╔╧╓н╔Й╔╞╔╗╔╧╔х╓о, socket ╔я╔ц╔╠║╪╔╦╓РмЬмя╓╥╓ф╔Й╔ю╔╓╔Л╔╞╔х╓г╓╜╓ч╓╧. socket ╔я╔ц╔╠║╪╔╦╓о ports ╓н sysutils ╔╚╔ф╔╢╔Й╓к╢ч╓ч╓Л╓ф╓╓╓ч╓╧. (/etc/inet.conf╓к╫Я╓╚╓Л╓ф╓╓╓К) ╔Ё╔ч╔С╔и╧т╓Р, ╪║╓н╓Х╓╕╓к socket ╓Р╦ф╓ж╓Х╓╕╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.foo.com ftp ╓Ё╓Ё╓г ftp.foo.com ╓о╔Й╔ю╔╓╔Л╔╞╔хюХ╓н╔ш╔╧╔хл╬, ╧т╓н╨г╦Е╓н ftp ╓о╔щ║╪╔хл╬╓г╓╧. ╔п╔С╔ииЩ╓н╢имЩ╓Р╧т╓й╓╗╓К╔д║╪╔К╓о╓и╓Ё╓г╪Й╓кфЧ╓Л╓И╓Л╓ч╓╧╓╚? FreeBSD мя╓н╔п╔С╔ииЩ╢имЩ╔д║╪╔К╓к╓о, л╣на╓г╪Й╓кфЧ╓Л╓И╓Л╓К ALTQ ╓х, Emerging Technologies ╓╚╓ИфЧ╪Й╓г╓╜╓К Bandwidth Manager ╓х╓╓╓╕╩тхн╓н╓Б╓н╓н 2 ╪ОнЮ╓╛╓╒╓Й╓ч╓╧. ╓й╓╪ /dev/bpf0: device not configured ╓╛╫п╓К╓н╓г╓╥╓Г╓╕╓╚? ╔п║╪╔╞╔Л║╪╔я╔╠╔ц╔х╔у╔ё╔К╔©(bpf) ╔и╔И╔╓╔п╓о, ╓╫╓Л╓РмЬмя╓╧╓К╔в╔М╔╟╔И╔Ю╓Р╪б╧т╓╧╓Ка╟╓км╜╦З╓к╓╥╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓к, ╪║╓н╓Х╓╕╓кди╡ц╓╥╓ф╔╚║╪╔м╔К╓н╨ф╧╫цш╓Р╓╥╓ф╓╞╓ю╓╣╓╓. pseudo-device bpfilter # Berkeley Packet Filter ╓╫╓╥╓ф╨ф╣╞ф╟╓╥╓ф╓╚╓И, ╪║╓к╔г╔п╔╓╔╧╔н║╪╔и╓Р╨Ню╝╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓о, ╪║╓н╓Х╓╕╓кфЧно╓╥, /dev ╓Рйя╧╧╓╧╓К╓Ё╓х╓г╧т╓й╓╓╓ч╓╧. &prompt.root; sh MAKEDEV bpf0 ╔г╔п╔╓╔╧╔н║╪╔и╓н╨Ню╝╓н╬э╨ы╓о, FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║ж╔г╔п╔╓╔╧╔н║╪╔и║в╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. Linux ╓н smbmount ╓н╓Х╓╕╓к, ╔м╔ц╔х╔О║╪╔╞╬Е╓н Windows ╔ч╔╥╔С╓н╔г╔ё╔╧╔╞╓Р╔ч╔╕╔С╔х╓╧╓К╓к╓о╓и╓╕╓╥╓©╓Ини╓╓╓н╓г╓╥╓Г╓╕? Ports Collection ╓к╢ч╓ч╓Л╓К sharity light ╔я╔ц╔╠║╪╔╦╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓, icmp-response bandwidth limit 300/200 pps ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛╔М╔╟╔у╔║╔╓╔К╓к╦╫╓Л╓К╓н╓г╓╧╓╛, ╓и╓╕╓╓╓╕╓Ё╓х╓г╓╥╓Г╓╕? ╓Ё╓Л╓о, ╔╚║╪╔м╔К╪╚©х╓╚╓И║жICMP ╓Д TCP ╓н╔Й╔╩╔ц╔х (RST) ╠ЧеЗ╓Р, бееЖ╓й©Т╓Х╓Й╓Бб©╓╞аВ╓ц╓ф╓╓╓К║в╓х╓╓╓╕╓Ё╓х╓Р, ╓╒╓й╓©╓кеа╓╗╓К╔А╔ц╔╩║╪╔╦╓г╓╧. ICMP ╠ЧеЗ╓они╓╞, ╩х╓О╓Л╓ф╓╓╓й╓╓ UDP ╔щ║╪╔х╓кюэбЁ╓╥╓Х╓╕╓х╓╥╓©╥К╡л╓х╓╥╓фю╦ю╝╓╣╓Л╓ч╓╧. ╓ч╓©, TCP ╔Й╔╩╔ц╔х╓о╔╙║╪╔в╔С╓╣╓Л╓ф╓╓╓й╓╓ TCP ╔щ║╪╔х╓кюэбЁ╓╥╓Х╓╕╓х╓╥╓©╥К╡л╓х╓╥╓фю╦ю╝╓╣╓Л╓ч╓╧. ╓╫╓нб╬, ╓Ё╓Л╓И╓н╔А╔ц╔╩║╪╔╦╓╛и╫╪╗╓╣╓Л╓К╦╤╟Ь╓х╓й╓К╬У╤╥╓х╓╥╓ф, ╟й╡╪╓н╓Х╓╕╓й╓Б╓н╓╛╓╒╓Й╓ч╓╧. (фцдЙ╓н╔╩╔╜╔Е╔Й╔ф╔ё╬Е╓н╪Еею╓Р╟╜мя╓╥╓Х╓╕╓х╓╧╓К╧╤╥Б╓г╓о╓й╓╞) кдбГ╓й©Т╓н╔я╔╠╔ц╔х╓Р╩х╓ц╓©╤╞╟З╓й╔╣║╪╔с╔╧к╦Ё╡ (DoS) ╧╤╥Б. (╟ЛиТ╓н╔╕╔╖╔К╔н╔╕╔С╔щ║╪╔х╓Раю╓ц╓©╓Б╓н╓г╓о╓й╓╞) хС╬О╓к╧╜╓╓хо╟о╓н╔щ║╪╔х╓кюэбЁ╓Р╩Н╓ъ╓К╔щ║╪╔х╔╧╔╜╔Ц╔С. ╔А╔ц╔╩║╪╔╦цФ╓н╨г╫И╓н©Т╩З╓о, ╬Е╦б╓РюъдЙ╓╥╓й╓╚╓ц╓©╬Л╧Г╓к╔╚║╪╔м╔К╓╛аВ╓ц╓ф╓╓╓©╓г╓╒╓М╓╕╔я╔╠╔ц╔х╓н©Т╓Р╪╗╓╥, фСхжлэ╓н©Т╩З╓о, ╔я╔╠╔ц╔х©Т╓н╬Е╦бцм╓Р╪╗╓╥╓ч╓╧. ╓Ё╓н╬Е╦бцм╓о net.inet.icmp.icmplim ╓х╓╓╓╕ sysctl йя©Т╓Р╩х╓╕╓Ё╓х╓г, ╟й╡╪╓н╓Х╓╕╓кйя╧╧╡дг╫╓г╓╧. ╓Ё╓Ё╓г╓о╬Е╦б╓Р 1 иц╓╒╓©╓Й╓н╔я╔╠╔ц╔х©Т╓г 300 ╓к╓╥╓ф╓╓╓ч╓╧. &prompt.root; sysctl -w net.inet.icmp.icmplim=300 ╔╚║╪╔м╔К╓н╠ЧеЗю╘╦б╓Рл╣╦З╓к╓╩╓╨, ╔М╔╟╔у╔║╔╓╔КцФ╓н╔А╔ц╔╩║╪╔╦╓ю╓╠╓Рмчю╘╓╥╓©╓╓╬Л╧Г, net.inet.icmp.icmplim_output sysctl йя©Т╓Р╪║╓н╓Х╓╕╓к╓╧╓К╓Ё╓х╓г╫пно╓Р╩ъ╓А╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.root; sysctl -w net.inet.icmp.icmplim_output=0 ╨г╦Е╓к, ╓Б╓╥╠ЧеЗю╘╦б╓Рл╣╦З╓к╓╥╓©╓╓╬Л╧Г╓о, net.inet.icmp.icmplim sysctl йя©Т╓к (╬Е╓ннЦ╓н╓Х╓╕╓к╓╥╓ф) 0 ╓РюъдЙ╓╧╓К╓Ё╓х╓г╪б╦╫╓г╓╜╓ч╓╧. ╓©╓ю╓╥╠ЧеЗю╘╦б╓Рл╣╦З╡╫╓╧╓К╓н╓о, ╬Е╣╜╓нмЩмЁ╓╚╓И╓╙╓╧╓╧╓А╓╥╓ч╓╩╓С.
PPP ppp ╓╛ф╟╓╜╓ч╓╩╓С. ╓и╓Ё╓Р╢ж╟Ц╓╗╓ф╓╓╓К╓н╓г╓╥╓Г╓╕? ╓ч╓╨ ppp ╓н╔ч╔к╔Е╔╒╔К╓х, FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║жPPP║в╓Рфи╓С╓г╓ъ╓ч╓╥╓Г╓╕. ╪║╓к, set log Phase Chat Connect Carrier lcp ipcp ccp command ╓х╓╓╓╕л©нА╓Р ppp ╓н╔Ё╔ч╔С╔и╔в╔М╔С╔в╔х╓кбп╓╥╓фбг╓а╧Ч╓Ю╓╚, юъдЙ╔у╔║╔╓╔К /etc/ppp/ppp.conf ╓к╡ц╓╗╓ф(default ╔╩╔╞╔╥╔Г╔С╓нюХф╛╓к╡ц╓╗╓К╓н╓╛╟Лхжни╓╓╓г╓╥╓Г╓╕)╔М╔╟╓Рм╜╦З╓к╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓╫╓н╨щ, /etc/syslog.conf ╓к !ppp *.* /var/log/ppp.log ╓х╫Я╓╚╓Л╓©╧т╓╛╢ч╓ч╓Л╓ф╓╓╓К╓╚, ╓ч╓©, /var/log/ppp.log ╓╛б╦╨ъ╓╥╓ф╓╓╓К╓╚╓и╓╕╓╚Ён╓╚╓А╓ф╓╙╓╓╓ф╓╞╓ю╓╣╓╓. ╓╣╓ф, ╓Ё╓Л╓г╡©╓╛╣╞╓╜╓ф╓╓╓К╓н╓╚фм╓╜╩ъ╓А╓К╓©╓А╓к, ╔М╔╟╔у╔║╔╓╔К╓╚╓И╓©╓╞╓╣╓С╓н╬ПйС╓Рфю╓И╓Л╓К╓Х╓╕╓к╓й╓Й╓ч╓╥╓©. ╔М╔╟╓клУ╓нй╛╓И╓й╓╓иТй╛╓╛╓╒╓ц╓ф╓Б©╢гш╓╢л╣мя. ╓╒╓й╓©╓╛╫У╓╠╓Р╣А╓А╓©ц╞╓╚╓к╓х╓ц╓ф╓о, ╓╫╓ниТй╛╓╛╟улё╓Р╓й╓╧╬Л╧Г╓╛╓╒╓К╓н╓г╓╧. лУцМ ╔М╔╟╓н╪Хфю╓к syslog ╓Р╩хмя╓╧╓К╓Х╓╕╓к╓й╓ц╓©╓н╓о 2.2.5 ╟й╧ъ╓╚╓И╓г╓╧. ╩хмяцФ╓н ppp ╓н╔п║╪╔╦╔Г╔С╓г set log л©нА╓Р╡Р╪А╓╥╓й╓╓╬Л╧Г╓о, ╨г©╥хг╓Р╔ю╔╕╔С╔М║╪╔и╓╧╓ы╓╜╓г╓╧. FreeBSD ╓н 2.1.5 ╟й╧ъ╓г╔с╔К╔и╓г╓╜╓ч╓╧. ppp ╓Р╪б╧т╓╧╓К╓х╔о╔С╔╟╓╥╓ч╓╧ ╔ш╔╧╔хл╬╓н╡Р╥Х╓╛╓╕╓ч╓╞╓╓╓ц╓ф╓╓╓й╓╓╓н╓г╓╥╓Г╓╕. ╓ч╓╨, ╔Й╔╬╔К╔п(resolver)╓╛ /etc/hosts╓Р╩╡╬х╓╧╓К╓Х╓╕╓к, /etc/host.conf ╓н╨г╫И╓н╧т╓к host ╓х╫Я╓╜╧Ч╓С╓г╓╞╓ю╓╣╓╓. ╓д╓╝╓к, /etc/hosts ╓к╩хмя╓╥╓ф╓╓╓К╔ч╔╥╔С╓н╔╗╔С╔х╔Й╓Р╫Я╓╜╡ц╓╗╓ч╓╧. ╔М║╪╔╚╔К╓г╔м╔ц╔х╔О║╪╔╞╓Р╩хмя╓╥╓ф╓╓╓й╓╓╬Л╧Г╓о, localhost ╓н╧т╓Р╟й╡╪╓н╓Х╓╕╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. 127.0.0.1 foo.bar.com foo localhost ╩хмя╓╥╓ф╓╓╓К╔ш╔╧╔х╓н╔╗╔С╔х╔Й╓Рди╡ц╓╥╓ф╓Б╓╚╓ч╓╓╓ч╓╩╓С. ╬э╨ы╓о╢ьо╒╓╧╓К╔ч╔С╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ppp ╓╛ ╔Б║╪╔и╓г╔ю╔╓╔╒╔К╓╥╓ф╓╞╓Л╓й╓╓ ╓ч╓╨╨г╫И╓к, ╔г╔у╔╘╔К╔х╔К║╪╔х╓╛Ённ╘╓╥╓ф╓╓╓К╓╚╓и╓╕╓╚╔а╔╖╔ц╔╞╓╥╓ф╓╞╓ю╓╣╓╓. netstat -rn ╓Р╪б╧т╓╧╓К╓х, ╟й╡╪╓н╓Х╓╕╓й╬ПйС╓╛и╫╪╗╓╣╓Л╓К╓о╓╨╓г╓╧. 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 ╓Ё╓Л╓о╓╒╓й╓©╓╛╔о╔С╔и╔ж╔ц╔╞╓Д╔ч╔к╔Е╔╒╔К, ppp.conf.sample ╓нцФ╓г╫п╓ф╓╞╓К╔╒╔и╔Л╔╧╓Р╩хмя╓╥╓ф╓╓╓К╓х╡╬дЙ╓╥╓©╬Л╧Г╓ннЦ╓г╓╧. ╔г╔у╔╘╔К╔х╔К║╪╔х╓╛Ённ╘╓╥╓ф╓╓╓й╓╓╬Л╧Г, ppp.conf ╓нцФ╓н HISADDR ╓╛мЩ╡Р╓г╓╜╓й╓╓, ╦е╓╓╔п║╪╔╦╔Г╔С╓н ppp ╓╛аЖ╓ц╓ф╓╓╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. FreeBSD 2.2.5 ╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓киуб╟╓╥╓ф╓╓╓© ppp ╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г, add 0 0 HISADDR ╓х╫Я╓╚╓Л╓©╧т╓Р╟й╡╪╓н╓Х╓╕╓к╫╓ю╣╓╥╓ф╓╞╓ю╓╣╓╓. add 0 0 10.0.0.2 netstat -rn ╓г╔г╔у╔╘╔К╔х╔К║╪╔х╓н╬ПйС╓╛и╫╪╗╓╣╓Л╓й╓╓╬Л╧Г, ╓Б╓╕╟Л╓д, /etc/rc.conf(2.2.2 ╓Х╓Йа╟╓н╔Й╔Й║╪╔╧╓г╓о /etc/sysconfig ╓х╦ф╓п╓Л╓ф╓╓╓ч╓╥╓©)╓нцФ╓г╔г╔у╔╘╔К╔х╓н╔К║╪╔©╓Р╦М╓ц╓фюъдЙ╓╥, ppp.conf ╓╚╓И delete ALL ╓н╧т╓Р╓╕╓ц╓╚╓Й╬ц╓╥╓ф╓╥╓ч╓ц╓©╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╬Л╧Г╓о, FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║ж╔╥╔╧╔ф╔Ю╓н╨г╫╙юъдЙ║в╓н╧Ю╓Рфи╓ъд╬╓╥╓ф╓╞╓ю╓╣╓╓. No route to host ╓х╓о╓и╓╕╓╓╓╕╟улё╓г╓╧╓╚? ╓Ё╓н╔╗╔И║╪╓одл╬О, /etc/ppp/ppp.linkup ╓к╟й╡╪╓н╓Х╓╕╓й╔╩╔╞╔╥╔Г╔С╓╛л╣╓╓╬Л╧Г╓к╣╞╓Ё╓Й╓ч╓╧. MYADDR: delete ALL add 0 0 HISADDR ╓Ё╓Л╓оф╟е╙ IP ╔╒╔и╔Л╔╧╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г, ╓ч╓©╓о╔╡║╪╔х╔╕╔╖╔╓╓н╔╒╔и╔Л╔╧╓Рцн╓И╓й╓╓╬Л╧Г╓к╓н╓ъи╛мв╓йюъдЙ╓г╓╧. ╔╓╔С╔©╔И╔╞╔ф╔ё╔ж╔Б║╪╔и╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г, ╔я╔╠╔ц╔х╔Б║╪╔и╓кфЧ╓ц╓©╦Е╓г(╔в╔М╔С╔в╔х╓╛ PPP ╓хбГй╦╩З╓кйя╓О╓ц╓©╓И╔я╔╠╔ц╔х╔Б║╪╔и╓кфЧ╓ц╓©╓╥╓К╓╥╓г╓╧), ╟й╡╪╓нл©нА╓РфЧно╓╥╓ф╓╞╓ю╓╣╓╓. delete ALL add 0 0 HISADDR ╬э╓╥╓╓╬ПйС╓к╓д╓╓╓ф╓о, FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║жPPP ╓хф╟е╙ IP юъдЙ║в╓н╧Ю╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. 3 й╛╓ш╓и╥п╓д╓хюэбЁ╓╛юз╓Л╓ф╓╥╓ч╓╕ ppp ╓н╔©╔╓╔Ю╔╒╔╕╔х╓о ╔г╔у╔╘╔К╔х╓г╓о 3 й╛╓г╓╧. ╓Ё╓Л╓о set timeout NNN ╓х╓╓╓╕л©нА╓к╓Х╓ц╓фд╢ю╟╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. NNN ╓к╓о, юэбЁ╓╛юз╓Л╓К╓ч╓г╓н╔╒╔╓╔и╔К╩Ч╢ж╓╛иц©Т╓гфЧ╓Й╓ч╓╧. NNN ╓╛ 0 ╓н╬Л╧Г, ╔©╔╓╔Ю╔╒╔╕╔х╓к╓Х╓Кюзцг╓о╣╞╓Ё╓Й╓ч╓╩╓С. ╓Ё╓н╔Ё╔ч╔С╔и╓о ppp.conf ╓кфЧ╓Л╓К╓Ё╓х╓Б, ╔╓╔С╔©╔И╔╞╔ф╔ё╔ж╔Б║╪╔и╓г╔в╔М╔С╔в╔х╓╚╓ИфЧно╓╧╓К╓Ё╓х╓Б ╓г╓╜╓ч╓╧. ╔╫╔╠╔ц╔х╓Рмя╓╓╓К telnet ╓╚ pppctl ╓Р╩хмя╓╥, ppp ╔╣║╪╔п╓кюэбЁ╓╧╓К╓Ё╓х╓к╓Х╓ц╓ф, ╡СюЧ╓╛╔╒╔╞╔ф╔ё╔ж╓й╢ж╓к╦бдЙ╓╥╓ф╔©╔╓╔Ю╔╒╔╕╔х╓н╩Ч╢ж╓Рд╢ю╟╓╧╓К╓Ё╓х╓Б╡дг╫╓г╓╧. лУцМ pppctl ╓о 2.2.5R ╓╚╓И╓г╓╧. ╬э╓╥╓╓╬ПйС╓о ppp ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. иИ╡ы╓╛╧Б╓╓╓хюэбЁ╓╛юз╓Л╓ф╓╥╓ч╓╕ Link Quality Reporting(LQR)╓нюъдЙ╓Р╧т╓ц╓ф╓╓╓К╬Л╧Г, ╔ч╔╥╔С╓хюэбЁюХ╓н╢ж╓гхС╬О╓к╓©╓╞╓╣╓С╓н LQR ╔я╔╠╔ц╔х╓╛╪╨╓О╓Л╓ф╓╓╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╥К╡л╓х╓╥╓ф ppp ╓о╡СюЧ╓н╤Я╧Г╓╓╓╛╟╜╓╓╓х╧м╓╗, ╡СюЧ╓Рюзцг╓╧╓К╓н╓г╓╧. 2.2.5 ╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓н FreeBSD ╓г╓о LQR ╓о╔г╔у╔╘╔К╔х╓гм╜╦З╓к╓й╓ц╓ф╓╓╓ч╓╧. ╦╫╨ъ╓г╓о╔г╔у╔╘╔К╔х╓н╬Убж╓гл╣╦З╓г╓╧. LQR ╓о╟й╡╪╓нл©нА╓гл╣╦З╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. disable lqr юэбЁ╓╛╔И╔С╔ю╔Ю╓кюз╓Л╓ф╓╥╓ч╓╕ ╔н╔╓╔╨╓нб©╓╓╡СюЧ, ╓╒╓К╓╓╓обт╓а╣║г╫иу╓╜╓н╡СюЧ╓г╓о, ╩Ч║╧╔Б╔г╔Ю╓╛(╦М╓ц╓ф)╔╜╔Ц╔Й╔╒╓Р╪╨╓ц╓©╓х╩в╓╓╧Ч╓ъ, ╡СюЧ╓╛юзцг╓╣╓Л╓ф╓╥╓ч╓╕╓Ё╓х╓╛╓╒╓Й╓ч╓╧. бГб©©Т╓н╔Б╔г╔Ю╓г╓о, ╟Л╩Че╙╓й╔╜╔Ц╔Й╔╒╓нас╪╨╓Р╓и╓Л╓╞╓И╓╓╓н╩Ч╢ж╓г╦║╫п╓╧╓К╓╚╓Р, юъдЙ╓г╥Х╓А╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. нЦ╓╗╓п USR Sportster ╓г╓о, S10 ╔Л╔╦╔╧╔© ╓нцм╓Р 10 гэ╓╥╓©иц©Т╓╛╓╫╓нцм╓к╓й╓Й╓ч╓╧. ╓Ё╓н╬Л╧Г, ╔Б╔г╔Ю╓Р╓Б╓ц╓х╓н╓С╓с╓Й╡╟╓╣╓С╓к╓╧╓К╓к╓о, dial ╧т╓к╪║╓н╓Х╓╕╓йй╦╩ЗнС╓Р╡ц╓╗╓К╓хни╓╓╓г╓╥╓Г╓╕. set dial "...... ATS10=10 OK ......" ╬э╓╥╓╞╓о╓╙╩х╓╓╓н╔Б╔г╔Ю╓н╔ч╔к╔Е╔╒╔К╓Р╓╢мВ╓╞╓ю╓╣╓╓. юэбЁ╓╛ит╣╛б╖╓к╔о╔С╔╟╔╒╔ц╔в╓╥╓ф╓╥╓ч╓╕ ╓©╓╞╓╣╓С╓н©м╓╛, ╦╤╟Ьитлю╓н╔о╔С╔╟╔╒╔ц╔в╓Р╥п╦Ё╓╥╓ф╓╓╓ч╓╧. ╦║╬з╓н╓©╓А╓ки╛мв╓й╓н╓о, ╓ч╓╨╓и╓а╓Иб╕╓н╔Й╔С╔╞╓г╓╫╓Л╓╛╣╞╓Ё╓ц╓ф╓╓╓К╓╚, ╓х╓╓╓╕╓Ё╓х╓г╓╧. Ё╟иТюэбЁ╥©╔Б╔г╔Ю╓РмЬмя╓╥╓ф╓╓╓К╓й╓И, ц╠╓к ping ╓Р╩х╓╕╓Ё╓х╓г, ╔г║╪╔©╓РаВ©╝╓╧╓К╓х╓╜╓к TD ╔И╔С╔в╓╛еюеТ╓╧╓К╓╚╓и╓╕╓╚╓РЁнг╖╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Б╓╥, TD ╔И╔С╔в╓╛еюеТ╓╥╓ф, RD ╔И╔С╔в╓╛еюеТ╓╥╓й╓╠╓Л╓п, лДбЙ╓о╡СюЧ╓н╦Ч╓Ё╓╕б╕╓к╓╒╓Й╓ч╓╧. TD ╓╛еюеТ╓╥╓й╓╠╓Л╓п, лДбЙ╓о╡СюЧ╓н╓Ё╓а╓Иб╕╓г╓╧. фБб╒╥©╔Б╔г╔Ю╓н╬Л╧Г, ppp.conf ╔у╔║╔╓╔К╓к set server ╔Ё╔ч╔С╔и╓РфЧ╓Л╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. ╡СюЧ╓╛юзцг╓╣╓Л╓©╓х╓╜, pppctl ╓Р╩х╓ц╓ф ppp ╓кюэбЁ╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓н╓х╓╜, ╔м╔ц╔х╔О║╪╔╞юэбЁ╓╛╣ч╓киЭ╣Л(©гцг╔╫╔╠╔ц╔х╓ь╓н╔╒╔╞╔╩╔╧╓г, ppp ╓╛иЭЁХ╓╥╓ч╓╧)╓╧╓К╓╚, ╓Б╓╥╓╞╓оюэбЁ╪╚бн╓╛а╢╓╞╓г╓╜╓й╓╓(╓©╓ю╓╥, ppp ╣╞ф╟╩Ч╓к set socket ╔Ё╔ч╔С╔и╓╛╓а╓Ц╓С╓х╪б╧т╓╣╓Л╓ф╓╓╓К╓х╓╥╓ч╓╧)╓х╓╥╓©╓И, лДбЙ╓о╡СюЧ╓н╓Ё╓а╓Иб╕╓г╓╧. ╓Б╓╥, юэбЁ╡дг╫╓г, ╓╚╓д╬У╤╥╓╛йя╡╫╓╥╓й╓╠╓Л╓п, set log local async ╓Р╩х╓ц╓ф╔М║╪╔╚╔КхСф╠╢Э╔М╔╟(async logging)╓Рм╜╦З╓к╓╥, ping ╓Рб╬╓н╔╕╔ё╔С╔и╔╕╓╚╔©║╪╔ъ╔й╔К╓╚╓И╩х╓ц╓ф╓╞╓ю╓╣╓╓. хСф╠╢Э╔М╔╟╓к╓о, ╓Ё╓а╓Иб╕╓н╔Й╔С╔╞╓наВ╪У©╝╔г║╪╔©╓╛╣╜о©╓╣╓Л╓ч╓╧. ╓Б╓╥, ╔г║╪╔©╓╛аВ©╝╓╣╓Л╓©╓к╓Б╓╚╓╚╓О╓И╓╨йж╓ц╓фмХ╓ф╓╓╓й╓╠╓Л╓п, лДбЙ╓о╡СюЧ╓н╦Ч╓Ё╓╕б╕╓к╓╒╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. лДбЙ╓╛╡СюЧ╓н╓и╓а╓Иб╕╓╚╓к╓╒╓К╓Ё╓х╓╛й╛╓╚╓ц╓©╓И, ╓д╓╝╓нфС╓д╓н╡дг╫ю╜╓╛╧м╓╗╓И╓Л╓К╓г╓╥╓Г╓╕. ╡СюЧ╓н╦Ч╓Ё╓╕б╕╓г╓нх©╠Ч╓╛╓й╓╓ ╓Ё╓Л╓кбп╫Х╓г╓╜╓К╓Ё╓х╓о╓ш╓х╓С╓и╓╒╓Й╓ч╓╩╓С. бГиТй╛╓н ISP ╓о, Microsoft ╪рю╫ OS ╟йЁ╟╓нмЬмя╪т╓кбп╓╥╓ф╓н╔╣╔щ║╪╔х╓Р╣Яхщ╓╧╓К╓г╓╥╓Г╓╕. ppp.conf ╔у╔║╔╓╔К╓нцФ╓к enable lqr ╓Р╣╜╫р╓╧╓К╓Ё╓х╓г ppp ╓╛╡СюЧ╓н╦Ч╓Ё╓╕б╕╓гх╞ю╦╓╧╓Кюзцг╓Р╦║╫п╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧╓╛, ╓Ё╓н╦║╫п╓охФЁсе╙цы╓╓╓©╓А, ╓╒╓ч╓ЙлР╓кн╘╓а╓ч╓╩╓С. ╓ч╓©, ╓╒╓й╓©╓о user-ppp ╓РмЬмя╓╥╓ф╓╓╓К╓Ё╓х╓Р ISP ╓кцн╓И╓Л╓©╓╞╓й╓╓╓х╩в╓╕╓╚╓Бцн╓Л╓ч╓╩╓С╓м. ╓ч╓╨╨г╫И╓к, ╓Ё╓а╓Иб╕╓н╟╣╫л╣║г╫╓Ра╢╓фл╣╦З╓к╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓╫╓Л╓к╓о, юъдЙ╔у╔║╔╓╔К╓Р╓д╓╝╓н╓Х╓╕╓к╓╥╓ч╓╧. disable pred1 deflate deflate24 protocomp acfcomp shortseq vj deny pred1 deflate deflate24 protocomp acfcomp shortseq vj ╓╫╓╥╓ф╨фюэбЁ╓╥, йя╧╧а╟╓хф╠╓╦╓Х╓╕╓кдл©╝╓г╓╜╓К╓Ё╓х╓РЁнг╖╓╥╓ч╓╧. ╓Б╓╥╓Ё╓Л╓к╓Х╓ц╓ф╬У╤╥╓╛╡Ча╠╓╣╓Л╓К╓╚, ╢╟а╢╓к╡Р╥Х╓╥╓©╓И, (╬Е╓нюъдЙ╓н╓╕╓а)╓и╓нюъдЙ╓г╬У╤╥╓╛йя╡╫╓╥╓©╓н╓╚╓Р, ©╖║╧╓йах╧Г╓╩╓г╩Н╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓о, ISP ╓клД╓╓╧Г╓О╓╩╓Р╧т╓й╓╕╓х╓╜╓нм╜╦З╓й╬ПйС╓х╓й╓Й╓ч╓╧(╓©╓ю╓╥, ╓╒╓й╓©╓╛ Microsoft ╪рю╫ий╟йЁ╟╓н╓Б╓н╓РмЬмя╓╥╓ф╓╓╓К╓Ё╓х╓Блю╓И╓╚╓к╓╥╓ф╓╥╓ч╓╓╓ч╓╧╓╛). ISP ╓клД╓╓╧Г╓О╓╩╓Р╧т╓й╓╕а╟╓к, ╓Ё╓а╓Иб╕╓нхСф╠╢Э╔М╔╟╓Рм╜╦З╓к╓╥╓ф, юэбЁ╓╛╔о╔С╔╟╔╒╔ц╔в╓╧╓К╓ч╓гбт╓ц╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╨Н╤х╓о, хС╬О╓кб©╓╞╓н╔г╔ё╔╧╔╞╤У╢ж╓Р╬цхЯ╓╧╓К╓╚╓Бцн╓Л╓ч╓╩╓С. ╤╫лё╓нбп╬щ╓х╓й╓ц╓ф╓╓╓К╓н╓о, дл©╝╔щ║╪╔х╓╚╓И╨г╦Е╓кфи╓ъ╧Ч╓ч╓Л╓©╔г║╪╔©╓г╓╧. ╓╫╓Л╓одл╬О ASCII ╔г║╪╔©╓г, лДбЙею╓н╬э╨ы(Memory fault, core dump╓й╓и)╓╛ ╣╜╨э╓╣╓Л╓ф╓╓╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╡СюЧ╓н╦Ч╓Ё╓╕б╕╓гдл©╝╔М╔╟╓Р╢ф╩К╓╧╓К╓Ё╓х╓о╡дг╫╓й╓о╓╨╓г╓╧╓н╓г, юзцг╓╛х╞ю╦╓╥╓©╩Ч, ISP ╓нбп╠Ч╓╛╧╔╟уе╙╓й╓И╓п ╓и╓╕╓╥╓ф ISP б╕╓глДбЙ╓╛х╞ю╦╓╥╓©╓н╓╚╓Ё╓а╓И╓кеа╓╗╓ф╓╞╓Л╓К╓╚╓Бцн╓Л╓ч╓╩╓С. brian@Awfulhak.org ╓ч╓г╬э╨ы╓РаВ╓ц╓фд╨╓╞╓╚, ISP ╓кд╬юэ╩Д╓ко╒мМ╓╧╓К╓Х╓╕╓кеа╓╗╓ф╡╪╓╣╓ц╓ф╓Б╧╫╓╓╓ч╓╩╓С. ppp ╓╛╔о╔С╔╟╔╒╔ц╔в╓╧╓К ╔ы╔╧╔х╓ййЩк║╓о, CFLAGS+=-g ╓х STRIP= ╓Р ppp ╓н Makefile ╓кди╡ц╓╥╓ф, ppp ╓Р╨ф╧╫цш╓╥, ╓╫╓╥╓ф make clean && make && make install ╓Р╧т╓й╓╕╓Ё╓х╓г╓╧. ppp ╓╛╔о╔С╔╟╔╒╔ц╔в╓╥╓©╩Ч, ps ajxww | fgrep ppp ╓Р╩х╓ц╓ф ppp ╓н╔в╔М╔╩╔╧ ID ╓Рд╢╓ы, gdb ppp PID ╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. gdb ╓н╔в╔М╔С╔в╔х╓╚╓И, bt ╓Р╩х╓ц╓ф╔╧╔©╔ц╔╞╓Р╔х╔Л║╪╔╧╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔╧╔©╔ц╔╞╔х╔Л║╪╔╧╓н╥К╡л╓о, brian@Awfulhak.org ╓ч╓гаВ╓ц╓ф╓╞╓ю╓╣╓╓. Login OK! ╓н╔А╔ц╔╩║╪╔╦╓╛╫п╓©╦Е, ╡©╓Б╣╞╓Ё╓И╓й╓╓ 2.2.5 ╓Х╓Йа╟╓н╔Й╔Й║╪╔╧╓н FreeBSD ╓г╓о, ppp ╓о╔Й╔С╔╞╓╛Ённ╘╓╥╓©╦Е, юэбЁюХ╓╛ Line Control Protocol(LCP) ╓Рх╞©╝╓╧╓К╓н╓Рбт╓а╓ч╓╧. ╓╥╓╚╓╥, б©╓╞╓н ISP ╓г╓о╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓Р╪╚й╛╓╚╓И╓о╣╞╓Ё╓╣╓╨, ╔╞╔И╔╓╔╒╔С╔х╓╛╣╞╓Ё╓╧╓н╓Рбт╓ц╓ф╓╓╓ч╓╧. ppp ╓к╤╞ю╘е╙╓к LCP ╓Рх╞©╝╓╣╓╩╓К╓к╓о, ╪║╓нл©нА╓Р╩х╓╓╓ч╓╧. set openmode active н╬йЩ╓нб╕╓╛╔м╔╢╔╦╔╖║╪╔╥╔Г╔С╓Р╣╞╓Ё╓╥╓ф╓Б, бГдЯ╓н╬Л╧Г╓о╡©╓нлДбЙ╓Б╓╒╓Й╓ч╓╩╓С. ╓г╓╧╓╚╓И, ╦╫╨ъ╓г╓о openmode ╓о╔г╔у╔╘╔К╔х╓г active ╓к╓й╓ц╓ф╓╓╓ч╓╧. ╪║╓н╔╩╔╞╔╥╔Г╔С╓г╓Ё╓Л╓╛лДбЙ╓к╓й╓К╬Л╧Г╓РюБлю╓╥╓ч╓╧. ╓г╓Б╓ч╓ю magic is the same ╓х╓╓╓╕╔╗╔И║╪╓╛╫п╓К ╩Чюч, юэбЁд╬╦Е╓н╔М╔╟╓к magic is the same ╓х╓╓╓╕╔А╔ц╔╩║╪╔╦╓╛╓╒╓И╓О╓Л╓К╓Ё╓х╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╔А╔ц╔╩║╪╔╦╓╛╓╒╓И╓О╓Л╓ф╓Б╡©╓Б╣╞╓╜╓й╓╓╬Л╧Г╓Б╓╒╓Й╓ч╓╧╓╥, ╓и╓а╓И╓╚╓нб╕╓╛юэбЁ╓Рюз╓ц╓ф╓╥╓ч╓╕╬Л╧Г╓Б╓╒╓Й╓ч╓╧. ppp ╓н╪баУ╓нб©╓╞╓о╓Ё╓нлДбЙ╓кбп╠Ч╓г╓╜╓ф╓╙╓И╓╨, ╓╫╓н╬Л╧Г╓к╓о╓а╓Ц╓С╓х link ╓╛╬Е╓╛╓ц╓ф╓╓╓К╬Убж╓г╓╒╓ц╓ф╓Б, ppp ╓╛╨г╫╙е╙╓к╓╒╓╜╓И╓А╓ф╓╥╓ч╓╓, юэбЁ╓Рюз╓К╓ч╓гюъдЙ╓н╔Й╔╞╔╗╔╧╔х╓╛╥╚╓Ййж╓╥аВ╓И╓Л, юъдЙ╓╛╧т╓О╓Л╓©╓х╓╓╓╕длцн╓╛╔М╔╟╔у╔║╔╓╔К╓к╩д╓К╓х╩в╓╓╓ч╓╧. ╓Ё╓Л╓одл╬О, ╔г╔ё╔╧╔╞╔╒╔╞╔╩╔╧╓нцы╓╓╔╣║╪╔п╔ч╔╥╔С╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓г getty ╓╛ю╦╓╜╓ф╓╓╓ф, ppp ╓╛╔М╔╟╔╓╔С╔╧╔╞╔Й╔в╔х╓╚, ╔М╔╟╔╓╔Сд╬╦Е╓к╣╞ф╟╓╣╓Л╓©╔в╔М╔╟╔И╔Ю╓╚╓И╪б╧т╓╣╓Л╓ф╓╓╓К╬Л╧Г╓к╣╞╓Ё╓Й╓ч╓╧. slirp ╓Р╩хмя╓╥╓ф╓╓╓К╬Л╧Г╓кф╠мм╓н╬и╬У╓╛╦╚╓И╓Л╓©╓х╓╓╓╕йС╧П╓Б╓╒╓Й╓ч╓╧. ╦╤╟Ь╓о getty ╓н╫╙н╩╓╣╓Л╓К╓ч╓г╓х, ppp ╓╛╪б╧т╓╣╓Л, ╔╞╔И╔╓╔╒╔С╔хб╕╓н ppp ╓╛ Line Control Protocol(LCP) ╓РаВ╓Й╩о╓А╓К╓ч╓г╓н╔©╔╓╔ъ╔С╔╟╓к╓╒╓Й╓ч╓╧. ╔╣║╪╔пб╕╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓г ECHO ╓╛м╜╦З╓й╓ч╓ч╓к╓й╓ц╓ф╓╓╓К╓н╓г, ╔╞╔И╔╓╔╒╔С╔хб╕╓н ppp ╓к╔я╔╠╔ц╔х╓╛║жх©╪м║в╓╥╓ф╓╥╓ч╓╕╓н╓г╓╧. LCP ╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓н╟ЛиТ╓х╓╥╓ф, ╔Й╔С╔╞╓нн╬╔╣╔╓╔и╓г magic number ╓РдЙ╓А╓ф, ║жх©╪м║в╓╛╣╞╓╜╓ф╓╓╓й╓╓╓╚╓и╓╕╓╚Ён╓╚╓А╓К╨Н╤х╓╛╓╒╓Й╓ч╓╧. ╣╛лС╓г╓о, юэбЁаЙ╪Й╓╛╓Ё╓а╓И╓хф╠╓╦ magic number ╓РдС╪╗╓╥╓ф╓╜╓©╓И, NAK ╓РаВ╓ц╓ф©╥╓╥╓╓ magic number ╓Ра╙бР╓╥╓й╓╠╓Л╓п╓й╓И╓й╓╓╓хдЙ╓А╓ф╓╓╓ч╓╧. ╓Ё╓н╨Н╤х╓н╢ж, ╔╣║╪╔п╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓н ECHO ╓╛╓╨╓ц╓хм╜╦З╓к╓й╓ц╓©╓ч╓ч╓й╓н╓г, ╔╞╔И╔╓╔╒╔С╔хб╕╓н ppp ╓о LCP ╔я╔╠╔ц╔х╓РаВ╓Й, ╔я╔╠╔ц╔х╓╛х©╪м╓╥╓фа╢╓╞ф╠╓╦ magic number ╓╛аВ╓И╓Л╓ф╓╞╓К╓н╓Р╦╚╓д╓╠, ╓╫╓Л╓кбп╓╥╓ф NAK ╓РаВ╓К╓н╓г╓╧. ╟ЛйЩ NAK ╪╚бн╓Б(╓Ё╓Л╓о ppp ╓╛ magic number ╓Рйя╧╧╓╥╓й╓╠╓Л╓п╓╓╓╠╓й╓╓╓Ё╓х╓Р╟улё╓╥╓ф╓╓╓ч╓╧)х©╪м╓╥╓ф╓╞╓К╓н╓г, ╥К╡л╓х╓╥╓ф magic number ╓╛©Т╓╗╓╜╓Л╓й╓╓╓ш╓ийя╧╧╓╣╓Л, ╓╫╓на╢╓ф╓╛╔╣║╪╔п╓н tty ╔п╔ц╔у╔║╓нцФ╓кюя╓ъ╫е╓й╓К╓Ё╓х╓к╓й╓К╓н╓г╓╧. ╔╣║╪╔п╓г╔╧╔©║╪╔х╓╥╓© ppp ╓о, ╓╧╓╟╓к magic number ╓г╓╒╓у╓Л╓╚╓╗╓ц╓ф╓╥╓ч╓╓, LCP ╓н╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓Р╫╫й╛╓к╧т╓ц╓©╓Б╓н╓хх╫цг╓╥╓ф, ╓╣╓ц╓╣╓хюэбЁ╓Рюз╓ц╓ф╓╥╓ч╓╓╓ч╓╧. ╟ЛйЩ, ╔╞╔И╔╓╔╒╔С╔хб╕╓ох©╪м╓╛╣╒╓ц╓ф╓Ё╓й╓╞╓й╓ц╓©╓н╓гкЧб╜╓╥╓ч╓╧╓╛, ╓╫╓Л╓Б╔╣║╪╔п╓╛юэбЁ╓Рюз╓ц╓©╓Ё╓х╓Рцн╓К╓ч╓г╓г╓╧. ╓Ё╓н╩Жбж╓о, ╟й╡╪╓н╧т╓Р ppp.conf ╓нцФ╓к╫Я╓╓╓ф, аЙ╪Й╓╛╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓РЁ╚╩о╓г╓╜╓К╓Х╓╕╓к╓╧╓К╩Ж╓к╓Х╓ц╓ф╡СхР╓г╓╜╓ч╓╧. set openmode passive ╓Ё╓Л╓г ppp ╓о╔╣║╪╔п╓╛ LCP ╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓Р╣╞╓Ё╓╧╓н╓Рбт╓д╓Х╓╕╓к╓й╓Й╓ч╓╧. ╓╥╓╚╓╥, ╪╚й╛╓╚╓И╓о╥Х╓╥╓ф╔м╔╢╔╦╔╖║╪╔╥╔Г╔С╓Р╣╞╓Ё╓╣╓й╓╓╔╣║╪╔п╓Б╓╒╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓Б╓╥╓Ё╓н╬У╤╥╓каЬ╤Ь╓╥╓©╬Л╧Г╓к╓о, ╪║╓н╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. set openmode active 3 ╓Ё╓Л╓к╓Х╓ц╓ф ppp ╓о 3 иц╢ж passive ╔Б║╪╔и╓РбЁ╓╠╓©╦Е╓г, LCP ╔Й╔╞╔╗╔╧╔х╓РаВ╓Й╩о╓А╓ч╓╧. ╓Ё╓н╢ж╓каЙ╪Й╓╛╔Й╔╞╔╗╔╧╔х╓РаВ╓Й╩о╓А╓©╬Л╧Г╓к╓о 3 иц╢жбт╓©╓╨╓к╓Ё╓н╔Й╔╞╔╗╔╧╔х╓кб╗╨б╓к╠ЧеЗ╓╥╓ч╓╧. юэбЁ╓╛юз╓Л╓К╓ч╓г LCP ╓н╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓╛бЁ╓╞╓н╓г╓╧╓╛. ╦╫╨ъ╓н ppp ╓о, ╓ч╓ю LCP ╓Д CCP, IPCP ╓нйж╩Ж╓╛, ╦╣╓н╔Й╔╞╔╗╔╧╔х╓хо╒╥х╓╥╓ф╓╞╓Л╓К╣║г╫╓╛╓╜╓а╓С╓х╪баУ╓╣╓Л╓ф╓╓╓ч╓╩╓С. ╓╫╓н╥К╡л, ╓╒╓К ppp ╓╛аЙ╪Й╓Х╓Й╓Б 6 иц╟й╬Ецы╓╓╬Л╧Г╓к╓о, LCP юъдЙ╓н╓н╔Й╔╞╔╗╔╧╔х╓Р╓╣╓И╓к 2 ╡СаВ╓Й╓ч╓╧. ╓Ё╓Л╓оцвл©е╙╓йй╙╓г╓╧. A ╓х B╓х╓╓╓╕ 2 ╓д╓н╪баУ╓Р╧м╓╗╓ф╓ъ╓ч╓╥╓Г╓╕. A ╓╛юэбЁ╓нд╬╦Е╓к LCP ╔Й╔╞╔╗╔╧╔х╓РаВ╓Й, ╟ЛйЩ B ╓нйЩ╓о╔╧╔©║╪╔х╓╧╓К╓н╓к 7 иц╓╚╓╚╓ц╓©╓х╓╥╓ч╓╧. B ╓╛╔╧╔©║╪╔х╓╧╓К╩Ч╓к╓о A ╓о LCP ╔Й╔╞╔╗╔╧╔х╓Р 3 ╡СаВ╓ц╓ф╓╥╓ч╓ц╓ф╓╓╓ч╓╧. а╟╓нюА╓г╫р╓ы╓© magic number ╓нлДбЙ╓╛╣╞╓╜╓й╓╓╓Х╓╕, ECHO ╓о off ╓к╓й╓ц╓ф╓╓╓К╓х╧м╓╗╓ф╓╓╓ч╓╧. B ╓о REQ ╓РаВ╓Й╓ч╓╧. ╓╧╓К╓х╓Ё╓Л╓о A ╓н REQ ╓н╓╕╓а, ╨г╫И╓нй╙╓кбп╓╧╓К ACK ╓х╓й╓Й╓ч╓╧. ╥К╡л╓х╓╥╓ф, A ╓о OPENED ╓н╬Убж╓кфЧ╓Й, B ╓кбп╓╥╓ф(╨г╫И╓н) ACK ╓РаВ╓Й╓ч╓╧. ╓╫╓н╓╕╓а╓к B ╓о, B ╓╛╔╧╔©║╪╔х╓╧╓Ка╟╓к A ╓╚╓ИаВ╓И╓Л╓©╓Б╓╕ 2 ╓д╓н REQ ╓кбп╓╧╓К ACK ╓РаВ╓Ййж╓╥╓ч╓╧. B ╓о A ╓╚╓И╓н╨г╫И╓н ACK ╓Р╪У╓╠╪Х╓Й OPENED ╓н╬Убж╓кфЧ╓Й╓ч╓╧. A ╓о B ╓╚╓И╓н 2 ╓длэ╓н ACK ╓Р╪У╓╠╪Х╓Й╓ч╓╧╓н╓г, REQ-SENT╓н╬Убж╓клА╓Й, ╓╣╓И╓к, RFC ╓н╓х╓╙╓Й╓к(4 ╓длэ╓н)REQ ╓РаВ╓Й╓ч╓╧. ╓╫╓╥╓ф 3 ╓длэ╓н ACK ╓Р╪У╓╠╪Х╓ц╓ф OPENED ╓н╬Убж╓кфЧ╓Й╓ч╓╧. ╟ЛйЩ, B ╓о A ╓╚╓И╓н 4 ╓длэ╓н REQ ╓Р╪У╓╠╪Х╓Й╓ч╓╧╓н╓г, ACK-SENT ╓н╬Убж╓кфЧ╓Й, 2 ╓длэ╓н REQ ╓х 4 ╓длэ╓н ACK ╓Р RFC ╓н╓х╓╙╓Й╓каВ╓Й╓ч╓╧. A╓о, REQ ╓Р╪У╓╠╓х╓К╓х REQ-SENT ╓н╬Убж╓к╓й╓Й, ╓╣╓И╓к REQ ╓РаВ╓Й╓ч╓╧. ╓╫╓╥╓ф╓╧╓╟╓к ACK ╓Р╪У╓╠╪Х╓ц╓ф OPENED ╓н╬Убж╓кфЧ╓Й╓ч╓╧. ╓Ё╓Л╓╛, йрйЩ╓н ppp ╓╛╓╒╓╜╓И╓А╓ф╓╥╓ч╓╕╓ч╓гбЁ╓╜╓ч╓╧. ╓Ё╓Л╓Р╡СхР╓╧╓К╨г╓Бни╓╓йЩк║╓о, йрйЩ╓Р passive ╔Б║╪╔и╓кюъдЙ╓╧╓К, ╓╧╓й╓О╓ах©бпб╕╓╛╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓РЁ╚╩о╓╧╓К╓ч╓гбт╓д╓Х╓╕╓к╓╧╓К╩Ж╓г╓╧. ╓Ё╓Л╓о, set openmode passive ╓х╓╓╓╕╔Ё╔ч╔С╔и╓г╓г╓╜╓ч╓╧. ╓Ё╓н╔╙╔в╔╥╔Г╔С╓о╣╓╓Риу╓╠╓ф╩х╓О╓й╓╓╓х╓╓╓╠╓ч╓╩╓С. ╓╣╓И╓к set stopped N ╓х╓╓╓╕╔Ё╔ч╔С╔и╓Рди╡ц╓╥╓ф, ppp╓╛negotiation╓╛Ё╚╩о╓╧╓К╓ч╓гбт╓д ╨гбГ╓н╩Ч╢ж╓РюъдЙ╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╓╞╓о, set openmode active N ╓х╓╓╓╕╔Ё╔ч╔С╔и(╓Ё╓Ё╓г, N ╓о╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓╛╩о╓ч╓К╓ч╓гбт╓д╩Ч╢ж)╓Р╩х╓╕╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╬э╓╥╓╞╓о╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ppp ╓╛юэбЁд╬╦Е╓к╦г╓ч╓ц╓ф╓╥╓ч╓╕ 2.2.5 ╓Х╓Йа╟╓н╔п║╪╔╦╔Г╔С╓н FreeBSD ╓г╓о, ppp ╓╛ Predictor1 ╟╣╫л╓н╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓Р╦М╓ц╓ф╡Р╪А╓╥╓ф, юэбЁд╬╦Е╓к╔Й╔С╔╞╓Рл╣╦З╓к╓╥╓ф╓╓╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓он╬╔╣╔╓╔и╓╛╟ш╓й╓К Compression Control Protocols (CCP) ╓Р╩х╓ц╓ф╔м╔╢╔╦╔╖║╪╔╥╔Г╔С╓Р╧т╓ц╓©╬Л╧Г╓к╓н╓ъх╞ю╦╓╥╓ч╓╧. ╓Ё╓нлДбЙ╓о╦╫╨ъ╓о╡Р╥Х╓╥╓ф╓╓╓ч╓╧╓╛, ╓╒╓й╓©╓наЖ╓И╓╩╓ф╓╓╓К ppp ╓н╔п║╪╔╦╔Г╔С╓╛╦е╓╓╬Л╧Г╓г╓Б, ╪║╓нл©нА╓г╡Р╥Х╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. disable pred1 ppp ╓нфБиТ╓г╔╥╔╖╔К╓Р╣╞ф╟╓╥╓Х╓╕╓х╓╧╓К╓х╦г╓ч╓ц╓ф╓╥╓ч╓╕ shell ╓╒╓К╓╓╓о ! ╔Ё╔ч╔С╔и╓Р╩хмя╓╧╓К╓х, ppp ╓о╔╥╔╖╔К╓Р╣╞ф╟╓╥(╡©╓╚╟З©Т╓Рео╓╥╓©╬Л╧Г╓о, ppp ╓о╟З©Т╓Б╪б╧т╓╥╓ч╓╧), ╔Ё╔ч╔С╔и╓╛╫╙н╩╓╧╓К╓ч╓г╫ХмЩ╓РцФцг╓╥╓ч╓╧. ╔Ё╔ч╔С╔и╓Р╪б╧тцФ╓к ppp ╓н╔Й╔С╔╞╓Р╩х╓╙╓╕╓х╓╧╓К╓х, ╔Й╔С╔╞╓╛╦г╓ч╓ц╓ф╓╓╓К╓Х╓╕╓к╦╚╓╗╓ч╓╧╓╛, ╓Ё╓Л╓о ppp ╓╛╔Ё╔ч╔С╔и╓н╫╙н╩╓Рбт╓ц╓ф╓╓╓К╓╚╓И╓г╓╧. ╓Ё╓н╓Х╓╕╓й╬Л╧Г╓о, бЕ╓О╓Й╓к !bg ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. м©╓╗╓И╓Л╓©╔Ё╔ч╔С╔и╓╛╔п╔ц╔╞╔╟╔И╔╕╔С╔и╓г╪б╧т╓╣╓Л╓К╓н╓г, ppp ╓о╔Й╔С╔╞╓к╢ь╓╧╓К╔╣║╪╔с╔╧╓Р╥ябЁ╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔л╔К╔Б╔г╔Ю╔╠║╪╔ж╔К╓Р╩хмя╓╥╓ф╓╓╓К╓х╓╜, ppp ╓╛╫╙н╩╓╥╓й╓╓ ╔л╔К╔Б╔г╔Ю╔╠║╪╔ж╔К╓Р╩хмя╓╥╓фд╬юэюэбЁ╓╥╓ф╓╓╓К╬Л╧Г, ppp ╓о╪╚ф╟е╙╓к╓оюэбЁ╓н╫╙н╩╓Рцн╓К╓Ё╓х╓╛╓г╓╜╓ч╓╩╓С. ╓Ё╓Л╓о╔л╔К╔Б╔г╔Ю╔╥╔Й╔╒╔К╔╠║╪╔ж╔К╓нгшюЧ╓к╣╞╟Ь╓╥╓ф╓╓╓ч╓╧. ╓Ё╓н╪О╓нюэбЁ╥абж╓Рмя╓╓╓К╬Л╧Г╓о, ╟й╡╪╓нл©нА╓Рмя╓╓╓ф LQR ╓Р╬О╓км╜╦З╓к╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. enable lqr ╓Ё╓╕╓╧╓К╓х, юэбЁюХ╓╛╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓Р╧т╓╕╬Л╧Г, ╔г╔у╔╘╔К╔х╓г LQR ╓н╩хмя╓Р╪У╓╠фЧ╓Л╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. ppp ╓Р ╔Б║╪╔и╓гф╟╓╚╓╧╓х, ╬║╪Й╓к╔ю╔╓╔╒╔К╓╧╓К╓Ё╓х╓╛╓╒╓К ppp ╓╛╩в╓╓╓Б╓╥╓й╓╓╓х╓╜╓к╔ю╔╓╔╒╔К╓Р╩о╓А╓К╬Л╧Г, ╓╫╓н╦╤╟Ь╓Рфм╓╜╩ъ╓А, ки╩ъ╓н╓©╓А╓к╔ю╔╓╔Д╔К╔у╔ё╔К╔©(dfilters)╓Р╓╚╓╠╓ф╓Д╓К и╛мв╓╛╓╒╓Й╓ч╓╧. ╦╤╟Ь╓Рфм╓╜╩ъ╓А╓К╓©╓А╓к╓о, ╟й╡╪╓нл©нА╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. set log +tcp/ip ╓Ё╓Л╓гюэбЁ╓Рдл╡А╓╧╓Ка╢╓ф╓н╔х╔И╔у╔ё╔ц╔╞╓Р╔М╔╟╓к╩д╓╧╓Ё╓х╓╛╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╥╓©. ╪║╓кфмаЁ╡СюЧ╓╛╓д╓й╓╛╓ц╓©╓х╓╜╓н╔М╔╟╓н╔©╔╓╔Ю╔╧╔©╔С╔в╓Р╓©╓и╓Л╓п, ╦╤╟Ь╓Рфм╓╜╩ъ╓А╓К╓Ё╓х╓╛╓г╓╜╓К╓о╓╨╓г╓╧. ╦╤╟Ь╓╛╓О╓╚╓ц╓©╓И, ╪║╓к, ╓Ё╓н╓Х╓╕╓й╬У╤╥╓г╓о╔ю╔╓╔Д╔К╓╛╣╞╓Ё╓И╓й╓╓╓Х╓╕╓к╓╥╓ч╓╥╓Г╓╕. дл╬О, ╓Ё╓н╪Й╓нлДбЙ╓о, DNS ╓гл╬а╟╓н╡Р╥Х╓Р╓╥╓Х╓╕╓х╓╥╓©╓©╓А╓к╣╞╓Ё╓Й╓ч╓╧. DNS ╓к╓Х╓Кл╬а╟╓н╡Р╥Х╓к╓Х╓ц╓ф, юэбЁ╓╛╧т╓О╓Л╓К╓н╓Рки╩ъ╓╧╓К╓к╓о, ╪║╓н╓Х╓╕╓й╪Йцй╓Рмя╓╓╓ч╓╧(╓Ё╓Л╓о ppp ╓н╢Ш╓кЁнн╘╓╥╓©юэбЁ╓к╢ь╓╥╓ф╔я╔╠╔ц╔х╓н╔у╔ё╔К╔©╔Й╔С╔╟╓Р╓╧╓К╓Б╓н╓г╓о╓╒╓Й╓ч╓╩╓С). set dfilter 1 deny udp src eq 53 set dfilter 2 deny udp dst eq 53 set dfilter 3 permit 0/0 0/0 ╓Ё╓Л╓о╔г╔ч╔С╔и╔ю╔╓╔Д╔К╣║г╫╓клДбЙ╓Рю╦╓╦╓╣╓╩╓К╓©╓А, ╬О╓ке╛юз╓г╓╒╓К╓х╓о╓╚╓╝╓Й╓ч╓╩╓С. ╓ш╓х╓С╓и╓н╔в╔М╔╟╔И╔Ю╓об╬╓н╔м╔ц╔х╔О║╪╔╞╢ьо╒╓н╫ХмЩ╓Р╧т╓й╓╕а╟╓к DNS ╓ь╓нлД╓╓╧Г╓О╓╩╓╛и╛мв╓к╓й╓Й╓ч╓╧. DNS ╓н╬Л╧Г╓о, ╡©╓╛╪б╨щ╓к╔ш╔╧╔хл╬╓Р╦║╨В╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К╓н╓╚╓Рфм╓╜╩ъ╓А╓К╓ы╓╜╓г╓╥╓Г╓╕. бГдЯ╓н╬Л╧Г╓о, sendmail ╓╛хх©м╓г╓╧. юъдЙ╔у╔║╔╓╔К╓г sendmail ╓╛ DNS ╓клД╓╓╧Г╓О╓╩╓й╓╓╓Х╓╕╓к╓й╓ц╓ф╓╓╓К╓╚Ёнг╖╓╧╓ы╓╜╓г╓╧. ╪╚й╛мя╓нюъдЙ╔у╔║╔╓╔К╓Р╨Ню╝╓╧╓К╓©╓А╓н╬э╓╥╓╓йЩк║╓о, ╔А║╪╔К╓нюъдЙ ╓н╧Ю╓Р╓╢мВ╓╞╓ю╓╣╓╓. ╓ч╓©╓о, .mc ╔у╔║╔╓╔К╓к╪║╓н╓Х╓╕╓й╧т╓Рди╡ц╓╥╓ф╓Б╓Х╓╓╓г╓╥╓Г╓╕. define(`confDELIVERY_MODE', `d')dnl ╓Ё╓н╧т╓Рди╡ц╓╧╓К╓х, sendmail ╓о╔А║╪╔К╔╜╔Е║╪╓Р╫ХмЩ╓╧╓К(дл╬О sendmail ╓о 30 й╛╓╢╓х╓к╔╜╔Е║╪╓Р╫ХмЩ╓╧╓К╓Х╓╕, ╓х╓╓╓╕╔╙╔в╔╥╔Г╔С╓Риу╓╠╓ф╣╞ф╟╓╣╓Л╓ч╓╧)╓ч╓г╓╚, ╓ч╓©╓о(б©й╛ ppp.linkup ╓х╓╓╓╕╔у╔║╔╓╔К╓нцФ╓г) sendmail -q ╓х╓╓╓╕╔Ё╔ч╔С╔и╓╛╪б╧т╓╣╓Л╓К╓ч╓г, а╢╓ф╓н╔А║╪╔К╓Р╔╜╔Е║╪╓кн╞╓А╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. лУцМ sendmail -q ╓о╓╫╓н╩Чею╓н╔А║╪╔К╔╜╔Е║╪╓нфБмф╓Р╫ХмЩ╓╥╓ф╫╙н╩╓╥╓ч╓╧. CCP ╔╗╔И║╪╓х╓о╓и╓╕╓╓╓╕╟улё╓г╓╧╓╚ ╔М╔╟╔у╔║╔╓╔КцФ╓н╟й╡╪╓н╔╗╔И║╪╓о, CCP: CcpSendConfigReq CCP: Received Terminate Ack (1) state = Req-Sent (6) ╓н╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓к╓╙╓╓╓ф ppp ╓о Predictor1 ╟╣╫л╓Рмя╓╓╓К╓ы╓╞╪Гд╔╓╥╓©╓н╓кбп╓╥╓ф, юэбЁюХ╓о╟╣╫л╓Р╩хмя╓╥╓й╓╓╓Ё╓х╓Р╪Гд╔╓╥╓©╬Л╧Г╓к╣╞╓Ё╓Й╓ч╓╧. ╓Ё╓н╔А╔ц╔╩║╪╔╦╓к╓о╡©╓нЁ╡╓Б╓╒╓Й╓ч╓╩╓С╓╛, ╫п╓К╓н╓╛╥Ы╓й╓И, ╟й╡╪╓нл©нА╓Рмя╓╓╓ф╓Ё╓а╓Иб╕╓г╓Б Predictor1 ╟╣╫л╓Рл╣╦З╓к╓╧╓К╓Ё╓х╓гбп╠Ч╓г╓╜╓ч╓╧. disable pred1 ╔у╔║╔╓╔Ке╬аВ╓несцФ╓г, ppp ╓╛ IO ╔╗╔И║╪╓Р╫п╓╥╓ф╦г╓ч╓ц╓ф╓╥╓ч╓╕ FreeBSD 2.2.2 ╟йа╟╓н╔п║╪╔╦╔Г╔С╓н tun ╔и╔И╔╓╔п╓к╓о, tun ╔╓╔С╔©╔у╔╖║╪╔╧╓н MTU ╓н╔╣╔╓╔╨╓Х╓ЙбГ╓╜╓й╔я╔╠╔ц╔х╓Р╪У╓╠╪Х╓К╓Ё╓х╓╛╓г╓╜╓й╓╓╓х╓╓╓╕╔п╔╟╓╛╓╒╓Й╓ч╓╥╓©. MTU ╓н╔╣╔╓╔╨╓Х╓ЙбГ╓╜╓й╔я╔╠╔ц╔х╓Р╪У╓╠иу╓╠╓К╓х IO ╔╗╔И║╪╓╛╣╞╓Ё╓Й, syslogd ╥пмЁ╓г╣╜о©╓╣╓Л╓К╓н╓г╓╧. ppp ╓н╩емм╓г╓о, LCP ╓н╔м╔╢╔╥╔╗║╪╔╥╔Г╔С╓Р╧т╓╕╬Л╧Г╓Р╢ч╓Ю╓и╓н╓Х╓╕╓й╬Л╧Г╓г╓Б╨гдЦ 1500 ╔╙╔╞╔ф╔ц╔х╓н Maximum Receive Unit (MRU) ╓Р╪У╓╠фЧ╓Л╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓г╓╧╓╚╓И, MTU ╓Р 1500 ╟й╡╪╓кюъдЙ╓╥╓©╬Л╧Г╓г╓Б, ISP ╓о╓╫╓Л╓к╢ь╥╦╓й╓╞ 1500 ╓нбГ╓╜╓╣╓н╔я╔╠╔ц╔х╓РаВ╓ц╓ф╓╞╓К╓г╓╥╓Г╓╕. ╓╫╓╥╓ф╓Ё╓н╔╓╔╠╓ф╓й╓╓╣║г╫╓к╓ж╓а╓╒╓©╓ц╓ф, ╔Й╔С╔╞╓╛╦г╓ч╓К╓н╓Рлэ╓к╓╧╓К╓Ё╓х╓к╓й╓К╓н╓г╓╧. FreeBSD 2.2.2 ╟йа╟╓н╔п║╪╔╦╔Г╔С╓г╓о, MTU ╓Р╥Х╓╥╓ф 1500 ╓Х╓Й╬╝╓╣╓╞╓╥╓й╓╓╓Ё╓х╓г, ╓Ё╓нлДбЙ╓Р╡СхР╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓и╓╕╓╥╓ф ppp ╓оюэбЁб╝еы╓Р╔М╔╟╓к╩д╓╣╓й╓╓╓С╓г╓╥╓Г╓╕? ╔Б╔г╔Ю╓х╓н║ж╓Д╓Й╪Х╓Й║ва╢╓ф╓н╧т╓Р╔М╔╟╓к╩д╓╧╓к╓о, ╟й╡╪╓н╓Х╓╕╓к╓╥╓фюэбЁб╝еы╓н╔М╔╟╓нм╜╦З╡╫╓Р╧т╓ц╓ф╓╞╓ю╓╣╓╓. set log +connect ╓Ё╓Л╓о ppp ╓к╨г╦Е╓к╓╞╓К╓Ё╓х╓╛мв╣А╓╣╓Л╓ф╓╓╓К expect ╓х╓╓╓╕й╦╩ЗнС╓╛╓╞╓К╓ч╓г╓н╓╧╓ы╓ф╓н╓Б╓н╓Р╔М╔╟╓к╣╜о©╓╣╓╩╓ч╓╧. юэбЁб╝еы╓о╔М╔╟╓к╓х╓Й╓©╓╓╓╠╓Л╓и, PAP ╓Д CHAP ╓Р╩х╓ц╓ф╓╓╓К(╓╫╓н╥К╡л, ╔ю╔╓╔Д╔К╔╧╔╞╔Й╔в╔хцФ╓н CONNECT ╟й╧ъ╓ка╢╓╞║ж╓Д╓Й╓х╓Й║в╓Р╧т╓О╓й╓╓ - set login ╔╧╔╞╔Й╔в╔х╓к╓о╡©╓Б╫Я╓╚╓й╓╓)╓н╓г╓╒╓Л╓п, ppp ╓к expect ╓Р╢ч╓С╓ю CONNECT ╧та╢╓ф╓╛╓╞╓К╓ч╓гбт╓©╓╩╓К╓Х╓╕╓к╓╥╓й╓╓╓х╓╓╓╠╓ч╓╩╓С, ╟й╡╪╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n" ╓Ё╓Ё╓г, CONNECT ╓Р╪У©╝╓╥╓ф╓╚╓И, ╡©╓БаВ╓И╓╨, иЭ╣╒╡Ч╧т(linefeed)╓Рбт╓ц╓ф╓╓╓ч╓╧, ppp ╓к CONNECT ╓н╠ЧеЗа╢╓ф╓Рфи╓ъ╧Ч╓ч╓╩╓ф╓╓╓К╓О╓╠╓г╓╧. ╩Д╓н chat ╔╧╔╞╔Й╔в╔х╓г╓о \ ╓х╓╓╓╕й╦╩З╓Р PPP ╓╛╡Р╪А╓╥╓ф╓╞╓Л╓ч╓╩╓С. PPP ╓оюъдЙ╔у╔║╔╓╔К╓Рфи╓ъ╧Ч╓Ю╓х╓╜╓к, set phone "123 456 789" ╓н╓Х╓╕╓йй╦╩ЗнС╓Рю╣╓╥╓╞╡Р╪А╓╥, хж╧Ф╓╛╪б╨щ╓к1 ╓д╓н╟З©Т╓г╓╒╓К╓хмЩ╡Р╓╥╓ч╓╧. " ╓х╓╓╓╕й╦╩З╓Р╩ьдЙ╓╧╓К╓к╓о, ╔п╔ц╔╞╔╧╔И╔ц╔╥╔Е(backslash; \)╓г╔╗╔╧╔╠║╪╔в╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. chat ╓нЁф╟З©Т╓╛╡Р╪А╓╣╓Л╓К╓х╓╜╓к╓о, \P ╓Д \T ╓н╓Х╓╕╓йфцйл╓й╔╗╔╧╔╠║╪╔в╔╥║╪╔╠╔С╔╧(╔ч╔к╔Е╔╒╔К╔з║╪╔╦╩╡╬х╓н╓Ё╓х)╓Р╦╚иу╓╠╓К╓©╓А╓к, ╓Б╓╕ 1 ╡С, ╩З╤Г╡Рюо╓Р╧т╓╓╓ч╓╧. ╓Ё╓н╓Х╓╕╓к╩З╤Г╡Рюо╓о 2 ╡С╥╚╓Ййж╓╣╓Л╓ч╓╧╓н╓г, ю╣╓╥╓╓╡С©Т╓ю╓╠╔╗╔╧╔╠║╪╔в╫ХмЩ╓Р╧т╓О╓й╓╓╓х╓╓╓╠╓ч╓╩╓С. ╔Б╔г╔Ю╓к╓©╓х╓╗╓п \ ╓н╓Х╓╕╓йй╦╩З╓РаВ╓Й╓©╓╓╬Л╧Г╓к╓о, ╪║╓н╓Х╓╕╓к╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK" ╪б╨щ╓к╔Б╔г╔Ю╓каВ╓И╓Л╓Кй╦╩ЗнС╓о╪║╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. ATZ OK AT\X OK б╬╓ннЦ╓г╓╧╓х set phone 1234567 set dial "\"\" ATZ OK ATDT\\T" ╓о╪║╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. ATZ OK ATDT1234567 ppp ╓╛ segmentation fault ╓к╓й╓К╓н╓г╓╧╓╛, ppp.core ╔у╔║╔╓╔К╓╛╓╒╓Й╓ч╓╩╓С ppp(╓Дб╬╓н╔в╔М╔╟╔И╔Ю)╓о╥Х╓╥╓ф core ╓Рег╓╓╓ф╓о╓╓╓╠╓ч╓╩╓С. ppp ╓о╪б╦З uid ╓╛ 0 ╓гф╟╓╓╓ф╓╓╓ч╓╧╓н╓г, ╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓о ppp ╓Р╫╙н╩╓╣╓╩╓Ка╟╓к╔г╔ё╔╧╔╞╓к core ╔╓╔А║╪╔╦╓Р╫Я╓╜╧Ч╓ъ╓ч╓╩╓С. ╓╥╓╚╓╥ ppp ╓о╪б╨щ╓к╓о╔╩╔╟╔А╔С╔ф║╪╔╥╔Г╔С╟Цх©╓Д, б╬╓н core ╓Рег╓╞╦╤╟Ь╓х╓й╓К╓Х╓╕╓й╔╥╔╟╔й╔К╓к╓Х╓ц╓ф╫╙н╩╓╥╓ф ╓╙╓Й, ╓╣╓И╓к╨г©╥╓н╔п║╪╔╦╔Г╔С(╓Ё╓н╔╩╔╞╔╥╔Г╔С╓н╩о╓А╓Р╦╚╓ф╓╞╓ю╓╣╓╓)╓Р╩хмя╓╥╓ф╓╓╓К╓й╓И╓п, ╪║╓н╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.user; tar xfz ppp-*.src.tar.gz &prompt.user; cd ppp*/ppp &prompt.user; echo STRIP= >>Makefile &prompt.user; echo CFLAGS+=-g >>Makefile &prompt.user; make clean all &prompt.user; su &prompt.root; make install &prompt.root; chmod 555 /usr/sbin/ppp ╓Ё╓Л╓г╔г╔п╔ц╔╟╡дг╫╓й╔п║╪╔╦╔Г╔С╓н ppp ╓╛╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ч╓╧. root ╓г ppp ╓Р╪б╧т╓╥, а╢╓ф╓нфц╦╒╓╛л╣╦З╓к╓й╓ц╓ф╓╓╓К╓Х╓╕╓к╓╧╓Ки╛мв╓╛╓╒╓К╓г╓╥╓Г╓╕. ppp ╓Р╪б╧т╓╧╓К╩Ч╓к╓о, ╔╚╔Л╔С╔х╔г╔ё╔Л╔╞╔х╔Й╓╛ make ╓╥╓©╔г╔ё╔Л╔╞╔х╔Й╓г╓╒╓К╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓г, ppp ╓╛╔╩╔╟╔А╔С╔ф║╪╔╥╔Г╔СнЦЁ╟╓Р╪У╓╠╪Х╓ц╓©╓х╓╜╓к╓о ppp.core ╓х╓╓╓╕л╬а╟╓н core ╔у╔║╔╓╔К╓Рег╓╞╓Х╓╕╓к╓й╓Й╓ч╓╧. core ╓╛ ег╓╚╓Л╓©╓И╪║╓н╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. &prompt.user; su &prompt.root; gdb /usr/sbin/ppp ppp.core (gdb) bt ..... (gdb) f 0 .... (gdb) i args .... (gdb) l ..... ╪алД╓╧╓К╨щ╓к╓о, ╓Ё╓Л╓Иа╢╓ф╓н╬ПйС╓РдС╤║╓╥╓ф, лДбЙею╓нй╛юо╓╛╓г╓╜╓К╓Х╓╕╓к╓╥╓ф╓╞╓ю╓╣╓╓. gdb ╓н╩х╓╓йЩ╓к╢╥╓Л╓ф╓╓╓К╬Л╧Г╓к╓о, ╪б╨щ╓к dump ╓н╦╤╟Ь╓х╓й╓ц╓©мЩмЁ╓Д╓╫╓н╔╒╔и╔Л╔╧, ╢ьо╒╓╥╓©йя©Т╓нцм╓й╓и╓Бд╢╓ы╓К╩Ж╓╛╓г╓╜╓К╓г╓╥╓Г╓╕. auto ╔Б║╪╔и╓г╔ю╔╓╔╒╔К╓Р╓╧╓К╓Х╓╕╓й╔в╔М╔╩╔╧╓╛юэбЁ╓╣╓Л╓й╓╓. ╓Ё╓Л╓о ppp ╓╛╔М║╪╔╚╔Кб╕╓н IP ╔╒╔и╔Л╔╧╓Р, ф╟е╙╓кдл©╝аЙ╪Й╓х╦Р╬д╓╧╓К╓Х╓╕╓кюъдЙ╓╣╓Л╓ф╓╓╓К╩Ч╓кх╞ю╦╓╧╓Кни╓╞цн╓И╓Л╓©╬ЦЁ╡╓г╓╥╓©. ╨г©╥╓н╔п║╪╔╦╔Г╔С╓г╓о, ╓Ё╓нлДбЙ╓о╫╓ю╣╓╣╓Л╓ф╓╓╓ч╓╧. iface ╓Р╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓╚╓И╦║╨В╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓о, ╨г╫И╓н╔в╔М╔╟╔И╔Ю╓╛ connect(2) ╓Р╦ф╓с╫п╓╥╓©╩Ч, tun ╔╓╔С╔©║╪╔у╔╖╔╓╔╧╓н IP ╔╒╔и╔Л╔╧╓╛, ╔╫╔╠╔ц╔х╓н╫╙ц╪╓кЁД╓ЙеЖ╓ф╓И╓Л╓ф╓╥╓ч╓╕╓х╓╓╓╕лДбЙ╓г╓╧. ╔╚║╪╔м╔К╓о, Ё╟╓ь╫п╓ф╓╓╓╞╨г╫И╓н╔я╔╠╔ц╔х╓Р╨Н╓Й, ╓╫╓Л╓Р tun ╔г╔п╔╓╔╧╓ь╫Я╓╜╧Ч╓ъ╓ч╓╧. ╓╫╓╥╓ф ppp ╓о, ╓╫╓н╔я╔╠╔ц╔х╓Рфи╓ъ╧Ч╓С╓гюэбЁ╓РЁнн╘╓╥╓ч╓╧. ppp ╓оф╟е╙╓к IP ╔╒╔и╔Л╔╧╓РЁД╓ЙеЖ╓ф╓К╓©╓А, ╓Б╓╥╔╓╔С╔©║╪╔у╔╖╔╓╔╧╓н╔╒╔и╔Л╔╧╓╛йя╡╫╓╥╓ф╓╥╓ч╓╕╓х, ╨г╫И╓кЁД╓ЙеЖ╓ф╓И╓Л╓©╔╫╔╠╔ц╔х╫╙ц╪╓н IP ╔╒╔и╔Л╔╧╓ол╣╦З╓к╓й╓ц╓ф╓╥╓ч╓╓╓ч╓╧. ╓╫╓н╓©╓А, ╓╫╓Л╟й╧ъаЙ╪Й╓каВ╓И╓Л╓Ка╢╓ф╓н╔я╔╠╔ц╔х╓одл╬О, аЙ╪Й╓кфо╓╞╓Ё╓х╓о╓й╓╓╓г╓╥╓Г╓╕. ╓Б╓╥╡╬╓кфо╓╓╓©╓х╓╥╓ф╓Б, ╢Ш╓к╓Ё╓а╓И╓н IP ╔╒╔и╔Л╔╧╓ойя╧╧╓╣╓Л╓ф╓╓╓К╓н╓г, ╓и╓С╓йх©╠Ч╓Б╨г╫И╓н╔ч╔╥╔С╓к╓олА╓ц╓ф╓╜╓ч╓╩╓С. ╓Ё╓нлДбЙ╓кбп╫Х╓╧╓КмЩоюе╙╓ййЩк║╓╛╓╓╓╞╓д╓╚╓╒╓Й╓ч╓╧. ╓Б╓╥╡дг╫╓й╓И, аЙ╪Й╓╛╨феы, ф╠╓╦ IP ╔╒╔и╔Л╔╧╓РЁД╓ЙеЖ╓ф╓ф╓╞╓Л╓К╓Ё╓х╓╛╟Лхж╓г╓╧ :-) ppp ╓н╦╫╨ъ╓н╔п║╪╔╦╔Г╔С╓о╓Ё╓Л╓Р╧т╓й╓╓╓ч╓╧╓╛, б╬╓н╓ш╓х╓С╓и╓н╪баУ╓о╓╫╓╕╓╓╓ц╓©ф╟╨Н╓Р╓╥╓ч╓╩╓С. ╡Ф║╧╓нб╕╓╚╓Ибп╫Х╓г╓╜╓К╨г╓Б╢йц╠╓ййЩк║╓о, tun ╔╓╔С╔©║╪╔у╔╖╔╓╔╧╓н IP ╔╒╔и╔Л╔╧╓Р╦гдЙ╓╧╓К╩Ж╓г╓╧. ╓ч╓©╓╫╓н╓╚╓О╓Й╓к, Ё╟╓к╫п╓ф╓╓╓╞╔я╔╠╔ц╔х╓Рйя╧╧╓╥╓ф, х╞©╝╦╣ IP ╔╒╔и╔Л╔╧╓Р╔╓╔С╔©║╪╔у╔╖╔╓╔╧╓н IP ╔╒╔и╔Л╔╧╓╚╓И, ╦Р╬д╓к╓Х╓ц╓ффю╓И╓Л╓© IP ╔╒╔и╔Л╔╧╓к, е╛╣╧╫Я╓╜╓╚╓╗╓К╩Ж╓к╓Х╓ц╓ф╓Ббп╫Х╓г╓╜╓ч╓╧. ╓Ё╓Л╓о, ╢Пкэе╙╓к ppp ╓н╨г©╥╔п║╪╔╦╔Г╔С╓к╓╒╓К iface-alias ╔╙╔в╔╥╔Г╔С╓╛╧т╓й╓ц╓ф╓╓╓К╓Ё╓х╓хф╠╓╦╓г╓╧(libalias(3) ╓╙╓Х╓с, ppp ╓н ╔╧╔╓╔ц╔а╓к╓Б╢ь╥╦╓╥╓ч╓╧). ╓╫╓Л╓о, ╟йа╟╓н IP ╔╒╔и╔Л╔╧╓Ра╢╓ф╢имЩ╓╥, ╓╫╓Л╓И╓Р╨г╦Е╓н╦Р╬д╓к╓Х╓ц╓ффю╓И╓Л╓© IP ╔╒╔и╔Л╔╧╓кбп╓╥╓ф NAT ╣║г╫╓Рм╜╦З╡╫╓╥╓ч╓╧. ╓Б╓╕ 1 ╓д╓н(╓╙╓╫╓И╓╞╨г╓Б©╝мЙ╓г╓╜╓К)йЩк║╓о, bind ╓╣╓Л╓© а╢╓ф╓н╔╫╔╠╔ц╔х╓н IP ╔╒╔и╔Л╔╧╓Р, ╟ш╓й╓К╓Б╓н╓кйя╧╧╓г╓╜╓К╔╥╔╧╔ф╔Ю╔Ё║╪╔К╓Р╪баУ╓╧╓К╓Ё╓х╓г╓╧. ppp╓о, ╦Р╬д╓к╓Х╓ц╓ф©╥╓╥╓╓ IP ╔╒╔и╔Л╔╧╓Рфю╓©╩Ч, ╓Ё╓н╔╥╔╧╔ф╔Ю╔Ё║╪╔К╓Рмя╓╓╓ф╪б╧т╓╣╓Л╓ф╓╓╓К╔в╔М╔╟╔И╔Ю╓к╓╒╓К, а╢╓ф╓н╔╫╔╠╔ц╔х╓Р╫Я╓╜╓╚╓╗╓ф╓Д╓К╓О╓╠╓г╓╧. ф╠╓╦╔╥╔╧╔ф╔Ю╔Ё║╪╔К╓╛, DHCP ╔╞╔И╔╓╔╒╔С╔х╓╛мЬмя╓╧╓К╔╫╔╠╔ц╔х╓Р ╤╞ю╘е╙╓к╨ф bind ╓╧╓К╓н╓к╓Б╩х╓╕╓Ё╓х╓╛╓г╓╜╓К╓г╓╥╓Г╓╕. 3 ╓длэ╓нйЩк║╓о, IP ╔╒╔и╔Л╔╧╓Р╩ьдЙ╓╥╓й╓╓╓г╔╓╔С╔©║╪╔у╔╖╔╓╔╧╓РмЬмя╓г╓╜╓К╓Х╓╕╓к╓╧╓К╓Ё╓х╓г╓╧. Ё╟╓к╫п╓ф╓╓╓╞╔я╔╠╔ц╔х╓о, ╨г╫И╓н SIOCAIFADDR ioctl ╓н╢╟н╩╓ч╓г, 255.255.255.255 ╓х╓╓╓╕ IP ╔╒╔и╔Л╔╧ ╓╛м©╓╗╓И╓Л╓ч╓╧. ╓Ё╓Л╓к╓Х╓ц╓ф. ╔╫╔╠╔ц╔х╓о╬О╓к bind ╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ppp ╓кбп╓╥╓фх╞©╝╦╣ IP ╔╒╔и╔Л╔╧╓Рйя╧╧╓╣╓╩╓К╩Ж╓к╓й╓Й╓ч╓╧╓╛, ╓Б╓╥╓╫╓Л╓╛ 255.255.255.255 ╓к╓й╓ц╓ф╓╓╓©╓И, IP ╔╒╔и╔Л╔╧╓х IP ╔а╔╖╔ц╔╞╔╣╔Ю╓ю╓╠йя╧╧╓╧╓Л╓пни╓╠╓Л╓п╓ноц╓к╓й╓Й╓ч╓╧. ╓Ё╓нйЩк║╓о╓а╓Г╓ц╓х╓╥╓©йя╧╧╓г╓╧╓╛, б╬╓н╣║╧╫╓╛╨ё╓ч╓г╓н╓Х╓╕╓к, IP ╔╒╔и╔Л╔╧╓Р╦гдЙ╓╥╓фмЬмя╓╧╓К╬Л╧Г╓к, ╔╚║╪╔м╔К╓╛ите╛юз╓кюъдЙ╓╣╓Л╓©╔╓╔С╔©║╪╔у╔╖╔╓╔╧╓к╦Ч╓╠╓ф, ю╣╬О╓г╓й╓╓╔я╔╠╔ц╔х╓РаВ╓Й╫п╓╥╓ф╓╥╓ч╓╕╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╡©╦н╓ш╓х╓С╓и╓н╔╡║╪╔Ю╓╛ ╔╧╔╓╔ц╔аиу╓╜╓ю╓хф╟╓╚╓й╓╓╓С╓г╓╧╓╚? libalias ╓Р╩х╓ц╓ф╓╓╓К╩Ч╓к╔╡║╪╔Ю╓й╓и╓ннЮ╓н╓Б╓н╓╛ф╟╨Н╓╥╓й╓╓мЩмЁ╓о, Ё╟б╕╓к╓╒╓К╔ч╔╥╔С╓╛юэбЁ╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К╓╚, фБб╕╓к╓╒╓К╔ч╔╥╔С╓к (м╬╥в╓й)UDP ╔я╔╠╔ц╔х╓РаВ©╝╓╥╓Х╓╕╓х╓╥╓ф╓╓╓К╓╚╓И╓г╓╧. фБб╕╓н╔ч╔╥╔С╓к╓Ё╓Л╓И╓н╔я╔╠╔ц╔х╓РаВ╓К╓ы╓╜╓╚╓к╓д╓╓╓ф, NAT ╔╫╔у╔х╔╕╔╖╔╒╓о╢ьцн╓╥╓ч╓╩╓С. ╓╕╓ч╓╞ф╟╓╚╓╧╓©╓А╓к╓о, ╪б╧тцФ╓н╓Б╓н╓╛лДбЙ╓нх╞ю╦╓╥╓ф╓╓╓К╔╫╔у╔х╔╕╔╖╔╒╓ю╓╠╓г╓╒╓К╓╚╓РЁнг╖╓╥, ╔╡║╪╔х╔╕╔╖╔╓╓н tun ╔╓╔С╔©╔у╔╖║╪╔╧╓кбп╓╥╓ф tcpdump ╓Р╪б╧т╓╧╓К╓╚, ╔╡║╪╔х╔╕╔╖╔╓╬Е╓г ppp ╓н TCP/IP ╔М╔╟╣╜о©╓Рм╜╦З╡╫(set log +tcp/ip)╓╥╓ф╓╞╓ю╓╣╓╓. ╧т╣╥╓н╟╜╓╓╔╫╔у╔х╔╕╔╖╔╒╓Р╣╞ф╟╓╧╓К╨щ╓к, ╔╡║╪╔х╔╕╔╖╔╓╔ч╔╥╔С╓Рдл╡А╓╧╓К╔я╔╠╔ц╔х╓Р╢ф╩К╓╧╓ы╓╜╓г╓╧. Ё╟б╕╓╚╓И╡©╓╚╔я╔╠╔ц╔х╓╛лА╓ц╓ф╓╜╓©╩Ч╓к, ╓╫╓н╔я╔╠╔ц╔х╓огк╢Ч╓╣╓Л╓К╓г╓╥╓Г╓╕(╓╫╓Л╓╛лДбЙ╓й╓н╓г╓╧). ╓Ё╓Л╓И╓н╔я╔╠╔ц╔х╓н╔щ║╪╔ххж╧Ф╓кцМ╟у╓╥╓ф, ╓╫╓н╧т╣╥╓н╟╜╓╓╔╫╔у╔х╔╕╔╖╔╒╓РдД╩ъ╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓Р©Т╡С╥╚╓Ййж╓╥╓ф╔щ║╪╔ххж╧Ф╓╛╬О╓кф╠╓╦╓г╓╒╓К╓╚╓РЁнг╖╓╥╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ф╠╓╦╓г╓╒╓ц╓©╬Л╧Г╓о, /etc/ppp/ppp.conf ╓не╛юз╓й╔╩╔╞╔╥╔Г╔С╓к╪║╓н╧т╓РфЧ╓Л╓К╓х, ╓╫╓н╔╫╔у╔х╔╕╔╖╔╒╓оф╟╨Н╓╧╓К╓Х╓╕╓к╓й╓К╓г╓╥╓Г╓╕. nat port proto internalmachine:port port ╓Ё╓Ё╓г proto ╓о tcp ╓╚ udp ╓г╓╒╓Й, internalmachine ╓о╔я╔╠╔ц╔х╓РаВ╓Й╓©╓╓╔ч╔╥╔С, ╓╫╓╥╓ф port ╓о╔я╔╠╔ц╔х╓наВ©╝юХ╓н╔щ║╪╔ххж╧Ф╓г╓╧. ╬Е╣╜╓н╔Ё╔ч╔С╔и╓Рйя╧╧╓╩╓╨╓к, б╬╓н╔ч╔╥╔С╬Е╓г╓╫╓н╔╫╔у╔х╔╕╔╖╔╒╓Р╩хмя╓г╓╜╓К╓Х╓╕╓к╓о╓╥╓©╓╞╓й╓╓╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╓╫╓╥╓фф╠╩Ч╓кфС╓д╓нфБиТ╓н╔ч╔╥╔С╬Е╓г╓╫╓н╔╫╔у╔х╔╕╔╖╔╒╓Р╪б╧т╓╧╓К╓Ё╓х╓о, ╓Ё╓н╪алД╓нхо╟о╓Рд╤╓╗╓ф╓╓╓ч╓╧. ╥К╤и, Ё╟б╕╓ню╓Ё╕╓╚╓И╓о, фБиТ╔м╔ц╔х╔О║╪╔╞а╢бн╓╛╓©╓ю╟Л╓д╓н╔ч╔╥╔С╓х╓╥╓ф╦╚╓╗╓К╓н╓г╓╧. ╔щ║╪╔ххж╧Ф╓╛╬О╓кф╠╓╦╓х╓о╦б╓И╓й╓╓╬Л╧Г, ╓╣╓И╓к╩╟╓д╓н╔╙╔в╔╥╔Г╔С╓╛╓╒╓Й╓ч╓╧. libalias ╓г╔╣╔щ║╪╔х╓╧╓К╓Х╓╕╓к╓╥, ╥К╡л╓РаВ╓Йиу╓╠╓К. фцдЙ╓н╬Л╧Г╓ннЦ╓о /usr/src/lib/libalias/alias_*.c ╓к╓╒╓Й╓ч╓╧(alias_ftp.c ╓они╓╓╔в╔М╔х╔©╔╓╔в╓г╓╧). ╓Ё╓Л╓к╓одл╬О, Ё╟╦Ч╓╜╓нфцдЙ╓н╔я╔╠╔ц╔х╓Рфи╓ъ, фБиТ╓н╥в╩╩╣║╓н╓╒╓КфцдЙ╓н╔щ║╪╔х╓ь╓нюэбЁ╓РЁ╚╩о╓╧╓К╓Х╓╕╓йл©нА╓╛, Ё╟иТ╓н╥в╩╩╣║бп╓╥╓фаВ╓И╓Л╓ф╓╓╓К╓Ё╓х╓Р╦╚й╛╓╠, ╦ЕбЁ╓н╔я╔╠╔ц╔х╓╛╓и╓Ё╓к╧т╓╠╓п╓╓╓╓╓н╓╚╓╛й╛╓╚╓К╓Х╓╕╓к, ╔╗╔╓╔Й╔╒╔╧╔ф║╪╔ж╔КцФ╓н route ╓ниТй╛╓РюъдЙ╓╧╓К, ╓х╓╓╓╕╨Н╤х╓╛╢ч╓ч╓Л╓ч╓╧. ╓Ё╓Л╓о╨г╓БфЯ╓╥╓╓йЩк║╓г╓╧╓╛, ╨г╓Бни╓╓йЩк║╓г╓Б╓╒╓Й╓ч╓╧╓╥, ╔╫╔у╔х╔╕╔╖╔╒╓╛ йё©Т╓н╥в╩╩╣║╓гф╟╓╞╓Х╓╕╓к╓г╓╜╓ч╓╧. ╔в╔М╔╜╔╥(proxy)╓Р╩х╓╕. ╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓╛, нЦ╓╗╓п socks5 ╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓К╓╚, (cvsup ╓н╓Х╓╕╓к) passive ╔╙╔в╔╥╔Г╔С╓Р╩Щ╓ц╓ф╓╓╓К╓х╓Ё╓нйЩк║╓╛╩х╓╗╓ч╓╧. passive ╓х╓оаЙ╪Йб╕╓н╓ш╓╕╓╚╓ИюэбЁ╓Р╣А╓А╓ф╓╞╓К╓Ё╓х╓РхР╓╠╓К╓©╓А╓к╓╒╓К╔╙╔в╔╥╔Г╔С╓г╓╧. nat addr ╓Р╩х╓ц╓ф╓й╓С╓г╓Б╓╚╓С╓г╓БфБиТ╓н╥в╩╩╣║╓к╦Ч╓╠╓фн╝╓╥╓ф╓╥╓ч╓╕. ╓Ё╓Л╓о╓а╓Г╓ц╓хл╣мЩлПмЩ╓й╡Р╥Хк║╓г╓╧. м╜мя╓й╔щ║╪╔ххж╧Ф╓н╔Й╔╧╔х╓о╓╒╓Й╓ч╓╩╓С╓╚? ╓ч╓ю╫пмХ╓ф╓╓╓ч╓╩╓С. ╓╥╓╚╓╥, ╓Ё╓Л╓о(╢ь©╢╓Р╩Щ╓ц╓фд╨╓╠╓К╓й╓И╓п)╓╫╓╕╓╓╓ц╓©╔Й╔╧╔х╓к╓╥╓ф╓╓╓╞м╫дЙ╓г╓╧. ╓╫╓Л╓╬╓Л╓ннЦ╓к╓╒╓К internal ╓о, ╔╡║╪╔Ю╓гм╥╓ж╔ч╔╥╔С╓н IP ╔╒╔и╔Л╔╧╓кцж╓╜╢╧╓╗╓ф╓╞╓ю╓╣╓╓. Asheron's Call nat port udp internal:65000 65000 ╪Йф╟╓г╔╡║╪╔Ю╓н╔щ║╪╔ххж╧Ф╓Р 65000 ╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. ╔ч╔╥╔С╓╛йё©Т╓╒╓К╬Л╧Г╓о, ╓╫╓Л╓╬╓Л╓н╔ч╔╥╔С╓к╫ейё╓╥╓й╓╓╔щ║╪╔ххж╧Ф(╓д╓ч╓Й 65001, 65002 ╓й╓и)╓РюъдЙ╓╥, ╓╫╓нюъдЙ╓╢╓х╓к nat port ╓н╧т╓Рди╡ц╓╥╓ч╓╧. Half Life nat port udp internal:27005 27015 PCAnywhere 8.0 nat port udp internal:5632 5632 nat port tcp internal:5631 5631 Quake nat port udp internal:6112 6112 ╓Ё╓н╓Х╓╕╓кюъдЙ╓╧╓КбЕ╓О╓Й╓к, www.battle.net ╓г Quake ╓н╔в╔М╔╜╔╥(proxy)╓╛╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓К╓╚д╢╓ы╓ф╓Б╓╓╓╓╓г╓╥╓Г╓╕. Quake2 alias port udp internal:27901 27910 Red Alert nat port udp internal:8675 8675 nat port udp internal:5009 5009 FCS ╔╗╔И║╪╓ц╓ф╡©? FCS ╓х╓о Frame Check Sequence(╔у╔Л║╪╔Ю╔а╔╖╔ц╔╞╔╥║╪╔╠╔С╔╧)╓нн╛╓г╓╧. ╦д║╧╓н ppp ╔я╔╠╔ц╔х╓к╓о, аВ╪У©╝╓╧╓К╔г║╪╔©╓╛ю╣╓╥╓╓╓╚╓Рд╢╓ы╓К╓©╓А╓н╔а╔╖╔ц╔╞╔╣╔Ю╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╪У©╝╓╥╓©╔я╔╠╔ц╔х╓н FCS ╓╛ю╣╓╥╓╞╓й╓╓╬Л╧Г╓о, ╓╫╓н╔я╔╠╔ц╔х╓огя╢Ч╓╣╓Л, HDLC FCS ╔╚╔╕╔С╔х╓╛аЩ╓Д╓╣╓Л╓ч╓╧. HDLC ╔╗╔И║╪╓н©Т ╓о, show hdlc ╔Ё╔ч╔С╔и╓Р╩х╓ц╓фи╫╪╗╓г╓╜╓ч╓╧. ╔Й╔С╔╞╓ний╪а╓╛╟╜╓╚╓ц╓©╓Й, ╔╥╔Й╔╒╔К╔и╔И╔╓╔п╓╛╔я╔╠╔ц╔х╓Р╪Х╓Й╓Ё╓э╓╥╓ф╓╓╓©╓Й╓╧╓К╓х, FCS ╔╗╔И║╪╓╛╓©╓с╓©╓сх╞ю╦╓╥╓ч╓╧. FCS ╔╗╔И║╪╓о, ╟╣╫л╔в╔М╔х╔Ё╔К╓нб╝еыдЦ╡╪╓н╦╤╟Ь╓к╓о╓й╓Й╓ч╓╧╓╛, фц╓к©╢гш╓╧╓Ки╛мв╓о╓╒╓Й╓ч╓╩╓С. Ё╟иу╓╠╔Б╔г╔Ю╓Р╩х╓ц╓ф╓╓╓К╬Л╧Г╓о, ╔╠║╪╔ж╔К╓╛╓а╓Ц╓С╓х╔╥║╪╔К╔и╓╣╓Л╓ф╓╓╓К╓╚╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╕╓г╓й╓╓╬Л╧Г, FCS ╔╗╔И║╪╓н╦╤╟Ь╓х╓й╓К╬Л╧Г╓╛╓╒╓Й╓ч╓╧. юэбЁд╬╦Е╓╚╓И╔Й╔С╔╞╓╛╔у╔Й║╪╔╨╓╥, бГнл╓н FCS ╔╗╔И║╪╓╛х╞ю╦╓╧╓К╬Л╧Г╓о, ╔Й╔С╔╞╓╛ 8 ╔с╔ц╔х╔╞╔Й║╪╔С╓г╓й╓╓╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╔╫╔у╔х╔╕╔╖╔╒╔у╔М║╪ю╘╦Ф(XON/XOFF) ╓╛╩х╓О╓Л╓ф╓╓╓й╓╓╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╓и╓╕╓╥╓ф╓Б╔╫╔у╔х╔╕╔╖╔╒╔у╔М║╪ю╘╦Ф╓Р╩х╓О╓й╓╠╓Л╓п╓й╓И╓й╓╓╬Л╧Г╓о, set accmap 0x000a0000 ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф, ppp ╓к ^Q ╓х ^S ╓Р╔╗╔╧╔╠║╪╔в╓╣╓╩╓ф╓╞╓ю╓╣╓╓. ╔Й╔Б║╪╔х╔ш╔╧╔х╓╛ PPP ╔в╔М╔х╔Ё╔К╓Р╩хмя╓╥╓ф╓й╓╓╬Л╧Г╓Б, бГнл╓н FCS ╔╗╔И║╪╓╛х╞ю╦╓╥╓ч╓╧. ╓Ё╓н╬Л╧Г╓о╔М╔╟╓Р╓х╓Й╓й╓╛╓ИхСф╠╢Э╓гюэбЁ╓╥, ╔М╔╟╔╓╔С╔в╔М╔С╔в╔х╓Д╔╥╔╖╔К╔в╔М╔С╔в╔х╓╛аВ╓И╓Л╓фмХ╓ф╓╓╓й╓╓╓╚Ёнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╔М╔╟╔у╔║╔╓╔К╓к╔Й╔С╔╞╓Р╫╙н╩╓╥╓©╦╤╟Ь╓х╓й╓К╓Х╓╕╓й╣╜о©╓╛╓й╓╓╬Л╧Г╓о, ╔Й╔Б║╪╔х╔ш╔╧╔х(╔в╔М╔п╔╓╔ю?)╓н╢имЩ╪т╓к, ╔╩╔ц╔╥╔Г╔С╓Р╫╙н╩╓╣╓Л╓©мЩмЁ╓Р©р╓м╓ф╓╞╓ю╓╣╓╓. ╔╡║╪╔х╔╕╔╖╔╓╓г PPPoE ╓Р╪б╧т╓╧╓К╓х MacOS ╓Д Windows 98 ╓х╓нюэбЁ╓╛╔у╔Й║╪╔╨╓╥╓ф╓╥╓ч╓╕╓н╓г╓╧╓╛, ╓Ё╓Л╓о╓й╓╪╓й╓н╓г╓╥╓Г╓╕╓╚? Michael Wozniak mwozniak@netcom.ca ╩А╓╛, ╓Ё╓н╦╫╬щ╓к╢ь╓╥╓фюБлю╓╥╓ф╓╞╓Л╓ч╓╥╓©. ╓ч╓©, Dan Flemming danflemming@mac.com ╩А╓о MacOS ╓г╓н╡Р╥Х╨Ж╓РдС╤║╓╥╓ф╓╞╓Л╓ч╓╥╓©. ╬ПйС╓ндС╤║╓к╢╤╪у╓╥╓ч╓╧. ╓Ё╓Л╓о, ╓╓╓О╓Ф╓К║ж╔ж╔И╔ц╔╞╔ш║╪╔К╔К║╪╔© (Black Hole router)║в╓к╦╤╟Ь╓╛╓╒╓Й╓ч╓╧. Windows 98 ╓х MacOS (╓╙╓Х╓с, ╓╙╓╫╓И╓╞б╬╓н Microsoft ╪рю╫ OS) ╓н TCP ╔я╔╠╔ц╔хаВ╫п╓о, PPPoE ╓н╔у╔Л║╪╔Ю (Ethernet ╓н MTU ╓ои╦╫Ю╓г 1500) ╓кфЧ╓И╓й╓╓╓Х╓╕╓йбГ╓╜╓й╔╩╔╟╔А╔С╔х╔╣╔╓╔╨╓Рмв╣А╓╥╓ч╓╧. ╓╫╓╥╓ф╓╣╓И╓кй╛ЁД╤ь╩ъ ("don't fragment") ╔у╔И╔╟╔с╔ц╔х╓Р (TCP ╔я╔╠╔ц╔х╓к╔г╔у╔╘╔К╔х╓г) ╔╩╔ц╔х╓╧╓К╓н╓г╓╧╓╛, Telco ╓н╔К║╪╔©╓о, й╛ЁД╓╛и╛©э ("must fragment") ╓г╓╒╓К╓Ё╓х╓Р╪╗╓╧ ICMP ╔А╔ц╔╩║╪╔╦╓Р, юэбЁ╓╥╓Х╓╕╓х╓╧╓К╔╕╔╖╔ж╔╣╔╓╔х╓кбп╓╥╓фаВ╫п╓╥╓ч╓╩╓С (╓д╓ч╓Й, ╔К║╪╔©╓ою╣╓╥╓╞ ICMP ╔я╔╠╔ц╔х╓РаВ╫п╓╥╓ф╓╓╓К╓н╓г╓╧╓╛, ╔╕╔╖╔ж╔╣╔╓╔х╓н╔у╔║╔╓╔╒╔╕╔╘║╪╔К╓╛╓╫╓Л╓РмН╓х╓╥╓ф╓╓╓К╓н╓г╓╧). ╓╫╓н╓©╓А╔╕╔╖╔ж╔╣║╪╔п╓╛ PPPoE юэбЁ╓кбп╓╥╓фбГ╓╜╓╧╓╝╓К╔у╔Л║╪╔Ю╓РаВ╫п╓╧╓К╓х Telco ╓н╔К║╪╔©╓о╓╫╓н╔у╔Л║╪╔Ю╓Р╪н╓ф╓ф╓╥╓ч╓╓, ╦╚╓Х╓╕╓х╓╥╓©╔з║╪╔╦╓╛и╫╪╗╓╣╓Л╓й╓╓╓х╓╓╓╕╬и╬У╓╛╦╫╓О╓Л╓ч╓╧ (MSS ╓Х╓Й╬╝╓╣╓╓╔з║╪╔╦╓Д╡ХаЭ╓ои╫╪╗╓╣╓Л╓ч╓╧). ╓ш╓х╓С╓и╓н Telco PPPoE юъдЙ╓о, и╦╫Ю╓г╓Ё╓н╓Х╓╕╓кюъдЙ╓╣╓Л╓ф╓╓╓К╓Х╓╕╓г╓╧. (╓╒╓╒, хЮ╓И╓╛╔К║╪╔ф╔ё╔С╔╟╔в╔М╔╟╔И╔Ю╓н╨Н╓ЙйЩ╓РмЩ╡Р╓╥╓ф╓╣╓╗╓╓╓Л╓п...). ╟Л╓д╓н╡Р╥Хк║╓о, Windows 95/98 ╔ч╔╥╔С╓г regedit ╓Р╩х╓╓, ╪║╓н╔Л╔╦╔╧╔х╔Й╔╗╔С╔х╔Й╓Рди╡ц╓╧╓К╓Ё╓х╓г╓╧. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU ╔Л╔╦╔╧╔х╔Й╔╗╔С╔х╔Й╓о, 1450 ╓нцм (╓Б╓ц╓хю╣Ён╓к╦ю╓╕╓х, TCP ╔я╔╠╔ц╔х╓Р PPPoE ╔у╔Л║╪╔Ю╓к╢╟а╢╓ке╛╧Г╓╣╓╩╓К╓к╓о 1464 ╓г╓╒╓К╓ы╓╜╓г╓г╓╧╓╛, 1450 ╓х╓╧╓К╓х, ╦╫╓О╓Л╓К╡дг╫ю╜╓╛╓╒╓Кб╬╓н IP ╔в╔М╔х╔Ё╔К╓кбп╓╥╓ф╔╗╔И║╪╔ч║╪╔╦╔С╓РЁнйщ╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧) ╓к╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╔Л╔╦╔╧╔х╔Й╔╜║╪╓о, Windows2000 ╓г Tcpip\Parameters\Interfaces\ID for adapter\MTU ╓к╟э╓╣╓Л╓©╓х╓╓╓╕йС╧П╓╛╓╒╓Й╓ч╓╥╓©. FreeBSD/NAT/PPPoE ╔К║╪╔©╓х╤╕б╦╓╣╓╩╓К╓©╓А╓к Windoze ╓н MTU ╓Рйя╧╧╓╧╓КйЩк║╓к╢ь╓╧╓К╬э╨ы╓о, Microsoft Knowledge Base ╓к╓╒╓К, хж╧Ф Q158474 - Windows TCPIP Registry Entries, ╓╙╓Х╓схж╧Ф Q120642 - TCPIP & NBT Configuration Parameters for Windows NT ╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╩дг╟╓й╓Ё╓х╓к, MacOS ╓к╓о TCP/IP юъдЙ╓Рйя╧╧╓╧╓КйЩк║╓╛╓╒╓Й╓ч╓╩╓С. ╓╥╓╚╓╥, Sustainable Softworks ╪р ╓╛хнгД╓╥╓ф╓╓╓К OTAdvancedTuner (OT ╓о OpenTransport ╓х╓╓╓╕ MacOS ╓н TCP/IP ╔╧╔©╔ц╔╞╓нл╬а╟╓н╓Ё╓х) ╓н╓Х╓╕╓й╬╕мя╔╫╔у╔х╔╕╔╖╔╒╓╛б╦╨ъ╓╥╓ч╓╧. ╓Ё╓н╔╫╔у╔х╔╕╔╖╔╒╓о, ╔Ф║╪╔╤╓╚╓И TCP/IP юъдЙ╓нйя╧╧╓Р╧т╓й╓╕╓Ё╓х╓Р╡дг╫╓к╓╥╓ч╓╧. MacOS NAT ╔Ф║╪╔╤╓о╔и╔М╔ц╔в╔ю╔╕╔С╔А╔к╔Е║╪╓╚╓И ip_interface_MTU ╓Ра╙бР╓╥, ╔э╔ц╔╞╔╧╓к╓╒╓К 1500 ╓нбЕ╓О╓Й╓к 1450 ╓РфЧно╓╥, Save as Auto Configure ╓нны╓н╔э╔ц╔╞╔╧╓Р╔╞╔Й╔ц╔╞╓╥╓ф Make Active ╓Р╔╞╔Й╔ц╔╞╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ppp ╓н╨г©╥хг (2.3 ╓╚╓╫╓Л╟й╧ъ) ╓к╓о, ╪╚ф╟е╙╓к MSS ╓Ре╛юз╓йцм╓кд╢юА╓╧╓К enable tcpmssfixup ╔Ё╔ч╔С╔и╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╣║г╫╓ои╦╫Ю╓гм╜╦З╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓Б╓╥╣Л╔п║╪╔╦╔Г╔С╓н ppp ╓Р╩х╓О╓й╓╠╓Л╓п╓й╓И╓й╓╓╬У╤╥╓к╓╒╓К╓й╓И, tcpmssd ╓н port ╓Р╓╢мВ╓к╓й╓К╓хни╓╓╓г╓╥╓Г╓╕. ╓и╓Л╓к╓БеЖ╓ф╓о╓ч╓И╓й╓╓! ╓и╓╕╓╥╓©╓И╓╓╓╓╓н? ╓Ё╓Л╓ч╓г╓н╓╧╓ы╓ф╓н╪алД╓кеЖ╓ф╓о╓ч╓И╓й╓╓╬Л╧Г, юъдЙ╔у╔║╔╓╔К, ppp ╓н╪б╧тйЩк║, ╔М╔╟╔у╔║╔╓╔К╓нЁ╨еЖиТй╛╓х netstat -rn ╔Ё╔ч╔С╔и╓н╫пно (юэбЁа╟╓хюэбЁ╦Е) ╓Р╢ч╓Ю, ╓╒╓й╓©╓н╩Щ╓ц╓ф╓╓╓Ка╢╓ф╓н╬ПйС╓Р &a.questions; ╓Д comp.unix.bsd.freebsd.misc ╔к╔Е║╪╔╧╔╟╔К║╪╔в╓ьаВ╓ц╓ф╓╞╓ю╓╣╓╓. ц╞╓╚╓╛╓╒╓й╓©╓Рю╣╓╥╓╓йЩ╦Ч╓ьфЁ╓╓╓ф╓╞╓Л╓К╓г╓╥╓Г╓╕. ╔╥╔Й╔╒╔КюэбЁ лУ: ╟Л╣э н╪ ryo@azusa.shinshu-u.ac.jp, 1997 г╞ 11 ╥Н 16 фЭ. ╓Ё╓н╔╩╔╞╔╥╔Г╔С╓г╓о, FreeBSD ╓г╔╥╔Й╔╒╔КюэбЁ╓Р╓╧╓К╩Ч╓н╟Лхле╙╓й╪алД╓кеЗ╓╗╓ч╓╧. PPP ╓╙╓Х╓с SLIP ╓к╓д╓╓╓ф╓о, ╓н╔╩╔╞╔╥╔Г╔С╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓и╓╕╓Д╓ц╓©╓И FreeBSD ╓╛╔╥╔Й╔╒╔К╔щ║╪╔х╓Рг╖╪╠╓╥╓©╓Ё╓х╓Рцн╓К╩Ж╓╛╓г╓╜╓ч╓╧╓╚? FreeBSD ╓н╔╚║╪╔м╔К╓╛╣╞ф╟╓╧╓К╩Ч, ╔╚║╪╔м╔К╓о╓╫╓нюъдЙ╓к╓╥╓©╓╛╓ц╓ф, ╔╥╔╧╔ф╔Ю╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓Р╦║╫п╓╥╓ч╓╧. ╣╞ф╟╩Ч╓ки╫╪╗╓╣╓Л╓К╔А╔ц╔╩║╪╔╦╓Р╓Х╓╞╢я╩║╓╧╓К╓╚, ╣╞ф╟╦Е╓к╪║╓н╔Ё╔ч╔С╔и╓Р╪б╧т╓╧╓К╩Ж╓к╓Х╓ц╓фЁнг╖╓г╓╜╓ч╓╧. dmesg | grep sio ╓Ё╓Ё╓к╬Е╓к╣С╓╡╓©╔Ё╔ч╔С╔и╓н╫пнонЦ╓Р╪╗╓╥╓ч╓╧. sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A ╓Ё╓Л╓о, фС╓д╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓Р╪╗╓╥╓ф╓╓╓ч╓╧. 1 хж╓А╓о, irq ╓╛ 4 ╓г 0x3f8 ╓н╔щ║╪╔х╔╒╔и╔Л╔╧╓Р╩хмя╓╥╓ф╓╓╓ч╓╧. ╓╫╓╥╓ф, 16550A-type UART ╔а╔ц╔в╓╛б╦╨ъ╓╥╓ч╓╧. 2 хжлэ╓о, ф╠╓╦╔а╔ц╔в╓Р╩х╓ц╓ф╓╓╓ч╓╧╓╛, irq ╓о 3 ╓г, 0x2f8 ╓н╔щ║╪╔х╔╒╔и╔Л╔╧╓Р╩хмя╓╥╓ф╓╓╓ч╓╧. фБб╒╓н╔Б╔г╔Ю╔╚║╪╔и╓о, дл╬О╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓хф╠╓╦╓Х╓╕╓к╟╥╓О╓Л╓ч╓╧╓╛, ╬О╩Ч╔╥╔Й╔╒╔К╔щ║╪╔х╓к╔Б╔г╔Ю╓╛юэбЁ╓╣╓Л╓ф╓╓╓К╓х╓╓╓╕ею╓г╟ш╓й╓Й╓ч╓╧. GENERIC ╔╚║╪╔м╔К╓о, ╬Е╓ннЦ╓хф╠╓╦ irq ╓х╔щ║╪╔х╔╒╔и╔Л╔╧╓нюъдЙ╓нфС╓д╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓И╓нюъдЙ╓╛╓╒╓й╓©╓н╔╥╔╧╔ф╔Ю╓к╧Г╓О╓й╓╓╬Л╧Г, ╓ч╓©╓о╔Б╔г╔Ю╔╚║╪╔и╓Рди╡ц╓╥╓©╬Л╧Г╓Д╔╚║╪╔м╔К╓нюъдЙ╟й╬Е╓к╔╥╔Й╔╒╔К╔щ║╪╔х╓Р╩Щ╓ц╓ф╓╓╓К╬Л╧Г╓о, ╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ф╓╞╓ю╓╣╓╓. ╬э╓╥╓╞╓о, ╔╚║╪╔м╔К╓н╧╫цш╓н╧Ю╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓и╓╕╓Д╓ц╓©╓И FreeBSD ╓╛╔Б╔г╔Ю╔╚║╪╔и╓Рг╖╪╠╓╥╓©╓Ё╓х╓Рцн╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧╓╚? а╟╓н╪алД╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. FreeBSD 2.0.5 ╓к╔╒╔ц╔в╔╟╔Л║╪╔и╓╥╓©╓И tty0X ╓╛╦╚╓д╓╚╓И╓й╓╞╓й╓ц╓ф╓╥╓ч╓ц╓©╓н╓г╓╧╓╛ ©╢гш╓╒╓Й╓ч╓╩╓С. ttydX ╓кеЩ╧Г╓╣╓Л╓ч╓╥╓©. ╓©╓ю, ╦е╓╓юъдЙ╔у╔║╔╓╔К╓н╓╧╓ы╓ф╓Р╧╧©╥╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓и╓╕╓Д╓ц╓©╓И FreeBSD ╓г╔╥╔Й╔╒╔К╔щ║╪╔х╓к╔╒╔╞╔╩╔╧╓г╓╜╓ч╓╧╓╚? 3 хжлэ╓н╔щ║╪╔х sio2(DOS ╓г╓о, COM3 ╓х╦ф╓п╓Л╓ч╓╧.) ╓к╓о, ╔ю╔╓╔Д╔К╔╒╔╕╔х╔г╔п╔╓╔╧╓х╓╥╓ф╓о /dev/cuaa2, ╔ю╔╓╔Д╔К╔╓╔С╔г╔п╔╓╔╧╓х╓╥╓ф /dev/ttyd2 ╓╛╓╒╓Й╓ч╓╧. ╓╫╓Л╓г╓о╓Ё╓нн╬╪т╓к╓о╓и╓н╓Х╓╕╓й╟Ц╓╓╓╛╓╒╓К╓н╓г╓╥╓Г╓╕╓╚? ╓ч╓╨, ╔ю╔╓╔Д╔К╔╓╔С╓н╩Ч╓к╓о ttydX ╓Р╩х╓╓╓ч╓╧. /dev/ttydX ╓Р╔ж╔М╔ц╔╜╔С╔╟╔Б║╪╔и╓г╔╙║╪╔в╔С╓╧╓К╓х, ╔в╔М╔╩╔╧╓обп╠Ч╓╧╓К cuaaX ╔г╔п╔╓╔╧╓╛╔╓╔С╔╒╔╞╔ф╔ё╔ж╓к╓й╓К╓н╓Рбт╓а╓ч╓╧. ╪║╓к CD ©╝╧Ф╓╛╔╒╔╞╔ф╔ё╔ж╓к╓й╓К╓н╓Рбт╓а╓ч╓╧. cuaaX ╔г╔п╔╓╔╧╓Р╔╙║╪╔в╔С╓╧╓К╓х, ╔╥╔Й╔╒╔К╔щ║╪╔х╓╛ ttydX ╔г╔п╔╓╔╧╓к╓Х╓ц╓ф╓╧╓г╓к╩х╓О╓Л╓ф╓╓╓й╓╓╓╚╓и╓╕╓╚╓РЁнг╖╓╥╓ч╓╧. ╓Б╓╥╓Ё╓н╔щ║╪╔х╓╛╩хмя╡дг╫╓г╓╒╓Л╓п, ╔щ║╪╔х╓н╩хмя╦╒╓Р ttydX ╓╚╓И║жц╔╓╓╪Х╓К║в╓н╓г╓╧. ╓ч╓©, cuaXX ╔г╔п╔╓╔╧╓о CD ©╝╧Ф╓Р╢ф╩К╓╥╓ч╓╩╓С. ╓Ё╓н╩еах╓ъ╓х╪╚ф╟╠ЧеЗ╔Б╔г╔Ю╓к╓Х╓ц╓ф, ╔Й╔Б║╪╔х╔Ф║╪╔╤║╪╓Р╔М╔╟╔╓╔С╓╣╓╩╓©╓Й, ф╠╓╦╔Б╔г╔Ю╓г╔ю╔╓╔Д╔К╔╒╔╕╔х╓╥╓©╓Й╓╧╓К╓Ё╓х╓╛╓г╓╜, ╔╥╔╧╔ф╔Ю╓н╓╒╓И╓Ф╓К╔х╔И╔ж╔К╓нллещ╓Р╦╚╓К╓Ё╓х╓╛╓г╓╜╓К╓г╓╥╓Г╓╕. ╔ч╔К╔а╔щ║╪╔х╔╥╔Й╔╒╔К╔╚║╪╔и╓Р╔╣╔щ║╪╔х╓╣╓╩╓К╓к╓о╓и╓╕╓╥╓©╓И╓Х╓╓╓н╓г╓╥╓Г╓╕╓╚? ╥╚╓Ййж╓╥╓к╓й╓Й╓ч╓╧╓╛, ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╓н╔╩╔╞╔╥╔Г╔С╓г╓о, ╓╒╓й╓©╓н╔╚║╪╔м╔К╓нюъдЙ╓к╓д╓╓╓ф╓н╬ПйС╓╛фю╓И╓Л╓К╓г╓╥╓Г╓╕. ╔ч╔К╔а╔щ║╪╔х╔╥╔Й╔╒╔К╔╚║╪╔и╓Р╩хмя╓╧╓К╓©╓А╓к╓о, ╔╚║╪╔м╔К╓нюъдЙ╔у╔║╔╓╔К╓к, ╔╚║╪╔и╓н╩Щ╓д╓╫╓Л╓╬╓Л╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓кбп╠Ч╓╧╓К sio ╓н╧т╓Р╣╜╫р╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓╥╓╚╓╥, irq ╓х╔ы╔╞╔©╔╒╔и╔Л╔╧╓о╟Л╓д╓н╔╗╔С╔х╔Й╓к╓н╓ъ╣╜╫р╓╥╓ф╓╞╓ю╓╣╓╓. ╔╚║╪╔и╬Е╓н╓╧╓ы╓ф╓н╔щ║╪╔х╓о╟Л╓д╓н irq ╓Р╤╕м╜╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╟Л╢сю╜╓Р╩Щ╓©╓╩╓К╓©╓А╓к╓Б, ╨г╦Е╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓н╫Й╓г irq ╓Р╩ьдЙ╓╥╓ф╓╞╓ю╓╣╓╓. ╓ч╓©, COM_MULTIPORT ╔╙╔в╔╥╔Г╔С╓Биу╓╠╓ф╓╞╓ю╓╣╓╓. ╪║╓к╪╗╓╧нЦ╓о, AST ╓н 4 ╔щ║╪╔х╔╥╔Й╔╒╔К╔╚║╪╔и╓Р irq 7 ╓гюъдЙ╓╥╓©╓Б╓н╓г╓╧. 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 ╓Ё╓н╔у╔И╔╟╓о╔ч╔╧╔©╔щ║╪╔х╓╛╔ч╔╓╔й║╪хж╧Ф 7(0x700) ╓Р╩Щ╓ц╓ф╓╓╓ф, ╦║╫п╩Ч╓н©гцг╣║г╫╓Рм╜╦З╓к╓╥(0x080), ╓╫╓╥╓ф╓╧╓ы╓ф╓н╔щ║╪╔х╓г irq ╓Р╤╕м╜╓╧╓К(0x001)╓х╓╓╓╕╓Ё╓х╓Р╟улё╓╥╓ф╓╓╓ч╓╧. FreeBSD ╓гйё©Т╓н╔ч╔К╔а╔щ║╪╔х╔╥╔Й╔╒╔К╔╚║╪╔и╢ж╓г irq ╓Р╤╕м╜╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╧╓╚? ╦╫╨ъ╓н╓х╓Ё╓М╓о╓г╓╜╓ч╓╩╓С. ╓╫╓Л╓╬╓Л╓н╔╚║╪╔икХ╓к╟ш╓й╓ц╓© irq ╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓. ╔щ║╪╔х╓к╔г╔у╔╘╔К╔х╓н╔я╔И╔А║╪╔©╓РюъдЙ╓╧╓К╩Ж╓о╫пмХ╓ч╓╧╓╚? ttydX ╔г╔п╔╓╔╧(╓ч╓©╓о cuaaX ╔г╔п╔╓╔╧)╓о, ╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓н╓©╓А╓к╔╙║╪╔в╔С╓╧╓Ки╦╫Юе╙╓й╔г╔п╔╓╔╧╓г╓╧. ╔в╔М╔╩╔╧╓╛╓╫╓н╔щ║╪╔х╓Р╔╙║╪╔в╔С╓╧╓К╩Ч, ╔в╔М╔╩╔╧╓о╔г╔у╔╘╔К╔х╓нц╪кЖ I/O юъдЙ╓Р╪Хфю╓╥╓ч╓╧. ╓Ё╓Л╓И╓нюъдЙ╓о╪║╓н╔Ё╔ч╔С╔и╓гЁнг╖╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. stty -a -f /dev/ttyd1 ╓Ё╓н╔г╔п╔╓╔╧╓кбп╓╧╓КюъдЙ╓Рйя╧╧╓╥╓©╬Л╧Г, ╓╫╓нюъдЙ╓о╔г╔п╔╓╔╧╓Р╔╞╔М║╪╔╨╓╧╓К╓ч╓гм╜╦З╓г╓╧. ╔г╔п╔╓╔╧╓Р╨ф╔╙║╪╔в╔С╓╥╓©╬Л╧Г, ╓╫╓Л╓И╓нюъдЙ╓о╔г╔у╔╘╔К╔х╓клА╓ц╓ф╓╥╓ч╓╓╓ч╓╧. ╔г╔у╔╘╔К╔х╓нюъдЙ╓кйя╧╧╓Р╡ц╓╗╓К╓©╓А╓к, ║ж╫И╢ЭюъдЙ║в╔г╔п╔╓╔╧╓Р╔╙║╪╔в╔С╓╥, юъдЙ╓Р╫╓ю╣╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. нЦ╓╗╓п, CLOCAL ╔Б║╪╔и, 8 ╔с╔ц╔х, XON/XOFF ╔у╔М║╪ю╘╦Ф╓х╓╓╓╕юъдЙ╓Р ttyd5 ╓н╔г╔у╔╘╔К╔х╓к╓╥╓©╓╓╬Л╧Г, ╪║╓н╓Х╓╕╓к╧т╓й╓ц╓ф╓╞╓ю╓╣╓╓. stty -f /dev/ttyid5 clocal cs8 ixon ixoff ╓Ё╓нюъдЙ╓Р╧т╓й╓╕╓©╓А╓н╔Ё╔ч╔С╔и╓Р╣╜╫р╓╧╓К╓н╓ке╛юз╓й╔у╔║╔╓╔К╓о, /etc/rc.serial ╓г╓╧. ╓Ё╓Л╓г╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓╛ ttyd5 ╓Р╔╙║╪╔в╔С╓╥╓©╩Ч╓к, ╓Ё╓Л╓И╓нюъдЙ╓Р╔г╔у╔╘╔К╔х╓г╪Хфю╓╥╓ч╓╧. ╓╥╓╚╓╥, ╓Ё╓╕╓╓╓ц╓©╔Й╔С╔╞╓к╓Х╓КюъдЙ╓ойя╧╧╡дг╫╓г╓╧. ║жюъдЙ╦гдЙ║в╔г╔п╔╓╔╧╓Рд╢ю╟╓╥╓ф╓Д╓К╓Ё╓х╓к╓Х╓ц╓ф, ╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓к╓Х╓КюъдЙ╓нйя╧╧╓Р╤ь╩ъ╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. нЦ╓╗╓п, ttyd5 ╓ндл©╝б╝еы╓Р 57600bps ╓к╦гдЙ╓╧╓К╓к╓о, ╪║╓н╓Х╓╕╓к╧т╓ц╓ф╓╞╓ю╓╣╓╓. stty -f /dev/ttyld5 57600 ╓Ё╓Л╓к╓Х╓Й, ╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓о ttyd5 ╓Р╔╙║╪╔в╔С╓╥, ╔щ║╪╔х╓ндл©╝б╝еы╓Рйя╧╧╓╥╓Х╓╕╓х╓╥╓ч╓╧╓╛, дл©╝б╝еы╓о 57600bps ╓н╓ч╓ч╓к╓й╓Й╓ч╓╧. еЖаЁ╓н╓Ё╓х╓й╓╛╓И, ╫И╢ЭюъдЙ╔г╔п╔╓╔╧╓╙╓Х╓с, юъдЙ╦гдЙ╔г╔п╔╓╔╧╓о root ╓н╓ъ╓╛╫Я╓╜╧Ч╓ъ╓г╓╜╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓╥╓╚╓╥, MAKEDEV ╔╧╔╞╔Й╔в╔х╓о╔г╔п╔╓╔╧╔╗╔С╔х╔Й╓Р╨Ню╝╓╧╓К╩Ч╓к, ╓Ё╓н╓Х╓╕╓йюъдЙ╓о╧т╓╓╓ч╓╩╓С. ╓и╓н╓Х╓╕╓к╓╥╓©╓И╔Б╔г╔Ю╥пмЁ╓г╔ю╔╓╔Д╔К╔╒╔ц╔в╔М╔╟╔╓╔С╓╛╓г╓╜╓К╓н╓г╓╥╓Г╓╕╓╚? ╓д╓ч╓Й, ╔╓╔С╔©║╪╔м╔ц╔х╔╣║╪╔с╔╧╔в╔М╔п╔╓╔ю║╪╓к╓й╓Й╓©╓╓╓н╓г╓╧╓м. ╓╫╓Л╓к╓о╓ч╓╨, 1 бФ╓й╓╓╓╥йё©Т╓н╪╚ф╟╠ЧеЗ╔Б╔г╔Ю╓╛и╛мв╓г╓╧. ╔Б╔г╔Ю╓к╓о, ╔╜╔Ц╔Й╔╒║╪╓Р╦║╫п╓╥╓©╩Ч╓к╓о CD ©╝╧Ф╓Р╫пно╓╥, ╓╫╓╕╓г╓й╓╓╬Л╧Г╓к╓о╫пно╓╥╓й╓╓╓Ё╓х╓╛и╛мв╓х╓╣╓Л╓ч╓╧. ╓ч╓© DTR ©╝╧Ф╓╛ on ╓╚╓И off ╓к╓й╓ц╓©╩Ч╓к╓о, ееоц╡СюЧ╓Рюзцг╓╥, ╔Б╔г╔Ю╪╚©х╓Р╔Й╔╩╔ц╔х╓╥╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓╙╓╫╓И╓╞, RTS/CTS ╔у╔М║╪ю╘╦Ф╓Р╩х╓╕╓╚, ╔М║╪╔╚╔К╔у╔М║╪ю╘╦Ф╓Р╓ч╓ц╓©╓╞╩х╓О╓й╓╓╓╚╓н╓и╓а╓И╓╚╓г╓╥╓Г╓╕. ╨г╦Е╓к, ╔Ё╔С╔т╔Е║╪╔©╓х╔Б╔г╔Ю╓н╢ж╓о╦гдЙб╝еы╓г╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓©╓ю, (╔ю╔╓╔Д╔К╔╒╔ц╔в╓нх╞╦ф╪т╓кбп╓╥╓ф©фюз╓г╓╒╓К╓©╓А╓к╓о, )╓Ё╓а╓И╓н╔Б╔г╔Ю╓хаЙ╪Йб╕╓н╔Б╔г╔Ю╓н╢ж╓нб╝еы╓Р, ╔Б╔г╔Ю╢ж╓г╪╚ф╟д╢ю╟╓г╓╜╓К╓Х╓╕╓к╓╧╓ы╓╜╓г╓╥╓Г╓╕. б©╓╞╓╒╓К╔ь╔╓╔╨╔Ё╔ч╔С╔и╦ъ╢╧╔Б╔г╔Ю╓кбп╓╥╓ф, ╪║╓н╔Ё╔ч╔С╔и╓о╓Ё╓Л╓И╓нюъдЙ╓Р╧т╓й╓╓, ╓╫╓нюъдЙ╓Рит╢Ьх╞ю╜╔А╔Б╔Й║╪╓кйщб╦╓╥╓ч╓╧. AT&C1&D3&K3&Q6S0=1&W MS-DOS ╓н╔©║╪╔ъ╔й╔К╔в╔М╔╟╔И╔Ю╓кмЙ╓И╓╨╓к AT ╔Ё╔ч╔С╔и╓РаВ╫п╓╧╓К╓к╓о, ║жAT ╔Ё╔ч╔С╔и╓РфЧно╓╧╓К╓к╓о║в╓н╔╩╔╞╔╥╔Г╔С╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╪║╓к, ╔Б╔г╔Юмя╓н╔╗╔С╔х╔Й╓Р /etc/ttys ╓к╨Ню╝╓╥╓ч╓╥╓Г╓╕. ╓Ё╓н╔у╔║╔╓╔К╓к╓о, ╔╙╔з╔Л║╪╔ф╔ё╔С╔╟╔╥╔╧╔ф╔Ю╓╛╔М╔╟╔╓╔С╓Рбт╓ц╓ф╓╓╓К╓╧╓ы╓ф╓н╔щ║╪╔х╓╛╣╜╫р╓╣╓Л╓ф╓╓╓ч╓╧. ╟й╡╪╓н╓Х╓╕╓й╧т╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ttyd1 "/usr/libexec/getty std.57600" dialup on insecure ╓Ё╓н╧т╓о, 2 хжлэ╓н╔╥╔Й╔╒╔К╔щ║╪╔х(/dev/ttyd1)╓к╓о, 57600bps ╓ндл©╝б╝еы╓г╔н╔С╔я╔Й╔ф╔ё(std.57600: ╓Ё╓Л╓о /etc/gettytab ╓к╣╜╫р╓╣╓Л╓ф╓╓╓ч╓╧)╓н╔Б╔г╔Ю╓╛юэбЁ╓╣╓Л╓ф╓╓╓К╓Ё╓х╓Р╪╗╓╥╓ф╓╓╓ч╓╧. ╓Ё╓н╔щ║╪╔х╓нц╪кЖ╔©╔╓╔в╓о dialup ╓г╓╧. ╓ч╓©╓Ё╓н╔щ║╪╔х╓о, on ╓╧╓й╓О╓а╔М╔╟╔╓╔С╡дг╫╓г╓╒╓Й, insecure ╓Ё╓Л╓о root ╓╛╓Ё╓н╔щ║╪╔х╓╚╓Ид╬юэ╔М╔╟╔╓╔С╓╧╓К╓н╓о, ╣Ж╡д╓╣╓Л╓ф╓╓╓й╓╓╓х╓╓╓╕╓Ё╓х╓Р╟улё╓╥╓ч╓╧. ╓Ё╓н╓Х╓╕╓й╔ю╔╓╔Д╔К╔╓╔С╔щ║╪╔х╓кбп╓╥╓ф╓о, ttydX ╓н╔╗╔С╔х╔Й╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ╓Ё╓Л╓╛╟Лхле╙╓й, ╔©║╪╔ъ╔й╔К╔©╔╓╔в╓х╓╥╓ф dialup ╓Р╩х╓╕йЩк║╓г╓╧. б©╓╞╓н╔Ф║╪╔╤║╪╓о, .profile ╓Д .login ╓г, ╔М╔╟╔╓╔С╩Ч╓нц╪кЖ╔©╔╓╔в╓╛ dialup ╓г╓╒╓ц╓©╬Л╧Г╓к╓о, ╪б╨щ╓нц╪кЖ╔©╔╓╔в╓Р╔Ф║╪╔╤║╪╓клД╓╓╧Г╓О╓╩╓К╓Х╓╕╓кюъдЙ╓╥╓ф╓╓╓ч╓╧. ╓Ё╓ннЦ╓о, ╔щ║╪╔х╓╛ insecure ╓г╓╥╓©. ╓Ё╓н╔щ║╪╔х╓г root ╓к╓й╓К╓к╓о, ╟Лхл╔Ф║╪╔╤║╪╓х╓╥╓ф╔М╔╟╔╓╔С╓╥, ╓╫╓Л╓╚╓И su ╓Р╩х╓ц╓ф root ╓к╓й╓ц╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥, secure ╓Р╩ьдЙ╓╥╓©╓й╓И╓п, д╬юэ root ╓╛╓╫╓н╔щ║╪╔х╓╚╓И╔М╔╟╔╓╔С╓г╓╜╓ч╓╧. /etc/ttys ╓кйя╧╧╓Р╡ц╓╗╓©╦Е╓о, HUP ╔╥╔╟╔й╔К(SIGHUP)╓Р init ╔в╔М╔╩╔╧╓каВ╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. &prompt.root; kill -HUP 1 ╓Ё╓наЮ╨Н╓о init ╔в╔М╔╩╔╧╓к /etc/ttys ╓Р╨ффи╓ъ╧Ч╓ъ╓╣╓╩╓ч╓╧. ╓Ё╓Л╓к╓Х╓Й, init ╔в╔М╔╩╔╧╓о getty ╔в╔М╔╩╔╧╓Р╓╧╓ы╓ф╓н on ╓х╓й╓ц╓ф╓╓╓К╔щ║╪╔х╓к╣╞ф╟╓╣╓╩╓ч╓╧. ╪║╓н╓Х╓╕╓к╓╥╓ф, ╔щ║╪╔х╓╛╔М╔╟╔╓╔С╡дг╫╓╚╓Рцн╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. &prompt.user; ps -ax | grep '[t]tyd1' ╔М╔╟╔╓╔С╡дг╫╓г╓╒╓Л╓п, ╪║╓н╓Х╓╕╓й╫пно╓╛фю╓И╓Л╓К╓о╓╨╓г╓╧. 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1 ╔ю╔Ю╔©║╪╔ъ╔й╔К╓Р FreeBSD ╔ч╔╥╔С╓кюэбЁ╓╧╓К╓к╓о╓и╓╕╓╥╓©╓И╓Х╓╓╓н╓г╓╥╓Г╓╕╓╚? ╓Б╓╥, б╬╓н╔Ё╔С╔т╔Е║╪╔©║╪╓Р FreeBSD ╓нц╪кЖ╓х╓╥╓фюэбЁ╓╥╓©╓╓╓н╓й╓И╓п, ╓╙╦ъ╓╓╓н╔╥╔Й╔╒╔К╔щ║╪╔х╢ж╓Р╓д╓й╓╟╔л╔К╔Б╔г╔Ю╔╠║╪╔ж╔К(лУцМ: ╔Й╔п║╪╔╧╔╠║╪╔ж╔К╓Б╓╥╓╞╓о╔╞╔М╔╧╔╠║╪╔ж╔К╓х╓Б╦ф╓п╓Л╓ч╓╧)╓Рмя╟у╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥, ╢Шю╫╓нц╪кЖ╓Р╩х╓╕╬Л╧Г╓о, иуб╟╓╧╓К╔ч╔к╔Е╔╒╔К╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╥╓ф, /etc/ttys ╓Р╬Е╓хф╠╓╦╓Х╓╕╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. нЦ╓╗╓п, WYSE-50 ╓х╓╓╓╕ц╪кЖ╓Р 5 хжлэ╓н╔щ║╪╔х╓кюэбЁ╓╧╓К╓й╓И╓п, ╪║╓н╓Х╓╕╓й╔╗╔С╔х╔Й╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure ╓Ё╓ннЦ╓о, /dev/ttyd4 ╔щ║╪╔х╓к╔н╔С╔я╔Й╔ф╔ё, ц╪кЖ╔©╔╓╔в╓╛ wyse50, дл©╝б╝еы╓╛ 38400bps(std.38400: ╓Ё╓нюъдЙ╓о, /etc/gettytab ╓к╣╜╫р╓╣╓Л╓ф╓╓╓ч╓╧)╓нц╪кЖ╓╛б╦╨ъ╓╥╓ф╓╙╓Й, root ╓н╔М╔╟╔╓╔С╓╛╣Ж╡д╓╣╓Л╓ф╓╓╓К(secure)╓г╓╒╓К╓Ё╓х╓Р╪╗╓╥╓ф╓╓╓ч╓╧. ╓и╓╕╓╥╓ф tip ╓Д cu ╓╛ф╟╓╚╓й╓╓╓н╓г╓╧╓╚? ╓╙╓╫╓И╓╞╓╒╓й╓©╓н╔╥╔╧╔ф╔Ю╓г╓о tip ╓Д cu ╓о uucp ╔Ф║╪╔╤║╪╓╚, dialer ╔╟╔К║╪╔в╓к╓Х╓ц╓ф╓н╓ъ╪б╧т╡дг╫╓й╓н╓г╓╥╓Г╓╕. dialer ╔╟╔К║╪╔в╓о, ╔Б╔г╔Ю╓Д╔Й╔Б║╪╔х╔╥╔╧╔ф╔Ю╓к╔╒╔╞╔╩╔╧╓╧╓К╔Ф║╪╔╤║╪╓Р╢имЩ╓╧╓К╓©╓А╓к, ╩хмя╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╫╓Л╓к╓о, /etc/group ╔у╔║╔╓╔К╓н dialer ╔╟╔К║╪╔в╓к╓╒╓й╓©╪╚©х╓Рди╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓╕╓╧╓КбЕ╓О╓Й╓к, ╪║╓н╓Х╓╕╓к╔©╔╓╔в╓╧╓К╓Ё╓х╓к╓Х╓Й, ╓╒╓й╓©╓н╔╥╔╧╔ф╔Ю╓на╢╔Ф║╪╔╤║╪╓╛ tip ╓Д cu ╓Р╪б╧т╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. &prompt.root; chmod 4511 /usr/bin/cu &prompt.root; chmod 4511 /usr/bin/tip ╩Д╓н Hayes ╔Б╔г╔Ю╓о╔╣╔щ║╪╔х╓╣╓Л╓ф╓╓╓й╓╓╓н╓г╓╧╓╛, ╓и╓╕╓╥╓©╓И╓╓╓╓╓н╓г╓╥╓Г╓╕╓╚. ╪б╨щ, tip ╓н╔╙╔С╔И╔╓╔С╔ч╔к╔Е╔╒╔К╓о╦е╓╞╓й╓ц╓ф╓╓╓ч╓╧. ╓╧╓г╓к, Hayes ╔ю╔╓╔╒╔И╓╛╪баУ╓╣╓Л╓ф╓╓╓ч╓╧. /etc/remote ╔у╔║╔╓╔К╓г, at=hayes ╓х╩ьдЙ╓╥╓ф╓╞╓ю╓╣╓╓. Hayes ╔и╔И╔╓╔п╓о, ╨г╤А╓н╔Б╔г╔Ю╓н©╥╓╥╓╓╣║г╫╓г╓╒╓К, BUSY, NO DIALTONE, CONNECT 115200 ╓й╓и╓н╔А╔ц╔╩║╪╔╦╓Рг╖╪╠╓г╓╜╓К╓ш╓и╦╜╓╞╓о╓й╓╞, ц╠╓к╨╝мП╓Р╣╞╓Ё╓╧╓ю╓╠╓г╓╧. tip ╓Р╩х╓╕╬Л╧Г╓к╓о(ATX0&W╓х╓╧╓К╓й╓и╓╥╓ф), ╓Ё╓Л╓И╓н╔А╔ц╔╩║╪╔╦╓Ри╫╪╗╓╣╓╩╓й╓╓╓Х╓╕╓к╓╥╓й╓╞╓ф╓о╓╓╓╠╓ч╓╩╓С. ╓ч╓©, tip ╓н╔ю╔╓╔Д╔К╓н╔©╔╓╔Ю╔╒╔╕╔х╓о 60 иц╓г╓╧. ╔Б╔г╔Ю╓н╔©╔╓╔Ю╔╒╔╕╔хюъдЙ╓о╓╫╓Л╓Х╓Йц╩╓╞╓╧╓ы╓╜╓г╓╒╓Й, ╓╫╓╕╓╥╓й╓╓╓х tip ╓одл©╝╓клДбЙ╓╛╓╒╓К╓хх╫цг╓╧╓К╓г╓╥╓Г╓╕. ATS7=45&W ╓Р╪б╧т╓╥╓ф╓╞╓ю╓╣╓╓. ╪б╨щ, ╔г╔у╔╘╔К╔х╓н tip ╓о Hayes ╓н╢╟а╢╓й╔╣╔щ║╪╔х╓Р╓╥╓ф╓╓╓К╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. ╡Р╥ХйЩк║╓о /usr/src/usr.bin/tip/tip ╓н╡╪╓н tipconf.h ╓Рйя╧╧╓╧╓К╓Ё╓х╓г╓╧. ╓Б╓а╓М╓С, ╓Ё╓Л╓к╓о╔╫║╪╔╧гшиш╔у╔║╔╓╔К╓╛и╛мв╓г╓╧. #define HAYES 0 ╓х╣╜╫р╓╣╓Л╓ф╓╓╓К╧т╓Р #define HAYES1 ╓хйя╧╧╓╥, ╓╫╓╥╓ф make ╓х make install ╓Р╪б╧т╓╥╓ч╓╧. ╓Ё╓Л╓г╓╕╓ч╓╞ф╟╨Н╓╧╓К╓г╓╥╓Г╓╕. ╓Ё╓Л╓И╓н AT ╔Ё╔ч╔С╔и╓РфЧно╓╧╓К╓к╓о? /etc/remote ╔у╔║╔╓╔К╓нцФ╓г direct ╔╗╔С╔х╔Й╓Р╨Н╓Й╓ч╓╧. ╓©╓х╓╗╓п╔Б╔г╔Ю╓╛ 1 хжлэ╓н╔╥╔Й╔╒╔К╔щ║╪╔х╓г╓╒╓К /dev/cuaa0╓кюэбЁ╓╣╓Л╓ф╓╓╓К╬Л╧Г, ╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. cuaa0:dv=/dev/cuaa0:br#19200:pa=none ╔Б╔г╔Ю╓╛╔╣╔щ║╪╔х╓╧╓К╨гбГ╓н bps ╔Л║╪╔х╓Р br ╔у╔ё║╪╔К╔и╓к╩х╓╓╓ч╓╧. ╓╫╓╥╓ф tip cuaa0 ╓Р╪б╧т╓╧╓К╓х, ╔Б╔г╔Ю╓╛мЬмя╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╧. /dev/cuaa0╓╛╔╥╔╧╔ф╔Ю╓кб╦╨ъ╓╥╓й╓╓╬Л╧Г╓о, ╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.root; cd /dev &prompt.root; ./MAKEDEV cuaa0 ╓ч╓©╓о root ╓к╓й╓ц╓ф╟й╡╪╓н╓Х╓╕╓к cu ╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ч╓╧. &prompt.root; cu -lline -sspeed line ╓к╓о╔╥╔Й╔╒╔К╔щ║╪╔х(нЦ╓╗╓п /dev/cuaa0)╓Р╩ьдЙ╓╥╓ч╓╧. ╓╫╓╥╓ф speed ╓к╓оюэбЁ╓╧╓Кб╝еы(нЦ╓╗╓п 57600)╓Р╩ьдЙ╓╥╓ч╓╧. ╓╫╓н╦Е AT ╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓©╓И, ~. ╓хфЧно╓╧╓Л╓п╫╙н╩╓╥╓ч╓╧. pn ╣║г╫╓н <@> ╣╜╧Ф╓╛╩х╓╗╓ч╓╩╓С! ееоцхж╧Ф (pn) ╣║г╫╓нцФ╓г╓н <@> ╣╜╧Ф╓о, tip ╓к /etc/phones ╓к╓╒╓Кееоцхж╧Ф╓Р╩╡╬х╓╧╓К╓Х╓╕╓кеа╓╗╓ч╓╧. ╓╥╓╚╓╥ <@> ╓нй╦╩З╓о /etc/remote ╓н╓Х╓╕╓йюъдЙ╔у╔║╔╓╔К╓нцФ╓г╓офц╪Лй╦╩З╓х╓й╓Й╓ч╓╧. ╓╫╓Ё╓г, ╔п╔ц╔╞╔╧╔И╔ц╔╥╔Е╓Р╩х╓ц╓ф╔╗╔╧╔╠║╪╔в╓Р╧т╓╓╓ч╓╧. pn=\@ ╔Ё╔ч╔С╔и╔И╔╓╔С╓╚╓Иееоцхж╧Ф╓Р╩ьдЙ╓╧╓К╓к╓о? generic ╔╗╔С╔х╔Й╓х╦ф╓п╓Л╓К╓Б╓н╓Р /etc/remote ╓кди╡ц╓╥╓ч╓╧. нЦ╓╗╓п, ╪║╓н╓Х╓╕╓к╓╥╓ч╓╧. 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: ╓╫╓╥╓ф tip -115200 5551234 ╓н╓Х╓╕╓кмЬмя╓г╓╜╓ч╓╧. tip ╓Х╓Й cu ╓Р╩х╓╓╓©╓╓╬Л╧Г, cu ╓н generic ╔╗╔С╔х╔Й╓Р╩х╓╓╓ч╓╧. cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du: ╓╫╓╥╓ф cu 5551234 -s 115200 ╓х╪б╧т╓╥╓ч╓╧. кХ╡С bps ╔Л║╪╔х╓РфЧно╓╥╓й╓╠╓Л╓п╓╓╓╠╓ч╓╩╓С╓╚? tip1200 ╓Д cu1200 мя╓н╔╗╔С╔х╔Й╓Р╣╜╫р╓╥, е╛юз╓йдл©╝б╝еы╓Р br ╔у╔ё║╪╔К╔и╓кюъдЙ╓╥╓ч╓╧. tip ╓о 1200bps ╓╛ю╣╓╥╓╓╔г╔у╔╘╔К╔хцм╓г╓╒╓К╓х╓ъ╓й╓╧╓н╓г, tip1200 ╔╗╔С╔х╔Й╓Р╩╡╬х╓╥╓ч╓╧. ╓Б╓а╓М╓С 1200bps ╓Р╩х╓О╓й╓╠╓Л╓п╓й╓И╓й╓╓╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. ╔©║╪╔ъ╔й╔К╔╣║╪╔п╓Р╥пмЁ╓╥╓фйё©Т╓н╔ш╔╧╔х╓ь╔╒╔╞╔╩╔╧╓╥╓©╓╓╓н╓г╓╧╓╛. кХ╡СюэбЁ╓╣╓Л╓К╓н╓Рбт╓ц╓ф CONNECT <host> ╓хфЧно╓╧╓К╓╚╓О╓Й╓к, tip ╓н cm ╣║г╫╓Р╩х╓╓╓ч╓╧. нЦ╓╗╓п, /etc/remote ╓к╪║╓н╓Х╓╕╓й╔╗╔С╔х╔Й╓Рди╡ц╓╥╓ч╓╧. 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: ╓Ё╓Л╓г, tip pain ╓Д tip muffin ╓х╪б╧т╓╧╓К╓х pain ╓Д muffin ╓н╔ш╔╧╔х╓кюэбЁ╓╧╓К╓Ё╓х╓╛╓г╓╜, tip deep13 ╓Р╪б╧т╓╧╓К╓х╔©║╪╔ъ╔й╔К╔╣║╪╔п╓кюэбЁ╓╥╓ч╓╧. tip ╓Р╩х╓ц╓ф╓╫╓Л╓╬╓Л╓н╔╣╔╓╔х╓нйё©Т╓н╡СюЧ╓кюэбЁ╓г╓╜╓ч╓╧╓╚? ╓Ё╓Л╓обГЁь╓кееоц╡СюЧ╓╛╓╓╓╞╓д╓╚╓╒╓ц╓ф, ©ТюИ©м╓нЁью╦╓╛юэбЁ╓╥╓Х╓╕╓х╓╧╓К╬Л╧Г╓к╓Х╓╞╓╒╓КлДбЙ╓г╓╧. ╓╒╓й╓©╓нбГЁь╓н╔╗╔С╔х╔Й╓Р /etc/remote ╔у╔║╔╓╔К╓к╨Ню╝╓╥╓ф, pn ╓н╔у╔ё║╪╔К╔и╓к╓о <\@> ╓Р╩х╓╓╓ч╓╧. big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none: ╓╫╓╥╓ф /etc/phones ╔у╔║╔╓╔К╓кбГЁь╓нееоцхж╧Ф╓н╟ЛмВ╓Р╫Я╓╜╓ч╓╧. big-university 5551111 big-university 5551112 big-university 5551113 big-university 5551114 tip ╓о╟Ло╒╓нееоцхж╧Ф╓Р╬Е╓╚╓И╫Г╓к╩Н╓ъ╓ф, ╨г╫╙е╙╓кюэбЁ╓г╓╜╓й╓╠╓Л╓п╓╒╓╜╓И╓А╓ч╓╧. ╔Й╔х╔И╔╓╓РбЁ╓╠╓╣╓╩╓©╓╓╬Л╧Г╓о, tip ╓Р while ╔К║╪╔в╓кфЧ╓Л╓ф╪б╧т╓╥╓ч╓╧. CTRL+P ╓Р 1 ╡СаВ╓К╓©╓А╓к 2 еы╡║╓╧и╛мв╓╛╓╒╓К╓н╓о╓й╓╪? CTRL+P ╓одл╬О║ж╤╞ю╘(force)║вй╦╩З╓г╓╒╓Й, tip ╓к╪║╓нй╦╩З╓╛╔Й╔ф╔И╔К╔г║╪╔©╓г╓╒╓К╓Ё╓х╓Реа╓╗╓ч╓╧. ╤╞ю╘й╦╩З╓о║жйя©Т╓нюъдЙ║в╓Р╟улё╓╧╓К ~s ╔╗╔╧╔╠║╪╔в╓к╓Х╓ц╓ф, б╬╓нй╦╩З╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ~sforce=<single-char> ╓хфЧно╓╥╓ф╡Ч╧т╓╥╓ч╓╧. <single-char> ╓о, г╓╟у╓н 1 ╔п╔╓╔хй╦╩З╓г╓╧. <single-char> ╓Р╬йн╛╓╧╓К╓х NUL й╦╩З╓к╓й╓Й, ╓Ё╓Л╓о CTRL+2 ╓Д CTRL+SPACE ╓Р╡║╓╥╓ф╓БфЧно╓г╓╜╓ч╓╧. ╓╓╓╞╓д╓╚╓н╔©║╪╔ъ╔й╔К╔╣║╪╔п╓г╩х╓О╓Л╓ф╓╓╓К╓н╓Р╦╚╓©╓ю╓╠╓г╓╧╓╛, <single-char> ╓к SHIFT+CTRL+6 ╓кЁД╓ЙеЖ╓ф╓К╓н╓Б╓Х╓╓╓г╓╥╓Г╓╕. $HOME/.tiprc ╓к╪║╓н╓Х╓╕╓кдЙ╣а╓╧╓К╓Ё╓х╓г, г╓╟у╓нй╦╩З╓Р╤╞ю╘й╦╩З╓х╓╥╓фмЬмя╓г╓╜╓ч╓╧. force=<single-char> бг╓а╧Ч╓С╓юй╦╩З╓╛фмаЁ╓╧╓ы╓фбГй╦╩З╓к╓й╓Й╓ч╓╥╓©?? CTRL+A ╓Р╡║╓╥╓ф╓╥╓ч╓╓, caps-lock ╔╜║╪╓╛╡У╓Л╓ф╓╓╓К╬Л╧Г╓н╓©╓А╓кюъ╥в╓╣╓Л╓© tip ╓н raise character ╔Б║╪╔и╓кфЧ╓ц╓©╓н╓г╓╥╓Г╓╕. ╢Ш╓к╫р╓ы╓© ~s ╓Р╩х╓ц╓ф, raisechar ╓Р╓Х╓Йе╛юз╓йцм╓кйя╧╧╓╥╓ф╓╞╓ю╓╣╓╓. ╓Б╓╥╓Ё╓Л╓Ин╬йЩ╓н╣║г╫╓Р╩хмя╓╥╓й╓╓╓н╓г╓╒╓Л╓п, ╤╞ю╘й╦╩З╓хф╠╓╦юъдЙ╓к╓╧╓К╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╟й╡╪╓о CTRL+2 ╓Д CTRL+A ╓й╓и╓Рияхк╓к╩х╓╕и╛мв╓н╓╒╓К Emacs ╔Ф║╪╔╤╓к╓╕╓ц╓ф╓д╓╠╓н .tiprc ╔у╔║╔╓╔К╓н╔╣╔С╔в╔К╓г╓╧. force=^^ raisechar=^^ ^ ╓о SHIFT+CTRL+6 ╓г╓╧. tip ╓г╔у╔║╔╓╔К╓Ре╬аВ╓╧╓К╓к╓о? ╓Б╓╥б╬╓н UNIX ╓н╔╥╔╧╔ф╔Ю╓хюэбЁ╓╥╓ф╓╓╓К╓й╓И, ~p(аВ©╝)╓Д ~t(╪У©╝)╓г╔у╔║╔╓╔К╓наВ╪У©╝╓╛╓г╓╜╓ч╓╧. ╓Ё╓Л╓И╓н╔Ё╔ч╔С╔и╓о, аЙ╪Й╓н╔╥╔╧╔ф╔Ю╓н╬Е╓г cat ╓Д echo ╓Р╪б╧т╓╧╓К╓Ё╓х╓гаВ╪У©╝╓Р╓╥╓ч╓╧. ╫Я╪╟╓о╟й╡╪╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. ~p <╔М║╪╔╚╔К╓н╔у╔║╔╓╔Кл╬> [<╔Й╔Б║╪╔х╓н╔у╔║╔╓╔Кл╬>] ~t <╔Й╔Б║╪╔х╓н╔у╔║╔╓╔Кл╬> [<╔М║╪╔╚╔К╓н╔у╔║╔╓╔Кл╬>] ╓Ё╓нйЩк║╓г╓о╔╗╔И║╪╔а╔╖╔ц╔╞╓Р╧т╓╓╓ч╓╩╓С╓н╓г, zmodem ╓й╓и╓нб╬╓н╔в╔М╔х╔Ё╔К╓Р╩х╓ц╓©йЩ╓╛╓Х╓╓╓г╓╥╓Г╓╕. tip ╓╚╓И zmodem ╓Р╪б╧т╓╧╓К╓к╓о? ╓ч╓╨╩о╓А╓к, FreeBSD Ports Collection(lrzsz╓х rzsz ╓х╓н, 2 ╓д╓ндл©╝╔╚╔ф╔╢╔Й║╪╓н╔в╔М╔╟╔И╔Ю╓н╓и╓а╓И╓╚)╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓ч╓╧. ╔у╔║╔╓╔К╓Р╪У©╝╓╧╓К╓к╓о, ╔Й╔Б║╪╔хб╕╓гаВ©╝╔в╔М╔╟╔И╔Ю╓Р╣╞ф╟╓╥╓ч╓╧. ╓╫╓╥╓ф, Enter ╔╜║╪╓Р╡║╓╥╓ф╓╚╓И ~C rz (lrzsz ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓©╬Л╧Г╓о ~C lrz)╓хфЧно╓╧╓К╓х, ╔М║╪╔╚╔Кб╕╓ь╓н╔у╔║╔╓╔К╓н╪У©╝╓╛╩о╓ч╓Й╓ч╓╧. ╔у╔║╔╓╔К╓РаВ©╝╓╧╓К╓к╓о, ╔Й╔Б║╪╔хб╕╓г╪У©╝╔в╔М╔╟╔И╔Ю╓Р╣╞ф╟╓╥╓ч╓╧. ╓╫╓╥╓ф, Enter ╔╜║╪╓Р╡║╓╥╓ф╓╚╓И ~C sz <files> (lrzsz ╓Р╔╓╔С╔╧╔х║╪╔К╓╥╓©╬Л╧Г╓о ~C lsz <files>)╓хфЧно╓╧╓К╓х, ╔Й╔Б║╪╔хб╕╓ь╓н╔у╔║╔╓╔К╓наВ©╝╓╛╩о╓ч╓Й╓ч╓╧. юъдЙ╓╛ю╣╓╥╓╓╓н╓к╓Б╓╚╓╚╓О╓И╓╨, FreeBSD ╓╛╔╥╔Й╔╒╔К╔щ║╪╔х╓Р╦╚иу╓╠╓И╓Л╓ч╓╩╓С. ╔ч╔╤║╪╔э║╪╔и╓Д╔╥╔Й╔╒╔К╔╚║╪╔и╓╛ Acer ╓н UART ╔а╔ц╔в╓Р╩х╓ц╓©й╙╓н╬Л╧Г, FreeBSD ╓н sio ╔и╔И╔╓╔п╓г╓ою╣╓╥╓╞╦║╫п╓╧╓К╩Ж╓╛╫пмХ╓ч╓╩╓С. ╓Ё╓нлДбЙ╓Р╡Р╥Х╓╧╓К╓©╓А╓к╓о, www.lemis.com ╓╚╓И╔я╔ц╔а╓РфЧ╪Й╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓нб╬╓н╪алД лУ: &a.jp.yoshiaki;, &a.jp.sugimura;, й║╢ж ╧╞╧╟ yasuf@big.or.jp, 1997 г╞ 11 ╥Н 10 фЭ - 1999 г╞ 5 ╥Н 8 фЭ. FreeBSD ╓о Linux ╓Х╓Йб©╓╞╓н╔╧╔О╔ц╔внн╟Х╓Р╬цхЯ╓╧╓К╓н╓о╓й╓╪╓г╓╧╓╚? ╪б╨щ╓к╓о╓╫╓╕╓г╓о╓╒╓Й╓ч╓╩╓С. FreeBSD ╓о Linux ╓Х╓Й╓Б╔╧╔О╔ц╔в╓Рб©╓╞╩х╓ц╓ф╓╓╓К╓Х╓╕╓к╦╚╓╗╓К╓ю╓╠╓г╓╧. ╓Ё╓нею╓к╓╙╓╠╓К FreeBSD ╓х Linux ╓н╪Г╓й╟Ц╓╓╓о, FreeBSD ╓о╓Х╓Йб©╓╞╓н╔А╔╓╔С╔А╔Б╔Й╓Рм╜╦ЗмЬмя╓г╓╜╓К╓Х╓╕╓к╓╧╓К╓©╓А, ╢╟а╢╓к╔╒╔╓╔и╔К╓к╓й╓ц╓©╓Б╓н╓Д╔А╔╓╔С╔А╔Б╔Й╬Е╓н╩х╓О╓Л╓й╓╞╓й╓ц╓©╔з║╪╔╦╓Р, ╔╧╔О╔ц╔в╓к╓╒╓И╓╚╓╦╓Аюя╤ке╙╓к╟эф╟╓╥╓ф╓╓╓К╓х╓╓╓╕╓Ё╓х╓г╓╧. Linux ╓г╓о, ╨г╦Е╓н╪Йцй╓х╓╥╓ф╔з║╪╔╦╓Р╔╧╔О╔ц╔в╓к╟эф╟╓╣╓╩╓К╓ю╓╠╓х╓╓╓╕╥╧╦Ч╓╛╓╒╓Й╓ч╓╧. ╓Ё╓н╔╧╔О╔ц╔в╓н╩х╓╓йЩ╓о, ╔А╔╓╔С╔А╔Б╔Й╓Р╓Х╓Й╦З╡ле╙╓к╩хмя╓╧╓К╓Ё╓х╓к╓Х╓ц╓ф╔п╔И╔С╔╧╓╛йщ╓©╓Л╓ф╓╓╓ч╓╧. FreeBSD ╓о╓Ё╓н╓Х╓╕╓й╬У╤╥╓г╓оюХ╪Й╨Ж╓Р╪Х╓Й╓ч╓╧╓╛, ╔╥╔╧╔ф╔Ю╓╛кэеЖ╓к╤У╓╜╬Убж╓н╩Ч╓к, мЩмЁ╓Бл╣╓╞╔з║╪╔╦╓Р╔╧╔О╔ц╔в╓╥╓Х╓╕╓х╥Х╓А╓К╓Ё╓х╓о╓й╓╓╓х╓╓╓╕╓Ё╓х╓кцМ╟у╓╥╓ф╓╞╓ю╓╣╓╓. ╓╥╓©╓╛╓ц╓ф, лКцФ╓к╩х╓О╓╨╓к╓╙╓╓╓©╔╥╔╧╔ф╔Ю╓╛д╚╣╞╓╜╓©╓х╓╜, ╓╧╓ы╓ф╔з║╪╔╦╔╒╔╕╔х╓╣╓Л╓ф╓╓╓К╓х╓╓╓╕╓Ё╓х╓о╓й╓╓╓н╓г╓╧. ╓ш╓х╓С╓и╔в╔М╔╟╔И╔Ю╓о╪б╧т╓╣╓Л╓ф╓╓╓й╓╓╓н╓к, ╓и╓╕╓╥╓ф &man.top.1; ╓охС╬О╓к╬╞╓й╓╓ free memory ╓РйС╧П╓╧╓К╓н╓г╓╥╓Г╓╕╓╚? ╢йц╠╓к╦ю╓╗╓п, free memory ╓х╓ол╣бл╓к╓й╓ц╓ф╓╓╓К╔А╔Б╔Й╓н╓Ё╓х╓ю╓╚╓И╓г╓╧. ╔в╔М╔╟╔И╔Ю╓╛Ёнйщ╓╥╓ф╓╓╓К╔А╔Б╔Й╟йЁ╟╓н╓╧╓ы╓ф╓н╔А╔Б╔Й╓о, FreeBSD ╔╚║╪╔м╔КфБ╓г╔г╔ё╔╧╔╞╔╜╔Ц╔ц╔╥╔Е╓х╓╥╓фмЬмя╓╣╓Л╓ч╓╧. ╓Ё╓нцм╓о &man.top.1; ╓к╓╙╓╓╓ф Inact, Cache Buf ╓х╓╥╓фи╫╪╗╓╣╓Л, ╓╫╓Л╓╬╓Л╓о╟ш╓й╓К╔╗║╪╔╦╔С╔╟╔Л╔ы╔К (лУцМ: ╔г║╪╔©╓╛╓и╓Л╓ю╓╠╦е╓╓╓╚╓Р╪╗╓╧и╬╡ацм) ╓г╔╜╔Ц╔ц╔╥╔Е╓╣╓Л╓©а╢╔г║╪╔©╓Ри╫╓╥╓ч╓╧. ╔г║╪╔©╓╛╔╜╔Ц╔ц╔╥╔Е╓╣╓Л╓К╓х╦ю╓╕╓н╓о, ╨г╤А╔╒╔╞╔╩╔╧╓╣╓Л╓©╔г║╪╔©╓г╓╒╓Л╓п, ╨феы╓╫╓н╔г║╪╔©╓Р╔╒╔╞╔╩╔╧╓╧╓К╓©╓А╓к╔╥╔╧╔ф╔Ю╓╛цы╓╓╔г╔ё╔╧╔╞╓к╔╒╔╞╔╩╔╧╓╧╓Ки╛мв╓╛╓й╓╓, ╓х╓╓╓╕╓Ё╓х╓Р╟улё╓╥╓ч╓╧. ╓╫╓н╓©╓А, а╢бн╓н╔я╔у╔╘║╪╔ч╔С╔╧╓╛╦Ч╬Е╓╥╓ч╓╧. ╟Лхле╙╓к, &man.top.1; ╓ги╫╪╗╓╣╓Л╓К Free ╔А╔Б╔Й╓╛╬╝╓╣╓╓цм╓Р╪╗╓╧╓Ё╓х╓они╓╓╓Ё╓х╓г, ╪╚мЁ╓к╩х╓╗╓К╔А╔Б╔Й╓н╩днл╓╛кэеЖ╓к╬╞╓й╓╓, ╓х╓╓╓╕╓Ё╓х╓Ри╫╓╥╓ф╓╓╓К╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. FreeBSD ╓н╪б╧т╔у╔╘║╪╔ч╔ц╔х╓н a.out, ELF ╓х╓о╓и╓н╓Х╓╕╓й╓Б╓н╓г╓╧╓╚? ╓ч╓©, a.out, ELF ╓Р╩х╓╕мЩмЁ╓о╡©╓г╓╥╓Г╓╕? FreeBSD ╓╛╡©╦н ELF ╔у╔╘║╪╔ч╔ц╔х╓РмЬмя╓╥╓ф╓╓╓К╓н╓╚╓РмЩ╡Р╓╧╓К╓©╓А╓к╓о, ╓ч╓╨ UNIX╓к╓╙╓╓╓ф╦╫╨ъ║жм╔ю╙║в╓й 3 ╪ОнЮ╓н╪б╧т╔у╔╘║╪╔ч╔ц╔х╓к╓д╓╓╓ф ╓╓╓╞╓И╓╚цн╓ц╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. FreeBSD 3.x ╓Х╓Йа╟╓н FreeBSD ╓г╓о a.out ╔у╔╘║╪╔ч╔ц╔х╓╛╩х╓О╓Л╓ф╓╓╓ч╓╥╓©. a.out ╨г╓Б╦е╓╞ ║жмЁ╫Ою╣╓╥╓╓║в unix ╔╙╔ж╔╦╔╖╔╞╔х╔у╔╘║╪╔ч╔ц╔х╓г╓╧. ╔ч╔╦╔ц╔╞╔й╔С╔п╓Р╢ч╓Юц╩╓╞╓ф╔Ё╔С╔я╔╞╔х╓й╔ь╔ц╔ю╓╛юХф╛╓к╓╒╓Й, ╓Ё╓Л╓╛╔у╔╘║╪╔ч╔ц╔х╓нфцд╖╓х╓╣╓Л╓ф╓╓╓ч╓╧(a.out(5) ╓к╬э╨ы╓йфБмф╓╛╓╒╓Й╓ч╓╧). ╔М║╪╔и╓╣╓Л╓К 3╪ОнЮ╓н╔╩╔╟╔А╔С╔х, .text, .data, .bss ╓х╡ц╓╗╓ф╔╥╔С╔э╔К╔ф║╪╔ж╔К╓хй╦╩ЗнС╔ф║╪╔ж╔К╓Р╢ч╓ъ╓ч╓╧. COFF SVR3 ╓н╔╙╔ж╔╦╔╖╔╞╔х╔у╔╘║╪╔ч╔ц╔х╓г╓╧. ╔ь╔ц╔ю╓оц╠╟Л╓н╔╩╔╞╔╥╔Г╔С╔ф║╪╔ж╔К╓╚╓Ию╝╓Й, .text, .data, .bss ╔╩╔╞╔╥╔Г╔С╟йЁ╟╓ниТй╛╓Р╩Щ╓д╓Ё╓х╓╛╓г╓╜╓ч╓╧. ELF COFF╓н╦Е╥я╓г╓╧. йё©Т╓н╔╩╔╞╔╥╔Г╔С╓Р╔╣╔щ║╪╔х╓╥, 32-bit ╓х 64-bit╓н╓╓╓╨╓Л╓нцм╓Б╡дг╫╓г╓╧. бГ╓╜╓й╥Гею╓н╟Л╓д╓о, ELF ╓о╓╫╓Л╓╬╓Л╓н╔╥╔╧╔ф╔Ю╔╒║╪╔╜╔ф╔╞╔а╔ЦкХ╓кц╠╟Л╓н ABI ╓н╓ъ╓╛б╦╨ъ╓╧╓К╓х╓╓╓╕╡╬дЙ╓гюъ╥в╓╣╓Л╓ф╓╓╓К╓Ё╓х╓г╓╧. ╓Ё╓н╡╬дЙ╓о╓ч╓ц╓©╓╞ю╣╓╥╓╞╓╒╓Й╓ч╓╩╓С. ╬╕мя╓н SYSV ╓ню╓Ё╕╓г╓╣╓╗╓╫╓╕╓г╓╧(╬╞╓й╓╞╓х╓Б SVR4, Solaris, SCO ╓н 3╪ОнЮ╓н ABI ╓╛╓╒╓Й╓ч╓╧). FreeBSD ╓о╓Ё╓нлДбЙ╓Р╡Р╥Х╓╧╓К╓©╓А╓н╩Н╓ъ╓х╓╥╓ф, ╢Шцн╓н ELF ╪б╧т╔у╔║╔╓╔К╓к ABI ╓к╠Ч╓╦╓©╬ПйС╓Р ╫Я╓╜╡ц╓╗╓К╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓РдС╤║╓╥╓ф╓╓╓ч╓╧. brandelf ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓Х╓Йб©╓╞╓н╬ПйС╓╛╓╒╓Й╓ч╓╧. FreeBSD ╓оеаеЩе╙╓йн╘╬Л╓Р╓х╓Й, ©Тб©╓╞╓ню╓бЕ╓н BSD ╓н╔Й╔Й║╪╔╧╓г╩Н╓╣╓Л, ╪б╬з╓╣╓Л╓ф╓╜╓© a.out ╔у╔╘║╪╔ч╔ц╔х╓РеаеЩе╙╓к╩хмя╓╥╓ф╓╓╓ч╓╧. ╓╓╓д╓╚╓о FreeBSD ╔╥╔╧╔ф╔Ю╓г╔м╔╓╔ф╔ё╔ж ELF ╔п╔╓╔й╔Й╓Р╨Н╓Й, ╪б╧т╓╧╓К╓Ё╓х╓╛╓г╓╜╓К╓Х╓╕╓к╓й╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С╓╛, ╫И╢Э╓н╨╒ FreeBSD ╓г╓о ELF ╓Р╔г╔у╔╘╔К╔х╓н╔у╔╘║╪╔ч╔ц╔х╓кйя╧╧╓╧╓К╓х╓╓╓╕ф╟╓╜╓о ╓╒╓Й╓ч╓╩╓С╓г╓╥╓©. ╓й╓╪╓г╓╥╓Г╓╕╓╚? ╓х╓Ё╓М╓г Linux ╓к╓╙╓╓╓ф╓о, ELF ╓ь╓н╤Лдк╓Р╓х╓Б╓й╓ц╓©йя╧╧╓о, ╓╫╓н╩Ч╓к a.out ╪б╧т╔у╔╘║╪╔ч╔ц╔х╓╚╓Иф╗╓Л╓©╓х╓╓╓╕╓Х╓Й╓о, ╔╦╔Ц╔С╔в╔ф║╪╔ж╔К╔ы║╪╔╧╓н╤╕м╜╔И╔╓╔ж╔И╔Й╓н╔А╔╚╔к╔╨╔Ю╓н╫юфПю╜╓ндЦ╓╣╓╚╓И╓нц╕╣я╓г╓╥╓©. ╓Ё╓Л╓о╔ы╔С╔ю╓ДЁ╚х╞╪та╢бн╓к╓х╓ц╓ф, ╤╕м╜╔И╔╓╔ж╔И╔Й╓н╨Ню╝╓╛хС╬О╓кфЯ╓╥╓╚╓ц╓©╦╤╟Ь╓г╓╥╓©. ELF ╓н╔д║╪╔К╓к╓о╤╕м╜╔И╔╓╔ж╔И╔Й╓нлДбЙ╓Р╡Р╥Х╓╧╓К╓Ё╓х╓╛╓г╓╜╓К╓Б╓н╓╛дС╤║╓╣╓Л╓ф╓╙╓Й, ╓ч╓©╓╓╓╨╓Л╓к╓╩╓Х╟Лхле╙╓к║ж©ййБ║в╓╥╓ф╓╓╓К╓х╧м╓╗╓И╓Л╓ч╓╧. ╓Ё╓н╓©╓А╟э╧т╓н╔Ё╔╧╔х╓ои╛мв╓й╓Б╓н╓х╓╥╓фмфг╖╓╣╓Л, ╟э╧т╓о╧т╓й╓О╓Л╓ч╓╥╓©. FreeBSD ╓н╬Л╧Г╓о, ╤╕м╜╔И╔╓╔ж╔И╔Й╓н╔А╔╚╔к╔╨╔Ю╓о Sun ╓н SunOS ╔╧╔©╔╓╔К╓н╤╕м╜╔И╔╓╔ж╔И╔Й╓н╔А╔╚╔к╔╨╔Ю╓к╤к╓А╓ф╤А╓╓╓Б╓н╓к╓й╓ц╓ф╓╓╓ф, хС╬О╓к╩х╓╓╓Д╓╧╓╓╓Б╓н╓к╓й╓ц╓ф╓╓╓ч╓╧. ╓╥╓╚╓╥╓й╓╛╓И, FreeBSD ╓г╓о 3.0 ╓╚╓И ELF ╔п╔╓╔й╔Й╓Р╔г╔у╔╘╔К╔х╓н╔у╔╘║╪╔ч╔ц╔х╓х╓╥╓ф╦Ь╪╟╓к╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. a.out ╪б╧т╔у╔╘║╪╔ч╔ц╔х╓о╓Х╓╓╓Б╓н╓Р╩Дцё╓кдС╤║╓╥╓ф╓╞╓Л╓ф╓╓╓К╓Б╓н╓н, ╩Д╓©╓а╓н╩х╓ц╓ф╓╓╓К╔Ё╔С╔я╔╓╔И╓н╨Н╪т╓г╓╒╓К GNU ╓н©м║╧╓о a.out ╔у╔╘║╪╔ч╔ц╔х╓н╔╣╔щ║╪╔х╓Р╓Д╓А╓ф╓╥╓ч╓ц╓©╓н╓г╓╥╓©. ╓Ё╓н╓Ё╓х╓о, ╩Д╓©╓а╓кйл╔п║╪╔╦╔Г╔С╓н╔Ё╔С╔я╔╓╔И╓х╔Й╔С╔╚╓Рйщ╪И╓╧╓К╓Ё╓х╓Рм╬╣╥╓й╓╞╓╣╓Л╓К╓Ё╓х╓х╓й╓Й, ╨г©╥╓н GNU Ё╚х╞╓неьно╓к╓Х╓К╡╦╥ц╓╚╓И╠С╓╤╓╚╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. ╓╫╓н╬Е, ISO C++ ╓н, ╓х╓╞╓к╔Ё╔С╔╧╔х╔И╔╞╔©╓Д╔г╔╧╔х╔И╔╞╔©╓╛╓И╓ъ╓нмв╣А╓Б╓╒╓ц╓ф, ╨ё╦Е╓н FreeBSD ╓н╔Й╔Й║╪╔╧╓г╔м╔╓╔ф╔ё╔ж╓н ELF ╓н╔╣╔щ║╪╔х╓╣╓Л╓КйЩ╦Ч╓ь╓хоц╓╛©й╓С╓г╓╓╓ч╓╧. ╓╫╓Л╓к╓╥╓ф╓Б, ╓й╓╪╓╫╓С╓й╓кб©╓╞╓н╔у╔╘║╪╔ч╔ц╔х╓╛╓╒╓К╓н╓г╓╧╓╚? ╓Б╓╕╓╙╓э╓М╓╡╓к╓й╓ц╓ф╓╥╓ч╓ц╓©╟е╓╓╡А╣Н╓к, ц╠╫Ц╓й╔о║╪╔и╔╕╔╖╔╒╓╛╓╒╓Й╓ч╓╥╓©. ╓Ё╓нц╠╫Ц╓й╔о║╪╔и╔╕╔╖╔╒╓о, ц╠╫Ц╓г╬╝╓╣╓й╔╥╔╧╔ф╔Ю╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╥╓©. a.out ╓о╓Ё╓нц╠╫Ц╓й╔╥╔╧╔ф╔Ю(PDP-11) ╓г╓н╨Н╤х╓Р╧т╓й╓╕╔п╔╓╔й╔Й╓х╓╥╓ф╢╟а╢╓ке╛╓╥╓©╓Б╓н╓ю╓ц╓©╓н╓г╓╧. ©м║╧╓о╓Ё╓нц╠╫Ц╓й╔╥╔╧╔ф╔Ю╓╚╓И UNIX ╓Р╟э©╒╓╧╓К╨щ╓к, a.out ╔у╔╘║╪╔ч╔ц╔х╓Р╓╫╓н╓ч╓ч╩х╓╓╓ч╓╥╓©. ╓х╓╓╓╕╓н╓о Motorola 68k, VAXen, ╓х╓╓╓ц╓©╔╒║╪╔╜╔ф╔╞╔а╔Ц╓ь╓н UNIX ╓н╫И╢Э╓н╟э©╒╓г╓о╓Ё╓Л╓г╫╫й╛╓ю╓ц╓©╓╚╓И╓г╓╧. ╓Д╓╛╓ф╓╒╓КаОлю╓й╔╗╔С╔╦╔к╔╒╓╛, ╔╫╔у╔х╔╕╔╖╔╒╓г╓а╓Г╓ц╓х╓╥╓©╔х╔Й╔ц╔╞╓Р╩х╓╕╓Ё╓х╓Р╥Х╓А╓ч╓╥╓©. хЮ╓о╓╓╓╞╓д╓╚╓н╔╡║╪╔х╓Р╨О╓Й╪Х╓ц╓ф CPU ╓н╔Ё╔╒╓Р╓Х╓Йб╝╓╞аЖ╓И╓╩╓К╓Ё╓х╓╛╓г╓╜╓©╓н╓г╓╧. ╓Ё╓Л╓о©╥╓╥╓╓╪ОнЮ╓н╔о║╪╔и╔╕╔╖╔╒(╨ёфЭ╓г╓о RISC ╓х╓╥╓фцн╓И╓Л╓ф╓╓╓ч╓╧)╓гф╟╓╓╓©╓н╓г╓╧. a.out ╓о╓Ё╓н╔о║╪╔и╔╕╔╖╔╒╓к╓ое╛╓╥╓ф╓╓╓й╓╚╓ц╓©╓н╓г, ╓Ё╓н╔о║╪╔и╔╕╔╖╔╒╬Е╓гб©╓╞╓н╔у╔╘║╪╔ч╔ц╔х╓╛, ╦бдЙ╓╣╓Л╓©ц╠╫Ц╓й a.out ╔у╔╘║╪╔ч╔ц╔х╓г╓н╓Б╓н╓Х╓Й╓Б╓Х╓Йни╓╓╔я╔у╔╘║╪╔ч╔С╔╧╓Р╫п╓╧╓Ё╓х╓Рлэ╩ь╓╥╓фЁ╚х╞╓╣╓Л╓©╓н╓г╓╧. COFF, ECOFF, ╓╫╓╥╓ф╓╓╓╞╓д╓╚╓нм╜л╬╓г╓й╓╓╔у╔╘║╪╔ч╔ц╔х╓╛ ELF ╓╛и╦╫Ю╓к╓й╓Ка╟╓кЁ╚х╞╓╣╓Л, ╓╫╓Л╓И╓н╦бЁ╕╓╛ц╣╣А╓╣╓Л╓©╓н╓г╓╧. ╓╣╓И╓к, ╔в╔М╔╟╔И╔Ю╔╣╔╓╔╨╓о╣ПбГ╓к╓й╓Й, ╔г╔ё╔╧╔╞(╓╙╓Х╓сй╙мЩ╔А╔Б╔Й)╓о╟маЁ╓х╓╥╓фаЙбпе╙╓к╬╝╓╣╓╚╓ц╓©╓©╓А, ╤╕мя╔И╔╓╔ж╔И╔Й╓н╔Ё╔С╔╩╔в╔х╓╛цбю╦╓╥╓ч╓╥╓©. ╓ч╓©, VM ╔╥╔╧╔ф╔Ю╓о╓Х╓Ййё╩╗╓й╓Б╓н╓к╓й╓Й╓ч╓╥╓©. ╓Ё╓Л╓И╓н╦д║╧╓н©ййБ╓о a.out ╔у╔╘║╪╔ч╔ц╔х╓Р╩хмя╓╥╓ф©К╓╡╓И╓Л╓ч╓╥╓©╓╛, ╓╫╓нм╜мяю╜╓о©╥╓╥╓╓╣║г╫╓х╓х╓Б╓к╓и╓С╓и╓С╧╜╓╛╓ц╓ф╓╜╓ч╓╥╓©. ╓Ё╓Л╓И╓к╡ц╓╗, ╪б╧т╩Ч╓ки╛мв╓й╓Б╓н╓Рф╟е╙╓к╔М║╪╔и╓╧╓К, ╓ч╓©╓о╫И╢Э╡╫╔Ё║╪╔и╓н╪б╧т╦Е╓к╔в╔М╔╟╔И╔Ю╓н╟ЛиТ╓Ргк╢Ч╓╥, ╔Ё╔╒╔А╔Б╔Й╓╙╓Х╓с╔╧╔О╔ц╔в╤У╢ж╓РюАлС╓╧╓К╓х╓╓╓╕мвк╬╓╛╧Б╓ч╓Й╓ч╓╥╓©. ╔в╔М╔╟╔И╔ъ╔С╔╟╦ю╦Л╓о╓╣╓И╓кйё╩╗╓к╓й╓Й, main ╢ь©Т╓на╟╓к╪╚ф╟е╙╓к╔Ё║╪╔К╓╣╓Л╓К╔Ё║╪╔и╓нмвк╬╓╛╧Б╓ч╓Й╓ч╓╥╓©. б©╓╞╓н╣║г╫Ёхд╔╓╛╧т╓й╓О╓Л, a.out ╔у╔╘║╪╔ч╔ц╔х╓╛╓Ё╓Л╓И╓╧╓ы╓ф╓Р╪б╦╫╓г╓╜╓К╓Х╓╕╓к╓й╓Й, ╓╫╓Л╓И╓о╓╥╓п╓И╓╞╓о╢Пкэе╙╓кф╟╨Н╓╥╓ф╓╓╓ч╓╥╓©. ╓Д╓╛╓ф, a.out ╓о╔Ё║╪╔и╓г╓н╔╙║╪╔п╔ь╔ц╔и╓хйё╩╗╓╣╓РаЩбГ╓╣╓╩╓╨╓к, ╓Ё╓Л╓И╓нлДбЙ╓╧╓ы╓ф╓Р╫ХмЩ╓╧╓К╓Ё╓х╓кл╣мЩ╓╛╓г╓ф╓╜╓ч╓╥╓©. ╟ЛйЩ, ELF ╓о╓Ё╓Л╓И╓нлДбЙ╓нб©╓╞╓Р╡Р╥Х╓╥╓ч╓╧╓╛, ╦╫╬У╡тф╞╓╥╓ф╓╓╓К╔╥╔╧╔ф╔Ю╓╚╓И╓нюзбь╓╗╓олЯ╡П╓й╓Б╓н╓к╓й╓К╓г╓╥╓Г╓╕. ╓╫╓н╓©╓А ELF ╓о, a.out ╓н╓ч╓ч╓г╓╓╓К╓Ё╓х╓╛ ELF ╓ь╓н╟э╧т╓Х╓Й╓Б╓Б╓ц╓хлЯ╡П╓й╓Б╓н╓к╓й╓К╓ч╓гбт╓ди╛мв╓╛╓╒╓Й╓ч╓╥╓©. ╓╥╓╚╓╥╩Ч╓╛╥п╓д╓к╓д╓Л, FreeBSD ╓н╔с╔К╔и╔д║╪╔К╓н╦╣╓х╓й╓ц╓©╔д║╪╔К╥╡(фц╓к╔╒╔╩╔С╔ж╔И╓х╔М║╪╔ю)╓х FreeBSD ╓н╔с╔К╔и╔д║╪╔К╥╡╓о╟ш╓й╓ц╓©©й╡╫╓н╥по╘╓Р╓©╓и╓Й╓ч╓╥╓©. FreeBSD ╓н╔д╔Й║╪╓г╓о, ╤╕м╜╔И╔╓╔ж╔И╔Й╓╛ди╡ц╓╣╓Л, ╔п╔╟╔у╔ё╔ц╔╞╔╧╓Б╧т╓О╓Л╓ч╓╥╓©. ╓Б╓х╓Б╓х╓н╔д║╪╔К╥╡╓Р╨Ню╝╓╥╓© GNU ╓н©м╓©╓а╓о, ╔в╔М╔╟╔И╔Ю╓Р╫Я╓╜д╬╓╥, ╔╞╔М╔╧╔Ё╔С╔я╔╓╔И╓н╔╣╔щ║╪╔х, ╟ш╓й╓К╔у╔╘║╪╔ч╔ц╔х╓Рг╓╟у╓к╪Х╓Й╧Ч╓Ю╣║г╫╓й╓и╓Рди╡ц╓╥╓ф╓╓╓╜╓ч╓╥╓©. б©╓╞╓н©м║╧╓╛ FreeBSD ╓Р╔©║╪╔╡╔ц╔х╓х╓╥╓©╔╞╔М╔╧╔Ё╔С╔я╔╓╔И╓н╧╫цш╓Р╩Н╓ъ╓ч╓╥╓©╓╛, FreeBSD ╓н╩х╓ц╓ф╓╓╓К as ╓х ld ╓н╦е╓╓╔в╔М╔╟╔И╔Ю╔Ё║╪╔и╓о╔╞╔М╔╧╔Ё╔С╔я╔╓╔К╓Р╔╣╔щ║╪╔х╓╥╓ф╓╙╓И╓╨, ╓╕╓ч╓╞╓╓╓╜╓ч╓╩╓С╓г╓╥╓©. ©╥╓╥╓╓ GNU ╓н╔д║╪╔К╥╡(binutils)╓о, ╔╞╔М╔╧╔Ё╔С╔я╔╓╔К, ╤╕м╜╔И╔╓╔ж╔И╔Й, C++ Ёхд╔╓й╓и╓н╣║г╫╓Р╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ╓╣╓И╓к©Тб©╓╞╓н╔ы╔С╔ю╓╛ ELF ╔п╔╓╔й╔Й╓Р╔Й╔Й║╪╔╧╓╥╓ф╓╓╓ч╓╧. FreeBSD ╓к╓х╓ц╓ф ELF ╔п╔╓╔й╔Й╓╛╪б╧т╓г╓╜╓К╓Ё╓х╓о, хС╬О╓к╔А╔Й╔ц╔х╓╛╓╒╓Й╓ч╓╧. ELF ╔п╔╓╔й╔Й╓╛ FreeBSD ╓гф╟╓╞╓н╓й╓И, a.out ╓Рф╟╓╚╓╧╓н╓к╪Й╢ж╓Р╓╚╓╠╓Ки╛мв╓о╓╒╓Й╓ч╓╩╓С╓м. д╧╓╓╢жцИ╪б╓к╓Х╓╞ф╞╓╓╓©о╥╓╓╓©го╓о, ╓╫╓М╓╫╓МкраПцо╓г╣ы╓ч╓╩╓ф╓╒╓╡╓ч╓╥╓Г╓╕. ELF ╓о a.out ╓кхФ╓ы╓ф╓Х╓Йи╫╦╫но╓╛╓╒╓Й, ╔ы║╪╔╧╓н╔╥╔╧╔ф╔Ю╓кбп╓╥╓ф╓Х╓ЙиЩ╧╜╓╓Ёхд╔ю╜╓РдС╤║╓г╓╜╓ч╓╧. ELF мя╓н╔д║╪╔К╓о╓Х╓Й╓Х╓╞йщ╪И╓╣╓Л╓ф╓╓╓ч╓╧. ╓ч╓©б©╓╞╓н©м╓к╓х╓ц╓ф╫емв╓й╔╞╔М╔╧╔Ё╔С╔я╔╓╔К╓Б╔╣╔щ║╪╔х╓╥╓ф╓╓╓ч╓╧. ELF ╓н╪б╧тб╝еы╓о, ╓ш╓С╓н╬╞╓╥ a.out ╓Х╓Йцы╓╓╓╚╓Б╓╥╓Л╓ч╓╩╓С╓╛, ╪б╨щ╓кб╝еы╓н╨╧╓Р╓о╓╚╓К╓н╓о╨╓фЯ╓г╓╥╓Г╓╕. ELF ╓х a.out ╓н╢ж╓к╓о, ╔з║╪╔╦╔ч╔ц╔т╔С╔╟, ╫И╢Э╡╫╔Ё║╪╔и╓н╫ХмЩ╓й╓иб©╓╞╓н╟Ц╓╓╓╛╓╒╓Й╓ч╓╧╓╛, ╓х╓Й╓©╓ф╓ф╫емв╓й╓Б╓н╓о╓╒╓Й╓ч╓╩╓С. ╓╥╓╚╓╥╟Ц╓╓╓╛╓╒╓К╓н╓оЁн╓╚╓г╓╧. ╓ш╓и╓й╓╞, GENERIC ╔╚║╪╔м╔К╓╚╓И a.out ╓н╔╣╔щ║╪╔х╓╛Ё╟╓╣╓Л╓ч╓╧. a.out ╓н╔в╔М╔╟╔И╔Ю╓Р╪б╧т╓╧╓Ки╛мвю╜╓╛╓й╓╞╓й╓Л╓п, ╨г╫╙е╙╓к a.out ╓н╔╣╔щ║╪╔х╓о╔╚║╪╔м╔К╓╚╓И╨О╫Э╓╣╓Л╓ч╓╧. ╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓н╣Ж╡дб╟ю╜╓Р chmod ╓гйя╓╗╓И╓Л╓й╓╓╓н╓о╓й╓╪╓г╓╧╓╚? ╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓о╣Ж╡дб╟ю╜╓Р╩Щ╓а╓ч╓╩╓С. ╓ч╓© &man.chmod.1; ╓н╔г╔у╔╘╔К╔хф╟╨Н╓о, ╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓Р╓©╓и╓ц╓ф╔Й╔С╔╞юХ╓н╔у╔║╔╓╔К╓н╣Ж╡дб╟ю╜╓Рйя╧╧╓╧╓К╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╩╓С. ╓╫╓н╓©╓А, foo ╓х╓╓╓╕╔у╔║╔╓╔К╓╛╓╒╓Й, ╓Ё╓н╔у╔║╔╓╔К╓ь╓н╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞ bar ╓╛╓╒╓ц╓©╓х╓╧╓К╓х, ╟й╡╪╓н╔Ё╔ч╔С╔и╓о╬О╓кю╝╦Ы╓╥╓ч╓╧. &prompt.user; chmod g-w bar ╓╥╓╚╓╥╓Ё╓н╬Л╧Г, foo ╓н╣Ж╡дб╟ю╜╓ойя╧╧╓╣╓Л╓ч╓╩╓С. ╓Ё╓н╬Л╧Г, ╓╚ ╓н╓и╓а╓И╓╚╓н╔╙╔в╔╥╔Г╔С╓Р ╓хф╠╩Ч╓к╩х╓╕и╛мв╓╛╓╒╓Й╓ч╓╧. chmod ╓х symlink ╓н╔ч╔к╔Е╔╒╔К╔з║╪╔╦╓к╓о╓Б╓ц╓х╬э╓╥╓╓╬ПйС╓╛╓╒╓Й╓ч╓╧. ╔╙╔в╔╥╔Г╔С╓о╨ф╣╒е╙╓к chmod ╓Р╪б╧т╓╥╓ч╓╧. ╔г╔ё╔Л╔╞╔х╔Й╓Д╔г╔ё╔Л╔╞╔х╔Й╓ь╓н╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓Р chmod ╓╧╓К╬Л╧Г╓о╣╓╓Р╓д╓╠╓ф╓╞╓ю╓╣╓╓. ╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓г╩╡╬х╓╣╓Л╓ф╓╓╓Кц╠╟Л╓н╔г╔ё╔Л╔╞╔х╔Й╓н╔я║╪╔ъ╔ц╔╥╔Г╔С╓Рйя╧╧╓╥╓©╓╓╬Л╧Г╓о, chmod ╓Р╔╙╔в╔╥╔Г╔С╓Р╓д╓╠╓╨╓к, ╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓нл╬а╟╓н╦Е╓М╓к╔╧╔И╔ц╔╥╔Е(/) ╓Р╓д╓╠╓ф╩х╓╓╓ч╓╧. нЦ╓╗╓п, foo ╓╛╔г╔ё╔Л╔╞╔х╔Й bar ╓ь╓н╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞╓г╓╒╓К╬Л╧Г, foo(╪б╨щ╓к╓о bar)╓н╔я║╪╔ъ╔ц╔╥╔Г╔С╓Рйя╧╧╓╥╓©╓╓╬Л╧Г╓к╓о, ╓Ё╓н╓Х╓╕╓к╓╥╓ч╓╧. &prompt.user; chmod 555 foo/ ╦Е╓М╓к╔╧╔И╔ц╔╥╔Е╓Р╓д╓╠╓К╓х, chmod ╓о╔╥╔С╔э╔Й╔ц╔╞╔Й╔С╔╞ foo ╓Рди╓╓╓╚╓╠╓ф╔г╔ё╔Л╔╞╔х╔Й bar ╓н╔я║╪╔ъ╔ц╔╥╔Г╔С╓Рйя╧╧╓╥╓ч╓╧. ╔М╔╟╔╓╔Сл╬╓╛╓╓╓ч╓ю╓к 8 й╦╩З╓кю╘╦б╓╣╓Л╓ф╓╓╓К╓н╓о╓й╓╪╓г╓╧╓╚? UT_NAMESIZE ╓Рйя╧╧╓╥╓ф╔╥╔╧╔ф╔Юа╢бн╓Р╨Н╓Йд╬╓╩╓п╫╫й╛╓г, ╓╫╓Л╓ю╓╠╓г╓╕╓ч╓╞╓╓╓╞╓ю╓М╓╕╓х╓╒╓й╓©╓о╧м╓╗╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С. ╩дг╟╓й╓╛╓Иб©╓╞╓н╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓Д╔Ф║╪╔ф╔ё╔Й╔ф╔ё(╔╥╔╧╔ф╔Ю╔д║╪╔К╓Б╢ч╓А╓ф)╓о, ╬╝╓╣╓й©Тцм╓Р╧╫б╓бн╓Д╔п╔ц╔у╔║╓й╓и╓к╩х╓ц╓ф╓╓╓ч╓╧(и╛╓╨╓╥╓Б 8 ╓Д 9 ╓г╓о╓й╓╞, 15 ╓Д 20 ╓й╓и╓нйя╓ц╓©цм╓Р╩х╓╕╓Б╓н╓Б╓╒╓Й╓ч╓╧). (╦гдЙд╧╓н╔Л╔Ё║╪╔и╓Р╢Эбт╓╧╓К╓х╓Ё╓М╓г╡дйяд╧╔Л╔Ё║╪╔и╓к╓й╓К╓©╓А, )бФл╣╓╥╓к╓й╓ц╓©╔М╔╟╔у╔║╔╓╔К╓Рфю╓К╓Ё╓х╓к╓й╓К╓х╓╓╓╕╓Ё╓х╓ю╓╠╓г╓й╓╞, Sun ╓н NIS ╓н╔╞╔И╔╓╔╒╔С╔х╓н╬Л╧Г╓олДбЙ╓╛╣╞╓╜╓ч╓╧╓╥, б╬╓н UNIX ╔╥╔╧╔ф╔Ю╓х╓н╢ьо╒╓к╓╙╓╓╓ф╓Ё╓Л╓И╟йЁ╟╓нлДбЙ╓Б╣╞╓╜╓К╡дг╫ю╜╓╛╓╒╓Й╓ч╓╧. ╓╥╓╚╓╥, FreeBSD 3.0 ╟й╧ъ╓г╓о 16 й╦╩З╓х╓й╓Й, б©╓╞╓н╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓н╔о║╪╔и╔Ё║╪╔и╓╣╓Л╓©л╬а╟╓нд╧╓╣╓нлДбЙ╓Б╡Р╥Х╓╣╓Л╓ч╓╧. ╪б╨щ╓к╓о╔╥╔╧╔ф╔Ю╓н╓╒╓ч╓Й╓кб©╓╞╓ниТй╛╓Р╫╓ю╣╓╧╓К╓©╓А╓к, 3.0 ╓к╓й╓К╓ч╓г╓ойя╧╧╓╛╧т╓О╓Л╓ч╓╩╓С╓г╓╥╓©. ╓╫╓Л╟йа╟╓н╔п║╪╔╦╔Г╔С╓г╓о, ╓Ё╓Л╓И╓нлДбЙ╓╛╣╞╓Ё╓ц╓©╬Л╧Г╓к, лДбЙ╓Р╪╚й╛╪╚©х╓гх╞╦╚╓╥, ╡Р╥Х╓г╓╜╓К╓Ё╓х╓кюДбпе╙╓й╪╚©╝╓╛╓╒╓К╬Л╧Г╓о /usr/include/utmp.h ╓Рйт╫╦╓╥, UT_NAMESIZE ╓нйя╧╧╓к╓╥╓©╓╛╓ц╓ф, д╧╓╓╔Ф║╪╔╤л╬╓Р╩х╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓ч╓©, UT_NAMESIZE ╓нйя╧╧╓х╟Лцв╓╧╓К╓Х╓╕╓к /usr/include/sys/param.h ╓н MAXLOGNAME ╧╧©╥╓╥╓й╓╞╓ф╓о╓й╓Й╓ч╓╩╓С. ╨г╦Е╓к, ╔╫║╪╔╧╓╚╓И╔с╔К╔и╓╧╓К╬Л╧Г╓о /usr/include ╓РкХ╡С╔╒╔ц╔в╔г║╪╔х╓╧╓Ки╛мв╓╛╓╒╓К╓Ё╓х╓Рк╨╓Л╓й╓╓╓Х╓╕╓к! /usr/src/.. ╬Е╓н╔у╔║╔╓╔К╓Рйя╧╧╓╥╓ф╓╙╓╓╓фцж╓╜╢╧╓╗╓ч╓╥╓Г╓╕. FreeBSD ╬Е╓г DOS ╓н╔п╔╓╔й╔Й╓Рф╟╓╚╓╧╓Ё╓х╓о╓г╓╜╓ч╓╧╓╚? ╓о╓╓, FreeBSD 3.0 ╓╚╓И╓о, еЩ╧Г╓х╡Чни╓╛╫е╓м╓И╓Л╓© BSDI ╓н doscmd DOS ╔╗╔ъ╔Е╔Л║╪╔╥╔Г╔С╔╣╔ж╔╥╔╧╔ф╔Ю╓Р╩х╓ц╓ф╓г╓╜╓К╓Х╓╕╓к╓й╓Й╓ч╓╥╓©. ╨ё╓й╓╙бЁ╓╠╓И╓Л╓ф╓╓╓К╓Ё╓неьно╓к╤╫лё╓Р╩Щ╓ц╓ф╩╡╡ц╓╥╓ф╓╓╓©╓ю╓╠╓К╓й╓И, &a.emulation; ╓ь╔А║╪╔К╓РаВ╓ц╓ф╓╞╓ю╓╣╓╓. FreeBSD 3.0 ╟йа╟╓н╔╥╔╧╔ф╔Ю╓г╓о, pcemu ╓х╓╓╓╕╧╙л╞╓й╔Ф║╪╔ф╔ё╔Й╔ф╔ё╓╛ FreeBSD Ports Collection ╓к╓╒╓Й, 8088 ╓н╔╗╔ъ╔Е╔Л║╪╔╥╔Г╔С╓х DOS ╓н╔ф╔╜╔╧╔х╔Б║╪╔и╔╒╔в╔Й╔╠║╪╔╥╔Г╔С╓Рф╟╓╚╓╧╓к╫╫й╛╓й BIOS ╔╣║╪╔с╔╧╓Р╧т╓й╓╓╓ч╓╧. ╓Ё╓Л╓о X ╔╕╔ё╔С╔и╔╕╔╥╔╧╔ф╔Ю╓╛и╛мв╓г╓╧(XFree86 ╓х╓╥╓фдС╤║╓╣╓Л╓ф╓╓╓ч╓╧). sup ╓х╓о╡©╓г, ╓и╓н╓Х╓╕╓к╓╥╓ф╩х╓╕╓Б╓н╓й╓н╓г╓╥╓Г╓╕╓╚? SUP ╓х╓о, ╔╫╔у╔х╔╕╔╖╔╒╔╒╔ц╔в╔г║╪╔х╔в╔М╔х╔Ё╔К(Software Update Protocol)╓г ╔╚║╪╔м╔╝║╪╔А╔М╔СбГЁь(CMU)╓гЁ╚х╞╔д╔Й║╪╓нф╠╢Э╓н╓©╓А╓кЁ╚х╞╓╣╓Л╓ч╓╥╓©. ╩Д╓©╓а╓нцФ©╢Ё╚х╞╔д╔Й║╪╓Р╔Й╔Б║╪╔х╔╣╔╓╔х╓гф╠╢Э╓╣╓╩╓К╓©╓А╓к╩х╓ц╓ф╓╓╓ч╓╥╓©. SUP ╓о╔п╔С╔ииЩ╓Ро╡хЯ╓╥╓ч╓╧╓н╓г, ╨ё╓о╩х╓ц╓ф╓╓╓ч╓╩╓С. ╔╫║╪╔╧╔Ё║╪╔и╓н╔╒╔ц╔в╔г║╪╔х╓н╦╫╨ъ╓н╓╙╓╧╓╧╓А╓нйЩк║╓о FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║жCVSup║в╓к╓╒╓Й╓ч╓╧. FreeBSD ╓Р╔╞║╪╔К╓к╩х╓╕╓к╓о? FreeBSD ╓Рф╟╓╚╓╧╩Ч╓к╡╧еыб╛дЙ╓Р╧т╓й╓ц╓©©м╓о╓╓╓ч╓╧╓╚? Linux ╓о dos ╓Х╓Й╓Б╡╧еы╓╛╡╪╓╛╓К╓х╓╓╓╕╓Ё╓х╓оцн╓ц╓ф╓╓╓ч╓╧╓╛, FreeBSD ╓к╓д╓╓╓ф╓о╓Ё╓н╓Х╓╕╓й╓Ё╓х╓к©╗╓Л╓©╓Б╓н╓Р╦╚╓©╓Ё╓х╓о╓╒╓Й╓ч╓╩╓С. ╪б╨щг╝╓╞╓й╓ц╓ф╓╓╓К╓Х╓╕╓к╦╚╓╗╓ч╓╧. ╓╓╓╓╓╗. ╩Д╓©╓а╓о 250 ╔ч╔╓╔╞╔М╔╟╔И╔Ю╓н LSD-25 ╓Р╓╒╓И╓╚╓╦╓Ам©╓╗╓ф╓╙╓╓╓©╔э╔И╔С╔ф╔ё╔╒╓кбп╓╧╓К, лэ╠ё╓╥лёЁп╔ф╔╧╔х╓РбГнл╓к╧т╓й╓ц╓ф╓╓╓ч╓╧. 35% ╓н╔э╔И╔С╔ф╔ё╔╒╓о FreeBSD ╓о╔╙╔Л╔С╔╦╓н╓Х╓╕╓йлё╓╛╓╧╓К╓х╦ю╓ц╓ф╓╓╓К╓н╓кбп╓╥, Linux ╓о╩Г╠Л╓н╓Х╓╕╓йлё╓О╓╓╓╛╓╒╓К╓х╦ю╓ц╓ф╓╓╓К©м╓Б╓╓╓ч╓╧. ╩Д╓нцн╓К╦б╓Йн╬йЩ╓н╔╟╔К║╪╔в╓х╓Б╡╧еы╓нит╟Лцв╓к╓д╓╓╓ф╓о©╗╓Л╓ф╓╓╓ч╓╩╓С. ╓Ё╓нд╢╨╨╓г, хС╬О╓кб©╓╞╓н╔э╔И╔С╔ф╔ё╔╒╓╛╔ф╔╧╔х╓Р╧т╓й╓ц╓©иТ╡╟╓╚╓Иит╩в╣д╓╫╓╕╓к╫п╓ф╓╜╓ф, ╓Ё╓н╓Х╓╕╓й╓╙╓╚╓╥╓й╥К╡л╓Р╪╗╓╥╓©╓Ё╓х╓к╩Д╓©╓а╓оеЖог╓╣╓╩╓И╓Л╓ч╓╥╓©. ╩Д╓о, ╓ш╓х╓С╓и╓н╔э╔И╔С╔ф╔ё╔╒╓о Apple ╓к╓╓╓фхЮ╓И╓н╨г©╥╓н║ж╟З╓ц╓╚╓╓╓ффВ╓╓╓Р╓╚╓╟║вGUI ╓Р╩х╓ц╓ф╓╓╓К╓н╓г╓о╓й╓╓╓╚╓х╧м╓╗╓ф╓╓╓ч╓╧. ╩Д╓©╓а╓о╢Ял╞╓й╦е╓╓╩е╩Ж╓Р╓╥╓ф╓╓╓К╓н╓г╓╥╓Г╓╕! ©©лллэ╓к╦ю╓╕╓х, FreeBSD ╓Д Linux ╓о╤╕╓к HLT (дД╩ъ) л©нА╓Р╔╥╔╧╔ф╔Ю╓н╔╒╔╓╔и╔К(idle)╩Ч╓к╩х╓╓, ╔╗╔м╔К╔╝║╪╓н╬цхЯ╓Р╡║╓╗╓ф╓╓╓ч╓╧╓н╓гг╝╓нх╞ю╦╓Б╬╞╓й╓╞╓й╓Й╓ч╓╧. ╓ч╓©, APM(advanced power management) ╓РюъдЙ╓╥╓ф╓╒╓К╓й╓И FreeBSD ╓о CPU ╓Р╔М║╪╔я╔О║╪╔Б║╪╔и╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ц╞╓╚╓╛╩Д╓н╔А╔Б╔Й╔╚║╪╔и╓Р╓р╓ц╓╚╓╓╓ф╓╓╓К╓н╓г╓╧╓╚?? FreeBSD╓г╔╚║╪╔м╔К╓н╔Ё╔С╔я╔╓╔К╓Р╓╥╓ф╓╓╓К╩Ч, ╔А╔Б╔Й╓╚╓И╟З╓ц╓╚╓╓╓ф╓╓╓К╓Х╓╕╓й╢Ял╞╓й╡╩╓╛й╧╓Ё╓╗╓К╓Х╓╕╓й╓Ё╓х╓о╓╒╓К╓н╓г╓╥╓Г╓╕╓╚? ╔Ё╔С╔я╔╓╔К╓Р╓╥╓ф╓╓╓К╩Ч(╓╒╓К╓╓╓о╣╞ф╟╩Ч╓к╔у╔М╔ц╔т╔и╔И╔╓╔ж╓Рг╖╪╠╓╥╓©╦Е╓нц╩╓╓╢ж╓й╓и), ╢Ял╞╓й╟З╓ц╓╚╓╞╓Х╓╕╓й╡╩╓╛╔А╔Б╔Й╔╚║╪╔и╓н╓╒╓©╓Й╓╚╓Ий╧╓Ё╓╗╓ф╓╜╓ч╓╧. ╓╫╓ндл╓Й! BSD ╓нй╦╫Я╓к╓они╓╞, ╔г║╪╔Б╔С(daemon)╓х╓╓╓╕╦юму╓╛╫п╓ф╓╜╓ч╓╧. ╓ш╓х╓С╓и╓н©м╓оцн╓И╓й╓╓╓н╓г╓╧╓╛, ╔г║╪╔Б╔С╓х╓о, ╓╒╓й╓©╓н╔Ё╔С╔т╔Е║╪╔©╓Р╟м╓ЙбЕ╓х╓╧╓К, ╫Ц©Х╓гхСй╙╪ае╙╓йб╦╨ъ╓н╓Ё╓х╓г╓╧. ╔А╔Б╔Й╓╚╓Ий╧╓Ё╓╗╓К╓р╓ц╓╚╓╞╓Х╓╕╓й╡╩╓о, ╓╣╓ч╓╤╓ч╓╒╓К╔╥╔╧╔ф╔Ю╢имЩ╔©╔╧╔╞╓н╟╥╓╓╓Р╓╓╓╚╓к╨га╠╓й╓Б╓н╓к╓╧╓К╓╚, ╓х╓╓╓ц╓©╓Ё╓х╓Р╥Х╓А╓К╓х╓╜╓к╔г║╪╔Б╔С╓©╓а╓╛╦Р╓О╓╧, ╓╚╓С╧Б╓╓╓╣╓╣╓Д╓╜ю╪╓й╓н╓г╓╧. ╓Ё╓н╩╗╡╩╓╛й╧╓Ё╓╗╓©╓х╓╜, DOS ╓╚╓И fdisk /mbr ╓х╓╓╓╕╔в╔М╔╟╔И╔Ю╓Р╪б╧т╓╧╓Л╓п, ╓╕╓ч╓╞╔г║╪╔Б╔С╓Рди╓╓╫п╓╧╓Ё╓х╓╛╓г╓╜╓К╓г╓╥╓Г╓╕. ╓г╓Б, ╔г║╪╔Б╔С╓о╓╫╓Л╓к╩У╦Ч╓╚╓ц╓ф fdisk ╓н╪б╧т╓Р╓Д╓А╓╣╓╩╓Х╓╕╓х╓╧╓К╓╚╓Бцн╓Л╓ч╓╩╓С. ╓Б╓╥, ╓╫╓Л╓Р╪б╧т╓╥╓ф╓╓╓К╓х╓╜╓к╔╧╔т║╪╔╚╓й╓И╔с╔К ╔╡╔╓╔д(Bill Gates)╓н╟╜кБ╓н╓╣╓╣╓Д╓╜╓╛й╧╓Ё╓╗╓ф╓╜╓©╓И, ╓╧╓╟╓кн╘╓а╬Е╓╛╓ц╓фф╗╓╡╓ф╓╞╓ю╓╣╓╓. ╥Х╓╥╓ф©╤╓Ййж╓ц╓ф╓о╓╓╓╠╓ч╓╩╓С! BSD ╓н╔г║╪╔Б╔С╓©╓а╓╛╡║╓╗╧Ч╓С╓г╓╓╓©ап╩р╓н╔г║╪╔Б╔С, DOS ╓х Windows ╓╛╡РйЭ╓╣╓Л, ╓╒╓й╓©╓н╨╡╓Р╠й╠С╓нгклг╓ьфЁ╓Ё╓╕╓х╔ч╔╥╔С╓Р╨ф╓с╩ыгш╓╥╓ф╓╥╓ч╓╕╓Ё╓х╓г╓╥╓Г╓╕. ╓╗╓╗, а╙╓ы╓х╦ю╓О╓Л╓©╓И, ╓О╓©╓╥╓о╓Ю╓╥╓М, ╓р╓ц╓╚╓╜╡╩╓к╢╥╓Л╓КйЩ╓Ра╙╓ж╓г╓╥╓Г╓╕╓м. "MFC" ╓х╓о╓и╓╕╓╓╓╕╟улё╓г╓╧╓╚ MFC ╓х╓о, ║жCURRENT ╓х╓н╧Гн╝(Merged From -CURRENT)║в╓нф╛й╦╩З╓Р╓х╓ц╓©╓Б╓н╓г╓╧. CVS ╔М╔╟╓г -CURRENT ╓╚╓И -STABLE ╔ж╔И╔С╔а╓ь╓н╧Гн╝╓Р╪╗╓╥╓ч╓╧. "BSD" ╓х╓о╓и╓╕╓╓╓╕╟улё╓г╓╧╓╚? ╓Ё╓н╦юму╓о, цГ╢ж╓╕╓а╓ю╓╠╓кй╛╓╚╓К╠ё╦Л╓г╡©╓х╓╚╓х╓╓╓╕╟улё╓г╓╧. й╦╩З╓и╓╙╓Й╓клУ╓╧╓Ё╓х╓о╓г╓╜╓ч╓╩╓С╓╛, BSD ╓нлУ╓о║жF1 ╓н╔Л║╪╔╥╔С╔╟╔а║╪╔Ю║в╓╚║ж╔з╔С╔╝╔С╓о╓╙╓╓╓╥╓╓╔╧╔й╔ц╔╞║в, ╓╒╓К╓╓╓о║ж╡╤╓©╓а╓Ц Linux ╓Х╓Йч╞мН╓омЬ╓╓╓ф╓К╓╪║в╓х╓╚╓╫╓н╓ь╓С╓ю╓х╦ю╓ц╓ф╓╙╓╠╓п╓╙╓ц╓╠║╪╓г╓╥╓Г╓╕. :-) ╬Ицл╓о╓╣╓ф╓╙╓╜. BSD ╓х╓о, Berkeley CSRG(╔Ё╔С╔т╔Е║╪╔©╔╥╔╧╔ф╔Юи╬╣д╡Я)╓╛хЮ╓И╓н UNIX ╓нгшиш╥абж╓нл╬а╟╓х╓╥╓феЖ╩Ча╙╓С╓ю "Berkeley Software Distribution" ╓нн╛╓г╓╧. ╔Й╔щ╔╦╔х╔Й║╕╔Ё╔т║╪ (repo-copy) ╓х╓о╟Лбн╡©╓н╓Ё╓х╓г╓╥╓Г╓╕? repo-copy (repository copy ╓нн╛) ╓х╓о, CVS ╔Й╔щ╔╦╔х╔Й╓нцФ╓гд╬юэ╔у╔║╔╓╔К╓Р╔Ё╔т║╪╓╧╓К╓Ё╓х╓Р╪╗╓╧мя╦Л╓г╓╧. repo-copy ╓Р╧т╓й╓О╓й╓╓╬Л╧Г╓Р╧м╓╗╓ч╓╧. ╔Й╔щ╔╦╔х╔Й╓нцФ╓н╟ш╓й╓К╬Л╫Й╓к╔у╔║╔╓╔К╓Р╔Ё╔т║╪╓╥╓©╓Й, ╟эф╟╓╥╓©╓Й╓╧╓Ки╛мвю╜╓╛ю╦╓╦╓К╓х, ╔Ё╔ъ╔ц╔©║╪╓о ╔у╔║╔╓╔К╓Р©╥╓╥╓╓╬Л╫Й╓кцж╓╞╓©╓А╓к cvs add ╓Р, ╓╫╓╥╓ф╦е╓╓╔у╔║╔╓╔К╓╛╨О╫Э╓╣╓Л╓К╬Л╧Г╓о, ╦е╓╓╔у╔║╔╓╔К╓кбп╓╥╓ф cvs rm ╓Р╪б╧т╓╧╓К╓г╓╥╓Г╓╕. ╓Ё╓нйЩк║╓н╥Гею╓о, ╔у╔║╔╓╔К╓нйя╧╧мЗнР (╓©╓х╓╗╓п CVS ╔М╔╟╓н╔╗╔С╔х╔Й) ╓╛©╥╓╥╓╓╬Л╫Й╓к╔Ё╔т║╪╓╣╓Л╓й╓╓╓Ё╓х╓г╓╧. FreeBSD ╔в╔М╔╦╔╖╔╞╔х╓г╓о╓Ё╓нйя╧╧мЗнР╓Р╓х╓ф╓Бм╜мя╓й╓Б╓н╓ю╓х╧м╓╗╓ф╓╓╓К╓©╓А, а╟╫р╓нйЩк║╓нбЕ╓О╓Й╓к╔Й╔щ╔╦╔х╔Й╔Ё╔т║╪╓╛ни╓╞мя╓╓╓И╓Л╓ч╓╧. ╓Ё╓наЮ╨Н╓о cvs ╔в╔М╔╟╔И╔Ю╓РмЬмя╓╧╓К╓н╓г╓о╓й╓╞, ╔Й╔щ╔╦╔х╔Й╓н╢имЩц╢еЖ╪т╓╛╔Й╔щ╔╦╔х╔Й╓нцФ╓г╔у╔║╔╓╔К╓Рд╬юэ╔Ё╔т║╪╓╧╓К╓Ё╓х╓к╓Х╓ц╓ф╧т╓й╓О╓Л╓ч╓╧. ╓й╓С╓г╔п╔╓╔╞╬╝╡╟ (bikeshed) ╓н©╖╓к╓ч╓г╣╓╓Р╩х╓О╓й╓╠╓Л╓п╓╓╓╠╓й╓╓╓С╓г╓╧╓╚? ╟Л╦ю╓г╦ю╓ц╓ф╓╥╓ч╓╗╓п, ╓╫╓╕╓╧╓ы╓╜╓г╓о╓╒╓Й╓ч╓╩╓С. ╓Б╓╕╬╞╓╥╬э╓╥╓╞юБлю╓╥╓ч╓╥╓Г╓╕. ╓©╓х╓╗╓п, ╓╒╓й╓©╓╛╔п╔╓╔╞╬╝╡╟╓Р╥З╓ф╓К╣╩╫я╓Р╩Щ╓ц╓ф╓╓╓©╓х╓╥╓ч╓╧. ╓╥╓╚╓╥╓╫╓Л╓о, еи╓М╓╕╓х╓╥╓ф╓╓╓К©╖╓╛╣╓╓кфЧ╓И╓й╓╓╓╚╓И╓х╦ю╓ц╓ф, б╬©м╓╛╔п╔╓╔╞╬╝╡╟╓Р╥З╓ф╓Х╓╕╓х╓╥╓ф╓╓╓К╓н╓Р╩ъ╓А╓фни╓╓мЩмЁ╓к╓о╓й╓Й╓ч╓╩╓С╓Х╓м. ╓Ё╓Л╓о, ╪╚й╛╓н╧тф╟╓к╓д╓╓╓ф╫╫й╛╓ймЩ╡Р╓Р╩Щ╓ц╓ф╓╓╓К╓й╓И, ╓╒╓й╓©╓о╨ы╓╚╓й╣║г╫╓╧╓ы╓ф╓к╓О╓©╓ц╓ф╣дою╓╧╓Ки╛мв╓о╓й╓╓╓Ё╓х╓Р╪╗╓╧хФсх╓г╓╧. ╓╒╓Кйя╧╧╓к╓Х╓ц╓ф╩╨╓ъ╫п╓╣╓Л╓К╔н╔╓╔╨╓наМнл╓о, ╓╫╓нйя╧╧╓нйё╩╗╓╣╓кх©хФнЦ╓╧╓К╓н╓ю╓х╦ю╓ц╓ф╓╓╓К©мцё╓Б╓╓╓ч╓╧. ╓╣╓И╓к╬э╓╥╓╞, ╢╟а╢╓й╡СеЗ╓Р╬р╡П╓╥╓ч╓╥╓Г╓╕. Poul-Henning Kamp ╓о, ║ж&man.sleep.1; ╓ой╛©Т╓ниц©Т╓Р╟З©Т╓х╓╥╓ф╪Х╓К╓ы╓╜╓╚║в╓х╓╓╓╕ хС╬О╓кд╧╓╓╣дою╓н╦Е╓г, A bike shed (any colour will do) on greener grass... ╓х╓╓╓╕╔©╔╓╔х╔К╓нд╧й╦╓РеЙ╧ф╓╥╓ч╓╥╓©. ╢ь╥╦╓н╓╒╓КиТй╛╓ю╓╠╓Р╟й╡╪╓к╥г╨э╓╥╓ч╓╧.
1999 г╞ 10 ╥Н 2 фЭ freebsd-hackers ╓к╓ф Poul-Henning Kamp ╓Ё╓н╔п╔╓╔╞╬╝╡╟, ╓и╓╕╓ю╓М╓╕? ц╞╓╚╓╛╓©╓╨╓м╓ч╓╥╓©. д╧╓╓║д╓х╓╓╓╕╓╚, ╓Ю╓╥╓М╦е╓╓оц╓к╓й╓Й╓ч╓╧╓╛, цФ©х╓о╓О╓Й╓х╢йц╠╓йоц╓г╓╧. ╔я║╪╔╜╔С╔╫╔С (C. Northcote Parkinson) ╓о 1960 г╞бЕ╫Иф╛╓к ╔я║╪╔╜╔С╔╫╔С╓нк║б╖ ╓х╦ф╓п╓Л╓Ккэ╓Р╫Я╓╜╓ч╓╥╓©. ╓Ё╓нцФ╓к╓о╓╣╓ч╓╤╓ч╓й╥п╠д╓нноЁь╓к╢ь╓╧╓Кф╤╩║╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. [ ╓Ё╓нкэ╓к╢ь╓╧╓К╡РюБ╓╛╓╒╓ц╓©╓╛╬йн╛ ] ╔п╔╓╔╞╬╝╡╟╓к╢ьо╒╓╧╓КнЦ╓х╓╥╓ф, ╓Б╓╕╟Л╓д╓н╫емв╓й╧╫ю╝мваг╓х╓й╓ц╓ф╓╓╓К╓н╓о╦╤╩рнох╞ее╫Й╓г╓╧. ╓Ё╓нкэ╓нг╞бЕ╓╛╓О╓╚╓Й╓ч╓╧╓м. ╔я║╪╔╜╔С╔╫╔С╓о, ╓╒╓й╓©╓╛╫елР╡Я╓к╫пюй╓╥╓ф ©Ти╢кЭ╓╚╓И©Т10╡╞╔и╔К╣╛ло╓н╦╤╩рнох╞ее╫Й╓н╥Зюъ╓н╬╣г╖╓Рфю╓К ╓Ё╓х╓о╓г╓╜╓К╓г╓╥╓Г╓╕╓╛, ╓╒╓й╓©╓╛╥З╓ф╓©╓╓╓н╓╛╔п╔╓╔╞╬╝╡╟╓й╓И╓п, ╫╙╓О╓Й╓й╓╜╣дою╓к╢╛╓╜╧Ч╓ч╓Л╓К╓ю╓М╓╕╓х╦ю╓ц╓ф╓╓╓ч╓╧. ╔я║╪╔╜╔С╔╫╔С╓о╓Ё╓н╓Х╓╕╓кюБлю╓╥╓ф╓╓╓ч╓╧. ╓Ё╓Л╓о╦╤х╞╓╛м╬╓Й╓к╣ПбГ╓г╧Б╡а╓гйё╩╗╓й╓н╓гц╞╓Б╓Ё╓Л╓Р╟Л╪Й╓к╟╝╓К╓Ё╓х╓╛╓г╓╜╓╨, ╓╫╓Л╓Р╩Н╓ъ╓К╓╞╓И╓╓╓й╓И╓Ю╓╥╓М, ╪Й╓╛╫п╓╩╓й╓╞╓й╓Ка╟╓к б╬╓нц╞╓╚╓╛╓╧╓ы╓ф╓Р╬э╨ы╓к╔а╔╖╔ц╔╞╓╧╓К╓Ё╓х╓Р ╟З╓╜╪У╓╠╓К╓Ё╓х╓кмЙ╓К╓н╓г╓╧. ╔Й╔а╔Ц║╪╔и║╕╔у╔║╔╓╔С╔ч╔С (Richard P. Feynmann) ╓о, ╔М╔╧╔╒╔И╔Б╔╧╓г╓Ё╓н╪Й╓н╫емв╓й╥п╦Ё╓Р╡©еы╓Б╦╚╓ф╓╜╓©╓хкэ╓к╫Я╓╓╓ф╓╓╓ч╓╧. ╟ЛйЩ╓г╔п╔╓╔╞╬╝╡╟╓н╬Л╧Г╓о, ц╞╓г╓Б╫╣кЖ╓к╓Ё╓Л╓Р╨Н╓Й╬Е╓╡╓К╓Ё╓х╓╛╓г╓╜, ╓╥╓╚╓Б TV ╓н╩Н╧Г╓Р╦╚╓К╩Ч╢ж╓╛╓╒╓ч╓К╓ш╓и╓г╓╧. ╓й╓н╓г, ╓и╓С╓й╓к╫ЮхВ╓╛ю╟╓╗╓ф╓╒╓ц╓ф, ╓и╓С╓й╓к╥в╡Х╓╛╫ГеЖ╓г╓╒╓ц╓©╓х╓╥╓ф╓Б, ╓О╓©╓╥╓о╩е╩Ж╓Р╓Д╓ц╓ф╓╓╓К╓Х, ╓О╓©╓╥╓оцМ╟у╓Рй╖╓ц╓ф╓╓╓К╓Х, ╓╫╓╥╓ф ╓О╓©╓╥╓о╓Ё╓Ё╓к╓╓╓К╓Х, ╓х╓╓╓╕╓Ё╓х╓Р╪╗╓╫╓╕╓х╓╧╓К©м╓╛и╛╓╨╦╫╓Л╓ч╓╧. ╔г╔С╔ч║╪╔╞╓г╓о╓Ё╓Л╓Р║ж╩ьлФ╓Р╓д╓╠╓К║в╓х╦ф╓С╓г╓╓╓ч╓╧. ╓Ё╓Л╓о╦д©ме╙╓й╔в╔И╔╓╔и╓Дл╬ю╪╓Р╣А╓А, ╓╒╓К╬Л╫Й╓Р╩ь╓╥╪╗╓╥╓ф║ж╓Ё╓Ё! ╓Ё╓Ё╓о╡╤╓╛ ╓Д╓ц╓©╓С╓ю╓╪║а║в╓х╓╓╓╕╓Х╓╕╓й╓Б╓н╓г╓╧. ╓Ё╓Л╓ою╞╪ё╡х╓к╦╚╓И╓Л╓К╤╞╓╓фцд╖╓г╓╧╓╛, ╓╫╓нб╬╓н╓ш╓х╓С╓и╓н©м╓Б╓Ё╓╕╓╓╓╕иВ╓к©╤иЯ╓╕╡дг╫ю╜╓о╓╒╓К╓н╓г╓╧. ю╦╢╔╓╜╓н╔╩╔А╔С╔х╓к╓д╓╠╓И╓Л╓©б╜юв╓н╓Ё╓х╓Р╧м╓╗╓Л╓п╓╙й╛╓╚╓Й╓г╓╥╓Г╓╕.
╓р╓х╓д╓нее╣Е╓Р╪Х╓Йбь╓╗╓К╓н╓к, ╡©©м╓н FreeBSD ╔о╔ц╔╚║╪╓╛и╛мв? 1,172©м╓г╓╧. ее╣Е╓╛╬ц╓╗╓ф╓╓╓К╓х -CURRENT ╓гй╦╤Г╓Р╦ю╓╕╓н╓к 23 ©м. юъдЙ╬Е╓нлДбЙ╓г -questions ╓гоц╓Р╓╧╓ы╓╜╓Ё╓х╓к╓д╓╓╓фаШ╓╟╓н╓к 4 ©м. ╓╫╓Л╓Р send-pr (лУцМ: ╬ЦЁ╡йС╧П) ╓╧╓К╓н╓к 3 ©м(╓╫╓н╓╕╓а╓н╓р╓х╓д╓о╢ж╟Ц╓ц╓ф doc ╔╚╔ф╔╢╔Й╓каВ╓Й╓д╓╠╓И╓Л╓©╓╕╓╗╓к, фБмф╓╛║ж╟е╓╞╓й╓ц╓©║в╓х╓╓╓╕╓ю╓╠╓н╓Б╓н). buildworld ╓Р╪╨гт╓╣╓╩, 5 й╛╦Е╓к╓о╦╣╓клА╓╣╓Л╓К╓Х╓╕╓йее╣Е╓Р ╔ф╔╧╔х╓Б╓╩╓╨╓к╔Ё╔ъ╔ц╔х╓╧╓К╓н╓к 1 ©м. send-pr ╓╥╓©©м╓к, ╔я╔ц╔а╓╛╢ч╓ч╓Л╓ф╓╓╓й╓╓╓х║ж╓╓╓а╓Ц╓Б╓С║в╓Риу╓╠╓К╓н╓к 8 ©м. buildworld ╓╛╪╨гт╓╧╓К╓хй╦╤Г╓Р╦ю╓╕╓н╓к 5 ©м. ╪╚й╛╓н╓х╓Ё╓М╓г╓о╓а╓Ц╓С╓хф╟╓╞, cvsup ╓╥╓©╔©╔╓╔ъ╔С╔╟╓╛╟╜╓╚╓ц╓©╓С╓ю╓М╓╕╓хеЗ╓╗╓К╓н╓к 31 ©м. ©╥╓╥╓╓ее╣Е╓н╓©╓А╓н╔я╔ц╔а╓Р -hackers ╓кеЙ╓╡╓К╓н╓к 1 ©м. ╪╚й╛╓о 3г╞╓Ба╟╓к╔я╔ц╔а╓Р╨Н╓ц╓©╓╛, ╓╫╓Л╓Р -CURRENT ╓кеЙ╓╡╓©╓х╓╜╓к╓ол╣╩К╓╣╓Л╓©╓ю╓╠╓ю╓ц╓©, ╪╚й╛╓о send-pr ╓н╔╥╔╧╔ф╔Ю╓к╓о╥Ы╓й╥п╦Ё╓╛╓╒╓К╓х(╓╙╓ч╓╠╓к, дС╟ф╓╣╓Л╓©©╥╓╥╓╓ее╣Е╓к╓о╫юфПю╜╓╛л╣╓╓╓х╓ч╓г)й╦╤Г╓Р╦ю╓╕╓н╓к 1 ©м. ее╣Е╓╛╢Пкэ╔╥╔╧╔ф╔Ю╓ках╓ъ╧Ч╓ч╓Л╓ф╓╓╓й╓╓, committer ╓о╔Ё╔ъ╔Е╔к╔ф╔ё╓н╟у╦╚╓Рй╧╓╞╓Ё╓хл╣╓╥╓к╓Ё╓С╓й╓Ё╓х╓Р╓╧╓К╦╒мЬ╓ол╣╓╓╓х╤╚╓с, ║ж╓Ё╓С╓й╓х╓╜╓к -core ╓о╡©╓Р╓Д╓ц╓ф╓К╓С╓ю!?║в╓х╓О╓А╓╜╓а╓И╓╧╓н╓к 37 ©м. ╪╚е╬╪жцж╓╜╬Л╓н©╖╓кй╦╤Г╓Р╦ю╓╕╓н╓к 200 ©м. ╔я╔ц╔а╓╛ style(9) ╟Цх©╓ю╓х╩ье╕╓╧╓К╓н╓к 3 ©м. дС╟ф╓╣╓Л╓©©╥╓╥╓╓ее╣Е╓о GPL ╓н╡╪╓к╓╒╓К╓хй╦╤Г╓Р╦ю╓╕╓н╓к 70 ©м. GPL ╓х BSD ╔И╔╓╔╩╔С╔╧╓х MIT ╔И╔╓╔╩╔С╔╧╓х NPL ╓х, к© FSF аон╘╪т╓И╓н╦д©ме╙╓й╥Р╧╞к║╓нм╔╟лю╜╓к╓д╓╓╓ф╓ноюаХ╓РюО╓О╓╧╓н╓к 586 ©м. ╔╧╔Л╔ц╔и╓н╓╒╓а╓Ё╓а╓н╩ч╓Р -chat ╓Д -advocacy ╓к╟эф╟╓╧╓К╓н╓к 7 ©м. дС╟ф╓╣╓Л╓©ее╣Е╓Р, ╦е╓╓╓н╓Х╓Й╓╨╓ц╓хгЖ╟е╓╓╓н╓к╔Ё╔ъ╔ц╔х╓╥╓ф╓╥╓ч╓╕╓н╓к 1 ©м. FreeBSD ╓кгЖ╟е╓╓ее╣Е╓Риу╓╠╓К╓╞╓И╓╓╓й╓И©©╓ц╟е╓н╓ш╓╕╓╛╓ч╓╥╓ю╓х╓╓╓╕, ╔Ё╔ъ╔ц╔х╔А╔ц╔╩║╪╔╦╓ь╓ню╗╓ч╓╦╓╓хСфЯ╓нмР╓к╓Х╓ц╓ф, ╓╫╓Л╓Р╦╣╓клА╓╧╓н╓к 2 ©м. гЖ╟е╓╓ее╣Е╓╛д╒╬ц╓╥╓к╓╣╓Л╓©╓Ё╓х╓кбп╓╥╓ф╓и╓й╓Йю╪╓г╦Щою╓╥, -core ╓ню╪лю╓Рмв╣А╓╧╓К╓н╓к 46 ©м. ╓Б╓╥ FreeBSD ╓Р╓©╓ч╓╢╓ц╓а╓к╟э©╒╓╧╓К╓Ё╓х╓к╓й╓ц╓©╓х╓╜╓кет╧Г╓╛╓╓╓╓╓Х╓╕╓к, ╓Б╓ц╓х╬╝╓╣╓йее╣Е╓Рмв╣А╓╧╓К╓н╓к 11 ©м. -hackers ╓х -chat ╓н S/NхФ╓кй╦╤Г╓Р╦ю╓╓, ╧Ё╣д╓н╓©╓А╧жфи╓Р╪Х╓Й╓Д╓А╓К╓н╓к 73 ©м. ║жunsubscribe║в║ж╓и╓╕╓Д╓ц╓©╓И╧жфи╓Р╓Д╓А╓И╓Л╓К╓С╓г╓╧╓╚?║в ║ж╓Ё╓н╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓╚╓И╓О╓©╓╥╓РЁ╟╓╥╓ф╓╞╓ю╓╣╓╓║в╓х╓╓╓ц╓© ╔А╔ц╔╩║╪╔╦╓Р, нЦ╓н╔у╔ц╔©╓Р╓╞╓ц╓д╓╠╓феЙ╧ф╓╧╓К╓н╓к 13 ©м. ╓ъ╓С╓й╓╛╥Цою╓РюО╓О╓╩╓К╓н╓кк╩╓╛╓╥╓╞╓ф╣╓иу╓╚╓й╓╓╢ж╓к, ╨Н╤хцФ╓нее╣Е╓Р╔Ё╔ъ╔ц╔х╓╧╓К╓н╓к 1 ©м. ©╥╓╥╓╓ее╣Е╓о TenDRA ╓Р╩х╓ц╓ф╔Ё╔С╔я╔╓╔К╓╣╓Л╓©╬Л╧Г╓к 0.364% ╓Блю╓К╓╞╓й╓К(╓©╓ю╓╥ее╣Е╓Рн╘йЩбн╓к╓╥╓й╓╠╓Л╓п╓й╓И╓й╓╓), ╓ю╓╚╓И FreeBSD ╓о EGCS ╓╚╓И TenDRA ╓кйя╓╗╓К╓ы╓╜╓ю╓х╩ье╕╓╧╓К╓н╓к 31 ©м. ©╥╓╥╓╓ее╣Е╓охЧ╓╥╓╣╓к╥Г╓╠╓ф╓╓╓К╓хй╦╤Г╓Р╦ю╓╕╓н╓к 1 ©м. ║жMFC ╓ц╓ф╡©╓г╓╧╓╚?║в╓хй╧╓╞╓н╓к 9 ©м(send-pr ╓╥╓©©м╓Б╢ч╓Ю). ее╣Е╓╛╪Х╓Йбь╓╗╓И╓Л╓ф╓╚╓И 2 ╫╣╢ж╓Б╬ц╓╗╓ц╓я╓й╓╥╓ю╓хй╦╤Г╓Р╦ю╓╕╓н╓к 57 ©м. &a.nik; ╓к╓Х╓Кди╣╜ ╓Ё╓Л╓к╓огЗ╬п╓╥╓ч╓╥╓©. ╓╫╓Л╓╚╓И╓О╓©╓╥╓о╧м╓╗╓ч╓╥╓©. ║ж╓а╓Г╓ц╓хбт╓ф╓Х? ╓Ё╓н╔Й╔╧╔х╓н╓и╓Ё╓╚╓к, ║ь╓Ё╓Л╓Рй╦╫Я╓к╓ч╓х╓А╓К╓н╓к 1©м║ы╓х╓╓╓╕╓н╓╛╓╒╓ц╓ф╓Б╓╓╓╓╓С╓╦╓Ц╓й╓╓╓╚?║в ╓╫╓Л╓╚╓И╓О╓©╓╥╓о╦Г╓Й╓РЁ╚╓╓╓©╓н╓г╓╧ :-) ╓Ё╓н╧Юлэ╓нцЬ╨Н╦╒╓о Copyright (c) 1999 &a.des; ╓к╓╒╓Й╓ч╓╧. л╣цг╓г╩хмя╓╥╓й╓╓╓г╓╞╓ю╓╣╓╓.
╓ч╓╦╓А╓й FreeBSD ╔о╔ц╔╚║╪╓ю╓╠╓ноцбЙ лУ: &a.iwasaki;, 1997 г╞ 11 ╥Н 8 фЭ. SNAP ╓х╓╚ RELEASE ╓х╓╚╓о╡©? ╦╫╨ъ, FreeBSD ╓н CVS ╔Й╔щ╔╦╔х╔Й ╓к╓о, ╩╟╓д╓н╔╒╔╞╔ф╔ё╔ж/╫Ю╔╒╔╞╔ф╔ё╔ж╓й╔ж╔И╔С╔а╓╛╓╒╓Й╓ч╓╧ (╔╒╔╞╔ф╔ё╔ж╓йЁ╚х╞╔ж╔И╔С╔а╓о╩╟╓д╓╥╓╚б╦╨ъ╓╥╓й╓╓╓©╓А, ╓╙╓╫╓И╓╞ RELENG_2 ╔ж╔И╔С╔а╓нйя╧╧╓ог╞╓к 2 ╡С╓ю╓╠╓к╓й╓К╓г╓╥╓Г╓╕). RELENG_2_2 дл╬н 2.2-STABLE RELENG_3 дл╬н 3.X-STABLE RELENG_4 дл╬н 4-STABLE HEAD дл╬н ╓╒╓К╓╓╓о 5.0-CURRENT HEAD ╓об╬╓нфС╓д╓х╟Ц╓ц╓ф, ╪б╨щ╓н╔ж╔И╔С╔а╔©╔╟╓г╓о╓й╓╞, ║жcurrent, й╛╢Т╓╥╓ф╓╓╓й╓╓Ё╚х╞кэн╝║в╓н╓©╓А╓нц╠╓й╓К╔╥╔С╔э╔Й╔ц╔╞╓йдЙ©Т╓г╓╧. ╩Д╓©╓а╓о╓Ё╓Л╓Р -CURRENT ╓х╦ф╓С╓г╓╓╓ч╓╧. ╦╫╨ъ, -CURRENT ╓о 5.0 ╓нЁ╚х╞кэн╝╓г╓╒╓Й, 4.0-STABLE ╔ж╔И╔С╔а, ╓д╓ч╓Й RELENG_4 ╓о 2000 г╞ 3 ╥Н╓к -CURRENT ╓╚╓Ий╛╢Т╓╥╓ф╓╓╓ч╓╧. 2.2-STABLE ╔ж╔И╔С╔а, RELENG_2_2 ╓о 1996 г╞ 11 ╥Н╓к -CURRENT ╓╚╓Ий╛╢Т╓╥╓ч╓╥╓©. ╓Ё╓Л╓ойщ╪И╓╛╢╟а╢╓к╫╙н╩╓╥╓ф╓╓╓ч╓╧. ╪╚й╛мя╓н╔╚╔╧╔©╔Ю╔Й╔Й║╪╔╧╓Р╧╫цш╓╧╓К╓к╓о? ╔Й╔Й║╪╔╧╓Р╧╫цш╓╧╓К╓к╓о╩╟╓д╓н╓Ё╓х╓╛и╛мв╓г╓╧. ╓ч╓╨, vn ╔и╔И╔╓╔п╓╛ах╓ъ╧Ч╓ч╓Л╓©╔╚║╪╔м╔К╓Р╪б╧т╓╣╓╩╓ф╓╓╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╟й╡╪╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔Л║╪╔╥╔Г╔С╔у╔║╔╓╔К╓кди╡ц╓╥, ╔╚║╪╔м╔К╓Р╨Н╓Йд╬╓╥╓ф╓╞╓ю╓╣╓╓. pseudo-device vn #Vnode driver (turns a file into a device) ╪║╓к, CVS ╔Й╔щ╔╦╔х╔Йа╢бн╓Р╪Й╦╣╓к╓╙╓╓╓ф╓╙╓╞и╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓Л╓РфЧ╪Й╓╧╓К╓к╓о CVSUP ╓╛╩хмя╓г╓╜╓ч╓╧╓╛, supfile ╓г release ╓нл╬╬н╓Р cvs ╓к╓╥╓ф б╬╓н╔©╔╟╓Д date ╔у╔ё║╪╔К╔и╓Р╨О╫Э╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. *default prefix=/home/ncvs *default base=/a *default host=cvsup.FreeBSD.org *default release=cvs *default delete compress use-rel-suffix ## Main Source Tree src-all src-eBones src-secure # Other stuff ports-all www doc-all ╓╫╓╥╓ф cvsup -g supfile ╓Р╪б╧т╓╥╓ф╪╚й╛╓н╔ч╔╥╔С╓к CVS ╔Й╔щ╔╦╔х╔Йа╢бн╓Р╔Ё╔т║╪╓╥╓ч╓╧... ╨г╦Е╓к, ╔с╔К╔имя╓к╓╚╓й╓Й╓н╤У╓╜нн╟Х╓Рмя╟у╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓╫╓н╔г╔ё╔Л╔╞╔х╔Й╓Р /some/big/filesystem ╓х╓╥╓ф, ╬Е╓ннЦ╓г CVS ╔Й╔щ╔╦╔х╔Й╓Р /home/ncvs ╓кцж╓╓╓©╓Б╓н╓х╓╧╓К╓х, ╟й╡╪╓н╓Х╓╕╓к╓╥╓ф╔Й╔Й║╪╔╧╓Р╧╫цш╓╥╓ч╓╧. &prompt.root; setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; cd /usr/src/release &prompt.root; make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release
╓©╓ю╓╥, ╓╧╓г╓к /usr/obj ╟й╡╪╓к╧╫цшй╙╓╛б╦╨ъ╓╥╓ф╓╓╓К╓й╓И, buildworld ╓ни╛мв╓о╓╒╓Й╓ч╓╩╓С.
╫ХмЩ╓╛╫╙н╩╓╧╓К╓х, ╔Й╔Й║╪╔╧а╢бн╓╛ /some/big/filesystem/release ╓к╧╫цш╓╣╓Л, ╢╟а╢╓й FTP ╔╓╔С╔╧╔х║╪╔Кмя╓нгшишй╙╓╛ /some/big/filesystem/release/R/ftp ╓к╨Ню╝╓╣╓Л╓ч╓╧. -current ╟йЁ╟╓нЁ╚х╞╔ж╔И╔С╔а╓н SNAP ╓Р╪╚й╛╓г╧╫цш╓╥╓©╓╓╬Л╧Г╓о, RELEASETAG=SOMETAG ╓Р╬Е╓н make release ╓н╔Ё╔ч╔С╔и╔И╔╓╔С╓кди╡ц╓╥╓ч╓╧. нЦ╓╗╓п, RELEASETAG=RELENG_2_2 ╓х╓╧╓К╓х╨г©╥╓н 2.2-STABLE snapshot ╓╛╧╫цш╓╣╓Л╓ч╓╧.
╔╚╔╧╔©╔Ю╓н╔╓╔С╔╧╔х║╪╔К╔г╔ё╔╧╔╞╓Р╨Н╓К╓к╓о╓и╓╕╓╧╓Л╓п╓╓╓╓╓н╓г╓╧╓╚? /usr/src/release/Makefile ╓н╓╓╓М╓╓╓М╓й╔©║╪╔╡╔ц╔х╓х╓╥╓ф╔╓╔С╔╧╔х║╪╔К╔г╔ё╔╧╔╞, ╔╫║╪╔╧, ╔п╔╓╔й╔Й╔╒║╪╔╚╔╓╔ж╓Р╨Н╓К╢╟а╢╓й╫ХмЩ╓Р╪╚ф╟е╙╓к╧т╓й╓╕╓Х╓╕╓к╓й╓ц╓ф╓╓╓ч╓╧. Makefile ╓к╫╫й╛╓й╬ПйС╓╛╓╒╓Й╓ч╓╧. ╓╥╓╚╓╥, ╪б╧т╓к╓о make world ╓╛и╛мв╓г, б©╓╞╓н╩Ч╢ж╓х╔г╔ё╔╧╔╞╓нмфнл╓╛и╛мв╓г╓╧. make world ╓Р╧т╓й╓╕╓х╢Шб╦╓н╔п╔╓╔й╔Й╓Р╬Е╫Я╓╜╓╥╓ф╓╥╓ч╓╕╓н╓г╓╧╓╛. ╓╗╓╗, ╓╫╓Л╓╛╟Лхле╙╓й╧м╓╗йЩ╓г╓╧. л╬а╟╓╛╪╗╓╥╓ф╓╓╓К╓Х╓╕╓к make world ╓о╓╧╓ы╓ф╓н╔╥╔╧╔ф╔Ю╓н╔п╔╓╔й╔Й╓Р╨г╫И╓╚╓И╨Н╓Йд╬╓╥╓ч╓╧╓н╓г, ╥К╡л╓х╓╥╓ф, ╔╞╔Й║╪╔С╓г╟Л╢сю╜╓н╓╒╓К╢д╤╜╓Рфю╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧(╓Ё╓Л╓╛╓╫╓Л╓ю╓╠д╧╓╓╩Ч╢ж╓╛╓╚╓╚╓КмЩмЁ╓г╓╧). ╢д╤╜йя©Т DESTDIR ╓Р make world ╓Д make install ╓Р╪б╧т╓╧╓К╩Ч╓кдЙ╣а╓╥╓ф╓╙╓╞╓х, ©╥╓╥╓╞╨Н╓И╓Л╓©╔п╔╓╔й╔Й╓о ${DESTDIR}╓Р root ╓х╓ъ╓й╓╥╓©╔г╔ё╔Л╔╞╔х╔Й╔д╔Й║╪╓к╔╓╔С╔╧╔х║╪╔К╓╣╓Л╓ч╓╧. ╓╒╓К╓г╓©╓И╓А╓й╤╕м╜╔И╔╓╔ж╔И╔Й╓нйя╧╧╓Д╔в╔М╔╟╔И╔Ю╓н╨ф╧╫цш╓к╓Х╓ц╓ф make world ╓о╪╨гт╓╧╓К╓Ё╓х╓Б╓╒╓Й╓ч╓╧. ╔╥╔╧╔ф╔Ю╣╞ф╟╩Ч╓к (bus speed defaulted) ╓х╔А╔ц╔╩║╪╔╦╓╛╫п╓ч╓╧. Adaptec ╓н 1542 SCSI ╔ш╔╧╔х╔╒╔ю╔в╔©╓о, ╔Ф║╪╔╤╓╛╔╫╔у╔х╔╕╔╖╔╒е╙╓к╔п╔╧╔╒╔╞╔╩╔╧б╝еы╓нюъдЙ╓Р╧т╓й╓╕╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╟йа╟╓н╔п║╪╔╦╔Г╔С╓н 1542 ╔и╔И╔╓╔п╓о, ╩хмя╡дг╫╓й╨гбГ╓нб╝еы╓Р╣А╓А╓ф╔╒╔ю╔в╔©╓Р╓╫╓нюъдЙ╓к╓╥╓Х╓╕╓х╓╥╓ч╓╥╓©. ╓Ё╓Л╓офцдЙ╓н╔Ф║╪╔╤╓н╔╥╔╧╔ф╔Ю╓г╓олДбЙ╓╛╓╒╓К╩Ж╓╛╓О╓╚╓Й, ╦╫╨ъ╓г╓о╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔╙╔в╔╥╔Г╔С╓к TUNE_1542 ╓╛╡ц╓╗╓И╓Л╓ф╓╓╓ч╓╧. ╓Ё╓Л╓Р╩хмя╓╧╓К╓х, ╓Ё╓Л╓╛ф╞╓╞╔╥╔╧╔ф╔Ю╓г╓о╔г╔ё╔╧╔╞╓╛б╝╓╞╓й╓Й╓ч╓╧╓╛, ╔г║╪╔©╓н╬вфм╓╛╣╞╓╜╓фб╝╓╞╓о╓й╓И╓й╓╓╔╥╔╧╔ф╔Ю╓Б╓╒╓К╓г╓╥╓Г╓╕ ╔╓╔С╔©║╪╔м╔ц╔х╔╒╔╞╔╩╔╧╓кю╘╦б╓╛╓╒╓ц╓ф╓Б current ╓Рди╓╓╓╚╓╠╓И╓Л╓ч╓╧╓╚? ╓о╓╓, CTM ╔╥╔╧╔ф╔Ю╓Р╩х╓ц╓ф, ╔╫║╪╔╧╔д╔Й║╪а╢бн╓н╔ю╔╕╔С╔М║╪╔и╓Р╧т╓й╓О╓╨╓кди╓╓╓╚╓╠╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓и╓н╓Х╓╕╓к╓╥╓фгшиш╔у╔║╔╓╔К╓Р 240KB ╓кй╛ЁД╓╥╓ф╓╓╓К╓н╓г╓╧╓╚? хФЁсе╙©╥╓╥╓╓ BSD ╔ы║╪╔╧╓н╔╥╔╧╔ф╔Ю╓г╓о, split ╓кг╓╟у╓н╔п╔╓╔х╤╜Ё╕╓гй╛ЁД╓╧╓К ╔╙╔в╔╥╔Г╔С╓╛╓╒╓Й╓ч╓╧. ╟й╡╪╓о /usr/src/Makefile ╓╚╓И╓ннЦ╓г╓╧. bin-tarball: (cd ${DISTDIR}; \ tar cf - . \ gzip --no-name -9 -c | \ split -b 240640 - \ ${RELEASEDIR}/tarballs/bindist/bin_tgz.) ╩Д╓о╔╚║╪╔м╔К╓кЁхд╔╓Р╧т╓й╓╓╓ч╓╥╓©. ц╞╓каВ╓Л╓п╓╓╓╓╓г╓╧╓╚? FreeBSD ╔о╔С╔и╔ж╔ц╔╞╓н║жFreeBSD ╓ь╓н╧в╦╔║в╓Р╩╡╬х╓╥╓ф╓╞╓ю╓╣╓╓. ╓╒╓й╓©╓н╔╒╔╓╔г╔ё╔╒╓к╢╤╪у╓╥╓ч╓╧! PnP ISA ╔╚║╪╔и╓н╦║╫п╓х╫И╢Э╡╫╓о╓и╓н╓Х╓╕╓к╧т╓й╓╕╓н╓г╓╧╓╚? Frank Durda IV ╩А ╓Х╓Й:
мвею╓о, ╔ш╔╧╔х╓╛г╖╪╠╓╣╓Л╓ф╓╓╓й╓╓╔э║╪╔и╓Рц╣╓╧╩Ч╓к, ╓╧╓ы╓ф╓н PnP ╔э║╪╔и╓╛╠ЧеЗ╓╧╓К╓Ё╓х╓н╓г╓╜╓К╬╞©Т╓н I/O ╔щ║╪╔х╓╛╓╒╓К╓х╓╓╓╕╓Ё╓х╓г╓╧. ╓╫╓Л╓к╓Х╓Й, PnP ╔в╔М║╪╔ж╔К║╪╔а╔С╓╛Ё╚╩о╓╥╓©╓х╓╜, PnP ╔э║╪╔и╓╛б╦╨ъ╓╧╓К╓й╓И, ╓╧╓ы╓ф╓н PnP ╔э║╪╔и╓о╪╚й╛╓н╔Б╔г╔Кхж╧Ф╓Рйж╓╥╓ч╓╧. ╓╫╓н╔щ║╪╔х╓Р I/O read ╓╧╓К╓х╔в╔М║╪╔ж╔К║╪╔а╔С╓олД╓╓╓кбп╓╧╓К╔О╔╓╔╒║╪╔и-OR ╓╣╓Л╓© yes ╓Рфю╓ч╓╧. ╓Ё╓н╬Л╧Г╓о ╬╞╓й╓╞╓х╓Б 1╔с╔ц╔х╓╛ ON ╓к╓й╓Й╓ч╓╧. ╓╫╓╥╓ф, ╔в╔М║╪╔ж╔К║╪╔а╔С╓о╔Б╔г╔К ID(Microsoft/Intel ╓к╓Х╓ц╓фЁД╓ЙеЖ╓ф╓И╓Л╓ф╓╓╓ч╓╧)╓╛ X ╓Х╓Й╬╝╓╣╓╓╔э║╪╔и╓Р ╔╙╔у╔И╔╓╔С ╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓Ё╓наЮ╨Н╓Р╧т╓й╓╓, лД╓╓╧Г╓О╓╩╓к╠ЧеЗ╓╥╓ф╓╓╓К╔э║╪╔и╓╛╓ч╓ю ╩д╓ц╓ф╓╓╓К╓╚╓и╓╕╓╚╓Рд╢╓ы╓ч╓╧. ╓Б╓╥ 0 ╓╛йж╓ц╓ф╓╞╓К╓й╓И X ╓Х╓ЙбГ╓╜╓й ID ╓Р╩Щ╓д╔э║╪╔и╓о╓й╓╓╓Ё╓х╓к╓й╓Й╓ч╓╧. ╨ёеы╓о X ╓Х╓Й╓Б╬╝╓╣╓йцм╓Р╩Щ╓д╔э║╪╔и╓к╓д╓╓╓флД╓╓╧Г╓О╓╩╓ч╓╧. ╓Б╓╥╓╒╓К╓н╓г╓╒╓Л╓п, ╔в╔М║╪╔ж╔К║╪╔а╔С╓о╔Б╔г╔Кхж╧Ф╓╛ X ╓Х╓Й╬╝╓╣╓╓╓Ё╓х╓Рцн╓Й╓ч╓╧. ╨ёеы╓о, X-(limit/4) ╓Х╓ЙбГ╓╜╓йцм╓Р╩Щ╓д╔э║╪╔и╓Р╔╙╔у╔И╔╓╔С╓к╓╥╓флД╓╓╧Г╓О╓╩╓Р╥╚╓Ййж╓╥╓ч╓╧. ╓Ё╓н ID ╓нхо╟о╓к╓Х╓К╫Ю╔п╔╓╔й╔Й╔╣║╪╔а╓Р╫╫й╛╥╚╓Ййж╓╧╓Ё╓х╓к╓Х╓Й, ╔в╔М║╪╔ж╔К║╪╔а╔С╓о╔ч╔╥╔С╓кб╦╨ъ╓╧╓К╓╧╓ы╓ф╓н PnP ╔э║╪╔и╓нцм╓Р╨г╫╙е╙╓кфю╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╫╓н╥╚╓Ййж╓╥╓н╡С©Т╓о 2^64 ╓Х╓Й╓о╓К╓╚╓к╬╞╓й╓╓╡С©Т╓г╓╧. ID ╓офС╓д╓н 32-bit (╓д╓ч╓Й 64bit) ╔у╔ё║╪╔К╔и + 8 bit ╔а╔╖╔ц╔╞╔╣╔Ю╓╚╓И╓й╓Й╓ч╓╧. ╨г╫И╓н 32 bits ╓о╔ы╔С╔ю╓н╪╠йл╩р╓г╓╧. ╓Ё╓Л╓о╦Ьи╫╓╣╓Л╓ф╓о╓╓╓ч╓╩╓С╓╛, ф╠╟Л╓н╔ы╔С╔ю╓╚╓И╤║╣К╓╣╓Л╓ф╓╓╓К╟ш╓й╓К╔©╔╓╔в╓н╔э║╪╔и╓г╓о╟ш╓й╓К 32-bit ╔ы╔С╔ю ID ╓Р╩Щ╓д╓Ё╓х╓╛╓г╓╜╓К╓Х╓╕╓к╧м╓╗╓И╓Л╓ч╓╧. ю╫б╓╦╣╓РфцдЙ╓╧╓К╓ю╓╠╓н╓©╓А╓к 32-bit ╓о╓╓╓╞╓И╓╚╡А╬Й╓г╓╧. ╡╪╟л╓н 32-bit ╓о╔╥╔Й╔╒╔Кхж╧Ф, ╔╓║╪╔╣╔м╔ц╔х╔╒╔и╔Л╔╧╓й╓и╓н╔э║╪╔и╓РфцдЙ╓╧╓К╓Б╓н╓г╓╧. ╔ы╔С╔ю╓о╬Е╟л 32 bits ╓╛╟ш╓й╓ц╓ф╓╓╓й╓╓╓н╓г╓╒╓Л╓п, ╡╪╟л 32-bit ╓╛ф╠╟Л╓г╓╒╓К 2кГлэ╓н╔э║╪╔и╓Рю╫б╓╓╧╓К╓Ё╓х╓о╓╒╓Й╓ч╓╩╓С. ╓╥╓©╓╛╓ц╓ф, ф╠╓╦╔©╔╓╔в╓нйё©Т╓н╔э║╪╔и╓Р╔ч╔╥╔С╓к╓╓╓Л╓К╓Ё╓х╓╛╓г╓╜, ╓Ё╓н╬Л╧Г╓г╓Б 64-bit а╢бн╓г╓о╔Ф╔к║╪╔╞╓г╓╧. 32-bit ╓н╔у╔ё║╪╔К╔и╓о╓╧╓ы╓ф╓Р 0 ╓к╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╩╓С. ╓Ё╓Л╓о╫И╢Э╡╫╓н╔п╔╓╔й╔Й╔╣║╪╔а╓н╢ж╔О╔╓╔╒║╪╔и-OR ╓к╓Х╓ц╓ф 0 ╓г╓о╓й╓╓ ╔с╔ц╔х╓Р╩╡╬х╓╧╓К╓╚╓И╓г╓╧. ╔╥╔╧╔ф╔Ю╓╛╓╧╓ы╓ф╓н╔э║╪╔и╓нм©╓╗╓И╓Л╓© ID ╓Рг╖╪╠╓╧╓К╓х, ╓╫╓Л╓╬╓Л╓н╔э║╪╔и╓кбп╠Ч╓╥╓©╫ХмЩ╓Р╟Л╓д╓╨╓д(ф╠╟Л╓н I/O ╔щ║╪╔х╓Рдл╓╥╓ф)╧т╓й╓╓╓ч╓╧. ╓╫╓╥╓ф, мЬмя╓г╓╜╓КЁД╓Й╧Ч╓ъ╓на╙бР╓й╓и╓н╔э║╪╔и╓╛и╛мв╓х╓╧╓К╔Й╔╫║╪╔╧╓Р╦║╫п╓╥╓ч╓╧. ╓╧╓ы╓ф╓н╔э║╪╔и╓к╓д╓╓╓ф╓Ё╓н╬ПйС╓Р╫╦╓А╓ч╓╧. ╓Ё╓н╬ПйС╓о╔о║╪╔и╔г╔ё╔╧╔╞╬Е╓н ECU ╔у╔║╔╓╔К╓й╓и╓н╬ПйС╓х╓ч╓х╓А╓И╓Л, ╔ч╔╤║╪╔э║╪╔и╓н BIOS ╓к╓Б╥К╧Г╓╣╓Л╓ч╓╧. ╔ч╔╤║╪╔э║╪╔и╬Е╓н╔о║╪╔и╔╕╔╖╔╒╓ь╓н ECU ╓х BIOS PnP ╓н╔╣╔щ║╪╔х╓одл╬О╓оеЩ╧Г╓╣╓Л╓ф╓╓╓ч╓╧╓╛, ╪Чйу╣║╢О╓к╓д╓╓╓ф╓о©©╓н PnP╓г╓╒╓К╓х╓о╓╓╓╗╓ч╓╩╓С. ╓╥╓╚╓╥, BIOS ╓н╬ПйС╓к ECU ╓н╬ПйС╓Р╡ц╓╗╓фд╢╨╨╓╧╓К╓Ё╓х╓г, ╔в╔М║╪╔ж╔К║╪╔а╔С╓о PnP ╔г╔п╔╓╔╧╓╛╨фгшцж╓г╓╜╓й╓╞╓й╓К╓Ё╓х╓РхР╓╠╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╓╫╓Л╓╚╓И, ╨феы PnP ╔г╔п╔╓╔╧╓к╔╒╔╞╔╩╔╧╓╥, I/O, DMA, IRQ, ╔А╔Б╔Й╔ч╔ц╔в╔╒╔и╔Л╔╧╓нюъдЙ╓Р╓╥╓ч╓╧. ╔г╔п╔╓╔╧╓о╓Ё╓н╔╒╔и╔Л╔╧╓к╦╚╓╗╓К╓Х╓╕╓к╓й╓Й, ╪║╓к╨ф╣╞ф╟╓╧╓К╓ч╓г╓Ё╓н╟лцж╓РюЙ╓А╓ч╓╧. ╓╥╓╚╓╥, ╓╒╓й╓©╓нк╬╓Ю╩Ч╓к╟эф╟╓╣╓╩╓К╓Ё╓х╓╛ит╡дг╫╓г╓╒╓К, ╓х╓╓╓ц╓ф╓╓╓К╓О╓╠╓г╓о╓╒╓Й╓ч╓╩╓С. ╟й╬Е╓ноц╓г╓обГ╓╜╓╞ц╠╫Ц╡╫╓Р╓╥╓ф╓╒╓Й╓ч╓╧╓╛, ╢Пкэе╙╓й╧м╓╗йЩ╓офю╓И╓Л╓©╓г╓╥╓Г╓╕. ╔ч╔╓╔╞╔М╔╫╔у╔х╓о, ╔э║╪╔и╓н╔М╔╦╔ц╔╞╓╛бпн╘╓╧╓К I/O ╔╣╔╓╔╞╔К╓г╓о╔г╔Ё║╪╔и╓╥╓ф╓╓╓й╓╓(лУцМ: ╓╙╓╫╓И╓╞ read ╩Ч╓╥╓╚╔г╔Ё║╪╔и╓╣╓Л╓ф╓╓╓╨ write ╩Ч╓о╔щ║╪╔х╓╛╤У╓╓╓ф╓╓╓К╓х╓╓╓╕╟улё╓г╓╥╓Г╓╕), ╔в╔И╔╓╔ч╔Й╔в╔Й╔С╔©╓н╔╧╔ф║╪╔©╔╧╔щ║╪╔х╓н╓╓╓╞╓д╓╚╓Р PnP ╓н╓©╓А╓кюЙм╜╓╥╓ч╓╥╓©. ╩Д╓о╫И╢Э╓н PnP ╓ндС╟ф╔Л╔с╔Е║╪╩Ч╓к IBM ╫Цю╣╓н╔в╔Й╔С╔©╔э║╪╔и╓г╔╧╔ф║╪╔©╔╧╔щ║╪╔х╓н write ╓н╔г╔Ё║╪╔и╓╛╓╣╓Л╓ф╓╓╓К╓х╓╓╓╕╓Ё╓х╓к╣╓╓╛╓д╓╜╓ч╓╥╓©╓╛, MS ╓о tough (╢Х╦г, ит╠©, л╣к║╓й) ╓х╦ю╓ц╓ф╓╓╓ч╓╧. ╓╫╓╥╓ф╔в╔Й╔С╔©╓н╔╧╔ф║╪╔©╔╧╔щ║╪╔х╓ь╔╒╔и╔Л╔╧╓нюъдЙ╓н╓©╓А╓к write ╓Р╧т╓й╓ц╓ф╓╓╓ч╓╧. ╓ч╓©, ╓╫╓н╔╒╔и╔Л╔╧ + 0x800 ╓х read ╓н╓©╓А╓н 3хжлэ╓н I/O ╔щ║╪╔х╓╛ 0x200 ╓╚╓И 0x3ff ╓н╢ж╓н╓и╓Ё╓╚╓кцж╓╚╓Л╓К╓г╓╥╓Г╓╕.
FreeBSD ╓о, б╬╓н╔╒║╪╔╜╔ф╔╞╔а╔Ц╓Р╔╣╔щ║╪╔х╓╥╓й╓╓╓С╓г╓╧╓╚? ╓╓╓╞╓д╓╚╓н╔╟╔К║╪╔в╓н©м║╧╓╛, FreeBSD ╓нб╬╓н╔╒║╪╔╜╔ф╔╞╔а╔Ц╓ь╓н╟э©╒╓к╢ь©╢╓Р╪╗╓╥╓ф╓╙╓Й, FreeBSD/AXP (ALPHA) ╓о╓Ё╓Л╓И╓ню╝╡л╓х╓╥╓ф╓о╓х╓ф╓Бю╝╦Ы╓╥╓©╓Б╓н╓н╟Л╓д╓г╓╧. FreeBSD/AXP ╓о╦╫╨ъ ftp://ftp.FreeBSD.org/pub/FreeBSD/alpha ╓╚╓ИфЧ╪Й╓г╓╜╓ч╓╧. ALPHA ╓ь╓н╟э©╒хг╓╛╦╫╨ъф╟╓╞╣║╪О╓оаЩ╓╗╓д╓д╓╒╓Й, ╓╫╓нцФ╓к╓о AlphaStation, AXPpci, PC164, Miata ╓╫╓╥╓ф Multia ╓х╓╓╓ц╓©╔Б╔г╔К╓╛╢ч╓ч╓Л╓ф╓╓╓ч╓╧. ╦╫╬У╓к╓д╓╓╓ф╓н╬ПйС╓Рфю╓К╓к╓о freebsd-alpha@FreeBSD.org╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓к╩╡╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╓╫╓нб╬╓к FreeBSD ╓н SPARC ╔╒║╪╔╜╔ф╔╞╔а╔Ц╓ь╓н╟э©╒╓╛╓╒╓Й╓ч╓╧. ╔в╔М╔╦╔╖╔╞╔х╓ь╓н╩╡╡ц╓к╤╫лё╓╛╓╒╓КйЩ╓о freebsd-sparc@FreeBSD.org╔А║╪╔Й╔С╔╟╔Й╔╧╔х ╓к╩╡╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ©й╧тцФ╓н╔в╔И╔ц╔х╔ш║╪╔Ю╓н╔Й╔╧╔х╓к╓Б╓ц╓х╓Б╨г╤Ади╡ц╓╣╓Л╓©╓н╓╛ IA-64 ╓х PowerPC╓г╓╧. ╬э╨ы╓о freebsd-ia64@FreeBSD.org ╓╙╓Х╓с/╓╒╓К╓╓╓о freebsd-ppc@FreeBSD.org╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓к╩╡╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ©╥╓╥╓╓╔╒║╪╔╜╔ф╔╞╔а╔Ц╓к╢ь╓╧╓К╟Лхле╙╓й╣дою╓к╓д╓╓╓ф╓о ©╥╓╥╓╓╔╒║╪╔╜╔ф╔╞╔а╔Ц╓к╢ь╓╧╓К╟Лхле╙╓й╣дою╓к╓д╓╓╓ф╓о freebsd-platforms@FreeBSD.org╔А║╪╔Й╔С╔╟╔Й╔╧╔х ╓ь╩╡╡ц╓╥╓ф╓╞╓ю╓╣╓╓. ╔г╔п╔╓╔╧╔и╔И╔╓╔п╓РЁ╚х╞╓╥╓©╓н╓г, ╔А╔╦╔Ц║╪хж╧Ф╓╛мъ╓╥╓╓╓н╓г╓╧╓╛. ╓Ё╓Л╓о, Ё╚х╞╓╥╓©╔и╔И╔╓╔п╓Р╦ЬЁ╚╓╧╓К╓╚╓и╓╕╓╚╓к╟мб╦╓╥╓ч╓╧. ╦ЬЁ╚╓╧╓К╓н╓г╓╒╓Л╓п, ╔и╔И╔╓╔п╓н╔╫║╪╔╧╔Ё║╪╔и, files.i386 ╓нйя╧╧, ╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓н╔╣╔С╔в╔К, ╔г╔п╔╓╔╧╓╛╩х╓╕╔╧╔з╔╥╔Ц╔К╔у╔║╔╓╔К╓Р╨Ню╝╓╧╓К MAKEDEV ╓н╔Ё║╪╔и╓Р╩Д╓©╓а╓каВ╓ц╓ф╓╞╓ю╓╣╓╓. ╦ЬЁ╚╓╧╓К╓д╓Б╓Й╓╛╓й╓╓╬Л╧Г, ╔И╔╓╔╩╔С╔╧╓нлДбЙ╓к╓Х╓Й╦ЬЁ╚╓г╓╜╓й╓╓╬Л╧Г╓о, ╔╜╔Ц╔И╔╞╔©╔А╔╦╔Ц║╪хж╧Ф 32 ╓╙╓Х╓с, ╔ж╔М╔ц╔╞╔А╔╦╔Ц║╪хж╧Ф 8 ╓╛╓Ё╓н╓Х╓╕╓йлэе╙╓н╓©╓А╓км╫лС╓╣╓Л╓ф╓╓╓ч╓╧. ╓Ё╓Л╓И╓нхж╧Ф╓Р╩хмя╓╥╓ф╓╞╓ю╓╣╓╓. ╓и╓а╓И╓н╬Л╧Г╓г╓╒╓Л, ╔и╔И╔╓╔п╓к╢ь╓╧╓К╬ПйС╓Р &a.hackers; ╓кн╝╓╥╓фд╨╓╠╓К╓х╫У╓╚╓Й╓ч╓╧. бЕбь╓н╔г╔ё╔Л╔╞╔х╔Йгшцж╔щ╔Й╔╥║╪ ╦╫╨ъ╩х╓О╓Л╓ф╓╓╓К╔г╔ё╔Л╔╞╔х╔Й╓нгшцж╔щ╔Й╔╥║╪╓о, ╩Д╓╛ 1983 г╞╓к╫Я╓╓╓©╓Б╓н╓╚╓Иа╢╓╞йя╧╧╓╣╓Л╓ф╓╓╓ч╓╩╓С. ╩Д╓оеЖ╫И╓нгшцж╔щ╔Й╔╥║╪╓Р, ╔╙╔Й╔╦╔й╔К╓н fast filesystem ╓н╓©╓А╓к╫Я╓╜, ╓ч╓ц╓©╓╞╡ЧдЙ╓╥╓ф╓╓╓ч╓╩╓С. ╓Ё╓н╔щ╔Й╔╥║╪╓о╔╥╔Й╔С╔ю╔╟╔К║╪╔в╓Р╩х╓╓©т╓╞╓╧╓н╓Рки╓╟╓к╓о╓╕╓ч╓╞╓╓╓╜╓ч╓╥╓©╓╛, ╓╙╣╓╓е╓╜╓нйЩ╓Б╓╓╓Кдл╓Й find ╓нф╟╨Н╓к╓оите╛юз╓г╓╧. ╓ш╓х╓С╓и╓н╔у╔║╔╓╔К╔╥╔╧╔ф╔Ю╓нфБмф╓о, ©╪╓╣м╔юХ╦║╨В(ftw ╓х╓Б╦ф╓п╓Л╓ч╓╧)╓к╓Х╓ц╓ф╨Н╓И╓Л╓©╔╒║╪╔╚╔╓╔ж╓╚╓И, цЙ╫п(restore)╓╥╓ф╨Ню╝╓╣╓Л╓ч╓╧. ╓Ё╓н╨щ, ╔г╔ё╔Л╔╞╔х╔Й╓о,╔╥╔Й╔С╔ю╔╟╔К║╪╔в╓к╓ч╓©╓╛╓ц╓фгшцж╓╣╓Л, ╟й╧ъ╓н©╪╓╣м╔юХ╦║╨В╓Р╧т╓╕╓к╓о, ╧м╓╗фю╓К╦б╓Й╨г╟╜╓н╬Убж╓к╓й╓Й╓ч╓╧. ╓Б╓╥╨Ню╝╓╧╓К╔г╔ё╔Л╔╞╔х╔Й╓наМ©Т╓╛╓О╓╚╓ц╓ф╓╓╓Л╓п, ╡Р╥ХйЩк║╓о╓╒╓Й╓ч╓╧. (аМ©Т/╔╥╔Й╔С╔ю╔╟╔К║╪╔в©Т)╦д╓н╔г╔ё╔Л╔╞╔х╔Й╓Р, ╔╥╔Й╔С╔ю╔╟╔К║╪╔в╓╢╓х╓к╓ч╓х╓А╓ф╨Ню╝╓╧╓Л╓пни╓╓╓н╓г╓╧. ╓Б╓а╓М╓С╨ге╛╓й╔г╔ё╔Л╔╞╔х╔Йгшцж╓к╓й╓К╓Х╓╕╓к, аМ©Т╓Рм╫б╛╓╧╓КйЩк║╓Р╧м╓╗╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓╥╓╚╓╥╡╬╓к╔╥╔Й╔С╔ю╔╟╔К║╪╔в╓╒╓©╓Й╓н╔г╔ё╔Л╔╞╔х╔Й©Т╓Р 10 ╓╞╓И╓╓╓н╬╝╓╣╓й©Т╓к╦гдЙ╓╥╓ф╓╥╓ч╓ц╓©╓х╓╥╓ф╓Б, бГиЩ╓й╡Ча╠╓╛к╬╓А╓К╓г╓╥╓Г╓╕. ╓Ё╓н╔щ╔Й╔╥║╪╓Рмя╓╓╓К╓ы╓╜╔Й╔╧╔х╔╒╨Н╤х╓Р, дл╬О╓н╨Н╤х(╓╙╓╫╓И╓╞╢Шб╦╓н╔щ╔Й╔╥║╪╓Р╩хмя╓╥╓©╓ш╓╕╓╛ни╓╓╓г╓╥╓Г╓╕)╓Р╤Хйл╓╧╓К╓к╓о, 10 иц╢ж╓н╢ж╓к╨Ню╝╓╣╓Л╓©╔г╔ё╔Л╔╞╔х╔Й╓Р╨гбГ 10 ╦д╓ч╓г╓ч╓х╓А╓фц╠╟Л╓н╔╥╔Й╔С╔ю╔╟╔К║╪╔в╓к╫Я╓╜╧Ч╓Ю╓х╓╓╓╕╪Й╫Г╓╛╩х╓╗╓К╓г╓╥╓Г╓╕. ╓х╓к╓╚╓╞╩Д╓н╥Кою╓о, ╓╫╓М╓╫╓М╪б╦Ё╓Р╩о╓А╓ф╦╚╓К╩Ч╢Э╓ю╓М╓╕╓х╓╓╓╕╓Ё╓х╓г╓╧. ╔╚║╪╔м╔К╔я╔к╔ц╔╞╓Р╨гбГ╦б╓кмЬмя╓╧╓К ╓Ё╓нюА╓о, freebsd-current ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓к &a.wpaul; ╩А╓╛еЙ╧ф╓╥╓©╔А║╪╔К╓Р, &a.des; ╩А╓╛╧╩ю╣╓╥, [] фБ╓н╔Ё╔А╔С╔х╓Рди╡ц╓╥╓ф╟Змя╓╥╓©╓Б╓н╓г╓╧. From: Bill Paul <wpaul@skynet.ctr.columbia.edu> Subject: Re: the fs fun never stops To: ben@rosengart.com Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT) Cc: current@FreeBSD.ORG [<ben@rosengart.com> ╓╛╟й╡╪╓н╔я╔к╔ц╔╞╔А╔ц╔╩║╪╔╦╓РеЙ╧ф╓╥╓ч╓╥╓©.] > 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 ╓Ё╓н╓Х╓╕╓й╔А╔ц╔╩║╪╔╦╓╛и╫╪╗╓╣╓Л╓©╬Л╧Г, лДбЙ╓╛╣╞╓╜╓К╬У╤╥╓РЁнг╖╓╥╓ф, ╬ПйС╓РаВ╓К╓ю╓╠╓г╓о╫╫й╛╓г╓о╓╒╓Й╓ч╓╩╓С. ╡╪юЧ╓Р╓д╓╠╓©л©нА╔щ╔╓╔С╔©цм╓о╫емв╓йцм╓г╓╧╓╛, ╩дг╟╓й╓╛╓И╓Ё╓нцм╓о╧╫ю╝╓к╟мб╦╓╥╓ч╓╧. ╓д╓ч╓Й, ╓Ё╓нцм╓о╩х╓ц╓ф╓╓╓К╔╚║╪╔м╔К╓н╔╓╔А║╪╔╦╓к╟мб╦╓╧╓К╓н╓г╓╧. ╓Б╓╥╔╧╔й╔ц╔в╔╥╔Г╔ц╔х╓й╓и╓н GENERIC ╔╚║╪╔м╔К╓Р╩х╓ц╓ф╓╓╓К╓н╓г╓╒╓Л╓п, б╬╓н©м╢ж╓╛лДбЙ╓н╓╒╓К╢ь©Т╓к╓д╓╓╓фди╩Н╓Р╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧╓╛, ╔╚╔╧╔©╔ч╔╓╔╨╓╣╓Л╓©╔╚║╪╔м╔К╓н╬Л╧Г╓о, ╩х╓ц╓ф╓╓╓Ккэ©м╓к╓╥╓╚лДбЙ╓н╣╞╓Ё╓ц╓©╬Л╫Й╓офцдЙ╓г╓╜╓й╓╓╓н╓г╓╧. ╡©╓Р╓╧╓Л╓пни╓╓╓н╓г╓╥╓Г╓╕? л©нА╔щ╔╓╔С╔©цм╓Р╔А╔Б╓╥╓ч╓╧. 0x8: ╓х╓╓╓╕иТй╛╓о╨ё╡Си╛мв╓╒╓Й╓ч╓╩╓С. и╛мв╓й╓н╓о 0xf0xxxxxx ╓х╓╓╓╕иТй╛╓г╓╧. ╔╥╔╧╔ф╔Ю╓╛╨ф╣╞ф╟╓╥╓©╓И, ╟й╡╪╓наЮ╨Н╓Р╧т╓╓╓ч╓╧. &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxxx ╓Ё╓Ё╓г, f0xxxxxx ╓ол©нА╔щ╔╓╔С╔©цм╓г╓╧. ╔╚║╪╔м╔К╔╥╔С╔э╔К╓н╔ф║╪╔ж╔К╓о╢ь©Т╓н╔╗╔С╔х╔Й╔щ╔╓╔С╔х╓Р╢ч╓ъ, л©нА╔щ╔╓╔С╔©цм╓о, ╢ь©ТфБиТ╓н╓╒╓Кею╓г╓╒╓Й╨г╫И╓нею╓г╓о╓й╓╓╓©╓А, ╓Ё╓наЮ╨Н╓Р╧т╓ц╓ф╓Б╢╟а╢╓к╟Лцв╓╧╓К╓Б╓н╓╛и╫╪╗╓╣╓Л╓й╓╓╬Л╧Г╓Б╓╒╓Й╓ч╓╧. ╓Ё╓н╬Л╧Г╓о, ╨г╦Е╓н╥Е╓Р╬й╓╓╓ф╓Б╓╕╓╓╓а╓и╓Д╓ц╓ф╓ъ╓ф╓╞╓ю╓╣╓╓. ╓Ё╓н╓Х╓╕╓к╓й╓Й╓ч╓╧. &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxx ╓Ё╓Л╓г╓Б╟Лцв╓╥╓й╓╓╬Л╧Г╓о, ╥Е╓Р╦╨╓И╓╥╓й╓╛╓И╡©╓И╓╚╓н╫пно╓╛╓╒╓К╓ч╓г╥╚╓Ййж╓╥╓ф╓╞╓ю╓╣╓╓. ╡©╓╚╫пно╓╣╓Л╓©╓И, ╓╫╓Л╓╛╔╚║╪╔м╔К╔я╔к╔ц╔╞╓Р╟З╓╜╣╞╓Ё╓╥╓©╡дг╫ю╜╓н╓╒╓К╢ь©Т╓н╔Й╔╧╔х╓г╓╧. ╓Ё╓Л╓о, лДбЙею╓Р╦╚иу╓╠╓Кю╣Ён╓ййЩк║╓г╓о╓╒╓Й╓ч╓╩╓С╓╛, ╡©╓Б╓й╓╓╓Х╓Й╓ч╓╥╓г╓╧. ╓Ё╓н╓Х╓╕╓й╔я╔к╔ц╔╞╔А╔ц╔╩║╪╔╦╓РеЙ╧ф╓╥╓ф╓╓╓К©м╓о╓Х╓╞╦╚Ёщ╓╠╓ч╓╧╓╛, ╓Ё╓н╓Х╓╕╓к, л©нА╔щ╔╓╔С╔©цм╓Р, ╔╚║╪╔м╔К╔╥╔С╔э╔К╔ф║╪╔ж╔К╓нцФ╓н╢ь©Т╓х╓д╓╜╧Г╓О╓╩╓фд╢╓ы╓ф╓╓╓К©м╓о╓ч╓Л╓г╓╧. ╔я╔к╔ц╔╞╓н╦╤╟Ь╓Рфм╓╜╩ъ╓А╓К╨гни╓нйЩк║╓о, ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Р╓х╓Й, gdb(1) ╓г╔╧╔©╔ц╔╞╔х╔Л║╪╔╧╓Р╧т╓╕╓Ё╓х╓г╓╧. ╓Б╓а╓М╓С -CURRENT ╓г gdb(1) ╓╛╓а╓Ц╓С╓хф╟╓╓╓ф╓╓╓Л╓п╓г╓╧╓╛(╩Д╓оф╟╓╞╓Ё╓х╓Рйщ╬з ╓г╓╜╓ч╓╩╓С. ELF ╡╫╓╣╓Л╓© gdb(1) ╓о╔╚║╪╔м╔К╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Рю╣╓╥╓╞╟╥╓╗╓й╓╓╓х╦ю╓ц╓ф╓╓╓К©м╓╛╓╓╓ч╓╥╓©. FreeBSD 3.0 ╓╛╔ы║╪╔©╔ф╔╧╔х╓Р╫╙╓╗╓Ка╟╓кд╢╓ы╓й╓╠╓Л╓п╓╓╓╠╓ч╓╩╓С. ╓╣╓Б╓й╓╓╓х CD ╫п╡ы╦Е╓кбГПЧМ╕╓РгЦ╓╕╓Ё╓х╓к╓й╓Й╓ч╓╧). ╓и╓ц╓а╓к╓╥╓М, ╩Д╓оиАдл╟й╡╪╓н╓Х╓╕╓к╓╥╓ч╓╧. ╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓Р╨Н╓Й╓ч╓╧. ╔╚║╪╔м╔К╔г╔п╔ц╔╛╓╛и╛мв╓╫╓╕╓г╓╒╓Л╓п options 'DDB' ╓Р╡ц╓╗╓ф╓Бни╓╓╓г╓╧(╩Д╓о╠й╣в╔К║╪╔в╓╛╣╞╓Ё╓ц╓ф╓╓╓╫╓╕╓й╬Л╧Г╓к, ╔ж╔Л║╪╔╞╔щ╔╓╔С╔х╓РюъдЙ╓╧╓К╓н╓к╩х╓ц╓ф ╓╓╓ч╓╧). config -g KERNELCONFIG ╓х╓╥╓ф╔с╔К╔и╔г╔ё╔Л╔╞╔х╔Й╓РюъдЙ╓╥╓ч╓╧. cd /sys/compile/KERNELCONFIG; make ╓Р╪б╧т╓╥╓ч╓╧. ╔╚║╪╔м╔К╓н╔Ё╔С╔я╔╓╔К╓╛╫╙н╩╓╧╓К╓н╓Рбт╓а╓ч╓╧. make install ╓Р╪б╧т╓╥╓ч╓╧. ╨ф╣╞ф╟╓╥╓ч╓╧. &man.make.1; ╔в╔М╔╩╔╧╓оё╡╓д╓н╔╚║╪╔м╔К, kernel ╓х kernel.debug ╓Р╔с╔К╔и╓╥╓ч╓╧. kernel ╓о /kernel ╓х╓╥╓ф╔╓╔С╔╧╔х║╪╔К╓╣╓Л, kernel.debug ╓о gdb(1) ╓н╔г╔п╔ц╔╟мя╔╥╔С╔э╔К╬ПйС╓Р╪Х╓Й╫п╓╧╓©╓А╓кмЬмя╓╣╓Л╓ч╓╧. Ён╪б╓к╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Р╓х╓К╓к╓о, /etc/rc.conf ╓Рйт╫╦╓╥╓ф dumpdev ╓Р╩хмя╓╥╓ф╓╓╓К╔╧╔О╔ц╔в╔я║╪╔ф╔ё╔╥╔Г╔С╓к╩ьдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╓Ё╓╕╓╧╓К╓х rc(8) ╔╧╔╞╔Й╔в╔х╓╚╓И dumpon(8) ╔Ё╔ч╔С╔и╓╛╪б╧т╓╣╓Л, ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╣║г╫╓╛м╜╦З╓к╓й╓Й╓ч╓╧. ╪Йф╟╓г dumpon(8) ╔Ё╔ч╔С╔и╓Р╪б╧т╓╥╓ф╓Б╓╚╓ч╓╓╓ч╓╩╓С. ╔я╔к╔ц╔╞╓н╦Е, ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓о savecore(8) ╔Ё╔ч╔С╔и╓Р╩хмя╓╥╓ф╪Х╓Й╫п╓╧╓Ё╓х ╓╛╓г╓╜╓ч╓╧. dumpdev ╓╛ /etc/rc.conf ╓гюъдЙ╓╣╓Л╓ф╓╓╓Л╓п, rc(8) ╔╧╔╞╔Й╔в╔х╓╚╓И savecore(8) ╓╛╪╚ф╟е╙╓к╪б╧т╓╣╓Л, ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Р /var/crash ╓кйщб╦╓╥╓ч╓╧. FreeBSD ╓н╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓н╔╣╔╓╔╨╓о, ╓у╓д╓╕й╙мЩ╔А╔Б╔Й╔╣╔╓╔╨╓хф╠╓╦╓г╓╧. ╓д╓ч╓Й 64MB ╓н╔А╔Б╔Й╓Рюя╓С╓г╓╓╓Л╓п, 64MB ╓н╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓╛ю╦ю╝╓╣╓Л╓К╓Ё╓х╓к╓й╓Й╓ч╓╧. /var/crash ╓к╫╫й╛╓й╤У╓╜мфнл╓╛╓╒╓К╓Ё╓х╓РЁнг╖╓╥╓ф╓╞╓ю╓╣╓╓. ╪Йф╟╓г savecore(8) ╓Р╪б╧т╓╧╓Л╓п, ╓Б╓ц╓х╤У╓╜мфнл╓н╓╒╓К╔г╔ё╔Л╔╞╔х╔Й╓к╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Рйщб╦╓г╓╜╓ч╓╧. options MAXMEM=(foo) ╓х╓╓╓╕╧т╓Р╔╚║╪╔м╔К╔Ё╔С╔у╔ё╔╟╔у╔║╔╓╔К╓кди╡ц╓╧╓К╓Ё╓х╓г, ╔╚║╪╔м╔К╓н╔А╔Б╔Й╩хмянл╓Рю╘╦б╓г╓╜╓ч╓╧. ╓©╓х╓╗╓п 128MB ╓н╔А╔Б╔Й╓╛╓╒╓К╬Л╧Г╓Б, ╔╚║╪╔м╔К╓н╔А╔Б╔Й╩хмянл╓Р 16MB ╓кю╘╦б╓╥, ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓н╔╣╔╓╔╨╓Б 128MB ╓г╓о╓й╓╞ 16MB ╓к╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Р╪Х╓Й╫п╓╩╓©╓И, ╟й╡╪╓н╓Х╓╕╓к gdb(1) ╓Р╩х╓ц╓ф╔╧╔©╔ц╔╞╔х╔Л║╪╔╧╓Р╓х╓Й╓ч╓╧. &prompt.user; gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0 (gdb) where и╛мв╓й╬ПйС╓╛ 1 ╡Хлл╓к╪Щ╓ч╓И╓й╓╓╓Ё╓х╓Бб©╓╓╓н╓г, ╓г╓╜╓Л╓п script(1) ╓Р╩х╓ц╓ф╫пно╓Р╣╜о©╓╥╓ч╓╧. strip ╓╥╓ф╓╓╓й╓╓╔╚║╪╔м╔К╔╓╔А║╪╔╦╓Р╩х╓╕╓Ё╓х╓г, а╢╓ф╓н╔г╔п╔ц╔╟╔╥╔С╔э╔К╓╛╩╡╬х╓г╓╜, ╔я╔к╔ц╔╞╓нх╞ю╦╓╥╓©╔╚║╪╔м╔К╓н╔╫║╪╔╧╔Ё║╪╔и╓н╧т╓╛и╫╪╗╓╣╓Л╓ф╓╓╓К╓о╓╨╓г╓╧. дл╬О, ю╣Ён╓й╔╞╔И╔ц╔╥╔Е╓ь╓н╡АдЬ╓Рдиюв╓╧╓К╓к╓о, ╫пно╓Р╨г╦Е╓н╧т╓╚╓И╣уйЩ╦Ч╓кфи╓ч╓й╓╠╓Л╓п╓й╓Й╓ч╓╩╓С. ╓ч╓© gdb(1) ╓Р╩х╓ц╓ф, йя©Т╓Д╧╫б╓бн╓нфБмф╓Ри╫╪╗╓╣╓╩, ╔╞╔И╔ц╔╥╔Е╓╥╓©╩Ч╓н╔╥╔╧╔ф╔Ю╓н╬Убж╓Рд╢╓ы╓И╓Л╓ч╓╧. ╓Б╓╥╓╒╓й╓©╓╛╔г╔п╔ц╔╟╤╦╓г, ф╠╩Ч╓кйл╓н╔Ё╔С╔т╔Е║╪╔©╓РмЬмя╓г╓╜╓К╢д╤╜╓к╓╒╓Л╓п, gdb(1) ╓Р╔Й╔Б║╪╔х╔г╔п╔ц╔╟╓к╩х╓╕╓Ё╓х╓Б╓г╓╜╓ч╓╧. ╔Й╔Б║╪╔х╔г╔п╔ц╔╟╓Р╩х╓╕╓х, ╓╒╓К╔Ё╔С╔т╔Е║╪╔©╬Е╓н gdb(1) ╓Р╩х╓ц╓ф, йл╓н╔Ё╔С╔т╔Е║╪╔©╓н╔╚║╪╔м╔К╓Р╔г╔п╔ц╔╟╓г╓╜╓ч╓╧. ╔ж╔Л║╪╔╞╔щ╔╓╔С╔х╓нюъдЙ, ╔╚║╪╔м╔К╔Ё║╪╔и╓н╔╧╔ф╔ц╔в╪б╧т╓й╓и, ╓у╓д╓╕╓н╔в╔М╔╟╔И╔Ю╓н╔г╔п╔ц╔╟╓хйя╓О╓Й╓ч╓╩╓С. ╔Ё╔С╔т╔Е║╪╔©╓Р 2 бФйб╓ы╓ф╔г╔п╔ц╔╟╓╧╓К╔а╔Ц╔С╔╧╓к╓о╓й╓╚╓й╓╚╥ц╓ч╓Л╓й╓╓╓н╓г, ╩Д╓о╓ч╓ю╔Й╔Б║╪╔х╔г╔п╔ц╔╟╓Р╩Н╓╥╓©╓Ё╓х╓о╓╒╓Й╓ч╓╩╓С. Bill ╓к╓Х╓Кди╣╜ DDB ╓Рм╜╦З╓к╓╥╓ф╓╓╓ф╔╚║╪╔м╔К╓╛╔г╔п╔ц╔╛╓к мН╓а╓©╓И, ddb ╓н╔в╔М╔С╔в╔х╓г "panic" ╓хфЧно╓╧╓Л╓п, ╤╞ю╘е╙╓к╔я╔к╔ц╔╞╓Р╣╞╓Ё╓╥╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓╣╓╩╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧. ╔я╔к╔ц╔╞╓несцФ╓г, ╨ф╓с╔г╔п╔ц╔╛╓кмН╓а╓К╓╚╓Б╓╥╓Л╓ч╓╩╓С╓╛, "continue" ╓хфЧно╓╧╓Л╓п, ╔╞╔И╔ц╔╥╔Е╔ю╔С╔в╓Р╨г╦Е╓ч╓г╪б╧т╓╣╓╩╓И╓Л╓ч╓╧. dlsym() ╓╛ ELF ╪б╧т╥а╪╟╓г╓оф╟╨Н╓╥╓й╓╞╓й╓Й╓ч╓╧! ELF ╓н╔д║╪╔КнЮ╓о, ╔г╔у╔╘╔К╔х╓г╓о╪б╧т╥а╪╟╓нцФ╓кдЙ╣а╓╣╓Л╓ф╓╓╓К╔╥╔С╔э╔К╓Р, ╔ю╔╓╔й╔ъ╔ц╔╞╔Й╔С╔╚╓╚╓И╦╚╓╗╓К╓Х╓╕╓к╓о╓╥╓ч╓╩╓С. ╓Ё╓н╓©╓А, dlopen(NULL, flags) ╓Р╦ф╓с╫п╓╥╓ффю╓И╓Л╓©╔о╔С╔и╔К╓кбп╓╥╓ф, dlsym() ╓гц╣╨В╓Р╧т╓ц╓ф╓Б, ╓Ё╓╕╓╓╓ц╓©╔╥╔С╔э╔К╓Р╦╚╓д╓╠╓И╓Л╓ч╓╩╓С. ╓Б╓╥, ╓╒╓й╓©╓╛╔в╔М╔╩╔╧╓нцФ©╢╓к╓╒╓©╓К╪б╧т╥а╪╟╓нцФ╓к╓╒╓К╔╥╔С╔э╔К╓Рц╣╨В╓╥╓©╓╠╓Л╓п, ELF ╔Й╔С╔╚ ╓к ╔╙╔в╔╥╔Г╔С╓Риу╓╠╓ф╪б╧т╥а╪╟╓Р╔Й╔С╔╞╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╔╚║╪╔м╔К╔╒╔и╔Л╔╧╤У╢ж╓РбГ╓╜╓╞╓╥╓©╓Й, ╬╝╓╣╓╞╓╧╓К╓к╓о╓и╓╕╓╥╓©╓Ини╓╓╓н╓г╓╧╓╚? ╔╚║╪╔м╔К╔╒╔и╔Л╔╧╤У╢ж╓о, FreeBSD 3.X ╬Е╓г 256MB, FreeBSD 4.X ╬Е╓г 1GB ╓╛╔г╔у╔╘╔К╔х╓к╓й╓ц╓ф╓╓╓ч╓╧. иИ╡ы╓н╧Б╓╓╔м╔ц╔х╔О║╪╔╞╔╣║╪╔п(нЦ╓╗╓пбГ╓╜╓й FTP, HTTP ╔╣║╪╔п)╓Р╠©мя╓╧╓К╬Л╧Г╓о, 256MB ╓г╓об╜╓Й╓й╓╓╓Ё╓х╓к╣╓иу╓╞╓╚╓Бцн╓Л╓ч╓╩╓С. ╓г╓о, ╔╒╔и╔Л╔╧╤У╢ж╓РбГ╓╜╓╞╓╧╓К╓к╓о╓и╓╕╓╥╓©╓Ини╓╓╓н╓г╓╥╓Г╓╕╓╚? ╓╫╓Л╓к╓о, фС╓д╓нцйЁ╛╓Рф╖╓ъ╓ч╓╧. ╓ч╓╨, ╓Х╓ЙбГ╓╜╓╓╔╒╔и╔Л╔╧╤У╢ж╓РЁД╓ЙеЖ╓ф╓К╓Ё╓х╓Р╔╚║╪╔м╔К╓кцн╓И╓╩╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╪║╓к, ╔╚║╪╔м╔К╓о╔╒╔и╔Л╔╧╤У╢ж╓нюХф╛╓к╔М║╪╔и╓╣╓Л╓К╓©╓А, ╔╒╔и╔Л╔╧╓нюХф╛╓╛е╥╟Ф(лУцМ:╔╚║╪╔м╔К╔╒╔и╔Л╔╧╤У╢ж╓н╨г╡╪ц╪╔╒╔и╔Л╔╧╓н╓Ё╓х)╓х ╓ж╓д╓╚╓К╓Ё╓х╓н╓й╓╓╓Х╓╕╓к, ╔М║╪╔и╔╒╔и╔Л╔╧╓Р╨ё╓ч╓г╓Х╓ЙдЦ╟л╓кюъдЙ╓╧╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. ╨г╫И╓нцйЁ╛╓о, src/sys/i386/include/pmap.h ╓к╓╒╓К NKPDE ╓нцм╓РаЩ╡ц╓╣╓╩╓К╓Ё╓х╓г╧т╓й╓╓╓ч╓╧. ╓Ё╓Ё╓к 1GB ╓н╔╒╔и╔Л╔╧╤У╢ж╓к╓╧╓К╓©╓А╓к, ╓и╓н╓Х╓╕╓к╓╧╓Л╓пни╓╓╓╚╓Р╪╗╓╥╓ч╓╧. #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 ю╣Ён╓й NKPDE ╓нцм╓Р╥в╩╩╓╧╓К╓к╓о, к╬╓ъ╓н╔╒╔и╔Л╔╧╤У╢ж╓нбГ╓╜╓╣(╔А╔╛╔п╔╓╔хц╠╟л)╓Р 4 ╓гЁД╓ц╓ф, ╓╫╓Л╓╚╓Иц╠╟Л╔в╔М╔╩╔ц╔╣(UP)╓й╓И 1, SMP ╓й╓И 2 ╓Р╟З╓╜╩╩╓╥╓ф╓╞╓ю╓╣╓╓. ╪║╓нцйЁ╛╓Р╧т╓й╓╕╓к╓о, ╔М║╪╔и╔╒╔и╔Л╔╧╓Рю╣Ён╓к╥в╩╩╓╧╓К╓Ё╓х╓╛и╛мв╓г╓╧. ц╠╫Ц╓к, ╔╒╔и╔Л╔╧╤У╢ж╓нбГ╓╜╓╣(╔п╔╓╔хц╠╟л)╓Р 0x100100000 ╓╚╓И╟З╓╜╩╩╓╥╓ф╓╞╓ю╓╣╓╓. 1GB ╔╒╔и╔Л╔╧╤У╢ж╓н╬Л╧Г, ╓╫╓н╥К╡л╓о 0xc0100000 ╓к╓й╓Й╓ч╓╧. ╓╫╓╥╓ф, src/sys/i386/conf/Makefile.i386 ╓к╓╒╓К LOAD_ADDRESS ╓к, ╨ё╥в╩╩╓╥╓©цм╓РфЧ╓Л╓ч╓╧. ╓ч╓©, ╪║╓н╓Х╓╕╓к src/sys/i386/conf/kernel.script ╓н╔╩╔╞╔╥╔Г╔С╓н╩о╓А╓нйЩ╓к╓╒╓К╔М╔╠║╪╔╥╔Г╔С╔╚╔╕╔С╔©╓к╓Бф╠╓╦цм╓РфЧ╓Л╓ф╓╞╓ю╓╣╓╓. 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) } ╓╫╓Л╓╛╢╟н╩╓╥╓©╓И, config ╓╥д╬╓╥╓ф╔╚║╪╔м╔К╓Р╨ф╧╫цш╓╥╓ф╓╞╓ю╓╣╓╓. ╓╙╓╫╓И╓╞, ps(1), top(1) ╓й╓и╓кит╤Я╧Г╓╛╫п╓К╓г╓╥╓Г╓╕. ╓╫╓Л╓И╓Рю╣╬О╓к╓╧╓К╓©╓А╓к, make world(╓Б╓╥╓╞╓о, йя╧╧╓╥╓© pmap.h ╓Р /usr/include/vm/ ╓к╔Ё╔т║╪╓╥╓©╦Е╓к, libkvm, ps ╓╙╓Х╓с top ╓Р╪Йф╟╓г╨ф╧╫цш╓╧╓К╓Ё╓х)╓Р╧т╓й╓╕╓ы╓╜╓г╓╧. ╔╚║╪╔м╔К╔╒╔и╔Л╔╧╤У╢ж╓нбГ╓╜╓╣╓о, 4MB ╓нгэ©Т╓г╓╒╓Ки╛мв╓╛╓╒╓Й╓ч╓╧. &a.dg; ╩А╓к╓Х╓КйДб╜ ╔╚║╪╔м╔К╔╒╔и╔Л╔╧╤У╢ж╓о 2 ╓н╬Х©Т╓г╓╒╓Ки╛мв╓╛╓╒╓К╓х╩в╓╓╓ч╓╧╓╛, ╓╫╓Л╓╛Ён╓╚╓й╓Ё╓х╓╚╓и╓╕╓╚╓о╓о╓ц╓╜╓Й╓╥╓ф╓╓╓ч╓╩╓С. юн╓н╣╞ф╟╔Ё║╪╔и╓к╓о, ни╓╞╧Б╟л╔╒╔и╔Л╔╧╔с╔ц╔х╓н╔х╔Й╔ц╔╞╓╛╩х╓О╓Л╓ф╓╓╓©╓©╓А, ╬╞╓й╓╞╓х╓Б 256MB ╓ннЁеы╓г╓╒╓К╓Ё╓х╓╛ашдЙ╓╣╓Л╓ф╓╓╓©╓х╩в╓╓╓ч╓╧.
╪у╪╜ лУ: &a.jp.y-koga;, 1997 г╞ 11 ╥Н 10 фЭ.
FreeBSD Core Team ╓Ё╓н FAQ ╓к╓д╓╓╓флДбЙ╓Р╦╚╓д╓╠╓©╓Й, ╡©╓╚епо©╓╥╓©╓╓╬Л╧Г╓о, &a.faq; ╓ч╓г╔А║╪╔К╓РаВ╓ц╓ф╓╞╓ю╓╣╓╓. ╔у╔ё║╪╔и╔п╔ц╔╞╓╥╓ф╓╞╓Л╓К╓ъ╓й╓╣╓С╓к╓о╢╤╪у╢╤╪у╓й╓н╓г╓╧. ╓ъ╓й╓╣╓С╓к╪Йеа╓ц╓ф╓Б╓И╓О╓й╓╓╓х╓Ё╓н FAQ ╓о╓Х╓╞╓й╓Й╓ч╓╩╓С╓╚╓И!
&a.jkh; ╓©╓ч╓к╣╞╓Ё╓╧ FAQ ╓нйб╓ыбь╓╗╓Д╧╧©╥╓нх╞╨Н &a.dwhite; freebsd-questions ╔А║╪╔Й╔С╔╟╔Й╔╧╔х╓г╓н╣алЁ╓Рд╤╓╗╓©╔╣║╪╔с╔╧ &a.joerg; Usenet (NetNews) ╓г╓н╣алЁ╓Рд╤╓╗╓©╔╣║╪╔с╔╧ &a.wollman; ╔м╔ц╔х╔О║╪╔╞юА╓н╪╧и╝╓хй╦╫Яю╟╥а Jim Lowe ╔ч╔К╔а╔╜╔Ц╔╧╔х╓к╓д╓╓╓ф &a.pds; FreeBSD FAQ ╔©╔╓╔т╔С╔╟╣║ЁёешнЛ FreeBSD ╔а║╪╔Ю итй©╓Р╦ю╓ц╓©╓Й, ╓╕╓А╓╓╓©╓Й, ╬ПйСдС╤║╓╥╓ф╓╞╓Л╓©╓Й ╓╒╓х, х╢╓╠╓ф╓╥╓ч╓ц╓©б╬╓нйЩ║╧╓кбп╓╥╓ф, ╪у╨А╓х©╢╓╚╓И╓н╢╤╪у╓РйШ╓╡╓ч╓╧!
FreeBSD FAQ фЭкэ╦Л╡╫╓к╓д╓╓╓ф FreeBSD фЭкэ╦Л╔и╔╜╔Е╔А╔С╔ф║╪╔╥╔Г╔С╔в╔М╔╦╔╖╔╞╔х╓о, FreeBSD ╢ь╥╦╓нфЭкэ╦Лй╦╫Я╓╛╬╞╓й╓╓╓Ё╓х╓Рц╡╓╓╓©©Т©м╓н FreeBSD ╔Ф║╪╔╤╓ндС╬╖╓к╓Х╓ц╓ф 1996 г╞ 2 ╥Н 26 фЭ╓к╔╧╔©║╪╔х╓╥, FreeBSD фЭкэ╦Л╔о╔С╔и╔ж╔ц╔╞╓н╨Ню╝╓Р╓о╓╦╓А╓х╓╥╓©ЁХф╟╓Р╧т╓й╓ц╓ф╓╜╓ч╓╥╓©. FreeBSD FAQ ╓нфЭкэ╦Л╡╫╓к╓д╓╓╓ф╓о╔╙╔Й╔╦╔й╔К╓нкщлУ╨Н╤х╓ю╓╠╓г╓й╓╞, фЭкэ╧ЯфБ╓к╦гм╜╓ноцбЙ╓к╓д╓╓╓ф╓Б╧╜╓╞╬ПйС╓Р╫╦╓А, фЭкэ╓н FreeBSD ╔Ф║╪╔╤╓к╓х╓ц╓ф©©╓км╜╠в╓й╔и╔╜╔Е╔А╔С╔х╓РдС╤║╓╥╓Х╓╕╓х╧м╓╗╓ф╓╓╓ч╓╧. ╔╙╔Й╔╦╔й╔К╓н FAQ ╓офЭкХ╓к╧╧©╥╓╣╓Л╓ф╓╙╓Й, ╩Д╓©╓а╓Б╓ч╓©╓Ё╓Л╓кди╓╓иу╓╞╓©╓А╓к╨Н╤х╓РбЁ╓╠╓ф╓╓╓╜╓ч╓╧. ╓Б╓а╓М╓С, ©╥╓╥╓╓╔А╔С╔п╓БбГ╢©╥ч╓г╓╧. фЭкэ╦ЛкщлУхг╓к╓д╓╓╓ф, ╡©╓╚╓╙╣╓╓е╓╜╓нею╓╛╓╒╓Й╓ч╓╥╓©╓И, &a.jp.doc-jp; ╓ч╓г╓╢о╒мМ╓╞╓ю╓╣╓╓. ╓ч╓©, ╓Б╓╥╩Д╓©╓а╓н╨Н╤х╓Р╪Йеа╓ц╓ф╓╞╓Л╓К╓й╓И, FreeBSD фЭкэ╦Л╔и╔╜╔Е╔А╔С╔ф║╪╔╥╔Г╔С╔в╔М╔╦╔╖╔╞╔х╓н╔з║╪╔╦╓Р╓╢мВ╓н╬Е, ю╖хС╩╡╡ц╓╥╓ф╓╞╓ю╓╣╓╓. кщлУ╪т (╦ч╫╫╡╩╫Г) &a.jp.arimura; ╟Л╣э н╪ ryo@azusa.shinshu-u.ac.jp &a.iwasaki; &a.jp.yoshiaki; &a.kuriyama; &a.jp.y-koga; &a.motoyuki; &a.jp.sugimura; &a.jp.nakai; ╓к╓╥╓╚ nishika@cheerful.com &a.hanai; &a.jp.kiroh; &a.jp.shou; й║╢ж ╧╞╧╟ yasuf@big.or.jp &a.jp.mrt; ╩Ё╡╪ ╫ъ junkun@esys.tsukuba.ac.jp ╨╨фи╪т (╦ч╫╫╡╩╫Г) &a.asami; &a.iwasaki; &a.jp.yoshiaki; бГ╤╤ ╥Р ohashi@mickey.ai.kyutech.ac.jp &a.kuriyama; &a.motoyuki; &a.jp.saeki; &a.jp.sugimura; &a.hanai; &a.jp.nao; &a.jp.kiroh; &a.jp.hino; шь╩Ё бН shiyama@intercity.or.jp &a.jp.shou; &a.jp.mrt; ╪Ц╟Ф ╣в╩к earth@hokuto7.or.jp ╨Н╤х╢д╤╜ю╟хВ (╦ч╫╫╡╩╫Г) ╟Л╣э н╪ ryo@azusa.shinshu-u.ac.jp &a.jp.iwasaki; &a.jp.simokawa; нКлз ╫╗╧╛ hideyuki@jp.FreeBSD.org
diff --git a/ru_RU.KOI8-R/books/faq/book.sgml b/ru_RU.KOI8-R/books/faq/book.sgml index 5e05e31e0b..0e6de43f61 100644 --- a/ru_RU.KOI8-R/books/faq/book.sgml +++ b/ru_RU.KOI8-R/books/faq/book.sgml @@ -1,13988 +1,13989 @@ %man; %freebsd; %authors; + %teams; %mailing-lists; %bookinfo; ]> Часто Задаваемые Вопросы по FreeBSD 2.X, 3.X и 4.X The FreeBSD Documentation Project $FreeBSD$ 1995 1996 1997 1998 1999 2000 2001 The FreeBSD Documentation Project &bookinfo.legalnotice; Этот документ является так называемым FAQ (Frequently Asked Questions), то есть списком Часто Задаваемых Вопросов по FreeBSD версий 2.X, 3.X и 4.X. Если не оговорено обратное, предполагается, что все замечания справедливы для версий FreeBSD 2.0.5 и выше. Пункты с пометкой <XXX> находятся в стадии разработки. Если вы хотите помочь в составлении этого документа, пошлите письмо в &a.doc;. Последняя редакция этого документа всегда доступна с WWW-сервера FreeBSD. Его также можно получить в виде одного большого HTML-файла по HTTP или в виде обычного текстового файла, файла формата postscript, PDF или другого формата с FTP-сервера. Вы также можете осуществить поиск в FAQ. Вступление Добро пожаловать в FAQ по FreeBSD 2.X-4.X! Как и обычный FAQ конференций Usenet, этот документ содержит большинство из часто задаваемых вопросов, касающихся операционной системы FreeBSD (и, конечно же, ответы на них). Первоначально предназначенный для уменьшения потока сообщений и избежания повторения одних и тех же вопросов, постепенно FAQ превратился в ценный источник информации. Мы прилагаем все усилия, чтобы сделать этот FAQ максимально информативным; если у вас есть идеи по его усовершенствованию, пожалуйста, напишите составителям по адресу &a.faq;. FreeBSD - что это такое? В двух словах, FreeBSD - это UN*X-подобная операционная система для платформ i386 и Alpha/AXP, разработанная на основе операционной системы 4.4BSD-Lite с некоторыми усовершенствованиями, взятыми из 4.4BSD-Lite2 Калифорнийского Университета (Беркли). Также она косвенно базируется на 386BSD (BSD Net/2, перенесённой на платформу i386 Вильямом Джолитцем (William Jolitz)), хотя от того первоначального кода осталось очень мало. Более подробные объяснения того, что представляет из себя FreeBSD и для чего она может вам пригодиться, можно найти на домашней странице FreeBSD. FreeBSD используется компаниями, Интернет-провайдерами, научными работниками, профессионалами в вычислительной технике, студентами и рядовыми пользователями по всему миру для работы, образования и отдыха. Вы можете увидеть некоторых из них в нашей галерее. Для более детального ознакомления с FreeBSD, пожалуйста, обратитесь к Руководству по FreeBSD. Какова цель FreeBSD? Цель, преследуемая проектом FreeBSD - это предоставление программного обеспечения, которое может быть использовано в любых целях без всяческих ограничений. Многие из нас вкладывают значительные усилия в её разработку (и проектирование) и определённо были бы не против получения финансовой поддержки, но мы не собираемся её требовать. Мы надеемся, что наша основная и самая значительная миссия - предоставить код всем желающим, для любых целей, так чтобы он нашел самое широкое применение и принёс наибольшую пользу. Это, на наш взгляд, одна из самых фундаментальных целей Free Software, которую мы с энтузиазмом поддерживаем. Часть исходного кода нашей системы, подпадающая под действие GNU General Public License (GPL) или GNU Library General Public License (LGPL), имеет несколько больше ограничений, хотя и представляет собой навязывание доступа к исходным текстам, а не наоборот, как обычно. Из-за дополнительных сложностей, которые могут возникнуть в случае коммерческого использования программного обеспечения GPL, мы стараемся, где только это возможно, заменить подобное программное обеспечение аналогичным, но подпадающим под менее строгую лицензию FreeBSD. Есть ли в лицензии FreeBSD какие-то ограничения? Да. Эти ограничения не касаются того, как именно вы используете код, но главным образом описывают ваше отношение при этом в целом к Проекту FreeBSD. Если у вас есть серьезные проблемы с лицензированием, прочтите собственно текст лицензионного соглашения. Упрощенно оно может быть вкратце изложено следующим образом. Не говорите, что это написано вами. Не судитесь с нами, если что-то не работает. Может ли FreeBSD заменить операционную систему, используемую мною сейчас? Для большинства людей, да. Но этот ответ не так уж однозначен. Большинство пользователей на самом деле не используют операционную систему. Они работают с приложениями. Именно прикладные программы и используют операционную систему. FreeBSD разработана для того, чтобы дать надежное и полнофункциональное окружение для приложений. Она поддерживае широкий спектр веб-браузеров, офисных пакетов, программ для работы с электронной почтой, графических пакетов, программных сред, сетевых серверов и практически все, что вы можете захотеть. Большинство этих приложений могут быть получено из Коллекции Портов. Если вам необходимо использовать приложение, которое доступно только для одной операционной системы, вам просто нельзя заменять операционную систему. Однако есть вероятность, что похожая программа существует для FreeBSD. Если вам нужен стабильно работающий сервер для офиса или сервер Интернет, надежная рабочая станция или просто возможность выполнять работу без сбоев, FreeBSD практически всегда справится со всем, что вам нужно. Многие пользователи по всему миру, включая как новичков, так и опытных администраторов UNIX, используют FreeBSD в качестве своей единственной настольной операционной системы. Если вы переходите на FreeBSD с какого-то другого варианта UNIX, вы уже знаете большинство ваших потребностей. Если вы знакомы с графическими операционными системами, такими, как Windows или старые версии Mac OS, будьте готовы к затратам дополнительного времени на изучение подхода UNIX к работе. Этот FAQ и Руководство по FreeBSD являются прекрасным способом начать это изучение. Почему система называется именно FreeBSD? Она может использоваться безо всяческих выплат, даже для извлечения выгоды. Все исходные тексты операционной системы свободно доступны, на её использование в других разработках (как коммерческих, так и некоммерческих) и дальнейшее распространение наложены минимальные ограничения. Любой, у кого есть усовершенствования и/или исправления, может предоставить свой код и он будет (правда, с парой оговорок) добавлен в исходные тексты системы. Для тех наших читателей, для которых английский не является родным языком, можно добавить, что слово free используется здесь в двух смыслах, один означает бесплатно, а другой вы можете делать всё, что хотите. За исключением пары вещей, которые вы не можете делать с FreeBSD, например, претендовать на то, что являетесь её разработчиком, на самом деле можно делать с ней всё, что вам заблагорассудится. Какова последняя версия FreeBSD? Версия &rel.current;, выпущенная &rel.current.date;, является самой последней версией ветки STABLE. Она также является самым последним РЕЛИЗОМ. Если говорить кратко, то ветка -STABLE предназначена поставщикам услуг Internet или другим корпоративным пользователям, которым в первую очередь нужна надёжность и не слишком большое количество отличий от последнего релиза по сравнению с возможностями последнего снэпшота -CURRENT. Релизы можно делать из любой ветки, но -CURRENT вы должны использовать только в случае, если уверены, что готовы к постоянным (по сравнению со -STABLE) изменениям в работе системы. Релизы делаются только раз в несколько месяцев. Хотя многие стараются отслеживать актуальное состояние исходных текстов FreeBSD (обратите внимание на вопросы о FreeBSD-CURRENT и FreeBSD-STABLE), делать это не обязательно, так как исходные тексты постоянно меняются. Что такое FreeBSD-CURRENT? FreeBSD-CURRENT - это версия операционной системы, находящаяся в стадии разработки до момента выпуска 5.0-RELEASE. Таким образом, она представляет реальный интерес только для разработчиков системы и её фанатов. Обратитесь к соответствующему разделу Руководства для прояснения деталей работы с -CURRENT. Если вы не специалист по операционным системам или не в состоянии отличить реальную проблему от временных явлений, вы не должны использовать FreeBSD-CURRENT. Эта ветвь зачастую меняется очень быстро и вполне может быть просто не работоспособна некоторое время. Те, кто используют FreeBSD-CURRENT, должны быть в состоянии анализировать любые проблемы и сообщать о них, если это действительно ошибки, а не глюки. Сообщения типа make world produces some error about groups в списке рассылки -CURRENT иногда воспринимаются пренебрежительно. Ежедневно из веток -CURRENT и -STABLE делаются снэпшоты. В настоящее время имеются в наличии дистрибутивы некоторых снэпшотов. Их предназначение: Тестирование самой последней версии инсталлятора. Дать людям, которые хотят работать с -CURRENT или -STABLE, но не имеют времени и/или возможности (пропускной способности) для отслеживания ежедневных измененений, простой способ её установки. Фиксация точки для последующих ссылок в случае, если позже мы что-нибудь очень сильно сломаем. (Хотя CVS, как правило, не позволяет случиться ничему такому ужасному :) Любые новые возможности, которым требуется тестирование, должны иметь как можно больше потенциальных тестеров. Не утверждается, что всякий снэпшот -CURRENT имеет качество готового продукта. Если вам нужна стабильно работающая и полностью оттестированная система, то необходимо дождаться выхода полного релиза или воспользоваться снэпшотами -STABLE. Снэпшоты доступны непосредственно с ftp://current.FreeBSD.org/pub/FreeBSD/ для 5.0-CURRENT и releng4.FreeBSD.org для снэпшотов 4-STABLE. На момент написания этого документа (май 2000) снэпшоты 3-STABLE больше не выпускаются. Снэпшоты, как правило, генерируются ежедневно для всех активно разрабатываемых веток. В чём смысл FreeBSD-STABLE? После того, как была выпущена FreeBSD 2.0.5, мы решили разделить разработку FreeBSD на две части. Одна ветка, названная -STABLE, предназначена для внесения только хорошо оттестированных исправлений и маленьких последовательных усовершенствований (для провайдеров услуг Интернет и других коммерческих пользователей, для которых неожиданные изменения или экспериментальные возможности весьма нежелательны). Другой ветвью является -CURRENT, и она по существу является прямой линией, ведущей к 5.0-RELEASE (и последующим) с тех пор, как была выпущена 2.0. Если вам поможет картинка, то вот как это выглядит: 2.0 | | | [2.1-STABLE] *ВЕТВЬ* 2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [конец 2.1-STABLE] | (Мар 1997) | | | [2.2-STABLE] *ВЕТВЬ* 2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [конец] | (Мар 1997) (Окт 97) (Апр 98) (Июл 98) (Дек 98) | | 3.0-SNAPs (начало в I квартале 1997) | | 3.0-RELEASE (Окт 1998) | | [3.0-STABLE] *ВЕТВЬ* 3.1-RELEASE (Фев 1999) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1 | (Май 1999) (Сен 1999) (Дек 1999) (Июнь 2000) (Июль 2000) | | [4.0-STABLE] *ВЕТВЬ* 4.0 (Март 2000) -> 4.1 -> 4.1.1 -> 4.2 -> 4.3 -> 4.4 -> ... будущие релизы 4.x ... | | (Июль 2000) (Сентябрь 2000) (Ноябрь 2000) \|/ + [продолжение 5.0-CURRENT] Ветвь 2.2-STABLE была завершена выходом релиза 2.2.8. Ветвь 3-STABLE была завершена выходом релиза 3.5.1. Единственными изменениями в этих ветвях могут быть только исправления ошибок, касающихся безопасности. Активно разрабатываемой веткой -STABLE является 4-STABLE. Последним релизом из этой ветки на данный момент является &rel.current;-RELEASE, выпущенная &rel.current.date;. Ветка 5-CURRENT продвигается к выходу 5.0-RELEASE и дальше. Смотрите Что такое FreeBSD-CURRENT? для более подробной информации об этой ветке. В какой момент выпускаются новые версии FreeBSD? Как правило, основная группа разработчиков выпускает новую версию, только когда они уверены, что добавленных новых возможностей и/или внесённых исправлений уже достаточно, и новый релиз не потеряет в стабильности из-за этих новых разработок. Дата релиза обычно объявляется заранее, так что те, кто работает над системой, знают, когда их проекты должны быть закончены и протестированы. Многие пользователи оценивают эту осторожность как одну из приятнейших черт FreeBSD, хотя необходимость дожидаться -STABLE для получения всех этих новых возможностей может несколько разочаровывать. В среднем новые версии выпускаются примерно раз в четыре месяца. Для тех, кому нужно или хочется, ежедневно выпускаются бинарные релизы, как это описано выше. Кто разрабатывает FreeBSD? Решения, которые касаются ключевых моментов в проекте FreeBSD, такие, как общее направление развития проекта или кто может добавлять код к дереву исходных текстов, принимаются основной командой разработчиков (Core Team), состоящей из 9 человек. Также существует гораздо большая группа из более чем 200 коммиттеров (committers), которые могут делать изменения прямо в дереве исходных текстов FreeBSD. Однако большинство нетривиальных изменений широко обсуждается в списках рассылки, и не существует никаких ограничений на участие в подобных дискуссиях. Где можно найти FreeBSD? Все основные релизы FreeBSD доступны по FTP с FTP-сервера FreeBSD: Текущий релиз 3.X-STABLE, 3.5.1-RELEASE, находится в каталоге с 3.5.1-RELEASE. Текущий релиз ветки 4-STABLE, &rel.current;-RELEASE, находится в каталоге с &rel.current;-RELEASE. Снэпшоты 4.X обычно делаются ежедневно. Выпуски 5.0 Snapshot, которые делаются ежедневно из ветви -CURRENT, предназначены для тестеров и разработчиков. Информация о получении/приобретении FreeBSD на CD, DVD и других носителях доступна в Руководстве Где найти информацию по спискам рассылки FreeBSD? Исчерпывающая информация содержится в разделе Руководства, который посвящён спискам рассылки. Где можно найти информацию о проблеме 2000 года во FreeBSD? Полная информация находится на странице Готовности к 2000 году. Какие существуют телеконференции по FreeBSD? Полная информация о группах новостей есть в разделе Руководства, касающемся телеконференций. Существуют ли каналы IRC (Internet Relay Chat) по FreeBSD? Да, большинство сетей IRC имеют канал FreeBSD: Канал #FreeBSD в сети EFNet посвящён FreeBSD, но не обращайтесь туда за технической поддержкой и даже не пытайтесь найти человека, который поможет вам обойтись без чтения страниц Справочника или собственных изысканий. Этот канал предназначен в первую и основную очередь для общения, и в круг обсуждаемых тем входит секс, спорт, ядерное оружие, как будто это и есть FreeBSD. В общем, вас предупредили! Канал доступен на сервере irc.chat.org. Канал #FreeBSDhelp в сети EFNet предназначен для помощи пользователям FreeBSD. Здесь гораздо более благосклонно относятся к вопросам, чем на канале #FreeBSD. Канал #FreeBSD в сети DALNET доступен на сервере irc.dal.net в США и на irc.eu.dal.net в Европе. Канал #FreeBSD в сети UNDERNET доступен на серверах us.undernet.org в США и eu.undernet.org в Европе. Так как это канал взаимопомощи, приготовьтесь к чтению документации, к которой вас отошлют. Канал #FreeBSD в сети HybNet. Этот канал на самом деле является каналом взаимопомощи. Список серверов можно найти на сайте сети HybNet. Все эти каналы разные и не имеют отношения друг к другу. Их стили общения также отличаются, так что вам, может быть, придётся попробовать все, чтобы найти тот, который соответствует вашему стилю. Как и обычно с любым каналом IRC, если вы легко раздражаетесь или не можете иметь дела с большим количеством лиц школьного (и младшего школьного) возраста, пытающихся озвучить свои попытки самоутвердиться, не обращайте на это внимания. Как можно получить доступ к базе сообщений о проблемах (Problem Report)? Сообщения пользователей обо всех проблемах могут быть запрошены (или добавлены) с помощью нашего веб-интерфейса и запроса. Команда &man.send-pr.1; также может быть использована для передачи и изменения сообщений о проблемах через электронную почту. Перед тем, как посылать сообщение об ошибке, пожалуйста, прочтите эту статью о том, как писать хорошие сообщения об ошибках. Есть ли версии документации в другом формате, например, в виде обычного текста ASCII или PostScript? Да. Документация имеется в нескольких различных форматах и упакованная разными способами на FTP-сервере FreeBSD, и находится она в каталоге /pub/FreeBSD/doc/. Документация подразделяется на категории различными способами. Это включает: Имя документа, например, faq или handbook. Язык и кодировка документа. Они опираются на имена локализаций, которые вы найдёте в каталоге /usr/share/locale вашей системы FreeBSD. На данный момент для документации поддерживаются следующие языки и кодировки: Кодировка Язык en_US.ISO8859-1 Английский (США) de_DE.ISO8859-1 Немецкий es_ES.ISO8859-1 Испанский fr_FR.ISO8859-1 Французский ja_JP.eucJP Японский (кодировка EUC) ru_RU.KOI8-R Русский (кодировка KOI8-R) zh_TW.Big5 Китайский (кодировка Big5) Некоторые документы могут иметься не на всех языках. Формат документа. Мы формируем документацию в нескольких различных форматах, пытаясь сделать её максимально гибкой. Имеющиеся форматы; Формат Значение html-split Набор маленьких связанных друг с другом HTML-файлов. html Один большой HTML-файл, полностью содержащий документ. pdb Формат баз данных Palm Pilot, для использования с утилитой iSilo. pdf Adobe's Portable Document Format ps Postscript rtf Microsoft's Rich Text Format Номера страниц при загрузке в Word автоматически не обновляются. Нажмите CTRLA, CTRLEND, F9 после загрузки документа для обновления номеров страниц. txt Обычный текст Способ компрессии и создания архива. Сейчас используется три. В случае формата html-split, файлы архивируются с помощью &man.tar.1;. Получающийся файл .tar затем подвергается сжатию по схемам, подробно описываемым далее. Все другие форматы генерируют один файл с именем book.format (то есть book.pdb, book.html, и так далее). Эти файлы затем сжимаются по трём схемам сжатия. Схема Описание zip Формат Zip. Если вам нужно будет развернуть это во FreeBSD, то потребуется установить сначала порт archivers/unzip. gz Формат GNU Zip. Для распаковки таких файлов используется &man.gunzip.1;, которая является частью FreeBSD. bz2 Формат BZip2. Используется реже, чем другие, но, как правило, даёт файлы меньшего размера. Чтобы работать с такими файлами, установите порт archivers/bzip2. Таким образом, версия Руководства в формате Postscript, упакованная с помощью BZip2, будет находиться в файле с именем book.ps.bz2 в каталоге handbook/. Отформатированная документация также доступна в виде пакаджей FreeBSD, о чём пойдёт речь несколько позже. После выбора формата и способа компрессии, в котором вы хотите получить файл, вы должны определиться, должен ли он быть в виде пакаджа FreeBSD. Плюсом сгрузки и установки в виде пакаджа является то, что документация затем может управляться обычными средствами для работы с пакаджами, такими, как &man.pkg.add.1; и &man.pkg.delete.1;. Если вы решили сгрузить и установить пакадж, то вы должны знать имя файла. Файлы, содержащие документацию в виде пакаджей, находятся в каталоге packages. Каждый такой файл имеет вид document-name.lang.encoding.format.tgz. Например, FAQ на английском языке в формате PDF находится в пакадже faq.en_US.ISO8859-1.pdf.tgz. Зная это, для установки пакаджа с англоязычным FAQ в формате PDF вы можете воспользоваться следующей командой. &prompt.root; pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz Сделав это, можно использовать утилиту &man.pkg.info.1; для определения того, куда файл был установлен. &prompt.root; pkg_info -f faq.en_US.ISO8859-1.pdf 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) Как видите, book.pdf будет установлен в /usr/share/doc/en_US.ISO8859-1/books/faq. Если же вы не хотите использовать пакаджи, то вам нужно самим сгрузить упакованные файлы, распаковать их, а затем скопировать документацию в соответствующие места. Например, версия FAQ в виде отдельных HTML-файлов, упакованная при помощи &man.gzip.1;, находится в файле doc/ru_RU.KOI8-R/books/faq/book.html-split.tar.gz. Для сгрузки и распаковки этого файла вам нужно сделать вот что. &prompt.root; fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz &prompt.root; fetch ftp://ftp.freebsd.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.gz &prompt.root; gzip -d book.html-split.tar.gz &prompt.root; tar xvf book.html-split.tar У вас получится набор файлов .html. Главным является index.html, и в нём находится оглавление, вводный материал и ссылки на остальные части документа. После этого вы их можете копировать и перемещать при необходимости на окончательное местоположение. Могу ли я зазеркалировать веб-сервер FreeBSD? Есть несколько способов зеркалировать веб-сервер. С помошью CVSup: Вы можете запрашивать отформатированные файлы с помощью CVSup и подключаться к серверу CVSup. Для получения страниц веб-сервера посмотрите на пример, находящийся в файле /usr/share/examples/cvsup/www-supfile. С помощью зеркалирования FTP: Вы можете скачать оригинальную копию информации на веб-сервере, находящуюся на FTP, используя ваше любимое средство зеркалирования FTP. Имейте в виду, что вам нужно будет ещё преобразовать эту информацию перед тем, как помещать её на вашем сервере. Просто начните с каталога ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www. Другие источники информации. Пожалуйста, посмотрите список имеющейся документации на главной странице сайта FreeBSD. Nik Clayton
nik@FreeBSD.org
Установка Какой файл нужно скачать для установки FreeBSD? До выхода в свет релиза FreeBSD 3.1 для установки вам был нужен только один файл с образом дискеты, floppies/boot.flp. Однако, начиная с версии 3.1, во FreeBSD была добавлена изначальная поддержка очень широкого спектра оборудования, что занимает значительно больший объём дисковое пространства, поэтому для установки FreeBSD версий 3.x и выше вам нужны образы двух дискет: floppies/kernel.flp и floppies/mfsroot.flp. Эти образы нужно перенести на дискеты с помощью таких утилит, как fdimage или &man.dd.1;. Если вы хотите скачать дистрибутив самостоятельно (например, для установки с раздела DOS), вот список рекомендованных частей дистрибутива: bin/ manpages/ compat*/ doc/ src/ssys.* Полные инструкции по этой процедуре и об установке вообще можно найти в разделе Руководства, посвящённом инсталляции FreeBSD. Помогите! Загрузочный файл не помещается на дискету! На дискету размером 3.5 дюйма (1.44Мб) может поместиться 1474560 байт данных. Образ дискеты имеет размер ровно 1474560 байт. Типичные ошибки при подготовке загрузочной дискеты: Образ дискеты был загружен по FTP не в режиме binary. Некоторые клиентские программы FTP используют по умолчанию текстовый (ascii) режим передачи и пытаются поменять все принятые последовательности символов "конец строки" на соответствующие им в вашей системе. В таком случае образ загрузочного диска будет неизбежно испорчен. Проверьте размер полученного файла: если он не точно такой же, как на FTP-сервере, то ошибка произошла, скорее всего, в процессе передачи. Во избежание этого введите команду binary в командной строке FTP после того, как вы подключитесь к серверу, но до того, как начали скачивать файл. Для переноса образа на дискету была использована команда DOS copy (или её аналог с графическим интерфейсом). Программы типа copy не работают с образами дискет, предназначенными для загрузки. Образ содержит полное содержимое дискеты, дорожка за дорожкой, и не предназначен для помещения на дискету в качестве обычного файла. Вам необходимо перенести его на дискету непосредственно, используя низкоуровневые средства (такие, как fdimage или rawrite), описанные в Руководстве. Где инструкции по установке FreeBSD? Инструкции по установке могут быть найдены в главе Руководства, посвящённой установке FreeBSD. Что мне нужно иметь для запуска FreeBSD? Вам нужен персональный компьютер не ниже 386, с 5 или более мегабайтами ОЗУ и по крайней мере 60Мб свободного пространства на винчестере. Система может работать с дешёвым графическим адаптером MDA, но для того, чтобы запустить X11R6, требуется адаптер стандарта VGA или лучше. Посмотрите также раздел . У меня только 4Мб ОЗУ. Смогу ли я установить FreeBSD? FreeBSD 2.1.7 была последней версией, которую можно было проинсталлировать на системе с 4МБ ОЗУ. FreeBSD 2.2 и более поздние версии требуют для установки новой системы по крайней мере 5МБ ОЗУ. Все версии FreeBSD будут работать с 4МБ ОЗУ, просто на 4МБ нельзя запустить инсталляционную программу. Вы можете добавить дополнительную память для инсталляции, если вам это нужно, а после того, как система будет установлена и запущена, вернуться к конфигурации с 4МБ. Либо вы можете подключить ваш диск к компьютеру с ОЗУ, большим чем 4МБ, установить систему и переставить диск обратно. FreeBSD 2.1.7 не будет устанавливаться на системе с 640КБ основной и 3МБ дополнительной памяти. Если ваша материнская плата может перемещать некоторую потерянную память из области 640КБ в область 1МБ, тогда может быть, вы сможете запустить FreeBSD 2.1.7. Попробуйте войти в настройку вашего BIOS и посмотреть параметры перемещения (remap). Включите его. Может быть, ещё понадобится выключить теневое ПЗУ (ROM shadowing). Может быть, самое простое решение - найти еще 4МБ на время установки. Откомпилируйте ядро только с теми параметрами, которые нужны и затем уберите 4МБ. Вы можете также установить версию 2.0.5, а затем обновить вашу систему до 2.1.7 с помощью пункта upgrade программы инсталляции 2.1.7. После установки вы можете построить ядро, которое будет работать на 4МБ. Кто-то даже умудрялся загружаться с 2МБ, хотя система была практически неработоспособна. Как сделать оригинальную загрузочную дискету? В настоящий момент нет простого способа сделать оригинальную загрузочную дискету. Вам придётся делать новый релиз полностью, включая загрузочную дискету. Чтобы сделать оригинальный релиз, следуйте инструкциям в разделе FAQ по сложным вопросам. Могу ли я иметь более чем одну операционную систему на моём ПК? Взгляните на это руководство. Может ли Windows 95/98 сосуществовать с FreeBSD? Сначала установите Windows 95/98, а затем FreeBSD. Менеджер загрузки FreeBSD будет управлять процессом загрузки Win95/98 или FreeBSD. Если после этого вы ещё раз выполните процедуру установки Windows 95/98, то при этом менеджер загрузки будет грубо удалён. Если такое случится, обратитесь к следующему разделу. Windows 95/98 уничтожила мой менеджер загрузки! Как мне его вернуть? Вы можете переустановить менеджер загрузки FreeBSD тремя способами: Запустите DOS, перейдите в каталог tools/ вашего дистрибутива FreeBSD и найдите программу bootinst.exe. Запустите её следующим образом: ...\TOOLS> bootinst.exe boot.bin и менеджер загрузки будет переустановлен. Загрузитесь с установочной дискеты FreeBSD и перейдите в меню установки Custom install. Выберите пункт Partition. Выберите устройство, на котором будет располагаться для ваш менеджера загрузки (это будет самый первый диск) и когда вы перейдете к редактированию разделов, первым делом (то есть ещё не делая никаких изменений) выберите (W)rite. Последует запрос на подтверждение, ответьте yes, и когда вы попадёте в меню выбора менеджера загрузки, выберите пункт Boot Manager. Менеджер загрузки будет переписан на диск. Теперь нужно выйти из меню установки и загрузиться с винчестера как обычно. Загрузитесь с установочной дискеты (или компакт-диска) FreeBSD и найдите пункт меню Fixit. Выберите Fixit floppy или CDROM #2 (живая файловая система) соответственно вашему случаю и вы окажетесь в приглашении командного процессора. Теперь выполните следующую команду: Fixit# fdisk -B -b /boot/boot0 bootdevice подставив вместо bootdevice название реально используемого для загрузки устройства, например, ad0 (первый диск IDE), ad4 (первый диск IDE на дополнительном контроллере), da0 (первый диск SCSI) и тому подобное. На компьютерах IBM Thinkpad серий A, T и X операционная система устанавливается, но при следующей перезагрузке машины зависают. Как можно от этого избавиться? Из-за ошибки в первых версиях BIOS от IBM раздел FreeBSD на этих машинах распознается как возможный служебный раздел FAT для режима сна. Когда BIOS пытается обработать раздел FreeBSD, происходит зависание. Согласно IBM Письмо от Keith Frechette kfrechet@us.ibm.com., исправление включено в следующие релизы моделей/BIOS. Модель Номер версии BIOS T20 IYET49WW и выше T21 KZET22WW и выше A20p IVET62WW и выше A20m IWET54WW и выше A21p KYET27WW и выше A21m KXET24WW и выше A21e KUET30WW Сообщалось, что в более поздних версиях BIOS от IBM эта ошибка может появиться снова. Это сообщение от Jacques Vidrine в &a.mobile; описывает процедуру, выполнение которой может помочь, если ваш новый лаптоп от IBM не загружает FreeBSD, и вы можете изменить BIOS.. Если у вас BIOS более ранней версии и обновление для вас не представляется возможным, то это можно обойти, установив FreeBSD, изменив идентификатор раздела, используемый FreeBSD и установив новые загрузочные блоки, которые могут работать с различными ID разделов. Во-первых, вам нужно привести компьютер в состояние, когда он проходит через экран самотестирования. Для этого требуется включить машину, не позволяя ей найти раздел FreeBSD на ведущем диске. Одним из способов сделать это является извлечение винчестера и временное его установка на более старый ThinkPad (такой, как ThinkPad 600) или настольный ПК с подходящим переходным кабелем. Здесь вы можете удалить раздел FreeBSD и вернуть диск на место. ThinkPad должен загружаться снова. С работающей машиной вы можете использовать процедуру, описанную здесь, для получения рабочей системы FreeBSD. Сгрузите файлы boot1 и boot2 по адресу http://people.FreeBSD.org/~bmah/ThinkPad/. Поместите эти файлы куда-нибудь, откуда вы сможете их потом взять. Установите FreeBSD обычным образом на ThinkPad. Не используйте режим Dangerously Dedicated. Не перезагружайтесь после окончания установки. Переключитесь в экран Emergency Holographic Shell (ALT F4) или запустите оболочку fixit. Используйте команду &man.fdisk.8; для изменения идентификатора раздела FreeBSD со 165 на 166 (этот тип используется в OpenBSD). Перепишите файлы boot1 и boot2 на локальную файловую систему. Для записи boot1 и boot2 на слайс с FreeBSD воспользуйтесь командой &man.disklabel.8;. &prompt.root; disklabel -B -b boot1 -s boot2 ad0sn Здесь n означает номер слайса, в котором установлена FreeBSD. Выполните переагрузку. В приглашении загрузчика вам будет дан выбор для загрузки OpenBSD. На самом деле при этом загружается FreeBSD. Случай, когда вы хотите загружать OpenBSD и FreeBSD на одном и том же лэптопе оставлен читателю в качестве упражнения. Можно ли производить установку на диск с повреждёнными блоками? До версии 3.0 в поставку FreeBSD включалась утилита, известная под именем bad144, которая автоматически переносила повреждённые блоки. Так как современные диски с интерфейсом IDE выполняют эту функцию самостоятельно, то утилита bad144 была удалена из дерева исходных текстов FreeBSD. Если вы собираетесь устанавливать FreeBSD 3.0 и выше, то мы настоятельно рекомендуем приобрести новый диск. Если вы этого делать не собираетесь, то устанавливайте FreeBSD 2.x. Если вы обнаружите испорченные блоки на современном диске IDE, то весьма вероятно, что он скоро выйдет из строя совсем (собственная способность переносить испорченные блоки исчерпана, что означает очень большую порчу поверхности); мы рекомендуем приобрести новый диск. Если повреждённые блоки находятся на SCSI диске, взгляните на такое решение. Я только что обновил систему с 3.X до 4.X, и первая загрузка завершилась неудачно с сообщением bad sector table not supported FreeBSD 3.X и более ранние версии поддерживают утилиту bad144, которая автоматически переназначает испорченные блоки. Во FreeBSD 4.X и выше этого не поддерживается, так как в современные диски IDE эта функциональность уже включена. Обратитесь к этому вопросу для получения более полной информации. Чтобы исправить это после обновления системы, вам нужно физически поместить диск в рабочую систему и воспользоваться командой &man.disklabel.8;, как описано в следующем вопросе. Как указать на то, что на диске имеется информация bad144 до того, как я попытаюсь обновить систему до FreeBSD 4.0 и это приведет к ошибке? Для этого воспользуйтесь программой &man.disklabel.8;. disklabel -r дисковое устройство выдаст вам содержимое метки диска. Посмотрите на поле flags. Если вы видите flags: badsect, то этот диск использует bad144. К примеру, на следующих дисках включено bad144: &prompt.root; disklabel -r wd0 # /dev/rwd0c: type: ESDI disk: wd0s1 label: flags: badsect bytes/sector: 512 sectors/track: 63 Как удалить bad144 с моей системы версии до 4.X, чтобы я смог спокойно обновить систему? Используйте команду disklabel -e -rwd0 для редактирования метки диска. Просто удалите слово badsect из поля флагов, сохраните и выйдите. Файл bad144 будет все же занимать некоторое пространство на вашем диске, но диск сам по себе будет возможно использовать. Мы продолжаем рекомендовать вам купить новый диск, если у вас есть большое количество испорченных блоков. Странные вещи происходят при загрузке с инсталляционного диска! Если вы видите, что машина зависает или неожиданно перезагружается, когда вы пытаетесь загрузиться с установочной дискеты, вы должны задать себе три вопроса:- Вы используете новую, только что отформатированную дискету (предпочтительно неиспользованную прямо из коробки, а не ту, что пришла с популярным журналом и последние три года провела под диваном)? Вы скачали образ дискеты в двоичном режиме? (не смущайтесь, даже лучшие из нас время от времени скачивают двоичный файл в режиме ASCII!) Если вы используете Windows95 или Win98, удостоверьтесь, что вы запускаете fdimage или rawrite в режиме чистого DOS? Эти операционные системы могут влиять на программы, работающие непосредственно с оборудованием, что и делает программа создания установочного диска; даже запуск из DOS в графической оболочке может вызвать проблемы. Есть сведения, что Netscape вызывает проблемы при скачивании загрузочного диска, так что лучше всего использовать специальную программу FTP, если она у вас есть. Я загрузился с ATAPI CDROM, однако программа установки сообщила, что CDROM не найден. Куда он подевался? Обычной причиной возникновения такой проблемы является неправильно сконфигурированный привод CDROM. Теперь зачастую ПК продаются с CDROM, установленным как ведомое устройство на втором контроллере IDE, но без ведущего устройства на этом контроллере. Согласно спецификации ATAPI, такая конфигурация неверна, однако Windows в таком случае всё же работает, и BIOS игнорирует это при загрузке. Вот почему BIOS может видеть CDROM при загрузке, а FreeBSD для завершения установки - нет. Переконфигурируйте вашу систему так, чтобы CDROM оказался либо основным устройством на том IDE-контроллере, на котором он установлен, либо ведомым устройством на контроллере IDE, который имеет ведущее устройство. Помогите! Не могу установить систему с ленты! Если вы инсталлируете 2.1.7R с ленты, вы должны создать ленту с размером блока tar, равным 10 (5120 байт). Размер блока tar по умолчанию равен 20 (10240 байт), поэтому ленты, созданные со стандартным размером блока, не могут быть использованы для установки 2.1.7R; вы получите сообщение об ошибке, говорящее, что размер записи слишком большой. Можно ли я установить систему на лэптоп через PLIP (Parallel Line IP)? Для этого нужно соединить два компьютера параллельным кабелем Laplink особым образом. Соединение параллельного кабеля для работы с сетью A-name A-End B-End Descr. Post/Bit DATA0 -ERROR 2 15 15 2 Data 0/0x01 1/0x08 DATA1 +SLCT 3 13 13 3 Data 0/0x02 1/0x10 DATA2 +PE 4 12 12 4 Data 0/0x04 1/0x20 DATA3 -ACK 5 10 10 5 Strobe 0/0x08 1/0x40 DATA4 BUSY 6 11 11 6 Data 0/0x10 1/0x80 GND 18-25 18-25 GND -
Если вы работаете с FreeBSD 3.X или более ранней версией, взгляните также на страницу, посвящённую мобильным вычислениям.
Какие параметры диска я должен использовать? Под параметрами диска мы понимаем число дорожек, головок и секторов на дорожку на диске, что для простоты обозначается как C/H/S. Именно так работает BIOS персональных компьютеров при чтении или записи диска. Это вызывает много недоразумений у начинающих системных администраторов. Прежде всего, физические параметры диска SCSI не имеют никакого значения, так как FreeBSD работает в терминах дисковых блоков. Фактически нет такого показателя, как физические параметры, так как плотность размещения секторов различна по всему диску. То, что производители называют физическими параметрами, есть не что иное, как параметры, которые они получили по занимаемому пространству. Для дисков IDE, FreeBSD работает в терминах C/H/S, но во всех современных дисках они преобразовываются во внутреннее представление. Имеют значение только логические параметры. Это то, что получает BIOS, когда спрашивает какие у тебя параметры? Затем они используются для обращения к диску. Так как FreeBSD использует BIOS при загрузке, очень важно получить верные параметры. В частности, если у вас на диске находятся несколько операционных систем, они обе должны иметь одинаковое представление о параметрах диска. В противном случае серьёзные проблемы при загрузке неизбежны! В случае дисков SCSI, параметры используются в зависимости от того, включена ли поддержка расширенной трансляции на вашем контроллере (что часто обозначается как поддержка дисков DOS >1GB или что-то похожее). Если эта возможность выключена, то используйте N дорожек, 64 головки и 32 сектора на дорожку, где N - это ёмкость диска в мегабайтах. Например, 2-гигабайтный диск должен иметь 2048 дорожек, 64 головки и 32 сектора на дорожку. Если трансляция включена (что обычно используется для преодоления некоторых ограничений MSDOS) и ёмкость диска превышает 1ГБ, используется M дорожек, 63 сектора на дорожку (не 64) и 255 головок, где 'M' - это объём диска в мегабайтах, поделённый на 7.844238 (!). Таким образом, наш диск объёмом 2ГБ будет иметь 261 дорожку, 63 сектора на дорожку и 255 головок. Если вы не уверены, или FreeBSD ошибается при определении параметров диска во время установки, самый простой способ решить эту проблему - создать на диске маленький раздел DOS. После этого BIOS должна определить параметры диска правильно (и вы всегда можете удалить раздел DOS в редакторе разделов, если вы не хотите его сохранить. Однвко вы можете оставить его для настройки сетевых адаптеров и тому подобных вещей. Кроме того, существует свободно доступная утилита, распространяемая вместе с FreeBSD, которая называется pfdisk.exe. Вы можете найти её в каталоге tools компакт-диска с FreeBSD или на различных FTP-серверах с FreeBSD. Эту программу можно использовать для определения параметров, используемых другими операционными системами, расположенными на вашем диске. Затем вы можете использовать эти параметры в редакторе разделов. Есть ли ограничения на разбиение диска? Да. Вы должны убедиться, что корневой раздел находится до 1024 дорожки, так чтобы BIOS могла загрузить с него ядро. (Заметьте, что это ограничение BIOS компьютера, а не FreeBSD). Для диска SCSI, это, как правило, будет означать, что корневой раздел располагается в первых 1024Мб (или в первых 4096Мб, если включен режим расширенной трансляции - посмотрите предыдущий вопрос). Для дисков IDE соответствующее значение равно 504Мб. Совместима ли FreeBSD с менеджерами дисков? FreeBSD распознаёт Ontrack Disk Manager и допускает его использование. Другие менеджеры дисков не поддерживаются. Если вы хотите использовать диск с FreeBSD, вам не нужен менеджер диска. Отконфигурируйте диск на столько пространства, сколько сможет обработать BIOS (обычно 504 мегабайта). и FreeBSD распознает, сколько места у вас есть на самом деле. Если вы используете старый диск с контроллером MFM, вам может потребоваться точно указать FreeBSD количество используемых дорожек. Если вы хотите использовать FreeBSD совместно с другой операционной системой, это можно сделать и без менеджера диска: удостоверьтесь, что загрузочный раздел FreeBSD и раздел для другой операционной системы не выходят за пределы 1024 дорожки. Если вы будете осторожны, 20 мегабайтного раздела для загрузки будет достаточно. При загрузке FreeBSD выдаётся сообщение Missing Operating System Это классический случай, когда FreeBSD и DOS или другая операционная система конфликтуют по поводу параметров диска. Вам нужно будет переустановить FreeBSD, но имейте в виду, что инструкции, данные выше, помогают всегда. После приглашения менеджера загрузки F? ничего не происходит. Это ещё один признак проблемы, описанной в предыдущем разделе. Параметры диска в BIOS и параметры, используемые FreeBSD, не совпадают. Если ваш контроллер или BIOS поддерживают трансляцию дорожек (часто обозначаемую как >1GB drive support), попробуйте включить эту возможность и переустановить FreeBSD. Нужно ли устанавливать все исходные тексты системы? В общем случае, нет. Однако мы настоятельно рекомендуем установить, как минимум, исходные тексты набора base, включающий некоторые файлы, здесь упоминаемые, и sys, в который включены исходные тексты ядра. Для работы системы присутствия исходных текстов не требуется, разве что для программы конфигурирования ядра &man.config.8;. За исключением исходных текстов ядра, структура исходных текстов системы позволяет монтировать их в режиме "только для чтения" через NFS и компилировать программы. (Из-за ограничения на исходные тексты ядра мы рекомендуем монтировать их не прямо в /usr/src, а в какой-нибудь другой каталог с символическими ссылками для дублирования структуры каталогов. Наличие исходных текстов системы значительно облегчает процесс перехода на новые версии FreeBSD. Для выбора подмножества исходных текстов, которое вы хотите установить, используйте пункт меню Custom, когда находитесь в меню Distributions программы установки. Нужно ли перекомпилировать ядро? Построение нового ядра всегда было необходимым шагом при установке FreeBSD, однако последние релизы предоставляют более дружественный инструмент конфигурации ядра. В командной строке на приглашение загрузчика FreeBSD (boot:) введите и вы попадёте в экран визуальной настройки, которая позволяет конфигурировать настройки ядра для большинства адаптеров ISA. Однако рекомендуется, что потом вы всё же построите новое ядро, содержащее только те драйверы, которые вам нужны, для того, чтобы сэкономить немного ОЗУ, хотя для большинства систем это больше не является большой необходимостью. Какой из паролей - DES или MD5, я должен использовать и как указать, какого типа пароли используются пользователями? По умолчанию во FreeBSD используется формат паролей на основе MD5. Это делается в предположении, что он более защищён, чем традиционный формат паролей Unix, в котором используется схема на основе алгоритма DES. Пароли DES остаются применимыми, если вам нужно использовать файл паролей совместно с более старыми операционными системами, в которых используется менее защищённый формат паролей (их можно использовать, если в программе sysinstall вы выберите установку дистрибутива crypto или установите исходные тексты пакета crypto в случае построения из исходных текстов). Управление выбором используемого формата паролей осуществляется через параметр входа passwd_format в файле /etc/login.conf, принимающий значения des (если он есть) или md5. Более подробная информация о параметрах входа находится на странице Справочника &man.login.conf.5;. Загрузка с установочной дискеты прерывается на сообщении Probing Devices.... Почему? Если у вас установлены устройства IDE Zip или Jaz, уберите их и попробуйте снова. Они могут мешать инсталляционной программе. После того, как система будет установлена, вы можете снова подключить устройства. Надеемся, что это будет исправлено в более поздних релизах. Почему появляется сообщение panic: cant mount root после перезагрузки только что установленной системы. Эта ошибка проявляется, когда есть несогласование между представлениями загрузочного блока и ядра о дисковых устройствах. Эта ошибка обычно проявляется на системах с двумя дисками IDE, с винчестерами, установленными как ведущий или единственный на отдельных контроллерах IDE, с FreeBSD, инсталлированной на втором контроллере IDE. Программа в загрузочных блоках полагает, что система установлена на wd1 (второй диск BIOS), тогда как ядро даёт первому диску на втором контроллере название wd2. После обнаружения устройства ядро пытается смонтировать то, что загрузочные блоки выдают за загрузочный диск, wd1, тогда как он на самом деле wd2, и ошибается. Для разрешения этой проблемы сделайте одно из следующих действий: Для FreeBSD 3.3 и выше, перегрузите систему и нажмите Enter при появлении приглашения Booting kernel in 10 seconds; hit [Enter] to interrupt. Вы окажетесь в загрузчике. После этого наберите set root_disk_unit="disk_number". Здесь в качестве disk_number должен быть указан 0, если FreeBSD установлена на ведущем диске первого контроллера IDE, 1 если она установлена на ведомом диске первого контроллера IDE, 2, если система находится на ведущем диске второго IDE-контроллера и 3, если она установлена на ведомом диске второго контроллера IDE. Затем введите команду boot, и ваша система должна нормально загрузиться. Чтобы сделать эти изменения постоянными (то есть чтобы вам не было нужды выполнять эти действия каждый раз при перезагрузке или включении вашей машины с FreeBSD), поместите строчку root_disk_unit="disk_number" в файл /boot/loader.conf.local. При использовании FreeBSD 3.2 и более ранних версий в приглашении Boot: наберите 1:wd(2,a)kernel и нажмите клавишу Enter. Если система запустилась, выполните команду echo "1:wd(2,a)kernel" > /boot.config чтобы сделать это строкой загрузки по умолчанию. Поместите диск с FreeBSD на первичный контроллер IDE, так чтобы именования диском пришли в соответствие. Перестройте ядро, изменив конфигурацию контроллера wd на следующее: controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # comment out this line controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # change from wd2 to wd1 disk wd2 at wdc1 drive 1 # change from wd3 to wd2 Проинсталлируйте новое ядро. Если вы переместили ваши диски и хотите восстановить предыдущую настройку, замените диски в нужной конфигурации и перезагрузитесь. Ваша система должна нормально запуститься. Какие имеются ограничения на объём оперативной памяти? Размер оперативной памяти ограничен объёмом в 4 гигабайта. Такая конфигурация реально тестировалась, подробности есть в конфигурации wcarchive. Если вы собираетесь устанавливать столько оперативной памяти в компьютер, будьте внимательны. Скорее всего, вам придётся использовать память ECC и для уменьшения нагрузки также взять 9-чиповые модули памяти вместо 18-чиповых. Какие существуют ограничения для файловой системы ffs? Для файловой системы ffs максимальный теоретический размер равен 8 терабайтам (2Г блоков) или 16ТБ при стандартном размере блока 8К. На практике есть программное ограничение в 1 терабайт, но с некоторыми модификациями достижимы 4 гигабайта (и такие системы существуют). Максимальный размер одного файла ffs равен примерно 1Г блоков (4ТБ) при размере блока 4К. Maximum file sizes fs block size 2.2.7-stable 3.0-current works should work 4K 4T-1 4T-1 4T-1 >4T 8K >32G 8T-1 >32G 32T-1 16K >128G 16T-1 >128G 32T-1 32K >512G 32T-1 >512G 64T-1 64K >2048G 64T-1 >2048G 128T-1
При размере блока файловой системы 4К, тройная адресация блоков работает и всё должно быть ограничено максимальным количеством блоков, которое задаётся в виде тройной переадресации блока (примерно 1K^3 + 1K^2 + 1K), однако всё ограничивается (ошибочным) лимитом 1Г-1 на количество блоков файловой системы. Это ограничение должно быть равным 2Г-1. При количестве блоков, приближающемся к 2Г-1, появляются некоторые ошибки, но этот предел недостижим при размере блока 4К. При размере блока 8К и больше, всё должно быть ограничено лимитом 2Г-1 на количество блоков файловой системы, но реально ограничено пределом в 1Г-1 на число блоков файловой системы, кроме случая -STABLE, недостижимый при тройной переадресации, так что предел равен максимальному числу блоков файловой системы, который может быть представлен через двойную переадресацию (примерно (размер блока/4)^2 + (размер блока/4)), и под -CURRENT превышение этого ограничения может вызвать проблемы. Использование верного ограничения в 2Г-1 блоков вызывает проблемы.
Как можно поместить файлы размером 1ТБ на дискету? Я храню парочку таких на дискете :-) Максимальный размер файла не связан непосредственно с максимальным размером диска. Максимальный размер диска равен 1ТБ. Особенностью является то, что размер файла может превышать размер диска. В следующем примере создаётся файл размером 8Т-1 с помощью всего 32К дискового пространства (3 блока адреса и 1 блок данных) на маленьком корневом разделе. Команда dd должна уметь работать с большими файлами. &prompt.user; cat foo df . dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1 ls -l z du z df . &prompt.user; sh foo Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 64479 27702 31619 47% / 1+0 records in 1+0 records out 1 bytes transferred in 0.000187 secs (5346 bytes/sec) -rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z 32 z Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 64479 27734 31587 47% / Bruce Evans, September 1998 Я скомпилировал новое ядро и при загрузке получил сообщение об ошибке archsw.readin.failed. Вы можете осуществить загрузку системы, явно указав ядро во время второго этапа загрузочного процесса, нажав любую клавишу после появления символа | до запуска загрузчика. Более точно, вы обновили исходные тексты ядра, откомпилировали и установили новое ядро без выполнения make world . Такое не поддерживается. Выполните make world. Как произвести обновление 3.X -> 4.X? Мы настоятельно рекомендуем воспользоваться для этой цели бинарными снэпшотами. Снэпшоты ветки 4-STABLE находятся на сервере ftp://releng4.FreeBSD.org/. По причине большого количества изменений между 3.X и 4-STABLE прямое обновление из исходных текстов окончится, скорее всего, неудачно. Обновление из исходных текстов может быть выполнено, но только поэтапно. Сначала выполните обновление до последней 3-STABLE (RELENG_3). Затем выполните обновление до 4.1.1-RELEASE (RELENG_4_1_1_RELEASE). И наконец, обновите систему до 4-STABLE (RELENG_4). Если вы хотите произвести обновление из исходных текстов, пожалуйста, посмотрите Руководство по FreeBSD. Обновление через исходные тексты, а тем более 3.X к 4.X, никогда не рекомендуется делать начинающим пользователям; прочтите внимательно инструкции перед тем, как сделать это! Что такое профили безопасности? Профиль безопасности (security profile) является набором настраиваемых параметров, при помощи которых делается попытка достичь желаемый баланс между безопасностью и удобством работы, разрешая или запрещая запуск определенных программ и изменяя другие настройки. Чем строже профиль безопасности, тем меньше программ будет разрешено по умолчанию. Это один из основных принципов обеспечения безопасности: не запускать ничего сверх необходимого. Пожалуйста, отметьте, что профиль беопасности является всего лишь настройкой по умолчанию. Все программы могут быть разрешены или запрещены после установки FreeBSD редактированием или добавлением соответствующей строки или нескольких строк в файл /etc/rc.conf. Для получения более полной информации обратитесь к справочной странице по &man.rc.conf.5;. Следующая таблица описывает, что обеспечивает каждый профиль безопасности. В столбцах приведены варианты выбора профилей безопасности, а в строках - программы или функциональность, которая разрешается или запрещается. Возможные профили безопасности Extreme Moderate &man.sendmail.8; NO YES &man.sshd.8; NO YES &man.portmap.8; NO MAYBE Программа portmap включена, если машина ранее была настроена для работы в качестве клиента или сервера NFS во время её установки. Сервер NFS NO YES &man.securelevel.8; YES (2) Если вы выбираете профиль безопасности, устанавливающий уровень безопасности (Extreme или High), то вы должны учесть последствия. Пожалуйста, прочтите справочную страницу о &man.init.8; и обратите особое внимание на значения уровней безопасности, иначе позже у вас возникнут значительные проблемы! NO
Профиль безопасности не является панацеей от всех бед! Даже при установка его экстремальным вам все равно нужно заниматься проблемами обеспечения безопасности через чтение соответствующего списка рассылки, использование подходящих паролей и фраз и применение хорошей практики обеспечения безопасности. Он просто задаёт желаемый уровень безопасности разумным образом без дополнительной настройки. Механизм профилей безопасности предполагается использовать, если вы устанавливаете FreeBSD впервые. Если у вас FreeBSD уже установлена, вероятнее, более эффективно просто включать или выключать нужную функциональность. Если вам на самом деле нужно использовать профиль безопасности, для его задания вы можете перезапустить &man.sysinstall.8;.
Аппаратная совместимость Поддерживает ли FreeBSD аппаратные платформы, отличные от x86? Да. FreeBSD поддерживает архитектуры Intel x86 и DEC (сейчас Compaq) Alpha. Также был проявлен интерес к переносу FreeBSD на платформу SPARC. Если вы хотите подключиться к этому проекту, подпишитесь на соответствующий freebsd-sparc@FreeBSD.org список рассылки. В список планируемых к поддержке платформ совсем недавно добавились архитектуры IA-64 и PowerPC, дополнительную информацию можно получить, подключившись к соответствующим спискам рассылки freebsd-ia64@FreeBSD.org и/или freebsd-ppc@FreeBSD.org. Для обсуждение общих вопросов, касающихся новых аппаратных платформ, предназначен список рассылки freebsd-platforms@FreeBSD.org. Если апаратная платформа Вашего компьютера не поддерживается FreeBSD и Вам нужно его запустить прямо сейчас, мы советуем обратить Ваш взгляд также на NetBSD и OpenBSD. Я хочу приобрести аппаратуру для моей системы FreeBSD. Какая модель/производитель/тип лучше всего? Это постоянно обсуждается в списках рассылки FreeBSD. Так как аппаратура меняется так быстро, мы это ожидаем. Мы все же сильно рекомендуем, чтобы вы прочитали Hardware Notes и выполнили поиск по архивам списков рассылки перед тем, как задавать вопросы о самом последнем и лучшем оборудовании. Весьма вероятно, что обсуждение требуемого вам оборудование как раз было на прошлой неделе. Если вы подбираете лаптоп, посмотрите архивы списка рассылки FreeBSD-mobile. В противном случае вам нужны архивы FreeBSD-questions или, возможно, специфичные списки рассылки по конкретному типу оборудования. Какие типы винчестеров поддерживает FreeBSD? FreeBSD работает с дисками стандартов EIDE и SCSI (с соответствующими контроллерами; обратитесь к следующему разделу), и всеми дисками, использующими оригинальный интерфейс Western Digital (MFM, RLL, ESDI и, конечно же, IDE). Некоторые контроллеры ESDI, использующие собственные интерфейсы, могут и не работать: к таким относятся WD1002/3/6/7 и их клоны. Какие поддерживаются контроллеры SCSI? Полный список приведён в текущих Замечаниях по оборудованию. Какие приводы CDROM поддерживаются во FreeBSD? Поддерживаются любые SCSI-устройства чтения компакт дисков, подключенные к поддерживаемому контроллеру. Кроме того, поддерживаются следующие оригинальные интерфейсы CDROM: Mitsumi LU002 (8bit), LU005 (16bit) и FX001D (16bit 2x Speed). Sony CDU 31/33A Sound Blaster не-SCSI CDROM Matsushita/Panasonic CDROM ATAPI-совместимые IDE CDROM Все не-SCSI адаптеры ставятся своей медлительностью по сравнению со SCSI, а некоторые CDROM стандарта ATAPI могут и не работать. С версии 2.2 компакт-диск с FreeBSD от FreeBSD Mall является загрузочным. Какие приводы CD-RW поддерживаются во FreeBSD? FreeBSD поддерживает все ATAPI-совместимые IDE-приводы CD-R или CD-RW. Для FreeBSD версии 4.0 и выше обратитесь к справочной странице по команде &man.burncd.8;. Для более ранних версий FreeBSD посмотрите примеры в /usr/share/examples/atapi. FreeBSD поддерживает также все SCSI-приводы CD-R или CD-RW. Установите и используйте программу cdrecord из системы портов или пакаджей, но проверьте, что в вашем ядре присутствует устройство pass. Поддерживает ли FreeBSD устройства ZIP? Конечно же, FreeBSD поддерживает ZIP-устройства SCSI. Устройству ZIP могут быть назначены SCSI ID только 5 или 6, и если BIOS вашего SCSI-адаптера поддерживает такую возможность, вы можете с него даже загрузиться. Неизвестно, какие адаптеры позволяют загрузиться с устройств, номера которых отличны от 0 или 1, так что вам придётся обратиться к документации, если вам это нужно. Устройства ZIP стандарта ATAPI (IDE) поддерживаются FreeBSD начиная с версии 2.2.6. FreeBSD поддерживает устройства Zip, работающие через параллельный порт, начиная с версии 3.0. Если вы используете более новую версию, проверьте, содержит ли ваше ядро драйверы для scbus0, da0, ppbus0 и vp0 (ядро GENERIC содержит всё это, кроме vp0). Если эти драйверы имеются, то устройство должно быть доступно как /dev/da0s4. Диски могут быть смонтированы командами mount /dev/da0s4 /mnt или (для дисков dos) mount_msdos /dev/da0s4 /mnt соответственно. Также посмотрите FAQ по съёмным носителям далее в этой главе, а также замечание о форматировании в главе об администрировании. Поддерживает ли FreeBSD съёмные диски типа JAZ или EZ? Кроме IDE-варианта устройства EZ, это всё устройства SCSI, так что для FreeBSD все они должны выглядеть как диски SCSI, а IDE EZ должен выглядеть как диск IDE. Я не знаю, насколько хорошо FreeBSD поддерживает смену носителя во время работы. Конечно, чтобы сменить диск, вам сначала нужно его размонтировать, и обратите внимание на то, что при загрузке все внешние устройства должны быть включены, чтобы FreeBSD могла их распознать. Посмотрите это замечание о форматировании. Какие многопортовые последовательные адаптеры поддерживаются во FreeBSD? Список таких устройств находится в разделе о различных устройствах Руководства. Некоторые безымянные клоны таких адаптеров тоже работают нормально, особенно те, которые заявляют о своей совместимости с AST. Прочтите страницы Справочника о &man.sio.4; для получения подробной информации о конфигурировании таких адаптеров. Поддерживает ли FreeBSD USB клавиатуры? Поддержка устройств USB была добавлена во FreeBSD 3.1. Однако там она ещё находилась в стадии разработки и не всегда работает так же, как в версии 3.2. Если вы хотите поэкспериментировать с поддержкой клавиатуры USB, следуйте нижеприводимым указаниям. Используйте FreeBSD 3.2 и выше. В конфигурационный файл ядра добавьте следующие строки и перестройте ядро. device uhci device ohci device usb device ukbd options KBD_INSTALL_CDEV При использовании FreeBSD версий, предшествующих 4.0, добавьте вместо этого такие строки: controller uhci0 controller ohci0 controller usb0 controller ukbd0 options KBD_INSTALL_CDEV Перейдите в каталог /dev и создайте специальные файлы устройств следующим образом: &prompt.root; cd /dev &prompt.root; ./MAKEDEV kbd0 kbd1 Отредактируйте файл /etc/rc.conf, добавив следующие строки: usbd_enable="YES" usbd_flags="" После перезагрузки системы AT-клавиатуре будет соответствовать /dev/kbd0, а клавиатуре USB - /dev/kbd1, если они обе подключены к системе. Если присутствует только клавиатура USB, ей будет соответствовать /dev/ukbd0. Если вы хотите использовать клавиатуру USB на консоли, вы должны явно указать драйверу консоли на использование имеющейся клавиатуры USB. Это может быть сделано в процессе инициализации системы следующей командой. &prompt.root; kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null Заметьте, что, если клавиатура USB является единственной присутствующей, она доступна как /dev/kbd0, и поэтому команда должна выглядеть примерно так: &prompt.root; kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null Вышеуказанную команду хорошо бы добавить в /etc/rc.i386. Как только вы всё это сделаете, клавиатура USB будет работать и в X-окружении без каких-либо особых настроек. Выключение и включение USB-клавиатуры на ходу может ещё не работать совершенно корректно. Во избежание неприятностей было бы правильно подключить клавиатуру перед запуском системы и не отключать её до закрытия системы. За дополнительной информацией обратитесь к странице Справочника &man.ukbd.4;. У меня необычная мышь типа bus mouse. Как её настроить? FreeBSD поддерживает мыши типов bus mouse и InPort bus mouse от таких производителей, как Microsoft, Logitech и ATI. Драйвер устройства bus mouse включен по умолчанию в ядро GENERIC во FreeBSD версий 2.X, но не включён в версию 3.0 и выше. Если вы строите собственное ядро с этим драйвером, добавьте следующую строку в конфигурационный файл ядра Во FreeBSD 3.0 и ранее, добавьте: device mse0 at isa? port 0x23c tty irq5 vector mseintr Во FreeBSD 3.X строчка должна иметь вид: device mse0 at isa? port 0x23c tty irq5 А во FreeBSD 4.X и выше строчка должна быть такой: device mse0 at isa? port 0x23c irq5 Мышь типа bus mouse обычно поставляется с отдельными интерфейсными адаптерами. Они позволяют установить адрес порта ввода/вывода и номер IRQ, отличающиеся от приведённых выше. Для получения дополнительной информации обратитесь к документации по вашей мыши и странице Справочника &man.mse.4;. Как использовать мышь PS/2 (типа mouse port или keyboard)? Если вы используете FreeBSD версии выше, чем 2.2.5, то необходимый драйвер, psm, включён в ядро и активизирован. Ядро должно обнаружить мышь PS/2 во время загрузки. Если вы работаете с предыдущей, но сравнительно свежей версией FreeBSD (2.1.x и выше), то вы можете просто включить её поддержку в меню конфигурации ядра во время инсталляции, либо позже, указав в приглашении boot:. По умолчанию она отключена, так что вы должны включить её явно. Если вы используете более старую версию FreeBSD, то вам нужно добавить следующие строки в файл конфигурации ядра и построить новое ядро. Во FreeBSD 3.0 и ранее, строчка должна иметь вид: device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr Во FreeBSD 3.1 и выше, строчка должна быть такой: device psm0 at isa? tty irq 12 Во FreeBSD 4.0 и выше строчка должна иметь вид: device psm0 at atkbdc? irq 12 Обратитесь к главе Руководства о конфигурировании ядра, если вы не имели опыта такой работы. После того, как ядро правильно обнаружило psm0 во время загрузки, проверьте существование файла устройства для psm0 в каталоге /dev. Это можно сделать, набрав: &prompt.root; cd /dev; sh MAKEDEV psm0 войдя в систему администратором. Можно ли каким-либо образом использовать мышь, кроме X Window? Если вы используете стандартный драйвер консоли, syscons, то можете использовать указатель мыши в текстовых консолях для выделения и переноса текста. Запустите демон мыши, moused, и включите отображение указателя мыши на консоли: &prompt.root; moused -p /dev/xxxx -t yyyy &prompt.root; vidcontrol -m on Здесь xxxx - это имя устройства мыши, а yyyy - тип протокола, используемого мышью. Страница Справочника по &man.moused.8; содержит информацию о поддерживаемых типах протоколов. Вы можете запускать демон мыши автоматически во время старта системы. В версии 2.2.1, установите значение следующей переменной в /etc/sysconfig. mousedtype="yyyy" mousedport="xxxx" mousedflags="" В версиях от 2.2.2 и до 3.0, установите значения следующих переменных в файле /etc/rc.conf. moused_type="yyyy" moused_port="xxxx" moused_flags="" В версиях 3.1 и выше, если предположить, что у вас мышь типа PS/2, то достаточно добавить строчку moused_enable="YES" в файл /etc/rc.conf. Кроме того, если вы хотите использовать даемон мыши на всех виртуальных терминалах, а не только на консоли во время загрузки, добавьте следующую строку в файл /etc/rc.conf. allscreens_flags="-m on" Начиная с FreeBSD 2.2.6, даемон мыши в состоянии определять тип протокола автоматически, если, конечно, мышь не достаточно древней модели. Укажите auto для автоматического определения типа протокола. После запуска даемона мыши, доступ к мыши должен согласовываться между даемоном мыши и другими программами типа X Window. Этот вопрос рассмотрен в другом разделе. Как можно вырезать и копировать текст с помощью мыши в текстовой консоли? После того, как вы запустили даемон мыши (посмотрите предыдущий раздел), нажмите кнопку 1 (левую) и двигайте мышь для выбора области выделения. Затем нажмите кнопку 2 (среднюю) или кнопку 3 (правую) для вставки текста из буфера, начиная с текущей позиции курсора. В версиях 2.2.6 и выше, нажатие на кнопку 2 вызовет вставку текста. Нажатие на кнопку 3 расширит выбранный область текста. Если у вашей мыши отсутствует средняя кнопка, вы можете её сэмулировать или переназначить кнопки опциями программы moused. Обратитесь к странице Справочника по &man.moused.8;. Поддерживает ли FreeBSD USB мыши? Рудиментарная поддержка устройств USB была добавлена во FreeBSD 3.1. В ранних версиях 3.X она не всегда работала. Начиная с FreeBSD 4.0, устройства USB должны работать без дополнительных ухищрений. Если вы хотите поэкспериментировать с поддержкой мыши USB во FreeBSD 3.X, следуйте нижеприводимым указаниям. Используйте FreeBSD 3.2 и выше. В конфигурационный файл ядра добавьте следующие строки и перестройте ядро. device uhci device ohci device usb device ums Во FreeBSD версий, предшествующих 4.0, вместо этого добавьте такие строчки: controller uhci0 controller ohci0 controller usb0 device ums0 Перейдите в каталог /dev и создайте специальный файл устройства такой командой: &prompt.root; cd /dev &prompt.root; ./MAKEDEV ums0 Отредактируйте файл /etc/rc.conf, добавив такие строчки: moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags="" usbd_enable="YES" usbd_flags="" Подробное обсуждение moused может быть найдено в предыдущем разделе. Чтобы использовать мышь USB при работе в X, отредактируйте файл XF86Config. Если вы используете XFree86 3.3.2 и выше, то в разделе Pointer должны присутствовать такие строки: Device "/dev/sysmouse" Protocol "Auto" Если у вас более старая версия XFree86, то в разделе Pointer должны присутствовать строки: Device "/dev/sysmouse" Protocol "SysMouse" Поддержке мыши при работе в X посвящен другой раздел. Выключение и включение мыши USB на ходу может ещё не работать совершенно корректно. Во избежание неприятностей было бы правильно подключить мышь перед запуском системы и не отключать её до закрытия системы. У моей мыши есть дополнительные колёсико и кнопочки. Можно ли их использовать во FreeBSD? Ответ, к сожалению, в зависимости от обстоятельств. Эти мышки с дополнительными возможностями, как правило, требуют наличия специальных драйверов. До тех пор, пока драйвер мыши или прикладная программа не будут иметь отдельную поддержку такой мыши, она будет работать как стандартная двух- или трёхкнопочная мышь. Возможные способы использования колёсиков мыши при работе в X Window описаны в другом разделе. Похоже, что моя мышь не работает. Её курсор прыгает по экрану. Мышь имеет колёсико и подключено к порту мыши PS/2. В драйвере psm для мыши PS/2 во FreeBSD версий 3.2 и ранее имеются проблемы при работе с некоторыми мышками, у которых есть колёсико, в том числе с мышками Logitech модель M-S48 и их OEM-разновидностями. Исправьте файл /sys/i386/isa/psm.c с помощью следующего патча и перестройте ядро. Index: psm.c =================================================================== RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v retrieving revision 1.60.2.1 retrieving revision 1.60.2.2 diff -u -r1.60.2.1 -r1.60.2.2 --- psm.c 1999/06/03 12:41:13 1.60.2.1 +++ psm.c 1999/07/12 13:40:52 1.60.2.2 @@ -959,14 +959,28 @@ sc->mode.packetsize = vendortype[i].packetsize; /* set mouse parameters */ +#if 0 + /* + * A version of Logitech FirstMouse+ won't report wheel movement, + * if SET_DEFAULTS is sent... Don't use this command. + * This fix was found by Takashi Nishida. + */ i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS); if (verbose >= 2) printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i); +#endif if (sc->config & PSM_CONFIG_RESOLUTION) { sc->mode.resolution = set_mouse_resolution(sc->kbdc, - (sc->config & PSM_CONFIG_RESOLUTION) - 1); + (sc->config & PSM_CONFIG_RESOLUTION) - 1); + } else if (sc->mode.resolution >= 0) { + sc->mode.resolution + = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution); + } + if (sc->mode.rate > 0) { + sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate); } + set_mouse_scaling(sc->kbdc, 1); /* request a data packet and extract sync. bits */ if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) { Версии FreeBSD выше чем 3.2 должны работать нормально. Как использовать мышь/трэкболл/сенсорную панель на лэптопе? Посмотрите ответ на предыдущий вопрос. Также посмотрите страницу о мобильных вычислениях. Какие типы стримеров поддерживаются? FreeBSD поддерживает устройства SCSI и QIC-36 (с интерфейсом QIC-02), включая 8-мм (Exabyte) и DAT. Некоторые ранние модели 8-мм стримеров не совсем соответствуют стандарту SCSI-2 и могут работать не совсем хорошо. Поддерживает ли FreeBSD роботов для смены лент? FreeBSD 2.2 поддерживает SCSI-чейнджеры через устройство &man.ch.4; и команду &man.chio.1;. Подробная информация об управлении чейнджерами может быть найдена на странице Справочника по команде &man.chio.1;. Если вы не используете AMANDA или другое программное обеспечение, умеющее работать с роботами, имейте в виду, что они могут только переносить ленты с одного места на другое, так что вам нужно самим отслеживать, в каком слоте находится нужная лента, и в какой слот нужно вернуть ленту, находящуюся в стримере. Какие звуковые адаптеры поддерживаются во FreeBSD? FreeBSD поддерживает звуковые адаптеры SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib и Gravis UltraSound. Имеется ограниченная поддержка MPU-401 и совместимых с ним адаптеров. Адаптеры, удовлетворяющие спецификации Microsoft Sound System, также поддерживаются драйвером pcm. Это касается только звука! Этот драйвер не поддерживает CDROM, SCSI или джойстики ни на каких подобных адаптерах, кроме SoundBlaster. Поддерживаются устройства на SCSI-интерфейсе SoundBlaster и не-SCSI CDROM, но загрузиться с них невозможно. Есть ли решение проблемы отсутствия звука при использовании драйвера pcm с адаптером es1370? При каждой перезагрузке вам нужно запускать следующую команду: &prompt.root; mixer pcm 100 vol 100 cd 100 Какие сетевые адаптеры поддерживает FreeBSD? Более полный список содержится в разделе Руководства об адаптерах Ethernet. На моей машине отсутствует математический сопроцессор - это плохо? Это касается только владельцев компьютеров 386/486SX/486SLC - во всех остальных машинах модуль вычислений с плавающей точкой объединён с центральным процессором. В общем случае это не проблема, но в отсутствии сопроцессора вы можете столкнуться со снижением производительность и точности при использовании программной эмуляции сопроцессора (обратитесь к разделу об эмуляции вычислений с плавающей точкой). В частности, прорисовка дуг в X будет ОЧЕНЬ медленной. Приобретение математического сопроцессора настоятельно рекомендуется, он того стоит. Некоторые математические сопроцессоры работают лучше, чем другие. Нам неприятно это признавать, но Intel пока никого не подводил. Если вы не уверены, что сопроцессор будет работать с FreeBSD, избегайте клонов. Какие ещё устройства поддерживаются во FreeBSD? В Руководстве приведён список остальных устройств, которые поддерживаются во FreeBSD. Поддерживает ли FreeBSD управление энергосбережением на лаптопах? FreeBSD поддерживает APM на некоторых машинах. Поищите в файле конфигурации ядра LINT слово APM. Более полная информация может быть найдена в справочной странице по &man.apm.4;. Решение специфичных проблем с аппаратным обеспечением Этот раздел содержит решения специфичных проблем с аппаратным обеспечением, с которыми сталкиваются наши пользователи. Компьютеры Micron зависают при загрузке Некоторые материнские платы Micron имеют BIOS, не удовлетворяющую стандарту PCI BIOS, что приводит к печальным последствиям при загрузке FreeBSD, потому что имеет место несоответствие устройств PCI занимаемым ими адресам. Для решения этой проблемы отключите в BIOS опцию Plug and Play Operating System. Более подробная информация об этой проблеме находится по следующему адресу: http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron Почему FreeBSD не распознаёт мой SCSI контроллер от Adaptec. Новый набор микросхем AIC789x от Adaptec поддерживается подсистемой CAM SCSI, впервые появившейся в 3.0. Патчи для 2.2-STABLE находятся по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/. Загрузочный диск с поддержкой CAM доступен по адресу http://people.FreeBSD.org/~abial/cam-boot/. В обоих случаях прежде чем начать, прочтите файл README. FreeBSD не находит внутренний модем Plug & Play. Вам нужно добавить PnP ID вашего модема в список PnP ID драйвера последовательного порта. Для включения поддержки Plug & Play, откомпилируйте новое ядро с опцией controller pnp0 в конфигурационном файле, и перезагрузите машину. Ядро выведет список ID всех найденных PnP-устройств. Добавьте PnP ID модема в таблицу в файле /sys/i386/isa/sio.c, где-то в районе 2777 строки. Чтобы найти таблицу, поищите слово SUP1310 в структуре siopnp_ids[]. Снова постройте ядро, проинсталлируйте его и перезагрузитесь. Теперь ваш модем должен быть опознан. Вам может понадобиться отконфигурировать PnP-устройства командой pnp в конфигураторе во время загрузки следующим образом: pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8 чтобы модем был распознан. Поддерживает ли FreeBSD программные модемы, такие, как Winmodem? FreeBSD поддерживает работу со многими программными модемами посредством специального дополнительного программного обеспечения. Установка порта comms/ltmdm добавит поддержку для можемов на основе очень популярного набора микросхем Lucent LT. Порт comms/mwavem поддерживает модемы, установленные в лаптопах IBM Thinkpad 600 и 700. Вы не сможете установить FreeBSD, работая через программный модем; это программное обеспечение должно быть установлено после установки ОС. Как сделать, чтобы приглашение boot: выводилось на консоль на последовательном порту? Постройте ядро с параметром options COMCONSOLE. Создайте файл /boot.config, поместив туда только текст . Отключите клавиатуру. Подробная информация находится в файле /usr/src/sys/i386/boot/biosboot/README.serial. Почему сетевой адаптер 3Com PCI не работает с компьютерами Micron? Некоторые материнские платы Micron имеют BIOS, не удовлетворяющую стандарту PCI BIOS, что приводит к несоответствию устройств PCI занимаемым ими адресам. Это приводит к печальным последствиям при загрузке FreeBSD. Для решения этой проблемы отключите в BIOS опцию Plug and Play Operating System. Более подробная информация об этой проблеме находится по следующему адресу: http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron Поддерживает ли FreeBSD многопроцессорные системы (SMP)? Поддержка SMP (Symmetric Multiprocessing) имеется только в 3.0-STABLE и последующих релизах. По умолчанию поддержка SMP в ядре GENERIC не включена, так что для её включения вам нужно будет перекомпилировать ядро. Посмотрите в файл /sys/i386/conf/LINT, чтобы определить, какие параметры нужно поместить в конфигурационный файл вашего ядра. При загрузке с установочной дискеты машины с материнской платой ASUS K7V зависают. Как это исправить? Войдите в настройку BIOS и выключите защиту от загрузочных вирусов. Устранение некоторых проблем На моём винчестеры есть запорченные блоки! Если это SCSI-устройство, то винчестер должен иметь возможность автоматической переадресации таких блоков. Однако по непонятным причинам во многих поставляемых дисках эта возможность отключена... Чтобы её включить, вам нужно изменить режим работы устройства, что во FreeBSD может быть выполнено администратором посредством команды &prompt.root; scsi -f /dev/rsd0c -m 1 -e -P 3 и изменить значения параметров AWRE и ARRE с 0 на 1:- AWRE (Auto Write Reallocation Enbld): 1 ARRE (Auto Read Reallocation Enbld): 1 Последующие параграфы были предоставлены Тэдом Миттельштадтом (Ted Mittelstaedt) tedm@toybox.placo.com Для дисков IDE появление запорченных блоков является признаком возможных неприятностей. Все современные IDE-диски поставляются с включенной возможностью переадресации испорченных блоков. Все производители винчестеров в настоящее время предоставляют расширенные гарантии и заменяют диски с запорченными блоками. Если вы всё же хотите спасти ваш диск IDE с запорченными блоками, вы можете попытаться найти программу диагностики винчестеров от производителя и протестировать ею диск. Иногда эти программы могут заставить электронику винчестера пересканировать диск в поисках испорченных блоков и заблокировать их. В случае дисков стандартов ESDI, RLL и MFM, наличие испорченных блоков является обычным явлением и не является большой проблемой. В ПК контроллер винчестера и BIOS берут на себя работу по блокировке испорченных блоков. Это прекрасно работает в случае операционных систем типа DOS, которые используют вызовы BIOS для доступа к диску. Однако драйвер диска во FreeBSD не обращается к BIOS, поэтому для обеспечения подобной функциональности существует bad144. bad144 работает только с драйвером wd (что означает, что эта утилита не поддерживается во FreeBSD 4.0), её НЕВОЗМОЖНО использовать со SCSI. bad144 помещает все найденные испорченные сектора в специальный файл. У bad144 имеется особенность - специальный файл с испорченными блоками помещается на последнюю дорожку диска. Так как этот файл может содержать список испорченных секторов, находящихся в начале диска, где может располагаться файл ядра /kernel, он должен быть доступен загрузчику, использующему вызовы BIOS для чтения файла ядра. Это значит, что диск, который использует bad144, не должен иметь размеры, превышающие 1024 дорожки, 16 головок и 63 сектора. Это ограничивает размер диска, обрабатываемого bad144, 500 мегабайтами. Для использования bad144, просто установите Bad Block в положение ON на экране программы fdisk во время начальной установки. Это работает начиная с FreeBSD 2.2.7. Диск должен иметь размер, не превышающий 1024 дорожки. Рекомендуется, чтобы до этого диск проработал не менее 4 часов для перехода в рабочий тепловой режим и стабильный режим работы головок. Если диск имеет размер, превышающий 1024 головки (как, например, большой диск ESDI), контроллер ESDI использует особый режим трансляции, чтобы это работало в DOS. Драйвер wd будет знать об этих режимах трансляции, ЕСЛИ вы укажете на использование преобразованных параметров в команде set geometry программы fdisk. Вы также НЕ должны использовать режим dangerously dedicated при выделении раздела для FreeBSD, так как при этом параметры диска не принимаются во внимание. Также, хотя fdisk будет использовать изменённые параметры, он всё же помнит настоящий размер диска, и попытается создать слишком большой раздел FreeBSD. Если параметры диска изменились на транслированные, раздел ДОЛЖЕН быть создан вручную с указанием количества блоков. Самым быстрым способом является установка большого диска ESDI с контроллером ESDI, загрузка DOS и выделение на нём раздела DOS. Затем запустите инсталляционную программу FreeBSD и в экране программы fdisk найдите и запишите размер блока и их количество раздела DOS. Затем установите параметры в те же значения, которые использует DOS, удалите раздел DOS и создайте совмещённый раздел FreeBSD с ранее записанным размером блока. Затем установите загрузку с этого раздела и включите сканирование испорченных блоков. Во время установки сначала, ещё до создания файловых систем, запустится bad144 (вы можете это увидеть по Alt-F2). Если возникнут проблемы при создании файла с запорченными секторами, вы установили слишком большие параметры диска - перезагрузитесь и начните всё сначала (включая повторные разбиение на разделы и форматирование винчестера в DOS). Если переадресация включена и всё равно на диске присутствуют запорченные блоки, то, по-видимому, остаётся только заменить винчестер. Количество испорченных блоков с течением времени имеет тенденцию только увеличиваться. FreeBSD не распознаёт мой EISA SCSI контроллер Bustek 742a! Нижеследующая информация специфична для 742a, но может касаться и других адаптеров от Buslogic (Bustek = Buslogic). Существуют две основных версии адаптеров 742a. Это аппаратные модификации A-G и модификации H и выше. Буква, обозначающая модификацию, расположена после номера сборки на кромке адаптера. На адаптере 742a установлены две микросхемы ПЗУ, одна содержит BIOS, а другая - микрокод (так называемое firmware). Для FreeBSD не имеет значения используемая версия BIOS, но имеет значение версия микрокода. Buslogic высылает обновления для ПЗУ, если вы позвоните в их отдел технической поддержки. Микросхемы с BIOS и микрокодом поставляются соответствующими парами. В ПЗУ адаптера вы должны иметь самую последнюю версии микрокода для вашей аппаратной модификации. Адаптерам модификаций A-G может только подойти BIOS/Firmware версий вплоть до 2.41/2.21. Адаптерам модификаций H и старше подходят самые последние версии BIOS/Firmware 4.70/3.37. Отличие между версиями микрокода заключается в том, что версия микрокода 3.37 поддерживает механизм round robin. На адаптерах Buslogic проставлен серийный номер. Если у вас адаптер старой модификации, вы можете позвонить в подразделение RMA фирмы Buslogic, сказать им серийный номер адаптера и попытаться обменять его на более новую модификацию. Если адаптер достаточно нов, то они его поменяют. FreeBSD 2.1 поддерживает микрокод модификаций только 2.21 и выше. Если у вас версия микрокода старее, чем эта, то адаптер не будет распознаваться как адаптер Buslogic. Однако он может быть опознан как Adaptec 1540. Ранние версии микрокода от Buslogic содержат режим эмуляции AHA1540. Однако для EISA-адаптера всё это выглядит как-то неприлично. Если у вас адаптер старой модификации и вы получили микрокод 2.21 для него, установите перемычку W1 в положение B-C, по умолчанию она находится в положении A-B. Не распознаётся SCSI-контроллер на HP Netserver! В общем-то это известная проблема. EISA-контроллеры SCSI, расположенные на материнской плате машин HP Netserver, занимают EISA-слот номер 11, так что все настоящие слоты EISA будут ему предшествовать. Так как адресное пространство для слотов EISA выше 10 пересекается с адресным пространством, предназначенным для PCI, то автоконфигуратор FreeBSD в настоящее время не может эту проблему нормально обойти. Так что пока лучшее, что вы можете предпринять, это попытаться указать, что пересечения диапазонов адресов нет :), установив опцию ядра EISA_SLOTS в значение 12. Отконфигурируйте и откомпилируйте ядро так, как это описано в разделе Руководства о конфигурировании ядра. Конечно, это даст вам типичную ситуации "курица или яйцо" при установке системы на такой машине. Для обхода этой проблемы внутри UserConfig есть специальный хак. Не используя визуального интерфейса, а только интерфейс командной строки, просто наберите eisa 12 quit в приглашении, и проинсталлируйте систему как обычно. В любом случае рекомендуется, что вы отконфигурируете и проинсталлируете собственное ядро. Надеемся, что будущие версии будут содержать полное решение этой проблемы. Вы не сможете использовать режим dangerously dedicated на машинах HP Netserver. Полное описание причин содержится в этом замечании. Что не так с IDE-контроллером CMD640? Этот контроллер не рабочий. Он не может отрабатывать команды на обоих каналах одновременно. Решение этой проблемы существует и включается автоматически, если в вашей системе используется этот контроллер. Подробная информация находится на страницах Справочника по дисковому драйверу (man 4 wd). Если вы уже работаете с FreeBSD 2.2.1 или 2.2.2 с IDE-контроллером CMD640 и хотите использовать второй канал, постройте новое ядро с включенной опцией options "CMD640". В версии 2.2.6 и выше это включено по умолчанию. Выдаются сообщения типа ed1: timeout. Обычно это вызвано конфликтом прерываний (например, двух адаптеров, использующих один и тот же IRQ). FreeBSD до версии 2.0.5R была нечувствительна к таким конфликтам, и драйвер сетевого адаптера оставался работоспособным даже при конфликтах IRQ. Однако с версии 2.0.5R и выше, конфликты IRQ больше не считаются безобидными. Загрузитесь с опцией -c и смените строку, описывающую ed0/de0/... на соответствующую вашей системе.. Если вы используете разъём BNC сетевого адаптера, таймауты устройства могут быть вызваны плохим терминированием. Чтобы это проверить, подключите терминатор к адаптеру (без кабеля) и посмотрите, не исчезли ли сообщения об ошибках. Некоторые NE2000-совместимые адаптеры выдают такую ошибку, если нет связи по UTP-порту или отключен кабель. Почему мой адаптер 3COM 3C509 перестал работать без всякой видимой причины? Этот адаптер имеет странную привычку терять информацию о своих настройках. Обновите настройки вашего адаптера при помощи утилиты 3c5x9.exe из DOS. При монтировании компакт-диска, выдаётся сообщение Incorrect super block. В параметрах команды &man.mount.8; вам нужно указать тип устройства, который вы собираетесь смонтировать. По умолчанию &man.mount.8; полагает, что монтируемая файловая система имеет тип ufs. При монтировании файловой системы CDROM нужно указать опцию в команде &man.mount.8;. При этом, конечно же, предполагается, что CDROM содержит файловую систему стандарта ISO 9660, как на большинстве CDROM. С версии 1.1R FreeBSD автоматически распознаёт также расширения Rock Ridge (для длинных имён файлов). Например, если вы хотите смонтировать устройство CDROM /dev/cd0c в каталог /mnt, вы должны выполнить следующую команду: &prompt.root; mount -t cd9660 /dev/cd0c /mnt Заметьте, что имя устройства (/dev/cd0c в этом примере) может быть другим, в зависимости от интерфейса вашего CDROM. Отметьте, что опция всего лишь приводит к вызову команды mount_cd9660, так что пример выше может быть укорочен до такой команды: &prompt.root; mount_cd9660 /dev/cd0c /mnt При монтировании компакт-диска выдаётся сообщение Device not configured. Обычно это означает, что в приводе CDROM нет компакт-диска либо устройство не было обнаружено на этапе загрузки. Вставьте в привод какой-нибудь диск, и/или проверьте его настройку как ведущего/ведомого устройства, если оно типа IDE (ATAPI). Для привода CDROM может потребоваться несколько секунд для обнаружения, что был вставлен диск, так что будьте терпеливыми. Иногда SCSI CDROM может отсутствовать в системе из-за недостатка времени на ответ при сбросе шины. Если ваш привод CDROM является SCSI-устройством, пожалуйста, попробуйте добавить такой символ в ваш файл конфигурации ядра и перекомпилируйте его. options "SCSI_DELAY=15" Когда я монтирую CDROM, все неанглийские символы в именах файлов выводятся как ?. Скорее всего, в вашем компакт-диске для хранения информации о файлах и каталогах используется расширение Joilet. Это расширение предусматривает, что все имена файлов хранятся в виде двухбайтовых символов Unicode. На данный момент ведутся работы по поддержке Unicode ядром FreeBSD, но так как это ещё не готово, драйвер CD9660 не имеет возможности декодировать символы в именах файлов. Как временное решение, начиная с FreeBSD 4.3, в драйвер CD9660 был добавлен специальный метод, позволяющий пользователю загружать подходящую таблицу перекодировки во время работы. Модули для некоторых распространенных кодировок находятся в Коллекции Портов в sysutils/cd9660_unicode. Я записал CD во FreeBSD и теперь не могу считать его ни в какой другой операционной системой. Почему? Скорее всего, вы записали на CD непосредственно файл. Это часто случается, если вы пытаетесь записать ваши данные прямо на CDROM, без первоначального создания образа файловой системы ISO9660. &prompt.root; burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate Иногда компакт-диски записывают такимобразом, особенно в целях резервного копирования. Для того, чтобы считать данные, записанные на CD способом, описанным выше, вам нужно считать данные с устройства прямого доступа: &prompt.root; tar xzvf /dev/acd1c Однако если вы захотите монтировать ваш CD во FreeBSD и/или использовать его в различных операционных системах, этот метод не будет работать. Вместо этого сначала создайте файловую систему ISO 9660 из файлов, которые будут записаны на CD. Для этого вам нужно установить порт sysutils/mkisofs. После этого вы можете создавать образ ISO9660 такой командой: &prompt.root; mkisofs --allow-lowercase --allow-multidot -r -o cdimage cddir При этом будет создан файл с именем cdimage из всех файлов каталога cddir. Затем вы можете набрать: &prompt.root; burncd -f /dev/acd1c -s 12 data cdimage fixate Получающийся CD может быть смонтирован во FreeBSD, как любой другой обычный компакт-диск, и он будет также работать и в других операционных системах. Дополнительную информацию о создании и использовании оптических носителей (диски CD и DVD) с FreeBSD можно найти в Руководстве по FreeBSD. Почему я не могу смонтировать (командой mount аудио CD? Если вы попытаетесь смонтировать аудио CD, вы получите примерно такое сообщение об ошибке: cd9660: /dev/acd0c: Invalid argument. Причина этого заключается в том, что команда mount работает только с файловыми системами. На аудио CD файловых систем нет; они содержат только данные. Вам нужна программа, читающая аудио CD, например, порт audio/xmcd port. Мой принтер печатает невероятно медленно. Что тут можно сделать? Если принтер подключен к параллельному порту, и единственной проблемой является его медлительность, попробуйте установить порт в режим polled: &prompt.root; lptcontrol -p Утверждается, что некоторые новейшие принтеры от HP не работают корректно в режиме прерываний, скорее всего из-за (это ещё не совсем точно выяснено) проблем с временными задержками. Программы аварийно завершают работу с ошибкой Signal 11. Ошибки выполнения, связанные с сигналом 11, происходят, когда ваш процесс пытается обратиться к области памяти, доступ к которой ему не был дан операционной системой. Если что-то подобное происходит в случайные, на первый взгляд, промежутки времени, то вам нужно попытаться выяснить подробности происходящих событий более детально. Эти проблемы могут быть классифицированы следующим образом: Если проблема возникает только в определённом приложении, которое было самостоятельно вами разработано, то, скорее всего, это ошибка в вашем коде. Если это проблема в части базового комплекта системы FreeBSD, то это тоже может быть ошибка в программном коде, хотя в большинстве случаев такие проблемы обнаруживаются и ошибки исправляются задолго до того, как обычным читателям FAQ доводится использовать этот код (именно для этого предназначена версия -current). В частности, достоверно не ошибка FreeBSD, если вы сталкиваетесь с проблемой при компиляции программы, но при работе компилятора место сбоя каждый раз изменяется. Например, положим, что вы запускаете команду make buildworld и компиляция завершилась аварийно при попытке компиляции ls.c в ls.o. Если при следующей попытке повторно выполнить make buildworld компиляция прервётся на том же самом месте, то это ошибки процесса построения -- попробуйте обновить исходные тексты и попробуйте снова. Если же компиляция прерывается в каком-то другом месте, то в этом практически достоверно виновато обрудование. Что вы должны сделать: В первом случае вы должны воспользоваться отладчиком, к примеру, gdb, для нахождения точки программы, в которой делается попытка доступа к неверному адресу и затем исправить эту ошибку. Во втором случае вам нужно проверить, что ваше оборудование исправно. Среди часто приводящих к этому причин: Ваши винчестеры могут перегреваться: Проверьте работу вентиляторов в вашем системном блоке, так как ваш диск (и может, также другие компоненты, могут перегреваться). Работающий процессор перегревается: Это может произойти из-за выхода частоты процессора за рабочие границы или поломки вентилятора на процессоре. В любом случае вам нужно убедиться, что ваше оборудование работает так, как ему положено, по крайней мере, на момент поиска причин неисправности, другими словами, установите частоту работы на настройки по умолчанию. Если вы превысили рабочие частоты работы процессора, заметьте, что дешевле обходится медленная система, чем сгоревшая система, требующая замены! Также общество нечасто симпатизирует проблемам на таких системах, вне зависимости от того, считаете ли вы увеличение рабочей частоты не влияющим на работу или нет. Хитрая память: Если у вас установлено множество микросхем SIMM/DIMM, то вытащите их все и попытайтесь поработать индивидуально с каждой микросхемой SIMM или DIMM и локализовать проблему либо до проблематичной микросхемы DIMM/SIMM, либо даже их комбинации. Чересчур оптимистические настройки материнской платы: При настройке вашей BIOS и выборе положения перемычек на материнской плате вы имеете возможность задать различные частоты и задержки, и в большинстве случаев настройки по умолчанию достаточны, но иногда установка слишком малых периодов ожидания для ОЗУ, установка параметра RAM Speed: Turbo и подобных параметров в BIOS вызовет странное поведение. Возможным решением может стать установка параметров BIOS по умолчанию, но сначала стоит записать ваши настройки! Неустойчивое или недостаточное электропитание материнской платы. Если в вашей системе есть неиспользуемые адаптеры ввода/вывода, винчестеры или приводы компакт-дисков, попробуйте временно их убрать или отключить от кабеля электропитания, чтобы посмотреть, сможет ли ваш блок питания работать с меньшей нагрузкой. Или попробуйте воспользоваться другим блоком питания, желательно большей мощности (например, если имеющийся блок питания рассчитан на 250 Ватт, попробуйте другой мощностью 300 Ватт). Вы также должны прочитать FAQ по SIG11 (ссылка дана ниже), в котором даны прекрасные описания всех этих проблем, хотя и с точки зрения Linux. Также обсуждается, как аппаратура или программное обеспечение для тестирования памяти могут пропускать сбойную память. Наконец, если ничего из этого не помогает, то возможно, что просто вы нашли ошибку во FreeBSD и должны следовать инструкциям по посылке сообщений о проблемах. Подробная информация по этому вопросу содержится в FAQ по проблеме SIG11. Моя система аварийно завершает работу с сообщениями Fatal trap 12: page fault in kernel mode либо panic:, и выдаёт много дополнительной информации. Что мне делать? Разработчики FreeBSD очень интересуются такими ошибками, но им нужно несколько больше информации, чем просто факт возникновения этой ошибки. Полностью скопируйте сообщение. Затем обратитесь к разделу FAQ об аварийных завершениях работы ядра, постройте отладочное ядро и получите трассу вызовов. Это может звучать трудной задачей, но вам не нужны никакие знания программирования; просто следуйте указаниям. При загрузке монитор темнеет и теряет синхронизацию! Это известная проблема с видеоадаптерами ATI Mach 64. Она вызвана тем, что этот адаптер использует адрес 2e8, как и четвёртый последовательный порт. Из-за ошибки (или особенности работы?) в драйвере &man.sio.4; он обращается к порту, даже если если он не существует, и даже если вы отключите sio3 (четвёртый порт), который, как правило, использует этот адрес ввода/вывода. Пока это не исправлено, используйте следующий метод: В приглашении загрузчика наберите . (Это переведёт ядро в режим конфигурации). Отключите устройства sio0, sio1, sio2 и sio3 (все их). После этого драйвер sio не будет активизироваться и проблем не будет. Для продолжения загрузки наберите exit. Если вам нужно использовать последовательные порты, вы должны построить новое ядро со следующей модификацией: в файле /usr/src/sys/i386/isa/sio.c найдите строчку, содержащую число 0x2e8 и удалите её вместе с предшествующий запятой (оставив следующую). После этого следуйте обычным указаниям по построению ядра. Даже после этих изменений вы можете обнаружить, что X Window работает ненормально. Если это произошло, удостоверьтесь, что вы используете XFree86 версии не ниже 3.3.3. Этот и последующие релизы имеют встроенную поддержку адаптеров Mach64 и даже отдельный X-сервер для таких адаптеров. У меня 128 МБ ОЗУ, но система используется только 64. Так как для определения объёма памяти FreeBSD использует информацию BIOS, она ограничена 16 битами, используемыми для выражения размера ОЗУ в килобайтах (65535 КБ = 64МБ) (или меньше... некоторые BIOS ограничивают размеры памяти до 16МБ). Если у вас больше чем 64МБ ОЗУ, FreeBSD будет пытаться обнаружить эту память; однако эта попытка может и не удасться). Для решения этой проблемы вам нужно использовать опцию ядра, указанную ниже. Способ выяснения полной информации о памяти из BIOS существует, но у нас нет места в загрузочном блоке, чтобы это делать. Когда проблема нехватки места в загрузочных блоках будет решена, мы будем использовать расширенные функции BIOS для получения полной информации о памяти... но пока мы остановились на опции ядра. options "MAXMEM=n" Здесь n - это объём памяти в килобайтах. Для машины со 128 МБ ОЗУ вам нужно использовать значение 131072. FreeBSD 2.0 аварийно завершает работу с сообщением kmem_map too small! Сообщение может также выглядеть как mb_map too small! Такое завершение работы показывает, что системе не хватает виртуальной памяти для сетевых буферов (точнее, структур mbuf). Вы можете увеличить количество виртуальной памяти для структур mbuf, добавив: options "NMBCLUSTERS=n" в файл конфигурации ядра, где n - это число в пределах 512-4096, в зависимости от числа TCP-соединений, которое вам нужно одновременно обслуживать. Я рекомендую попробовать значение 2048 - это должно избавить вас от аварийных остановов. Вы можете отслеживать количество структур mbuf, выделенных/используемых системой командой netstat -m (обратитесь к &man.netstat.1;). Значение по умолчанию для NMBCLUSTERS равно 512 + MAXUSERS * 16. Почему я получаю сообщение об ошибке /kernel: proc: table is full? Ядро FreeBSD позволяет существовать одновременно ограниченному числу процессов. Оно вычисляется на основании параметра MAXUSERS в конфигурации ядра. MAXUSERS также влияет на другие ограничения ядра, такие как буферы работы с сетью (обратитесь к этому рассмотренному ранее вопросу). Если ваша машина сильно загружена, вам, наверное, понадобится увеличить MAXUSERS. Кроме максимального числа процессов, это увеличит значения и других параметров, ограничивающих систему. После FreeBSD 4.4, значение MAXUSERS стало меняемой величиной, которая может быть задана как kern.maxusers в /boot/loader.conf. Для более ранних версий FreeBSD вам нужно будет изменить значение MAXUSERS в файле конфигурации ядра. Если ваша машина загружена слабо, то просто вы запустили слишком много процессов, и вы можете исправить это через sysctl kern.maxproc. Если эти процессы запущены одним и тем же пользователем, вам также задать значение kern.maxprocperuid на единицу меньшим, чем новое значение kern.maxproc. (Оно должно быть по крайней мере на единицу меньшим, потому что системная программа &man.init.8;, должна работать всегда.) Чтобы значения sysctl сохранились после перезагрузки, задайте их в /etc/sysctl.conf для последних версий FreeBSD, или в /etc/rc.local для более ранних версий. При перезагрузке с новым ядром выдаётся сообщение CMAP busy panic. Процедура определения устаревших файлов /var/db/kvm_*.db иногда даёт сбой и использует не те файлы, что может вызвать аварийный останов системы. Если это случилось, перезагрузитесь в однопользовательском режиме и выполните команду: &prompt.root; rm /var/db/kvm_*.db Что означает сообщение ahc0: brkadrint, Illegal Host Access at seqaddr 0x0 Это - результат конфликта со SCSI-адаптером Ultrastor. Во время загрузки войдите в меню конфигурации ядра и выключите устройство uha0, являющееся источником этой проблемы. При загрузке моей системы выдается сообщение об ошибке ahc0: illegal cable configuration. С подключением кабеля все в порядке. Что происходит? На вашей материнской плате отсутствует внешняя логика поддержки автоматического терминирования. Установите в вашем SCSI BIOS правильное терминирование для вашей конфигурации вместо автоматического терминирования. Драйвер AIC7XXX не может определить, есть ли внешняя логика для распознавания кабеля (и, соответственно, автоматического терминирования). Драйвер просто полагает, что эта поддержка должна быть, если конфигурация, содержащаяся в EEPROM, установлена в "automatic termination". Без внешней логики распознавания кабеля драйвер часто будет ошибаться при настройке терминирования, что может сказаться на надежности шины SCSI. Sendmail сообщает, что mail loops back to myself В FAQ по sendmail на это дан такой ответ:- * Выдаются сообщения "Local configuration error", примерно такие: 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error Как можно решить эту проблему? Согласно записям MX, почта для домена (скажем, domain.net) была перенаправлена на указанный хост (в нашем случае relay.domain.net), но он не распознаётся как domain.net. Добавьте строку domain.net в файл /etc/sendmail.cw (если вы используете FEATURE(use_cw_file)) или добавьте "Cw domain.net" в /etc/sendmail.cf. Текущая версия FAQ по sendmail больше не поставляется вместе с sendmail. Однако этот документ регулярно помещается в конференции comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers и news.answers. Вы можете получить копию по электронной почте, послав сообщение, содержащее команду send usenet/news.answers/mail/sendmail-faq в теле письма, в адрес mail-server@rtfm.mit.edu. Полноэкранные приложения на удалённой машине ведут себя неправильно! На удалённой машине тип терминала может быть установлен в значение, отличное от типа терминала cons25, требуемом при использовании консоли FreeBSD. Есть несколько возможных способов решения этой проблемы: После входа на другую машину установите значение переменной окружения TERM равным ansi или sco, если эта машина знает об этих типах терминалов. Используйте эмулятор VT100, например screen на консоли FreeBSD. Screen даёт вам возможность открывать несколько рабочих сеансов на одном терминале, и она имеет ещё ряд полезных особенностей. Каждое окно программы screen ведёт себя как терминал VT100, так что переменная TERM на удалённой машине должна быть установлена в значение vt100. Опишите терминал cons25 в базе данных характеристик терминалов на удалённой машине. Способ описания зависит от используемой на этой машине операционной системе. Вам может помочь чтение руководств по администрированию удалённой системы. Запустите X-сервер на стороне FreeBSD и войдите на удалённую систему с помощью какого-либо эмулятора терминала, работающего в X Window, такого, как xterm или rxvt. Переменная окружения TERM на удалённой машине должна быть установлена в значение xterm или vt100. Почему выводятся сообщения calcru: negative time...? Это может быть вызвано различными аппаратными или программными проблемами, связанными с прерываниями. Это может быть связано как с ошибками при программировании, так и с природой самих устройств. Например, работа с TCP/IP по параллельному порту с использованием большого MTU приводит к этой проблеме, также как использование графических акселераторов; в последнем случае вы должны проверить настройку прерываний на графическом адаптере. Одним из проявлений этой проблемы является прерывание работы процессов с диагностическим сообщением SIGXCPU exceeded cpu time limit. Если эта проблема не может быть решена, для FreeBSD 3.0 от 29 ноября 1998 и выше измените значение системной переменной: &prompt.root; sysctl -w kern.timecounter.method=1 Это коснётся производительности системы, но, принимая во внимание источник этой проблемы, это будет незаметно. Если проблема всё ещё даёт о себе знать, оставьте значение этой переменной равным единичке и увеличьте значение параметра NTIMECOUNTER в файле конфигурации вашего ядра. Если в конце концов вы достигнете значения NTIMECOUNTER=20, то вам эту проблему решить не удастся, прерывания дают слишком большую нагрузку на процессор, чтобы обеспечить отслеживание времени. Выдаётся сообщение pcm0 not found или мой звуковой адаптер определяется как pcm1, хотя в конфигурационном файле ядра указана строчка device pcm0. Что порисходит ? Такое бывает во FreeBSD 3.x со звуковыми адаптерами PCI. Устройство pcm0 предназначено исключительно для адаптеров ISA, поэтому, если у вас имеется адаптер PCI, то вы увидите эту ошибку и ваш адаптер будет распознан как pcm1. Вы не сможете избавиться от предупреждающего сообщения, просто изменив строку в конфигурационном файле ядра на device pcm1, так как это приведёт к закреплению устройства pcm1 за адаптерами ISA, а ваш адаптер PCI будет найден как устройство pcm2 (и появится предупреждение pcm1 not found). Если у вас имеется звуковой адаптер PCI, то вам нужно также создать устройство snd1, а не snd0: &prompt.root; cd /dev &prompt.root; ./MAKEDEV snd1 Такой ситуации не возникает во FreeBSD 4.x, так как в ней было положено много усилий, чтобы сделать её более PnP-центричной и устройство pcm0 больше не предназначено исключительно для адаптеров ISA Почему после обновления FreeBSD до версии 4.x мой PnP-адаптер больше не обнаруживается (или определяется как unknown)? FreeBSD 4.x теперь гораздо более PnP-центрична, что отражается на некоторых устройствах PnP (к примеру, звуковых адаптерах и внутренних модемах), перестающих работать, хотя они функционировали в системе FreeBSD 3.x. Причины такого поведения объясняются в следующем сообщении электронной почты, опубликованном в &a.questions; Питером Уэммом (Peter Wemm) в ответ на вопрос о внутреннем модеме, который перестал распознаваться после обновления до FreeBSD 4.x (комментарии внутри [] были добавлены для пояснения контекста послания.
BIOS, поддерживающая PNP, предварительно отводит и оставляет ему [модему] место в адресном пространстве портов, так что [в 3.x] процедура обнаружения в старом стиле ISA находит его здесь. В 4.0 код для работы с ISA гораздо более PnP-центричен. [В 3.x] было возможно при распознавании ISA найти беспризорное устройство и затем по идентификатору PNP-устройства произвести поиск и получить ошибку из-за конфликта ресурсов. Поэтому для предотвращения повторной процедуры распознавания в нем сначала выключаются все управляемые адаптеры. Это также означает, что для поддерживаемого оборудования PnP нужно знать их PnP-идентификаторы. Имеются планы на обеспечение возможности найстройки этого со стороны пользователя.
Чтобы заставить устройство работать снова, требуется определить его PnP-идентификатор и добавить его в список, который используется процедурой распознавания ISA для идентификации устройств PnP. Этот идентификатор можно получить при помощи программы &man.pnpinfo.8;, найдя устройство в ее выдаче, вот, например, вывод команды &man.pnpinfo.8; в случае внутреннего модема: &prompt.root; pnpinfo 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) [лишние строки TAG исключены] 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 Информация, которая вам нужна, находится в строке Vendor ID в самом начале вывода команды. Шестнадцатиричное число в скобках (в этом примере 0x3024a341) является PnP-идентификатором, а строчка, идущая прямо перед ним (PMC2430) является уникальным ASCII-идентификатором. Эту информацию нужно добавить в файл /usr/src/sys/isa/sio.c. Сначала вы должны сделать резервную копию файла sio.c просто на тот случай, если что-то пойдет не так. Эта копия также может потребоваться для создания патча для посылки его вместе с вашим PR (вы же собираетесь послать PR, не правда ли?) отредактировав файл sio.c и поискав строчку static struct isa_pnp_id sio_ids[] = { после чего переместитесь ниже и найдите подходящее место, чтобы добавить строчку для вашего устройства. Записи имеют примерно такой вид, и они отсортированы по ASCII-строкам Vendor ID, которые должны быть помещены в поле комментария справа от строки кода вместе с полным описанием устройства (если оно поместится) или частью из Device Description вывода программы &man.pnpinfo.8;: {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 */ Добавьте шестнадцатиричный идентификатор Vendor ID вашего устройства в соответствующее место, сохраните файл, перестройте ядро и выполните перезагрузку. Ваше устройство должно теперь быть найдено в виде устройства sio, как это и было во FreeBSD 3.x
Почему при запуске некоторых программ, например, top или systat, выдается сообщение об ошибке nlist failed? Проблема в том, что приложение, которое вы пытаетесь запустить, ищет специфические ссылки в ядре, но по каким-либо причинам не может их найти; эта ошибка происходит от одной из следующих проблем: Ваше ядро и программы пользователей не соответствуют друг другу (например, вы построили ядро, но не выполнили команду installworld, или наоборот), и поэтому таблица имен отличается от того, что думают о ней пользовательские приложения. Если это ваш случай, просто завершите процесс обновления (обратитесь к файлу /usr/src/UPDATING для выяснения правильной последовательности действий). Для загрузки ядра вы не используете /boot/loader, а делаете это непосредственно из boot2 (обратитесь к справочно странице по &man.boot.8;). Хотя нет ничего плохого в обходе /boot/loader, обычно работу по доступности символьной информации ядра из пользовательских приложений он выполняет лучше. Почему подключение через ssh или telnet к моему компьютеру занимает так долго времени? Симптом: между моментом установления TCP-соединения и выдачей клиентским программным обеспечением запроса на ввод пароля (или, в случае использования &man.telnet.1;, выдачей приглашения на вход) проходит большой промежуток времени. Проблема: скорее всего, задержка вызвана программным обеспечением на стороне сервера, которое пытается преобразовать IP-адрес клиента в имя хоста. Многие серверы, включая Telnet и SSH, поставляемые с FreeBSD, делают это для того, чтобы, кроме всего прочего, записать имя хоста в файле хурнала для справки администратора. Лечение: Если проблема возникает вне зависимости от того, к какому серверу вы подключаетесь с вашего компьютера (клиента), то причина в клиенте; или же, если проблема возникает только при чьей-либо попытке подключиться к вашему компьютеру (серверу), то проблема с сервером. Если проблема с клиентом, то единственным методом ее решения является исправление DNS, чтобы сервер смог распознать вашу машину. Если это происходит в локальной сети, то предположьте, что это проблема с сервером и продолжайте чтение; обратно, если это происходит в гобальной сети Интернет, то в большинстве случаев вам нужно обратиться к вашему провайдеру и попросить исправить положение. Если проблема с сервером, и это происходит в локальной сети, то вам нужно настроить сервер для разрешения запросов на преобразование адреса в имя хоста в диапазоне ваших локальных адресов. Обратитесь к страницам Справочника по &man.hosts.5; и &man.named.8; для получения более подробной информации. Если это происходит в глобальной сети Интернет, то проблема может заключаться в некорректной работе ресолвера вашего сервера. Для проверки попробуйте найти другой хост--скажем, www.yahoo.com. Если это не работает, что проблема у вас. Что означает сообщение stray IRQ? Потерянные IRQ являются признаком странностей в работе аппаратных IRQ, в основном оборудования, которое удаляет свои запросы на прерывание посреди цикла подтверждения запроса на прерывание. Имеется три варианта работы с такими ситуациями: Примириться с сообщениями. В любом случае подавляются все сообщения, кроме каждых первых 5 на IRQ. Убрать предупреждающие сообщения, изменив параметр 5 на 0 в функции isa_strayintr(), так что все предупреждения будут подавлены. Избавиться от предупреждений, установив параллельный порт, использующий IRQ 7 и драйвер ppp для него (это есть на большинстве систем), и установив диск IDE или другое оборудование, использующее IRQ 15 и подходящий драйвер. Почему в dmesg регулярно выводятся сообщения file: table is full? Эта ошибка возникает, когда в системе превышается количество доступных файловых дескрипторов. Переполняется таблица файлов в памяти. Решение: Вручную измените ограничение ядра в переменной kern.maxfiles. &prompt.root; sysctl -w kern.maxfiles=n Измените значение n согласно потребностям вашей системы. Каждый открытый файл, сокет или fifo-файл использует один файловый дескриптор. Загруженному серверу может потребоваться десятки тысяч файловы дескрипторов (10,000+), в зависимости от типов и количества одновременно работающих сервисов. Количество файловых дескрипторов, устанавливаемых в ядре по умолчанию, и определямых как maxusers 32 задается параметром maxusers в конфигурационном файле ядра. Его увеличение пропорционально увеличивает kern.maxfiles. Вы можете опеределить, какое значение принимает kern.maxfiles в данный момент командой &prompt.root; sysctl kern.maxfiles kern.maxfiles: 1064 Почему часы на моем лэптопе показывают неправильное время ? В вашем лаптопе установлены двое или большее количество таймеров, а FreeBSD выбрала не тот. Запустите &man.dmesg.8; и посмотрите строки, содержащие слово Timecounter. В последней из них указан таймер, выбранный системой, и, скорее всего, это будет TSC. &prompt.root; dmesg | grep Timecounter Timecounter "i8254" frequency 1193182 Hz Timecounter "TSC" frequency 595573479 Hz Вы можете удостовериться в этом, проверив &man.sysctl.3;-переменную kern.timecounter.hardware. &prompt.root; sysctl kern.timecounter.hardware kern.timecounter.hardware: TSC BIOS может изменить частоту TSC—может, для изменения скорости работы процессора при работе от батареек или переводя в режим пониженного электропитания, но FreeBSD не отслеживает это и в результате часы начинают спешить или отставать. В этом примере имеется также и таймер i8254, и он может быть выбран записью его имени в &man.sysctl.3;-переменную kern.timecounter.hardware. &prompt.root; sysctl -w kern.timecounter.hardware=i8254 kern.timecounter.hardware: TSC -> i8254 Теперь ваш лаптоп будет аккуратнее следить за временем. Чтобы это изменение вступало в силу во время загруки системы, добавьте в файл /etc/sysctl.conf такую строчку. kern.timecounter.hardware=i8254 Сразу после экрана BIOS начальный загрузчик FreeBSD выводит сообщение Read error и останавливается. Начальный загрузчик FreeBSD неверно опеределяет параметры винчестера. Их можно установить вручную утилитой fdisk при создании или изменении параметров слайса FreeBSD. Правильные значения параметров диска можно посмотреть в BIOS. Обратите внимание на число дорожек, головок и секторов для этого диска. В подпрограмме fdisk утилиты &man.sysinstall.8; нажмите G для уствновки параметров диска (disk geometry). Появится диалоговое окно, запрашивающее количество дорожек, головок и секторов. Задайте значения, взятые из BIOS и разделяемые символами слэша. 5000 дорожек, 250 головок и 60 секторов будут введены как 5000/250/60 Нажмите Ввод для задания этих значений и нажмите W для того, чтобы записать новую таблицу разделов на диск. Другая операционная система уничтожила мой менеджер загрузки, как мне его восстановить? Запустите утилиту &man.sysinstall.8; и выберите пункт Configure, а затем Fdisk. Выберите диск, на котором ранее находился менеджер загрузки, при помощи клавиши пробел. Нажмите W для записи изменений на диск. Появится диалоговое окно для выбора устанавливаемого начального загрузчика. Выберите нужный, и он будет восстановлен. Что означает сообщение swap_pager: indefinite wait buffer:? Это значит, что процесс пытается сбросить страницу памяти на диск, и попытка сделать это оканчивается неудачн вот уже в течение более чем 20 секунд. Это может быть вызвано испорченными блоками на диске, кабелями, подключением или другим оборудованием ввода/вывода. Если диск сам по себе на самом деле испорчен, вы также увидите ошибки работы с диском в /var/log/messages и при работе команды dmesg. В противном случае проверьте кабели и подключения.
Коммерческие приложения Этот раздел выглядит довольно заброшенным, однако мы, конечно же, надеемся, что производители сделают добавления! :) Проект FreeBSD финансово не заинтересован в успехах никакой из компаний, которые здесь упоминаются, хотя приводит их список в интересах общества (в предположении, что коммерческий интерес к FreeBSD может положительно повлиять на дальнейшее развитие FreeBSD). Мы просим поставщиков коммерческого программного обеспечения присылать нам информацию о ваших продуктах для включения в этот список. Более полный список производителей находится на странице производителей. Где можно найти набор офисных программ для FreeBSD? The FreeBSD Mall предлагает версию ApplixWare 5 для FreeBSD от VistaSource. ApplixWare это большой многофункциональный коммерческий офисный пакет для FreeBSD, в который входит текстовый процессор, электронные таблицы, программа для работы с презентациями, пакет векторной графики и другие приложения. ApplixWare предлагается как часть дистрибутива FreeBSD Mall's BSD Desktop Edition. Версия для Linux пакета StarOffice прекрасно работает во FreeBSD. Проще всего установить Linux-версию этого пакета при помощи Коллекцию Портов FreeBSD. Также должны работать и будущие версии пакета с открытым кодом OpenOffice. Где можно купить Motif для FreeBSD? Open Group опубликовали исходные тексты Motif 2.1.30. Вы можете проинсталировать их с помощью пакета open-motif или скомпилировать их из портов. Воспользуйтесь секцией Порты Руководства для получения детальной информации о том, как это сделать. Лицензия Open Motif позволяет распространение только если библиотека используется на ОС с открытыми исходными текстами. В дополнении нужно сказать, что существуют также дистрибьюторы предлагающие комерческий вариант Motif. Эта библиотека не бесплатна, но ее лицензия позволяет вести разработку приложений с закрытыми исходными текстами. Обратитесь в фирму Apps2go, предлагающую самый дешёвый дистрибутив Motif 2.1.20 для FreeBSD (как для i386, так и для Alpha) в формате ELF. Существуют два дистрибутива, для разработчиков (development edition) и ещё более дешёвая времени выполнения (runtime edition). В эти дистрибутивы включены: OSF/Motif manager, xmbind, panner, wsm. Пакет разработчика с uil, mrm, xm, xmcxx, файлами include и Imake. Статические и динамические ELF-библиотеки (для использования с FreeBSD 3.0 и выше). Демонстрационные приложения. При оформлении заказа не забудьте указать, что вам нужна версия Motif именно для FreeBSD (не забудьте также указать архитектуру процессора)! Apps2go также продаёт версии для NetBSD и OpenBSD. В настоящий момент их можно получить только по FTP. Дополнительная информация WWW-сервер Apps2go или электронные адреса отделов продаж и поддержки. или телефоны (817) 431 8775 и +1 817 431-8775 Обратитесь в фирму Metro Link для получения дистрибутива Motif 2.1 для FreeBSD в форматах ELF или a.out. В этот дистрибутив включены: OSF/Motif manager, xmbind, panner, wsm. Пакет разработчика с uil, mrm, xm, xmcxx, файлами include и Imake. Статические и динамические библиотеки (укажите ELF для использования с FreeBSD 3.0 и выше; или a.out при использовании FreeBSD 2.2.8 и ранее). Демонстрационные приложения. Преформатированные страницы справочника. При заказе обязательно отметьте, что вам требуется версия Motif именно для FreeBSD! Metro Link также предлагает версии для Linux. Они доступны на CDROM или для скачивания по FTP. Обратитесь в фирму Xi Graphics за дистрибутивом Motif 2.0 для FreeBSD в формате a.out. В этот дистрибутив включены: OSF/Motif manager, xmbind, panner, wsm. Пакет разработчика с uil, mrm, xm, xmcxx, файлами include и Imake. Статические и динамические библиотеки (для использования с FreeBSD 2.2.8 и ранее). Демонстрационные приложения. Отформатированные страницы Справочника. При заказе обязательно укажите, что вам требуется версия Motif именно для FreeBSD! Xi Graphics также предлагает версии для BSDI и Linux. В настоящее время это набор из 4 дискет... в будущем это будет стандартный дистрибутив на компакт-диске, как их CDE. Где можно купить CDE для FreeBSD? Фирма Xi Graphics предлагала CDE для FreeBSD, но сейчас этот продукт в продаже отсутствует. KDE - это свободно распространяемый вариант десктопа для X11, который во многом похож на CDE. Вам может также приглянуться xfce. Как KDE, так и xfce могут быть найдены в коллекции портов. Существуют ли коммерческие высокопроизводительные X-серверы? Да, фирмы Xi Graphics и Metro Link предлагают свой продукт Accelerated-X для FreeBSD и других систем на базе Intel. Metro Link предлагает высокопроизводительный X-сервер, в котором предусмотрена упрощённая процедура конфигурирования с помощью набора утилит FreeBSD для работы с пэкэджами, поддержка нескольких видеоадаптеров одновременно и он поставляется только в бинарном виде, доступном по FTP. Нельзя не отметить, что Metro Link продаёт всё это по очень доступной цене в 39 долларов. Metro Link продаёт также Motif для FreeBSD в форматах ELF и a.out (смотрите выше). Дополнительная информация WWW-сервер Metro Link или адреса электронной почты отделов продаж и поддержки. или телефоны (954) 938-0283 и +1 954 938-0283 Xi Graphics предлагает высокопроизводительный X-сервер, который обеспечивает простую конфигурацию, поддержку нескольких видеоадаптеров и поставляется только в бинарной форме, в форме стандартного дистрибутива на дискетах для FreeBSD и Linux. Xi Graphics также предлагает высокопроизводительный X-сервер с поддержкой компьютеров класса laptop. Имеется бесплатная демонстрационная версия 5.0. Xi Graphics также предлагает Motif и CDE для FreeBSD (смотрите выше). Дополнительная информация Xi Graphics WWW page или Sales или Support по email. или телефон (800) 946 7433 или +1 303 298-7478. Существуют ли СУБД для FreeBSD? Да! Обратитесь к разделу Поставщики программного обеспечения на веб-сервере FreeBSD. Также посмотрите раздел Базы данных Коллекции портов. Можно ли запустить Oracle на FreeBSD? Да. Руководство по настройке Linux-Oracle на FreeBSD находится по следующим адресам: http://www.scc.nl/~marcel/howto-oracle.html http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd Прикладные программы Итак, где находятся все прикладные программы? Пожалуйста, загляните на страницу портов, содержащую информацию о программных продуктах, перенесённых во FreeBSD. На данный момент в этом списке находится более &os.numports; приложений и он ежедневно увеличивается, так что почаще туда заглядывайте или подпишитесь на список рассылки freebsd-announce, в котором публикуется информация о появлении новых приложений. Большинство портов предназначено для веток 2.2, 3.x и 4.x, и многие из них должны нормально работать на системах версий 2.1.x. При выходе нового релиза FreeBSD в него в каталог ports/ включается актуальная на момент выхода коллекция портов. Мы также поддерживаем концепцию пакаджа, являющегося не более чем упакованным дистрибутивом в бинарной форме с некоторыми встроенными возможностями по его настройке во время установки. Пакадж может быть легко проинсталлирован и деинсталлирован снова без углубления в детали того, какие файлы должны быть инсталлированы. Используйте меню установки пакаджей в /stand/sysinstall (в пункте меню post-configuration) или запускайте &man.pkg.add.1; с указанием конкретных файлов с пакаджами, которые вы хотите проинсталлировать. Файлы с пакаджами, как правило, идентифицируются по их суффиксу .tgz, а для тех, кто имеет дистрибутив системы на компакт-диске, предназначен каталог packages/All, содержащий все эти файлы. Они также могут быть получены по сети для разных версий FreeBSD со следующих серверов: для 2.2.8-RELEASE/2.2.8-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/ для 3.X-RELEASE/3.X-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/ для 4.X-RELEASE/4-STABLE ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/ для 5.X-CURRENT ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/ или с ближайшего к вам зеркального сервера. Имейте в виду, что не все порты могут быть доступны в виде пакаджей, так как постоянно идёт добавление новых. Неплохо время от времени проверять, какие пакаджи доступны на основном сервере ftp.FreeBSD.org. Где найти библиотеку libc.so.3.0? Похоже, что вы пытаетесь запустить пакадж, построенный в системе версии 2.2 и выше, на системе версии 2.1.x. Пожалуйста, прочтите предыдущий раздел и найдите подходящий для вашей системы порт или пакадж. Почему выдаются сообщения Error: can't find libc.so.4.0 Вы случайно скачали пакаджи, предназначенные для систем версий 4.X и 5.X и пытались установить их на вашей системе FreeBSD версий 2.X или 3.X. Пожалуйста, скачайте подходящие версии пакаджей. Почему ghostscript выдаёт массу сообщений на моём 386/486SX. У вас нет сопроцессора, верно? Вам нужно добавить в ядро другой эмулятор сопроцессора; это делается добавлением следующей строки в файл конфигурации ядра и последующей его перекомпиляцией. options GPL_MATH_EMULATE Если вы поступаете таким образом, вам нужно будет убрать опцию MATH_EMULATE. Почему при запуске приложения SCO/iBCS2, оно прерывается на socksys (только во FreeBSD 3.0 и более ранних версий)? Прежде всего вам нужно отредактировать файл /etc/sysconfig (или /etc/rc.conf, посмотрите справку по &man.rc.conf.5;), изменив в последнем разделе значение следующей переменной на YES: # Set to YES if you want ibcs2 (SCO) emulation loaded at startup ibcs2=NO После этого модуль ядра для поддержки ibcs2 будет запущен на этапе загрузки системы. Затем вам нужно изменить каталог /compat/ibcs2/dev так, чтобы он выглядел следующим образом: lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys -rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx Работа с socksys была значительно упрощена по сравнению с более ранними версиями. Socksys должен указывать на /dev/null (прочтите справочную информацию о &man.null.4;), чтобы обмануть open() & close(). Код, имеющийся в -CURRENT, возьмёт на себя всё остальное. Если вам нужен драйвер spx для подключения X по локальному сокету, определите переменную SPX_HACK при компиляции системы. Как настроить INN (Internet News) на моей машине? После установки пакаджа или порта для inn, для начала загляните на страничку Дэйва Бэрра (Dave Barr), посвящённую INN, где вы найдёте соответствующий FAQ. Какую версию Microsoft FrontPage я должен иметь? Используй порт, дурачок! Среди портов имеется Apache с поддержкой FrontPage. Поддерживает ли FreeBSD среду Java? Да. Посетите страницу http://www.FreeBSD.org/java/. Почему некоторый порт не компилируется на моей машине с 3.X-STABLE? Если вы используете FreeBSD версии, значительно отстающей от -CURRENT или -STABLE, вам нужен пакет обновления, который можно найти по адресу http://www.FreeBSD.org/ports/. Если вы отслеживаете все изменения, то, скорее всего, кто-то внёс изменения в порт, так что он работает в -CURRENT, но не работает в -STABLE. Так как предполагается, что коллекция портов должна работать как в ветке -CURRENT, так и в ветви -STABLE, то, пожалуйста, пошлите сообщение об этой ошибке с помощью команды &man.send-pr.1;. Где найти ld.so? a.out-приложения, такие, как Netscape Navigator, требуют наличия a.out-библиотек. По умолчанию версии FreeBSD, построенные на ELF-библиотеках, их не устанавливают. Вы получите сообщения об отсутствии /usr/libexec/ld.so, если это так для вашей системы. Эти библиотеки имеются в виде добавления в пакете compat22. Воспользуйтесь &man.sysinstall.8; для его установки. Вы можете также установить их из исходного кода FreeBSD: &prompt.root; cd /usr/src/lib/compat/compat22 &prompt.root; make install clean Если вы хотите установить последние библиотеки compat22 при выполнении make world, то отредактируйте /etc/make.conf, включив туда строку COMPAT22=YES. Старые библиотеки совместимости меняются редко, если вообще меняются, так что это, в общем-то, и не нужно. Также посмотрите файлы ERRATA для 3.1-RELEASE и 3.2-RELEASE. Я обновил исходные тексты, как теперь обновить установленные порты? С FreeBSD не поставляется инструмент обновления портов, но есть несколько программ, несколько облегчающих этот процесс. Вы можете также установить дополнительные инструменты для упрощения работы с портами. Команда &man.pkg.version.1; может генерировать скрипт, который обновит установленные порты до последних версий, присутствующих в дереве портов. &prompt.root; pkg_version > /tmp/myscript Получаемый скрипт необходимо отредактировать вручную перед его использованием. Текущие версии команды &man.pkg.version.1; заставляют делать это, помещая в начало скрипта команду &man.exit.1;. Вы должны сохранить выводимый результат работы скрипта, так как в нем отмечаются пакаджи, зависящие от тех, что были обновлены. Их также может потребоваться обновить. Обычный случай, когда требуется обновление, это случай изменения номеров версии динамической библиотеки, так что порты, использующие эту библиотеку, должны быть перекомпилированы для использования новой версии. Если у вас достаточный объем дискового пространства, вы можете использовать инструмент portupgrade для автоматизации всего этого. В portupgrade включены различные утилиты для упрощения работы с пакаджами. Он находится в sysutils/portupgrade. Так как он написан на языке Ruby, то вряд ли portupgrade может быть кандидатом на включение в поставку FreeBSD. Однако это вовсе не значит, что его нельзя использовать. Если ваша система находится в работе постоянно, для создания списка портов, которым может потребоваться обновление, каждую неделю, можно использовать систему &man.periodic.8, задав weekly_status_pkg_enable="YES" в файле /etc/periodic.conf. Почему возможности /bin/sh так малы? Почему бы во FreeBSD не использовать bash или какой-либо другой командный процессор? Потому что в стандарте POSIX сказано, что все командные процессоры должны вести себя так же, как shell. Более подробный ответ заключается в следующем: многим требуется, чтобы разрабатываемые скрипты для командного процессора были переносимы между многими системами. Именно поэтому в POSIX очень подробно описан командный процессор и набор утилит. Большинство скриптов пишутся на языке процессора Bourne shell, к тому же некоторые важные программные вызовы (&man.make.1;, &man.system.3;, &man.popen.3; и их аналоги на языках скриптов высокого уровня, таких как Perl или Tcl) предполагают для интерпретации команд использование именно Bourne shell. Так как Bourne shell используется столь широко и часто, то очень важно, чтобы он стартовал очень быстро, его поведение было строго регламентировано и при этом потребности в оперативной памяти были малы. В имеющейся реализации мы приложили максимум усилий для воплощения в жизнь всех этих требований одновременно. Для того, чтобы сохранить /bin/sh небольшим по размеру, мы не включили многие из обычных возможностей, которые имеются в других командных процессорах. Однако в Коллекцию Портов включены командные процессоры, обладающие гораздо большими возможностями, такие, как bash, scsh, tcsh и zsh. (Вы можете сами сравнить использование памяти всеми этими оболочками, посмотрев в колонки VSZ и RSS вывода команды ps -u). Конфигурирование ядра Я хочу изменить настройки ядра. Это сложно? Вовсе нет! Обратитесь к соответствующему разделу Руководства, который посвящён этому вопросу. Мы рекомендуется сохранить копию вашего нового файла ядра /kernel в файл kernel.ГГММДД после того, как вы получите нормально работающее ядро. Также сделайте резервную копию нового каталога /modules в каталог /modules.ГГММДД. В таком случае, если вы испортите что-либо в вашем конфигурационном файле, то сможете загрузить резервное ядро, вместо того, чтобы начинать всё снова с kernel.GENERIC. Это, в частности, имеет смысл, если вы производите загрузку системы с контроллера, который не поддерживается в стандартном ядре GENERIC. Я не могу скомпилировать ядро. Отсутствует _hw_float.Почему? Позвольте мне угадать. Вы, наверное, удалили npx0 (посмотрите справку по &man.npx.4;) из вашего файла конфигурации ядра, потому что у вас нет сопроцессора, да? А вот и неправильно! :-) Строка npx0 ОБЯЗАТЕЛЬНА. Даже если у вас нет математического сопроцессора, вы должны включить поддержку устройства npx0. Почему моё ядро такое большое (больше 10МБ)? Скорее всего, вы компилировали ядро в отладочном режиме. Ядра, построенные в этом режиме, содержат много символьной информации, которая используется для отладки и сильно увеличивает размер ядра. Заметьте, что, если вы работаете с FreeBSD версии 3.0 и старше, то уменьшения производительности при использовании отладочного ядра нет или оно незначительно, однако отладочное ядро полезно иметь под рукой на случай аварийного завершения работы системы. Однако, если вы испытываете нехватку дискового пространства или просто не хотите использовать отладочное ядро, проверьте, что имеют место следующие две вещи: В конфигурационном файле вашего ядра нет строчки, имеющей такой вид: makeoptions DEBUG=-g Вы не запускали утилиту &man.config.8; с опцией . Обе из вышеперечисленных ситуаций приведут к построению ядра в отладочном режиме. Если же вы точно следуете указанным шагам, то сможете построить обычное ядро и заметите значительное уменьшение его размера; большинство ядер имеют размер от 1.5МБ до 2МБ. Почему появляеются конфликты прерываний при включении поддержки многопортовыx коммуникационных адаптеров. Когда я компилирую ядро с поддержкой многопортовых коммуникационных адаптеров, сообщается, что только первый порт будет тестироваться, а все остальные пропускаются из-за конфликтов прерываний. Как это исправить? Проблема состоит в том, что во FreeBSD встроен код, предохраняющий ядро от аппаратных и программных конфликтов. Вам нужно убрать указания IRQ на всех портах, кроме одного. Например: # # Высокоскоростной многопортовый коммуникационный адаптер - 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 Почему мне не удаётся откомпилировать ни один вариант ядра, даже GENERIC? Есть несколько причин, приводящих к возникновению этой проблемы. Вот они, в случайном порядке: Вы не используете новые цели make buildkernel и make installkernel, и ваше дерево исходных текстов отличается от того, которое использовалось для построения работающей в данный момент системы (например, вы выполняете построение 4.3-RELEASE на системе 4.0-RELEASE). Если вы пытаетесь выполнить обновление, то, пожалуйста, прочитайте файл /usr/src/UPDATING, обратив особое внимание на раздел COMMON ITEMS в его конце. Вы используете новые цели make buildkernel и make installkernel, но выполнение цели make buildworld не было завершено. Полное и корректное выполнение цели make buildkernel зависит от файлов, генерирующихся при выполнении цели make buildworld. Даже если вы пытаетесь построить FreeBSD-STABLE, возможно, что вы скачали дерево исходных текстов в момент, когда оно модифицировалось или было неработоспособно по другим причинам; абсолютно гарантируется построение только релизов, хотя в большинстве случаев FreeBSD-STABLE строится без проблем. Если вы еще этого не сделали, попробуйте сгрузить дерево исходных текстов повторно и посмотреть, разрешилась ли проблема. Попробуйте использовать другой сервер в случае, если есть проблемы с тем, который вы используете сейчас. Системное администрирование Где расположены файлы конфигурации системы? Для FreeBSD версий от 2.0.5R до 2.2.1R основным конфигурационным файлом является /etc/sysconfig. Все параметры указываются здесь, а остальные конфигурационные файлы, такие, как /etc/rc (посмотрите справку по &man.rc.8;) и /etc/netstart просто его используют. Посмотрите файл /etc/sysconfig и измените значения переменных на соответствующие вашей системе. В файле содержатся комментарии, описывающие смысл этих переменных и способ их задания. В системах выше 2.2.1 и в 3.0 файл /etc/sysconfig сменил название на говорящее само за себя &man.rc.conf.5;, синтаксис описания переменных был несколько улучшен. /etc/netstart тоже был переименован в /etc/rc.network, так что все конфигурационные файлы теперь можно скопировать одной командой cp /usr/src/etc/rc* /etc. А в системах версий 3.1 и выше /etc/rc.conf был перемещён в /etc/defaults/rc.conf. Не редактируйте этот файл! Вместо этого, если в файле /etc/defaults/rc.conf имеется параметр, который вы хотите изменить, то вы должны скопировать строчку с ним в файл /etc/rc.conf и поменять его значение именно здесь. Например, если вы хотите запустить named, сервер DNS, включенный в поставку FreeBSD начиная с FreeBSD 3.1, всё, что вам нужно сделать, это: &prompt.root; echo named_enable="YES" >> /etc/rc.conf Чтобы запустить местные сервисы во FreeBSD 3.1 и выше, поместите скрипты в каталог /usr/local/etc/rc.d. У этих скриптов должен быть выставлен бит выполнимости, и их имена должны оканчиваться на .sh. Во FreeBSD 3.0 и ранее, вы должны отредактировать файл /etc/rc.local. Файл /etc/rc.serial предназначен для инициализации коммуникационных адаптеров (например, установки характеристик работы последовательных портов и тому подобное). Файл /etc/rc.i386 предназначен для настройки специфичных для архитектуры Intel параметров, таких, как эмуляция iBCS2 или характеристик системной консоли ПК. Как проще всего добавить пользователя? Используйте команду &man.adduser.8;. Для выполнения более сложных операций обратитесь к команде &man.pw.8;. Чтобы удалить пользователя, используйте команду &man.rmuser.8;. И, снова повторимся, команда &man.pw.8; тоже будет работать. Как добавить в систему новый диск? Обратитесь к Руководству по форматированию дисков на сервере www.FreeBSD.org. Как использовать устройство для чтения сменных дисков? Каким бы ни было это устройство, типа ZIP, EZ (или даже обычным дисководом, если вы хотите его использовать) или каким-то другим, как только оно будет установлено и распознано системой, и вы вставите в него картридж/дискету/что-там-ещё, всё будет выглядеть примерно одинаково. (этот раздел опирается на FAQ по устройствам ZIP Марка Мэйо (Mark Mayo)) Если это устройство ZIP или обычный дисковод, и у вас уже есть файловая система DOS на дискетах, то вы можете использовать команду типа: &prompt.root; mount -t msdos /dev/fd0c /floppy для обычных дискет, или &prompt.root; mount -t msdos /dev/da2s4 /zip для дискет ZIP со стандартной конфигурацией. Для других дисков посмотрите их параметры с помощью команды &man.fdisk.8; или &man.sysinstall.8;. Остальные примеры даны для привода ZIP на da2, третьем диске SCSI. Если это дискета или сменный диск, который будет использоваться для обмена информацией с другими людьми, хорошей идеей будет помещение туда файловой системы BSD. Вы получите поддержку длинных имён файлов, увеличение производительности по крайней мере в два раза и гораздо большую надёжность. Первым делом вам снова будет нужно выполнить разбиение диска на разделы/файловые системы. Вы можете воспользоваться утилитой &man.fdisk.8; либо &man.sysinstall.8;, а в случае небольшого диска, на котором не нужно располагать несколько операционных систем, просто сотрите таблицу разделов (слайсов) FAT и используйте разбиение на разделы BSD. &prompt.root; dd if=/dev/zero of=/dev/rda2 count=2 &prompt.root; disklabel -Brw da2 auto Вы можете использовать &man.disklabel.8; или &man.sysinstall.8; для создания нескольких разделов BSD. Вам наверняка придётся это сделать, если вы станете добавлять место для раздела подкачки на винчестере, хотя это не имеет отношения к устройствам типа ZIP. В итоге вы должны создать новую файловую систему (в этом примере она занимает весь наш диск ZIP): &prompt.root; newfs /dev/rda2c и смонтировать её: &prompt.root; mount /dev/da2c /zip Хорошо ещё добавить строку типа следующей в файл /etc/fstab (прочтите справку по &man.fstab.5;), чтобы в будущем можно было просто давать команду mount /zip: /dev/da2c /zip ffs rw,noauto 0 0 Почему после редактирования моего файла crontab я получаю сообщения вида root: not found? Обычно это случается при редактировании системного crontab-файла (/etc/crontab) и последующего использования утилиты &man.crontab.1; для его установки: &prompt.root; crontab /etc/crontab Это неправильно. Системный crontab-файл имеет формат, отличный от пользовательских crontab-файлов, которые обновляет утилита &man.crontab.1; (страница Справочника по &man.crontab.5; описывает отличия более подробно). Если это именно то, что вы сделали, то дополнительный crontab-файл является просто копией файла /etc/crontab в неправильном формате. Удалите его такой командой: &prompt.root; crontab -r В следующий раз при редактировании файла /etc/crontab, вам не нужно делать ничего для оповещения утилиты &man.cron.8; о сделанных изменениях, так как она распознает их автоматически. Если вы хотите запускать что-то один раз в день, неделю или месяц, то, наверное, лучше обновить скрипты /usr/local/etc/periodic и позволить команде &man.periodic.8;, запускаемой системной cron-утилитой, планировать их выполнение вместе с другими периодическими системными задачами. Реальная причина ошибки заключается в том, что системный crontab-файл имеет дополнительное поле, указывающее, какой пользователь запускает команду. В системном crontab-файле, поставляемом с FreeBSD и используемом по умолчанию, это пользователь root для всех строк. Если этот crontab-файл используется в качестве crontab-файла пользователя root (что не то же самое, что системный crontab-файл), &man.cron.8; полагает, что слово root является первым в команде на выполнение, но такой команды не существует. Команда su выдает, что you are not in the correct group to su root, когда я пытаюсь сменить привилегии на root. Это особенность работы системы защиты. Для того, чтобы изменить свои привелегии на пользователя root (или любого другого пользователя, имеющего привилегии администратора), вы должны быть членом группы wheel. Если бы этого не было, любой, имеющий доступ к системе и узнавший пароль пользователя root, смог получить в системе администраторские полномочия. С такой же защитой этого не получится; &man.su.1; будет препятствовать попыткам даже ввести пароль, если некто не являетесь членом группы wheel. Чтобы разрешить кому-либо менять привилегии на root, просто включите его в группу wheel. Я сделал ошибку в файле rc.conf или в каком-то другом файле начальной загрузки, и теперь не могу его отредактировать из-за того, что файловая система находится в режиме только для чтения. Что мне делать? При получении приглашения на ввод полного пути до командного процессора, просто нажмите ENTER, а затем выполните команду mount / для повторного монтирования корневой файловой системы в режиме чтения/записи. Вам может также потребоваться выполнить команду mount -a -t ufs для монтирования файловой системы, в которой расположен ваш любимый редактор. Если редактор расположен на сетевой файловой системе, то вам потребуется выполнить сетевые настройки вручную до монтирования сетевой файловой системы, либо воспользоваться редактором, находящимся в локальной файловой системе, таким, как &man.ed.1;. Если вы собираетесь использовать полноэкранный редактор, такой, как &man.vi.1; или &man.emacs.1;, то вам нужно будет выполнить команду export TERM=cons25, чтобы такие редакторы смогли корректно взять данные из базы данных &man.termcap.5;. После выполнения этих шагов вы сможете отредактировать файл /etc/rc.conf так, как вы это обычно делаете для исправления ошибки. Сообщение об ошибке, выводимое сразу же после сообщений при загрузке ядра, должно указать вам на номер строки в файле, которая содержит ошибку. Как смонтировать вторичный раздел DOS? Вторичные разделы DOS находятся после ВСЕХ первичных разделов. Например, если раздел E является вторым разделом DOS на втором диске SCSI, вам нужно создать специальные файлы для пятого слайса в каталоге /dev, затем смонтировать /dev/da1s5: &prompt.root; cd /dev &prompt.root; sh MAKEDEV da1s5 &prompt.root; mount -t msdos /dev/da1s5 /dos/e Можно ли смонтировать другие файловые системы? Digital UNIX Компакт-диски с файловой системой UFS могут быть замонтированы без всяких проблем. Монтирование файловых систем Digital UNIX или других систем, поддерживающих UFS, может быть более сложным, в зависимости от особенностей разбиения диска конкретной операционной системой. Linux Начиная с версии 2.2 FreeBSD имеет поддержку разделов ext2fs. За дополнительной информацией обратитесь к странице справочника &man.mount.ext2fs.8;. NT Существует драйвер, позволяющий под FreeBSD получить доступ к NTFS в режиме "только для чтения". Посмотрите учебник от Марка Овенса (Mark Ovens) по адресу http://ukug.uk.FreeBSD.org/~mark/ntfs_install.html. Нас интересует любая дополнительная информация по этому вопросу. Как создать образ CD с данными? Если вы хотите сделать точную копию CD (чтобы, например, потом скопировать его на пишущем CD), воспользуйтесь командой &man.dd.1;. В приводимом здесь примере предполагается, что у вас имеется устройство IDE CDROM, которое доступно как acd0. Если у вас SCSI CD или другой тип привода, вам нужно подставить правильное имя устройства. К имени устройства нужно дописать символ c, указывающий на целый раздел, а в случае с CDROM, на диск полностью. &prompt.root; dd if=/dev/acd0c of=file.iso bs=2048 Полученный файл будет стандартным файлом ISO, который можно использовать с программами cdrecord, burncd и другими утилитами, поддерживающими этот стандартный формат CD с данными. Этот метод не работает с аудио-CD. Для получения более полной информации о работе с CDROM, обратитесь к разделу о создании CD главы о носителях в Руководстве. Как можно использовать загрузчик NT для запуска FreeBSD? Эта процедура выглядит по разному для версий FreeBSD 2.2.x и 3.x (с трёхступенчатым процессом загрузки системы). Идея заключается в копировании первого сектора корневого раздела FreeBSD в файл, находящийся в разделе DOS/NT. Предположим, что вы назвали этот файл c:\bootsect.bsd (по аналогии с c:\bootsect.dos), после чего можете отредактировать файл c:\boot.ini, чтобы он выглядел примерно так: [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" Для систем 2.2.x предполагается, что DOS, NT, FreeBSD или другая операционная система были установлены в их соответствующие разделы fdisk на одном и том же диске. Этот пример тестировался с системой, в которой DOS и NT находились на первом разделе fdisk, а FreeBSD на втором. Кроме того, FreeBSD была настроена на загрузку с её раздела, а не из MBR. Смонтируйте дискету в формате DOS (если вы используете NTFS) или раздел FAT, скажем, в каталог /mnt. &prompt.root; dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1 Перезапустите DOS или NT. Пользователи NTFS должны скопировать файл bootsect.bsd и/или bootsect.lnx с дискеты на диск C:\. Измените атрибуты (права) на файл boot.ini следующим образом: C:\> attrib -s -r c:\boot.ini Отредактируйте этот файл, добавив соответствующие строки из примерного boot.ini выше, и восстановите атрибуты: C:\> attrib +s +r c:\boot.ini Если FreeBSD загружается из MBR, восстановите его командой DOS fdisk после того, как переконфигурировали их для загрузки с их родных разделов. Для систем FreeBSD 3.x эта процедура выглядит несколько проще. Если FreeBSD установлена на тот же самый диск, что и загрузочный раздел NT, просто скопируйте /boot/boot1 в C:\BOOTSECT.BSD. Однако, если FreeBSD установлена на другой диск, то /boot/boot1 работать не будет, нужно копировать /boot/boot0. НЕ КОПИРУЙТЕ ПРОСТО /boot/boot0 ВМЕСТО /boot/boot1, ЭТИМ ВЫ ПЕРЕЗАПИШЕТЕ ТАБЛИЦУ РАЗДЕЛОВ ВИНЧЕСТЕРА И ВАШ КОМПЬЮТЕР ПЕРЕСТАНЕТ ЗАГРУЖАТЬСЯ! /boot/boot0 нужно устанавливать с помощью sysinstall, выбрав менеджер загрузки FreeBSD в диалоговом окне при выборе менеджера загрузки. Это потому что в /boot/boot0 область таблицы разделов заполнена символами NULL, а sysinstall копирует сюда таблицу разделов перед тем, как скопировать /boot/boot0 в область MBR. При запуске менеджер загрузки FreeBSD задаёт ОС, которая загружалась последний раз, устанавливая для этой операционной системы признак активизации в таблице разделов, а затем записывает 512 байт самого себя обратно в MBR, так что если вы просто скопируете /boot/boot0 в C:\BOOTSECT.BSD, то в MBR будет записана пустая таблица разделов с флагом активности в некотором месте. Как загрузить FreeBSD и Linux с помощью LILO? Если у вас установлены FreeBSD и Linux на одном и том же диске, следуйте указаниям по установке LILO о загрузке не-Linux операционных систем. Они сводятся к следующему: Загрузите Linux, и добавьте следующие строки в файл /etc/lilo.conf: other=/dev/hda2 table=/dev/hda label=FreeBSD (здесь мы предполагаем, что слайс с FreeBSD известен Linux как /dev/hda2; измените эту строку в соответствии с вашей конфигурацией). Затем достаточно будет запустить lilo, войдя в систему как администратор. Если FreeBSD располагается на другом диске, вам нужно добавить строчку loader=/boot/chain.b в конфигурационный файл LILO. Например: other=/dev/dab4 table=/dev/dab loader=/boot/chain.b label=FreeBSD В некоторых случаях для успешной загрузки со второго диска вам может потребоваться указать номер диска BIOS загрузчику FreeBSD. Например, если диск SCSI с FreeBSD определяется BIOS как диск 1, в приглашении загрузчика FreeBSD нужно указать: Boot: 1:da(0,a)/kernel Во FreeBSD 2.2.5 и выше вы можете настроить &man.boot.8; на автоматическое принятие таких параметров во время загрузки. В документе Linux+FreeBSD mini-HOWTO содержится много информации, касающейся взаимодействия FreeBSD и Linux. Как загрузить FreeBSD и Linux с помощью BootEasy? Установите LILO в начало загрузочного раздела Linux, а не в Master Boot Record. После этого можно запустить LILO из BootEasy. Это рекомендуется сделать в любом случае при одновременном использовании Windows-95 и Linux, чтобы упростить восстановление работоспособности Linux после переинсталляции Windows95 (которая является Недоброжелательной Операционной Системой и не терпит присутствия других операционных систем в Master Boot Record). Не угрожает ли режим dangerously dedicated моему здоровью? В процессе установки вы можете выбрать два различных метода разбиения вашего диска. По умолчанию это делается в режиме совместимости с другими операционными системами на этой же машине с использованием записей в таблице разделов fdisk (то, что называется слайсом во FreeBSD), со слайсом (разделом), выделенным FreeBSD. Опционально, вы можете выбрать установку менеджера загрузки для переключения между операционными системами. Либо вы можете выделить диск полностью под FreeBSD, не заботясь о совместимости с другими операционными системами. Почему же этот режим называется dangerous? Дело в том, что диск в этом режиме не будет содержать того, что обычные утилиты для ПК распознают как таблицу разделов. В зависимости от того, насколько хорошо они написаны, они могут сообщить вам об этом, как только обнаружат такой диск, или, что гораздо хуже, могут запортить загрузчик BSD, даже не спрашивая и не сообщая об этом. К тому же известно, что разметка диска в режиме dangerously dedicated вводит в заблуждение BIOS многих производителей, включая AWARD (которые используются в компьютерах HP Netserver, Micronics и многих других) и Symbios/NCR (производителя популярных SCSI-контроллеров серии 53C8xx). И это не полный список, есть ещё другие производители. Симптомами подобных проблем является сообщение read error, выводимое загрузчиком FreeBSD, когда он не может найти сам себя, а также зависания системы при загрузке. Тогда зачем вообще нужен этот режим? Он экономит всего лишь несколько килобайт дискового пространства и может вызвать серьёзные проблемы при новой инсталляции. Причиной появления этого режима является желание избежать появления одной из самых распространённых проблем, с которой сталкиваются новички - соответствие параметров BIOS и реальных параметров диска. Параметры диска являются устаревшей концепцией, но она лежит в основе работы BIOS с диском. Когда программа установки FreeBSD создаёт слайсы, она записывает их расположение в соответствии с тем, как с ними будет работать BIOS. Если это делается неправильно, вы не сможете выполнить загрузку системы. Режим dangerously dedicated пытается обойти это, упрощая решение данной проблемы. Иногда он делает это правильно. Однако это значит, что его нужно использовать только как последнюю альтернативу - есть способы получше, решающие проблему в 99 случаях из 100. Итак, как избежать использования режима DD во время установки? Сначала запишите параметры диска, которые сообщает BIOS. Вы можете выяснить это, заставив ядро вывести эти параметры при загрузке, указав в приглашении boot:, или используя boot -v в загрузчике. Перед тем, как запустится программа установки, ядро выведет параметры, используемые BIOS. Не волнуйтесь - подождите запуска программы установки, а затем воспользуйтесь скроллингом, чтобы посмотреть значения этих параметров. Как правило, BIOS нумерует диски в том же порядке, что и FreeBSD, сначала IDE, затем SCSI. Когда вы разбиваете диск на слайсы, проверьте, что параметры диска, выводимые в окне программы FDISK, корректны (то есть они соответствуют параметрам BIOS); если это не так, воспользуйтесь командой g, чтобы их исправить. Вы можете это сделать, если на диске нет абсолютно ничего или если этот диск был перенесён с другой системы. Заметьте, что это касается только загрузочного диска; FreeBSD прекрасно разберётся с остальными дисками, которые могут у вас быть. Как только вы добились соответствия параметров диска в BIOS и FreeBSD, скорее всего, проблем у вас больше не будет, и использовать режим DD не потребуется. Если, однако, страшной сообщение read error продолжает появляться при загрузке, самое время перекреститься и попробовать этот режим - терять вам больше нечего. Чтобы вернуть диск из режима dangerously dedicated к нормальному режиму использования, есть два способа. Первый заключается в том, что вы записываете достаточное количество байтов NULL поверх MBR, чтобы любой инсталлятор думал, что это чистый диск. Это можно сделать, например, командой &prompt.root; dd if=/dev/zero of=/dev/rda0 count=15 Другой способ - недокументированной командой DOS C:\> fdisk /mbr проинсталлировать новую MBR, удалив загрузчик BSD. Команды du и df показывают разный объем доступного дискового пространства. Что происходит? Вам нужно разобраться, что на самом деле делают команды du и df. du проходит по дереву каталогов, замеряя, насколько большой объем занимает каждый файл, и выдает общий объем. df просто запрашивает файловую систему об оставшемся объеме. Это выглядит как одно и то же, однако файл без записи в каталоге затронет df, но не повлияет на du. Когда программа использует файл, а вы его удалили, файл на самом деле не удаляется из файловой системы, пока программа не прекратит его использовать. Однако файл тут же удаляется из списка каталога. Вы можете легко это видеть при помощи такой программы, как more. Предположим, что у вас имеется файл, настолько большой, что его присутствие влияет на вывод команд du и df. (Так как в настоящее время диски могут быть настолько большими, это может быть очень большой файл!) Если вы удалите этот файл в процессе работы more над ним, на команду more это не повлияет и она не сообщит, что не может просматривать файл. Запись о файле просто удалена из каталога, так что другие программы или пользователи не смогут к нему обратиться. du покажет, что файл исчез — она просматривает дерево каталогов, а файла там не будет. df показывает, что он все еще здесь, так как файловая система знает, что more все еще использует это пространство. Как только вы закончите работу с more, команды du и df придут в соответствие. Заметьте, что подсистема мягких обновлений (softupdates) может задерживать освобождение дискового пространства; вам может потребоваться подождать до 30 секунд, прежде, чем изменения будут заметны! Такая ситуация часта на веб-серверах. Многие устанавливают веб-сервер на FreeBSD и забывают обновлять файлы протоколов. Журнал доступа заполняет /var. Новый администратор удаляет файл, но система все еще сообщает о том, что раздел заполнен. Остановка и перезапуск программы веб-сервера освободит файл, позволяя системе освободить дисковое пространство. Для предотвращения этого настройте &man.newsyslog.8;. На каких разделах можно без опаски использовать систему softupdates? Я слышал, что мягкие обновления на / могут приводить к проблемам. Краткий ответ: обычно вы можете использовать мягкие обновления без опаски на всех разделах. Подробный ответ: Были несколько аргументов против использования мягких обновлений на корневом разделе. Мягкие обновления имеют две характеристики, которые этому способствуют. Во-первых, раздел с мягкими обновлениями имеет мало шансов потери данных по время аварийного остановва системы. (Раздел не будет попорчен; просто будут потеряны данные.) также мягкие обновления могут приводить к временной нехватке пространства. При использовании мягких обновлений ядро может задерживать до тридцати секунд реальную запись изменений на физический диск. Если вы удаляете большой файл, он остается на диске, пока ядро не выполнит удаления на самом деле. Это может привести к очень простой проблеме. Предположим, что вы удалили один большой файл и тут же создали другой большой файл. Первый большой файл еще не удален реально с физического диска, так что на диске может не оказаться достаточного пространства для второго большого файла. Вы получите ошибку, говорящую о том, что на разделе нет достаточного пространства, хотя вы точно знаете, что только что освободили его большой объем! Если вы попробуете еще раз выполнить операцию секундами позже, создание файла сработает так, как это и ожидалось. Это не раз заставляло пользователей почесать голову и дважды проверить свое психическое здоровье, файловую систему FreeBSD и оба этих объекта. Если система может аварийно остановиться после того, как ядро примет набор данных для записи на диск, но перед тем, как данные реально запишутся, то данные могут потеряться или оказаться испорченными. Такой риск весьма мал, но в общем-то, управляем. Использование кэширование записи на IDE очень сильно увеличивает этот риск; настоятельно рекомендуется выключить кэширование записи для IDE при использовании мягких обновлений. Эти проблемы влияют на все разделы, использующие мягкие обновления. Итак, что это означает для корневого раздела? Жизненно важная информация на корневом разделе меняется очень редко. Файлы, такие, как /kernel и содержимое /etc меняется только при обслуживании системы, или когда пользователи меняют свои пароли. Если в системе произойдет сбой в период тридцатисекундного окна после выполнения такого изменения, возможно, что данные окажутся потерянными. Этот риск незначителен для большинства применений, но вы должны иметь в виду, что он есть. Если ваша система не может принять такой риск, не используйте мягкие обновления с корневой файловой системой! / традиционно является одним из самых маленьких разделов. По умолчанию FreeBSD размещает каталог /tmp в /. Если у вас забит /tmp, вы можете встретиться с возникающими время от времени проблемами с исковым пространством. Создание символической ссылки /tmp, указывающей на /var/tmp, решит эту проблему. Как добавить дополнительную виртуальную память? Наилучший способ - увеличить размер раздела подкачки, может быть, добавив для этого ещё один диск. Общим правилом является выбор размера виртуальной памяти, в два раза превышающий объём физической памяти. Однако, если у вас очень мало физической памяти, этот объём гораздо больше. Хорошей практикой является задание достаточного объёма виртуальной памяти в ожидании добавления физической памяти, чтобы потом не испытывать трудностей. Перенос виртуальной памяти на отдельный диск увеличивает быстродействие системы по сравнению с добавлением виртуальной памяти на том же диске. Например, компиляция исходных текстов происходит быстрее, если они находятся не на том же диске, что и раздел подкачки. Особенно это заметно для дисков SCSI. Если у вас имеется несколько дисков, размещение раздела подкачки на каждом из них, даже на рабочем диске, обычно бывает полезно. Как правило, каждый быстрый диск в вашей системе должен иметь раздел подкачки. FreeBSD поддерживает по умолчанию до 4 устройств подкачки с чередованием. При задании нескольких разделов подкачки вам захочется сделать их одинакового размера, однако иногда первичный раздел подкачки делается несколько больше для того, чтобы он мог поместить аварийный образ ядра. Размер вашего первичного раздела подкачки должен по крайней мере быть равным объёму физической памяти, чтобы поместить аварийный образ ядра. Диски IDE не позволяют реализовать одновременный доступ к обоим дискам по одному каналу (FreeBSD не поддерживает режим 4, так что весь ввод/вывод для дисков IDE программируется). Однако всё равно рекомендуем перенести раздел подкачки на отдельный диск: они достаточно дешёвые, и экономить тут не на чем. Использование NFS для размещения раздела подкачки рекомендуется только в случае, если у вас нет локального диска. Подкачка поверх NFS медленна и неэффективна в релизах FreeBSD до 4.x, хотя достаточно быстра в релизах 4.0 и выше. Кроме того, её скорость будет ограничена реальной пропускной способностью сети и это даст дополнительную нагрузку на NFS-сервер. Вот пример vn-файла подкачки размером 64Мб (/usr/swap0, хотя, конечно, вы можете выбрать любое другое имя. Удостоверьтесь, что ядро откомпилировано со строкой pseudo-device vn 1 #Vnode driver (turns a file into a device) в конфигурационном файле. Ядро GENERIC её содержит. создайте vn-устройство &prompt.root; cd /dev &prompt.root; sh MAKEDEV vn0 создайте файл подкачки (/usr/swap0) &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 установите корректные права на файл (/usr/swap0) &prompt.root; chmod 0600 /usr/swap0 включите использование файла подкачки в /etc/rc.conf swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. перезагрузите машину Чтобы включить использование файла подкачки немедленно, наберите &prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swap У меня проблемы с установкой принтера. Обратитесь к соответствующему разделу Руководства, посвящённому печати. В нём описаны решения большинства ваших проблем. Некоторые принтеры для выполнения любых операций по печати требуют наличия на хосте драйвера. Такие так называемые WinPrinters изначально во FreeBSD не поддерживаются. Если ваш принтер не работает в DOS или Windows NT 4.0, то, скорее всего, это WinPrinter. Единственное, что вам остаётся сделвть в надежде на то, что вы заставите его работать, это проверить, поддерживает ли его порт ports/print/pnm2ppa. Вот что написано в описании к этому пакаджу:
Эта программа создаёт выходной поток при помощи протокола PPA (printer performance architecture). Этот протокол используется в некоторых принтерах "только для Windows" от HP, включая модели линеек HP Deskjet 820C, HP DeskJet 720 и HP DeskJet 1000. [...] WWW: http://pnm2ppa.sourceforge.net/
Раскладка клавиатуры неверна. Программа kbdcontrol имеет параметр, задающий файл раскладки. Файлы раскладок находятся в каталоге /usr/share/syscons/keymaps. Выберите соответствующий вашей системе и загрузите его. &prompt.root; kbdcontrol -l uk.iso Программа &man.kbdcontrol.1; предполагает использование каталога /usr/share/syscons/keymaps и расширения .kbd. Это может быть настроено в файле /etc/sysconfig (или &man.rc.conf.5;). Обратитесь к соответствующим комментариям в этом файле. В системах 2.0.5R и выше, всё, относящееся к знакогенератору, раскладке клавиатуры, находится в каталоге /usr/share/examples/syscons. На данный момент поддерживаются следующие раскладки: Belgian ISO-8859-1 Brazilian 275 keyboard Codepage 850 Brazilian 275 keyboard ISO-8859-1 Danish Codepage 865 Danish ISO-8859-1 French ISO-8859-1 German Codepage 850 German ISO-8859-1 Italian ISO-8859-1 Japanese 106 Japanese 106x Latin American Norwegian ISO-8859-1 Polish ISO-8859-2 (programmer's) Russian Codepage 866 (alternative) Russian koi8-r (shift) Russian koi8-r Spanish ISO-8859-1 Swedish Codepage 850 Swedish ISO-8859-1 Swiss-German ISO-8859-1 United Kingdom Codepage 850 United Kingdom ISO-8859-1 United States of America ISO-8859-1 United States of America dvorak United States of America dvorakx У меня при загрузке появляются сообщения вида unknown: <PNP0303> can't assign resources Ниже следует часть письма, опубликованного в списке рассылки freebsd-current.
&a.wollman;, 24 апреля 2001 Сообщения can't assign resources говорят о том, что устройства является устаревшими ISA-устройствами, для которых в ядре присутствует драйвер, не поддерживающий PnP. К таким устройствам относятся контроллеры коавиатуры, микросхема контроллера программируемых прерываний, а также другие части стандартного набора. Ресурсы не могут выделены, потому что уже есть драйвер, использующий эти адреса.
Не получается заставить работать дисковые квоты. Не включайте квотирование на /, Помещайте файл с квотами в ту файловую систему, которую он обслуживает, то есть: Файловая система Файл квот /usr /usr/admin/quotas /home /home/admin/quotas Что не так с устройством ccd? Симптом выглядит так: &prompt.root; ccdconfig -C ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format Это сообщение обычно выдаётся, когда вы пытаетесь объединить разделы c, по умолчанию имеющие тип unused. Драйвер ccd требует, чтобы используемые разделы имели тип FS_BSDFFS. Отредактируйте метки тех дисков, которые вы хотите использовать, сменив типы разделов на 4.2BSD. Почему невозможно отредактировать метку диска ccd? Симптом выглядит так: &prompt.root; disklabel ccd0 (здесь выводится информация о диске, пробуем отредактировать метку) &prompt.root; disklabel -e ccd0 (редактирование, сохранение, выход) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label Это происходит из-за того, что метка диска, возвращаемая ccd, на самом деле ненастоящая, не соответствующая реально располагающейся на диске. Вы можете решить эту проблему, явно записав эту метку обратно следующим образом: &prompt.root; disklabel ccd0 > /tmp/disklabel.tmp &prompt.root; disklabel -Rr ccd0 /tmp/disklabel.tmp &prompt.root; disklabel -e ccd0 (теперь это будет работать) Поддерживает ли FreeBSD вызовы IPC из System V? Да, FreeBSD поддерживает IPC из System V, а именно совместно используемую память, сообщения и семафоры. Чтобы они работали, вам нужно добавить следующие строки в файл конфигурации ядра. options SYSVSHM # enable shared memory options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging Во FreeBSD 3.2 и выше эти параметры уже включены в ядро GENERIC, что уже означает их присутствие в вашей системе. Перекомпилируйте и проинсталлируйте ядро. Как настроить sendmail для доставки почты по UUCP? Конфигурация sendmail, поставляемая с FreeBSD, предназначена для сайтов, которые имеют непосредственный выход в Internet. Сайты, которым требуется обмениваться почтой по UUCP, должны использовать другой конфигурационный файл. Ковыряние в файле /etc/sendmail.cf вручную - это занятие для пуристов (и мазохистов). Восьмая версия sendmail поставляется с новой системой генерации конфигурационных файлов с использованием препроцессора &man.m4.1;, в которой ручная настройка перенесена на более высокий уровень абстракции. Используйте конфигурационные файлы в каталоге /usr/src/usr.sbin/sendmail/cf. Если вы не собираетесь инсталлировать все исходные тексты системы, специально для вас конфигурационные файлы sendmail выделены в отдельный дистрибутив. Если вы имеете смонтированный компакт-диск, выполните такую команду: &prompt.root; cd /cdrom/src &prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmail Не волнуйтесь, эти файлы занимают всего лишь несколько сотен килобайт. Файл README в каталоге cf может быть использован как начальное введение в конфигурацию m4. Для доставки почты по UUCP лучше всего использовать mailertable. В этом файле содержится база данных, используемая sendmail при маршрутизации почты. Первым делом создайте ваш файл .mc. Для таких файлов предназначен каталог /usr/src/usr.sbin/sendmail/cf/cf. Посмотрите в нём, там есть уже несколько примеров. Положим, что вы назвали ваш файл foo.mc, всё, что вам нужно для преобразования его в нормальный sendmail.cf, это: &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf &prompt.root; make foo.cf &prompt.root; cp foo.cf /etc/mail/sendmail.cf Типичный файл .mc выглядит примерно так: VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP Строки, в которых содержатся параметры accept_unresolvable_domains, nocanonify и confDONT_PROBE_INTERFACES, подавляют всяческое использование DNS в процессе доставки. Строка UUCP_RELAY может понадобиться только в очень странных случаях, не спрашивайте о них. Просто поместите здесь имя хоста Internet, который может обрабатывать адреса с псевдо-доменами .UUCP; в большинстве случаев достаточно поставить сюда имя почтового шлюза вашего провайдера. Как только вы сгенерируете конфигурационный файл, вам понадобится файл /etc/mail/mailertable. Если имеется единственный канал связи со внешним миром, который используется для всей вашей почты, то следующего файла будет достаточно: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay Более сложный пример может выглядеть примерно так: # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: Как видите, это часть реально существующего файла. Первые три строки описывают особые случаи, когда почта, направленная на некоторые домены, будет посылаться не по стандартному маршруту, а на некоторую близлежащую UUCP-систему для сокращения маршрута доставки. Следующая строка описывает, что почта на локальный домен в сети Ethernet может быть доставлена по SMTP. В конце файла описаны близлежащие системы UUCP в псевдо-домене .UUCP, что позволит выполнять правильную доставку почты на адреса uucp-система!получатель. В последней строке всегда присутствует одна точка, соответствующая всем остальным доменам, с доставкой по UUCP на ближнюю систему UUCP, который является универсальный почтовым шлюзом во весь остальной мир. Все имена узлов после uucp-dom: должны быть реально существующими узлами UUCP, что можно проверить командой uuname. Как напоминание о том, что этот файл должен быть преобразован в формат базы данных DBM перед использованием, командная строка, выполняющая это действие, помещена как комментарий в начало файла. При изменении mailertable всегда нужно выполнять эту команду. Последняя подсказка: если вы не уверены в правильности настройки маршрутизации почты, используйте sendmail с опцией . Она переводит sendmail в режим проверки адресов; просто введите 3,0, а затем адрес, который вы хотите протестировать на правильность маршрутизации. В последней строке будут указаны используемый почтовый агент, хост получателя, с которым будет работать этот агент, и (может быть преобразованный) адрес. Выход их этого режима осуществляется по Control-D. &prompt.user; sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D Как настроить почту при коммутируемом соединении с Internet? Если адрес IP вам выделен статически, то вам не нужно ничего менять. Установите имя вашего хоста в соответствии с выделенным именем DNS, а sendmail сделает всё остальное. Если ваш IP-адрес выделяется динамически при коммутируемом соединении по протоколу ppp с Internet, может быть, вам выделен почтовый ящик на сервере провайдера. Предположим, что домен вашего провайдера называется myISP.com, а ваше имя пользователя - user. Также положим, что вы назвали вашу машину bsd.home, и что ваш провайдер сказал, что вы можете использовать relay.myISP.com в качестве почтового шлюза. Чтобы забирать почту из вашего почтового ящика, вам нужно установить соответствующий агент. Хорошим агентом является программа fetchmail, так как она поддерживает много различных протоколов. Обычно провайдеры предлагают POP3. Если вы используете user-ppp, то можете автоматически забирать вашу почту при установлении соединения с Internet, добавив такую строку в файл /etc/ppp/ppp.linkup: MYADDR: !bg su user -c fetchmail Если вы используете sendmail (как показано ниже) для доставки почты для внешних пользователей, поместите команду !bg su user -c "sendmail -q" после вышеуказанной строки. Это заставит sendmail обработать вашу очередь почтовых сообщений, как только будет осуществлено подключение к сети. Предположим, что вы имеет учётную запись для user на машине bsd.home. В домашнем каталоге пользователя user на машине bsd.home создайте файл .fetchmailrc такого содержания: poll myISP.com protocol pop3 fetchall pass MySecret Излишним будет напоминание о том, что этот файл никому не должен быть доступен для чтения, кроме пользователя user, потому что он содержит пароль MySecret доступа к почтовому ящику. Чтобы посылать почту с правильным заголовком from:, вы должны указать программе sendmail использовать user@myISP.com, а не user@bsd.home. Вам может понадобиться настроить sendmail для посылки всей почты через relay.myISP.com, чтобы ускорить её передачу. Следующий файл .mc должен подойти: VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`myISP.com')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.myISP.com') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl В предыдущем разделе описано, как преобразовать файл .mc в sendmail.cf. И не забудьте перезапустить sendmail после обновления файла sendmail.cf. Что это за пользователь toor с UID 0? Я подвергся взлому? Не волнуйтесь, toor является альтернативным адимнистративным пользователем (toor - это root, записанный задом наперед). Раньше он создавался при установке командного интерпретатора &man.bash.1;, однако теперь он создается по умолчанию. Его предполагается использовать с нестандартным командным интерпретатором, так чтобы вам не нужно было менять используемый по умолчанию командный процессор для пользователя root. Это важно, так как оболочки, не являющиеся частью дистрибутива системы (например, командный процессор, устанавливаемый из портов или пакаджей), скорее всего, устанавливаются в каталог /usr/local/bin, который по умолчанию располагается в другой файловой системе. Если командный процессор для пользователя root располагается в /usr/local/bin, и /usr (или другая файловая система, содержащая /usr/local/bin) по какой-либо причине не смонтирована, то root не сможет войти в систему для исправления этой проблемы (хотя если вы перезагрузите систему в однопользовательский режим, вы сможете указать командный процессор). Некоторые используют toor для выполнения повседневных административных работ с нестандартным командным процессором, оставляя root со стандартной оболочкой для работы в однопользовательском режиме или выполнения аварийных работ. По умолчанию вы не сможете войти в систему как пользователь toor, потому что у него нет пароля, так что, если вы хотите его использовать, зарегистрируйтесь в системе как root и задайте пароль для пользователя toor. Ой! Я забыл пароль администратора! Без паники! Просто перезапустите систему, наберите boot -s в приглашении Boot: (или просто -s в случае использования версий FreeBSD до 3.2) для входа в однопользовательский режим. На вопрос об используемой оболочке нажмите ENTER. На приглашение &prompt.root; введите mount -u /, чтобы перемонтировать корневую файловую систему в режиме чтения/записи, после чего выполните команду mount -a для монтирования всех файловых систем. Запустите команду passwd root, чтобы сменить пароль администратора, а затем &man.exit.1; для продолжения процесса загрузки. Как запретить перезагрузку по клавишам Control-Alt-Delete? Если вы используете драйвер консоли syscons (который является стандартным) во FreeBSD 2.2.7-RELEASE и выше, перегенерируйте и установите новое ядро со строчкой options SC_DISABLE_REBOOT в конфигурационном файле. Если же вы используете драйвер консоли PCVT во FreeBSD 2.2.5-RELEASE и выше, то укажите следующую строку в конфигурационном файле: options PCVT_CTRL_ALT_DEL Для более старых версий FreeBSD отредактируйте используемый для консоли файл раскладки клавиатуры, заменив ключевые слова boot на nop. Используемая по умолчанию раскладка находится в файле /usr/share/syscons/keymaps/us.iso.kbd. Вам может потребоваться явно указать в файле /etc/rc.conf загрузку этой раскладки, чтобы она действительно поменялась. Конечно, если в вашей стране вы используете другую раскладку, вы должны отредактировать именно её. Как преобразовать текстовые файлы DOS в формат Unix? Используйте такую команду: &prompt.user; perl -i.bak -npe 's/\r\n/\n/g' file ... где file - это имя файла(ов) для преобразования. Преобразование делается в том же самом файле, оригинальные файлы сохраняются с расширением .bak. Это преобразование также можно выполнить с помощью команды &man.tr.1;: &prompt.user; tr -d '\r' < dos-text-file > unix-file где dos-text-file - это имя файла, содержащего текст DOS, а в файл unix-file будет помещён уже преобразованный текст. Этот способ может работать гораздо быстрее, чем при использовании perl. Как прервать процесс по имени? Используйте команду &man.killall.1;. Почему su выдаёт сообщение о том, что я не вхожу в root ACL? Эта ошибка выдаётся распределённой системой аутентификации Kerberos. Эта ошибка не фатальна, однако это раздражает. Вы можете запустит su с ключом -K либо деинсталлировать Kerberos, как описано в следующем разделе. Как деинсталлировать Kerberos? Чтобы убрать Kerberos из системы, переинсталлируйте дистрибутив bin того релиза, который у вас запущен. Если у вас есть CDROM, вы можете смонтировать компакт-диск (положим, в каталог /cdrom) и выполнить команду &prompt.root; cd /cdrom/bin &prompt.root; ./install.sh Либо вы можете убрать все опции "MAKE_KERBEROS" из файла /etc/make.conf и выполнить полное перестроение системы. Как добавить в систему дополнительные псевдотерминалы? Если у вас много пользователей, работающий в сеансах telnet, ssh, X или в screen, вам можете столкнуться с проблемой нехватки псевдотерминалов. Их количество можно увеличить следующим образом: Откомпилируйте и инсталлируйте новое ядро, в конфигурационный файл которого входит такая строка: pseudo-device pty 256 Выполните следующие команды: &prompt.root; cd /dev &prompt.root; sh MAKEDEV pty{1,2,3,4,5,6,7} для создания 256 дополнительных файлов устройств для новых терминалов. Отредактируйте файл /etc/ttys, добавив по строке для каждого из 256 терминалов. Они должны соответствовать формату существующих строк, то есть должны выглядеть вот так: ttyqc none network Порядок назначения букв при записи в виде регулярного выражения имеет вид tty[pqrsPQRS][0-9a-v]. Теперь осталось только перезапустить систему с новым ядром. Не получается создать устройство snd0! Такого устройства, как snd, не существует. Это название используется в качестве краткого обозначения различных устройств, которые составляют во FreeBSD звуковой драйвер, таких как mixer, sequencer и dsp. Для создания этих устройств вы должны сделать следующее: &prompt.root; cd /dev &prompt.root; sh MAKEDEV snd0 Как перечитать содержимое /etc/rc.conf и перестартовать /etc/rc без перезагрузки системы? Перейдите в однопользовательский режим, а затем возвратитесь обратно в многопользовательский. На консоли выполните следующее: &prompt.root; shutdown now (Замечание: без -r или -h) &prompt.root; return &prompt.root; exit Что означает термин sandbox (песочница)? Sandbox - это термин, используемый при обеспечении безопасности. Он имеет два значения: Процесс, помещённый внутрь некоторых виртуальных стен, которые предназначены для того, чтобы предотвратить взлом всей системы в результате взлома этого конкретного процесса. Говорится, что процесс может играть в границах этих стен. Что бы этот процесс ни делал, он эти стены разрушить не может, поэтому вам не нужен его особый аудит, чтобы с уверенностью сказать, насколько его работа безопасна для системы. Стеной может служить, например, идентификатор пользователя. Вот определение, даваемое на страницах справочника по named и часто используемое при обсуждении безопасности систем. Рассмотрим, например, службу ntalk (смотрите /etc/inetd.conf). Раньше эта служба запускалась с идентификатором пользователя root, а сейчас - tty. Пользователь tty - это та песочница, которая осложняет взлом системы через ntalk посредством использования этого идентификатора пользователя. Процесс, помещённый внутрь симулируемой машины. Это даёт больший уровень безопасности. В общем это означает, что некто, взломавший процесс, может думать. что может сломать и систему в целом, однако фактически может сломать только симулятор этой машины и не может модифицировать никаких реальных данных. Самым распространённым способом достигнуть такого результата является построение имитирующего окружения в каталоге и затем запуск процессов и этом каталоге через chroot (т.е. задав этот каталог в качестве / для этого процесса, а не реальный / всей системы). Другим часто используемым методом является монтирование низлежащей файловой системы в режиме "только для чтения" и затем создание уровня файловой системы поверх неё, что даёт процессу видимость доступа по записи на ту файловую систему. Процесс будет полагать, что может записывать в те файлы, но это будет единственный процесс, который увидит результат - другие процессы не будут этого делать, ни в коем случае. Попытка сделать такой тип песочницы настолько прозрачна, что пользователь (или взломщик) даже не поймёт, что он в ней находится. В Unix реализованы два типа песочниц. Один на уровне процесса, и один на уровне идентификаторов пользователей. Каждый процесс в Unix полностью защищён от других процессов. Никакой процесс не может модифицировать адресное пространство другого процесса. Это отличается от Windows, где процесс может легко записать что-либо в адресное пространство другого процесса, что приводит к аварийным ситуациям. В Unix каждым процессом владеет некоторый идентификатор пользователя. Если этот пользователь не root, он ограждает процесс от других, владельцами которых являются другие пользователи. Этот идентификатор используется также для защиты данных на диске. Что такое уровень защиты (securelevel)? Уровень защиты является механизмом обеспечения безопасности, реализованным в ядре. В общем, когда уровень защиты больше нуля, ядро ограничивает выполнение некоторых операций; даже администратору (то есть пользователю root) запрещается их выполнять. На момент написания этого текста механизм уровня защиты может, кроме всего прочего, ограничивать возможности по снятию некоторых флагов с файлов, таких, как schg (системный флаг неизменямости), записи в память ядра через устройства /dev/mem и /dev/kmem, загрузке модулей ядра и изменению правил для &man.ipfirewall.4;. Для выяснения состояния уровня защиты в работающей сситеме просто выполните следующую команду: &prompt.root; sysctl kern.securelevel Результат будет содержать название &man.sysctl.8;-переменной (в нашем случае это kern.securelevel) и число. Последнее и является текущим значением уровня защиты. Если оно положительно (то есть больше нуля), то по крайней мере некоторые из защит этого механизма включены. Вы не можете понизить уровень защиты работающей системы; возможность сделать это противоречит назначению этого механизма. Если вам нужно выполнить работу, которая требует не положительный уровень защиты (к примеру, выполнение installworld или смена даты), вам потребуется изменить настройки уровня защиты системы в файле /etc/rc.conf (вам нужно обратить внимание на переменные kern_securelevel и kern_securelevel_enable) и перезагрузить систему. Более подробная информация об уровнях защиты и о том, какие специфические действия выполняют все уровни, может быть найдена на справочных страницах о &man.init.8;. Уровень защиты не является панацеей; в нем есть много недостатков. Зачастую он дает обманчивое чувство безопасности. Одной из самых больших проблем является то, что для его эффективной работы все файлы, используемые в процессе загрузки, должны быть защищены. Если атакующий сможет заставить систему выполнять свой код до установки уровня защиты (что происходит достаточно поздно во время процесса загрузки, так как некоторые вещи, выполняемые системой в это время, не могут быть сделаны при повышенном уровне защиты), то эта защита может быть отключена. Хотя такая задача по защите всех файлов, используемых в процессе загрузки, технически вполне осуществима, если это будет сделано, то поддержка системы станет кошмаром, так как для изменения конфигурационного файла придется останавливать систему, переводя ее по крайней мере в однопользовательский режим. Это обстоятельство, а также ряд других, часто обсуждаются в списках рассылки, в частности, во freebsd-security. Пожалуйста, поищите в архивах более подробное обсуждение. Некоторые надеются, что механизм уровней защиты вскоре отомрет, а на его смену придет более гибкий механизм, но пока все это туманно. Считайте себя предупреждённым. Как разрешить обычным пользователям монтировать дискеты, компакт-диски и другие сменные носители? Обычным пользователям можно позволить монтировать устройства. Вот как это делается: Как пользователь root, установите системную переменную vfs.usermount в значение 1. &prompt.root; sysctl -w vfs.usermount=1 Работая пользователем root, назначьте соответствующие права на устройства с поблочным доступом, которые соответствуют сменным носителям. Например, чтобы позволить пользователям монтировать дискеты в первом дисководе, воспользуйтесь командой &prompt.root; chmod 666 /dev/fd0 Чтобы разрешить пользователям из группы operator монтировать компакт-диски, сделайте так: &prompt.root; chgrp operator /dev/cd0c &prompt.root; chmod 640 /dev/cd0c Наконец, добавьте строчку vfs.usermount=1 в файл /etc/sysctl.conf, чтобы она срабатывала во время загрузки системы. Теперь все пользователи могут монтировать дискету /dev/fd0 в собственные каталоги: &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/fd0 ~/my-mount-point Пользователи из группы operator теперь могут монтировать компакт-диск /dev/cd0c в собственные каталоги: &prompt.user; mkdir ~/my-mount-point &prompt.user; mount -t msdos /dev/cd0c ~/my-mount-point Размонтировка устройства осуществляется просто: &prompt.user; umount ~/my-mount-point Использование vfs.usermount, однако, имеет некоторые негативные стороны, связанные с вопросами безопасности. Более правильным способом работы с носителями в формате MSDOS является использование пакета mtools из коллекции портов. Как перенести систему на большой новый диск? Самый лучший способ заключается в переустановке ОС на новый диск и последующем переносе данных пользователей. Это очень рекомендуется делать, если вы следовали ветке -stable в течение более одного релиза или обновляли релиз, а не устанавливали новый. Вы можете установить программу booteasy на оба диска с помощью команды &man.boot0cfg.8; и выполнять загрузку с любого из них до тех пор, пока не будете удовлетворены новой конфигурацией системы. Пропустите следующий абзац, чтобы перейти к вопросу переноса данных после этой операции. Если вы решили не делать новой установки, то вам нужно разбить на разделы и разметить новый диск с помощью /stand/sysinstall или &man.fdisk.8; и &man.disklabel.8;. Вы также должны установить на оба диска программу booteasy с помощью &man.boot0cfg.8;, чтобы иметь возможность выполнять загрузку как старой, так и новой системы после выполнения копирования. Обратитесь к руководству по форматированию носителей за подробным описанием этого процесса. Итак, после подготовки диска вы можете переносить данные. К сожалению, вы не можете просто скопировать данные. Такие вещи, как файлы устройств (в каталоге /dev), флаги и ссылки будут этому мешать. Вам нужно использовать инструменты, которые работают с такими случаями, а именно &man.dump.8;. Хотя рекомендуется выполнять перенос данных в однопользовательском режиме, это не обязательное условие. Вы не должны использовать ничего, кроме &man.dump.8; и &man.restore.8; для переноса корневой файловой системы. Команда &man.tar.1; может сработать, а может и не сработать. Также вы должны использовать &man.dump.8; и &man.restore.8; при переносе одного раздела в другой пустой раздел. Последовательность шагов при использовании программы dump для переноса данных раздела в новый раздел такова: выполните команду newfs над новым разделом. смонтируйте его во временный каталог. перейдите в этот каталог. Выполните команду dump над старым разделом, направив вывод в новый раздел. Например, если вы собираетесь перенести корневую файловую систему на устройство /dev/ad1s1a с использованием каталога /mnt в качестве временной точки монтирования, то это делается так: &prompt.root; newfs /dev/ad1s1a &prompt.root; mount /dev/ad1s1a /mnt &prompt.root; cd /mnt &prompt.root; dump 0af - / | restore xf - Переразбиение разделов с использованием dump требует несколько больше усилий. Для объединения раздела типа /var с его вышестоящим разделом, создайте новый раздел, достаточно большой для размещенияих их обоих, переместите вышестоящий раздел так, как это описано выше, а затем переместите нижестоящий раздел в пустой каталог, созданный при первом перемещении: &prompt.root; newfs /dev/ad1s1a &prompt.root; mount /dev/ad1s1a /mnt &prompt.root; cd /mnt &prompt.root; dump 0af - / | restore xf - &prompt.root; cd var &prompt.root; dump 0af - /var | restore xf - Для отделения каталога от вышестоящего, скажем, для размещения /var в собственном разделе, которого не было, создайте оба раздела, затем смонтируйте нижестоящий раздел в подходящий каталог во временную точку монтирования, а затем переместите старый единый раздел: &prompt.root; newfs /dev/ad1s1a &prompt.root; newfs /dev/ad1s1d &prompt.root; mount /dev/ad1s1a /mnt &prompt.root; mkdir /mnt/var &prompt.root; mount /dev/ad1s1d /mnt/var &prompt.root; cd /mnt &prompt.root; dump 0af - / | restore xf - Вы можете использовать &man.cpio.1;, &man.pax.1;, &man.tar.1; вместо &man.dump.8; для данных пользователей. На момент написания этого документа было известно, что они теряют информацию о флагах файлов, так что используйте их с осторожностью. Я пытался обновить мою систему до последней -STABLE, а получил -RC или -BETA! Что происходит? Краткий ответ: это же просто название. RC означает Release Candidate. Это значит, что вскоре произойдет выход релиза. Во FreeBSD появление -BETA, как правило, равнозначно прекращению внесения изменений в код системы перед появлением релиза. Подробный ответ: во FreeBSD релизы выпускаются из одного из двух мест. Крупные релизы, точка-ноль, такие, как 3.0-RELEASE и 4.0-RELEASE, ответвляются от основного потока разработки, более известного как -CURRENT. Мелкие релизы, такие, как 3.1-RELEASE или 4.2-RELEASE, являлись снэпшотами активной ветки -STABLE. Начиная с 4.3-RELEASE, каждый релиз также имеет свою ветвь, которой могут следовать те, кому необходим сверхконсервативный метод обновления (как правило, внесение только тех исправлений, которые касаются вопросов обеспечения безопасности). Когда делается релиз, то ветвь, из которой он выпускается, подвергается некоторой подготовке. Частью этого процесса является замораживание кода. Когда инициируется замораживание кода, то имя ветки изменяется для того, чтобы отразить факт близости релиза. Например, если ветка называлась 4.0-STABLE, то её имя будет изменено на 4.1-BETA, чтобы обозначить момент прекращения внесения изменений в код системы и период дополнительного тестирования перед выходом релиза. В это время исправления ошибок могут быть внесены в код системы для того, чтобы быть включенными в релиз. Когда исходный код подготовлен к выпуску релиза, имя будет изменено на 4.1-RC для обозначения того, что релиз будет сделан, скорее всего, именно из этого кода. Когда код находится на этапе RC, в нём могут исправляться только самые критичные ошибки. Как только релиз, а в этом примере это 4.1-RELEASE, будет сделан, ветвь будет переименована в 4.1-STABLE. Я попытался установить новое ядро, однако утилита chflags не сработала. Как это обойти? Краткий ответ: Скорее всего, вы работаете в режиме безопасности, большем, чем 0. Для установки ядра перезагрузите машину и войдите в однопользовательский режим. Подробный ответ: FreeBSD запрещает менять системные флаги при работе на уровнях безопасности, превышающих 0. Вы можете определить ваш уровень такой командой: &prompt.root; sysctl kern.securelevel Вы не можете понизить уровень безопасности; для установки ядра вам нужно перезагрузиться в однопользовательский режим, или изменить уровень безопасности в /etc/rc.conf, а затем выполнить перезагрузку. Обратитесь к странице Справочника по &man.init.8; за подробной информацией об уровне безопасности и посмотрите /etc/defaults/rc.conf и справочную страницу по &man.rc.conf.5; для выяснения подробностей о файле rc.conf. Не получается изменить системное время больше чем на одну секунду! Как это обойти? Краткий ответ: Скорее всего, вы работаете на уровне бехопасности, превышающем 1. Для смены даты перезагрузите машину и войдите в однопользовательский режим. Подробный ответ: FreeBSD запрещает менять системное время на больше чем одну секунду при работе на уровнях безопасности, превышающих 1. Вы можете определить ваш уровень такой командой: &prompt.root; sysctl kern.securelevel Вы не можете понизить уровень безопасности; для изменения даты вам нужно перезагрузиться в однопользовательский режим, или изменить уровень безопасности в /etc/rc.conf, а затем выполнить перезагрузку. Обратитесь к странице Справочника по &man.init.8; за подробной информацией об уровне безопасности, и посмотрите /etc/defaults/rc.conf и справочную страницу по &man.rc.conf.5; для выяснения подробностей о файле rc.conf. В rpc.statd; есть ошибка работы с памятью ! Он использует 256 Mb памяти ! Нет, там нет ошибок и он не использует 256 Mb памяти. Ему просто нравится (что он постоянно и делает) отображать неприлично большой кусок памяти в свое адресное пространство для удобства. Здесь нет ничего неправильного с технической точки зрения, это просто сбивает с толку программы вроде &man.top.1; и &man.ps.1; &man.rpc.statd.8; отображает свой статусный файл (находящийся на /var) в свое адресное пространство. Для того чтоб постоянно не беспокоится о будущих переотражениях, когда файл вырастет в размерах, он просто отображает его с огромным размером заранее. Это просто заметить в исходных текстах, где как вы можете увидеть параметр длина к функции &man.mmap.2; имеет значение 0x10000000, или одна шестнадцатая адресного пространства для IA32, то есть 256Mb. Почему я не могу снять с файла флаг schg? Вы работаете в системе с повышенным (то есть большим, чем 0) уровнем защиты. Понизьте уровень защиты и попробуйте еще раз. Для получения более подробной информации обратитесь к разделу FAQ об уровне защиты и спровочной странице о &man.init.8;. Почему SSH аутентификация посредством файла .shosts не включена по умолчанию в последних версия FreeBSD? Причиной по которой .shosts аутентификация не работает по умолчанию в последних выпусках FreeBSD, является то что &man.ssh.1; не устанавливается более с битом изменения пользователя (suid). Если Вы хотите исправить это, то Вы можете сделать одно из двух нижеприведенных действий: Как постоянную правку, установите ENABLE_SUID_SSH в true в файле /etc/make.conf и перекомпилируйте ssh. Как временную правку измените права доступа к файлу /usr/bin/ssh на 4555 командой chmod 4755 /usr/bin/ssh из-под администратора. А потом добавьте строку ENABLE_SUID_SSH=true в файл /etc/make.conf, чтоб это изменение осталось в силе после очередного обновления системы с помощью make world. Существует ли криптографическая файловая система для &os;? Да; посмотрите порт security/cfs. Как сменить приглашение загрузчика с ??? на что-нибудь более значащее? Вы не можете сделать это со стандартным менеджером загрузки, не переписав его. Среди портов из категории sysutils есть несколько других менеджеров загрузки, которые предоставляют такую функциональность.
X Window System и виртуальные консоли Я хочу запустить X, как это сделать? Самый простой способ - это указать во время инсталляции, что вы хотите использовать X. Затем следуйте указаниям в документации по утилите xf86config, которая предназначена для конфигурирования работы XFree86(tm) с вашим графическим адаптером/мышью/итд. Вы можете также попробовать сервер Xaccel. За подробной информацией обратитесь к разделу, посвящённому продуктам фирм Xi Graphics и Metro Link. Я попытался запустить X, но получил сообщение KDENABIO failed (Operation not permitted) после ввода команды startx. Что мне теперь делать? В вашей системе установлен повышенный уровень безопасности, не так ли? На самом деле, при повышенном уровне защиты X запустить невозможно. Чтобы выяснить, почему это так, обратитесь к страницам справки по &man.init.8;. Так что вопрос сводится к тому, как вам это обойти, и у вас здесь есть в основном два варианта: понизить ваш уровень защиты обратно к нулю (обычно это делается в /etc/rc.conf) или во время загрузки запускать &man.xdm.1; (до того, как повышается уровень защиты). Обратитесь к для получения более полной информации о запуске &man.xdm.1; во время загрузки. Почему моя мышь не работает с X? Если вы используете syscons (стандартный драйвер консоли), то можете настроить поддержку указателя мыши во всех виртуальных экранах. Во избежание конфликтов с X, драйвер syscons поддерживает виртуальное устройство /dev/sysmouse. Все события, получаемые от реальной мыши, пишутся в устройство sysmouse через moused. Если вы хотите использовать вашу мышь на одной или нескольких виртуальных консолях, продолжая использовать X, посмотрите и настройте moused. Затем отредактируйте /etc/XF86Config так, чтобы в нём были следующие строки. Section Pointer Protocol "SysMouse" Device "/dev/sysmouse" ..... Пример выше предназначен для XFree86 3.3.2 и выше. Для более ранних версий параметр Protocol должен быть MouseSystems. Некоторые предпочитают использовать в X устройство /dev/mouse. Чтобы оно работало, файл устройства /dev/mouse должен являться ссылкой на /dev/sysmouse (посмотрите справку по &man.sysmouse.4;): &prompt.root; cd /dev &prompt.root; rm -f mouse &prompt.root; ln -s sysmouse mouse У моей мыши есть колёсико. Могу ли я его использовать при работе в X? Да. Но вам нужно будет настроить программы-клиенты для X. Посмотрите страничку Коласа Наабу (Colas Nahaboo) (http://www.inria.fr/koala/colas/mouse-wheel-scroll/). Если вы собираетесь использовать программу imwheel, следуйте этим простым указаниям: Трансляция событий от колёсика Работа программы imwheel основана на трансляции событий от кнопок мыши 4 и 5 в события от клавиатуры. То есть вам нужно заставить драйвер мыши транслировать события от колёсика в события от кнопок 4 и 5. Есть два способа сделать это, в первом из которых трансляцию выполняет &man.moused.8;. Во втором методе трансляцию событий выполняет сам X-сервер. Использование &man.moused.8; для трансляции событий от колёсика Для того, чтобы &man.moused.8; выполнял преобразование событий, просто добавьте опцию к команде, запускающей &man.moused.8;. Например, если обычно вы запускаете &man.moused.8; командой moused -p /dev/psm0, то теперь вы должны будете использовать moused -p /dev/psm0 -z 4. Если &man.moused.8; запускается у вас автоматически во время загрузки через /etc/rc.conf, то вы можете просто добавить опцию к переменной moused_flags в файле /etc/rc.conf. Теперь вам нужно указать X, что вы используете 5-кнопочную мышь. Для этого просто добавьте строчку Buttons 5 в секцию Pointer файла /etc/XF86Config. Например, в вашем файле /etc/XF86Config секция Pointer может принять такой вид: Секция <quote>Pointer</quote> для мыши с колёсиком из файла XF86Config для XFree86 3.x с трансляцией через moused Section "Pointer" Protocol "SysMouse" Device "/dev/sysmouse" Buttons 5 EndSection Секция <quote>InputDevice</quote> для мыши с колёсиком из файла XF86Config для XFree86 4.x с преобразованием через X-сервер Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "Buttons" "5" EndSection Пример <quote>.emacs</quote> для простой прокрутки страницы мышью с колёсиком ;; wheel mouse (global-set-key [mouse-4] 'scroll-down) (global-set-key [mouse-5] 'scroll-up) Использование X-сервера для трансляции событий от колёсика Если &man.moused.8; у вас не запущен или если вы не хотите, чтобы &man.moused.8; занимался трансляцией событий от колёсика, то это может сделать X-сервер. Это требует некоторых модификаций в вашем файле /etc/XF86Config. Во-первых, вам нужно правильно выбрать протокол для вашей мыши. Большинство манипуляторов с колёсиками используют протокол IntelliMouse. Однако XFree86 поддерживает другие протоколы, такие, как MouseManPlusPS/2 для мышей Logitech MouseMan+. После того, как вы выберите используемый протокол, в секцию Pointer нужно будет добавить строчку Protocol. Во-вторых, вам нужно указать, что X-сервер будет переопределять события от колёсика в события от кнопок 4 и 5. Это делается заданием опции ZAxisMapping. Например, если вы не используете &man.moused.8; и ваша мышь IntelliMouse подключена к порту для мыши PS/2, в вашем файле /etc/XF86Config должно быть указано следующее: Секция <quote>Pointer</quote> для мыши с колёсиком из файла <filename>XF86Config</filename> с трансляцией с помощью X-сервера Section "Pointer" Protocol "IntelliMouse" Device "/dev/psm0" ZAxisMapping 4 5 EndSection Раздел <quote>InputDevice</quote> для мыши с колесиком в XF86Config из XFree86 4.x с трансляцией через X-сервер Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psm0" Option "ZAxisMapping" "4 5" EndSection Пример <quote>.emacs</quote> для простой прокрутки страницы при помощи мыши с колесиком ;; wheel mouse (global-set-key [mouse-4] 'scroll-down) (global-set-key [mouse-5] 'scroll-up) Установка программы imwheel Теперь установите программу Imwheel из Коллекции Портов. Она находится в категории x11. Эта утилита будет преобразовывать события от колёсика вашей мыши в события от клавиатуры. Например, она может послать в программу последовательность Page Up, когда вы крутите колёсико вперёд. Для преобразования событий от колёсика в нажатия клавиш imwheel использует конфигурационный файл, причём для разных приложений возможна посылка разных последовательностей. Конфигурационным файлом, используемым по умолчанию, является /usr/X11R6/etc/imwheelrc. Вы можете скопировать его в ~/.imwheelrc и отредактировать, если хотите изменить параметры работы imwheel. Формат конфигурационного файла описан на странице Справочника о &man.imwheel.1;. Настройка редактора Emacs для работы с Imwheel (по желанию) Если вы используете emacs или Xemacs, то в ваш файл ~/.emacs нужно добавить маленький раздел. Для редактора emacs, добавьте следующее: Конфигурация <application>Emacs</application> для работы с <application>Imwheel</application> ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines) (global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Для редактора Xemacs, в ваш файл ~/.emacs добавьте следующее: Конфигурация <application>Xemacs</application> для работы с <application>Imwheel</application> ;;; For imwheel (setq imwheel-scroll-interval 3) (defun imwheel-scroll-down-some-lines () (interactive) (scroll-down imwheel-scroll-interval)) (defun imwheel-scroll-up-some-lines () (interactive) (scroll-up imwheel-scroll-interval)) (define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines) (define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines) ;;; end imwheel section Запуск Imwheel Вы можете просто набрать команду imwheel в вашем в окне xterm после установки. Она сама перейдёт в фоновый режим и немедленно начнёт работу. Если вы хотите использовать imwheel всегда, просто добавьте её запуск в ваш .xinitrc или .xsession. Все предупреждения о PID-файлах, которые выводит imwheel, можно проигнорировать. Эти предупреждения имеют смысл только в Linux-версии imwheel. Меню и диалоговые окна в X Window работают неправильно! Попробуйте выключить Num Lock. Если клавиша Num Lock во время загрузки по умолчанию включена, добавьте в секцию Keyboard файла XF86Config следующую строку. # Let the server do the NumLock processing. This should only be # required when using pre-R6 clients ServerNumLock Что такое виртуальные консоли и как изменить их количество? Виртуальные консоли, упрощённо говоря, позволяют вам иметь несколько одновременных сеансов работы с той же самой машиной без установки какой бы то ни было сети или запуска X. При запуске системы после вывода сообщений этапа загрузки на консоль выдаётся приглашение на вход в систему. Вы можете ввести своё имя и пароль и начать работать (или играть!) на первой виртуальной консоли. В какой-то момент вы можете захотеть запустить ещё одну сеанс, скажем, чтобы заглянуть в документацию по программе, которую вы запустили или для для чтения электронной почты во время ожидания завершения передачи данных по FTP. Просто нажмите Alt-F2 (удерживая клавишу Alt, нажмите F2) и вы обнаружите приглашение, ждущее вас на второй виртуальной консоли! Когда захотите вернуться к первоначальному сеансу, нажмите Alt-F1. После инсталляции по умолчанию во FreeBSD задействованы три виртуальных консоли (8 начиная с 3.3-RELEASE), а комбинации клавиш Alt-F1, Alt-F2 и Alt-F3 служат для переключения между ними. Чтобы увеличить количество консолей, отредактируйте файл /etc/ttys (посмотрите справку по &man.ttys.5;), добавив туда записи для терминалов с именами от ttyv4 до ttyvc после слов Virtual terminals: # 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 Используйте из них столько, сколько посчитаете нужным. Чем больше виртуальных терминалов у вас имеется, тем больше ресурсов они используют; это может иметь значение, если у вас меньше чем 8МБ ОЗУ. Вы можете сменить статус консолей с secure на insecure. Если вы хотите запустить X, вы должны оставить для него по крайней мере один неиспользуемый (или выключенный) виртуальный терминал. Таким образов, если вы хотите иметь приглашения login на всех двенадцати функциональных клавиши, то вам не повезло - вы можете это сделать только для одиннадцати из них, если хотите на этой же машине ещё запустить X-сервер. Самым простым способом убрать консоль является просто её выключение. Например, если вы запустили на всех 12 консолях виртуальные терминалы, как указано выше, и ещё хотите запустить X, то должны будете изменить параметры двенадцатого виртуального терминала с: ttyvb "/usr/libexec/getty Pc" cons25 on secure на: ttyvb "/usr/libexec/getty Pc" cons25 off secure Если на вашей клавиатуре только десять функциональных клавиш, то последние строки будут выглядеть так: ttyv9 "/usr/libexec/getty Pc" cons25 off secure ttyva "/usr/libexec/getty Pc" cons25 off secure ttyvb "/usr/libexec/getty Pc" cons25 off secure (Вы также можете просто их удалить.) После того, как вы отредактировали файл /etc/ttys, проверьте, что у вас имеется достаточное количество устройств для виртуальных терминалов. Самый простой способ сделать это: &prompt.root; cd /dev &prompt.root; sh MAKEDEV vty12 Самым простым (и надёжным) способом активировать виртуальные консоли является перезагрузка. Однако если вы вовсе не хотите этого делать, просто остановите X Window System и выполните (как пользователь root): &prompt.root; kill -HUP 1 При этом требуется, чтобы вы полностью закрыли X Window, если она была запущена, до запуска этой команды. Если вы это не сделаете, ваша система может повиснуть/заблокироваться после выполнения команды kill. Как осуществляется доступ к виртуальным консолям из X? Используйте комбинацию клавиш Ctrl Alt Fn для переключения обратно в виртуальную консоль. Нажатие Ctrl Alt F1 вернёт вас на первую виртуальную консоль. После того, как вы оказались в текстовой консоли, можете использовать, как обычно, комбинации Alt Fn для переключения между ними. Чтобы вернуться в сеанс работы X, вы должны переключиться в виртуальную консоль, на которой запущена X Window. Если вы запустили X из командной строки (например, при помощи команды startx), то сеанс работы X будет привязан к следующей неиспользуемой виртуальной консоли, а не к той текстовой консоли, с которой он был запущен. Если у вас имеется восемь активных виртуальных терминалов, то X будет работать на девятом, и вам нужно будет воспользоваться комбинацией Alt F9 для возврата в X. Как запустить XDM во время загрузки? Есть две философские школы, проповедующие различные методы запуска xdm. Последователи одного течения запускают xdm из /etc/ttys (посмотрите &man.ttys.5;), используя приводимый пример, тогда как другие вставляют запуск xdm в скрипт rc.local (посмотрите справку по &man.rc.8;) или X.sh, помещая последний в каталог /usr/local/etc/rc.d. Оба метода равноправны, и один из них может работать в ситуациях, с которыми не справляется другой и наоборот. В обоих случая результат один и тот же: X выводит графическое приглашение login:. Плюсом метода с использованием ttys является документирование того, на каком vty будет запущен X и то, что ответственность за перезапуск X-сервера при завершении сеанса работы лежит на процессе init. Метод с использованием rc.local позволяет просто прекратить работу xdm, если при запуске X возникли какие-нибудь проблемы. Из rc.local xdm должен быть запущен без аргументов, (то есть как даемон). xdm должен быть запущен ПОСЛЕ запуска &man.getty.8;, иначе они будут конфликтовать, блокируя консоль. Лучше всего выдержать паузу секунд на 10 и потом запустить xdm. Если xdm запускается из /etc/ttys, то есть вероятность конфликта между xdm и &man.getty.8;. Одним из способов избежать этого является добавление номера vt в файл /usr/X11R6/lib/X11/xdm/Xservers. :0 local /usr/X11R6/bin/X vt4 В вышеприведённом случае X-серверу указывается работать на /dev/ttyv3. Заметьте, что номера отличаются на единицу. Дело в том, что X-сервер считает vty от единицы, когда как отсчёт vty в ядре FreeBSD ведётся с нуля. При запуске xconsole выдаётся сообщение Couldn't open console. Если вы запускаете X с использованием сценария startx права на устройство /dev/console не изменяются, поэтому такие программы, как xterm -C и xconsole, не будут работать. Это зависит от прав доступа, установленных для консоли по умолчанию. В многопользовательской системе вовсе не нужно, чтобы любой пользователь мог выводить информацию на системную консоль. Для пользователей, вошедших в систему через VTY, для решения этой проблемы существует файл &man.fbtab.5;. В общем, раскомментируйте строчку вида /dev/ttyv0 0600 /dev/console в файле /etc/fbtab (посмотрите справку по &man.fbtab.5;), и этого будет достаточно для того, чтобы всякий, кто вошёл в систему с терминала /dev/ttyv0, имел доступ к консоли. Раньше я запускал XFree86, работая как обычный пользователь, а теперь при запуске выдается сообщение о том, что я должен быть пользователем root! Все X-серверы должны запускаться пользователем root, чтобы иметь прямой доступ к вашему видеооборудованию. Более старые версии XFree86 (<= 3.3.6) устанавливали все поставляемые серверы так, что они автоматически запускались пользователем root (с установленным битом смены владельца запускаемого процесса). Несомненно, это рискованно, потому что X-серверы являются большими, сложными программами. Более новые версии XFree86 не устанавливают на серверах бит смены владельца на пользователя root именно по этой причине. Очевидно, что запускать X-сервер, работая как пользователь root, неправильно и небезопасно. Есть два способа использовать X, работая как обычный пользователь. Первый способ заключается в использовании xdm или другого менеджера дисплеев (к примеру, kdm); второй способ - в использовании программы Xwrapper. xdm представляет собой даемона, который обрабатывает входы в систему в графическом режиме. Обычно он запускается во время загрузки и отвечает за аутентификацию пользователей и запуск их сеансов; практически это графический аналог программ &man.getty.8; и &man.login.1;. Более подробная информация о xdm находится в документации по XFree86 и в соответствующем разделе FAQ. Xwrapper является оболочкой для X-сервера; это маленькая утилита. позволяющая кому-либо запускать X-сервер и достаточно безопасная в использовании. Она выполняет некоторую проверку передаваемых ей в командной строке аргументов, и если все в порядке, запускает соответствующий X-сервер. Если по каким-либо причинам вы не хотите запускать менеджер дисплеев, то эта утилита вам подойдет. Если у вас установлена полная коллекция портов, вы можете найти этот порт в каталоге /usr/ports/x11/wrapper. Моя мышь PS/2 в X работает неправильно. Вполне может быть, что ваша мышь и её драйвер рассинхронизировались. В версиях 2.2.5 и более ранних это может произойти при переключении из X в виртуальный терминал и последующем возвращении в X. Если эта проблема возникает достаточно часто, попробуйте добавить следующую строку в файл конфигурации ядра и перекомпилировать его. options PSM_CHECKSYNC Если у вас нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу. С этой опцией проблем с синхронизацией мыши и её драйвера должно быть меньше. Если, однако, эта проблема всё же осталась, щёлкните любой кнопкой мыши, не двигая ей, что заставит мышь и драйвер сделать попытку синхронизироваться. Заметьте, что в некоторых системах эта опция может не работать и приводить к отключению функции tap устройства ALPS GlidePoint, подключенного к порту мыши PS/2. В версиях 2.2.6 и выше, проверка синхронизации сделана гораздо лучше и включена в стандартный драйвер мыши PS/2. Она должна работать даже с GlidePort. (Так как код проверки стал стандартной функцией, опция PSM_CHECKSYNC в этих версиях недоступна.) Однако в редких случаях драйвер может ошибочно обнаруживать проблемы с синхронизацией, и вы будете видеть такие сообщения ядра: psmintr: out of sync (xxxx != yyyy) а также обнаружите, что мышь теперь работает неправильно. Если это случится, отмените проверку согласования, установив значение флага для драйвера мыши PS/2 в 0x100. Войдите в конфигуратор UserConfig, задав опцию в приглашении загрузчика: boot: -c Затем в командной строке UserConfig наберите: UserConfig> flags psm0 0x100 UserConfig> quit Моя мышь PS/2 от MouseSystems похоже, не работает. Было несколько сообщений, что некоторые модели мышей PS/2 от MouseSystems работают только в режиме высокого разрешения. В других режимах курсор мыши постоянно прыгает в верхний левый угол экрана. К сожалению, для версий 2.0.X и 2.1.X решения этой проблемы не существует. Для версий от 2.2 до 2.2.5 приложите следующий патч к файлу /sys/i386/isa/psm.c и перестройте ядро. Если у вас нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу. @@ -766,6 +766,8 @@ if (verbose >= 2) log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n", unit, i); + set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH); + #if 0 set_mouse_scaling(sc->kbdc); /* 1:1 scaling */ set_mouse_mode(sc->kbdc); /* stream mode */ Для версий 2.2.6 и выше укажите флаг 0x04 драйверу мыши PS/2 для перевода её в режим высокого разрешения. Войдите в UserConfig, задав опцию в приглашении загрузчика: boot: -c Затем в командной строке UserConfig наберите: UserConfig> flags psm0 0x04 UserConfig> quit В предыдущем разделе описана возможная причина проблем с мышью. При компиляции приложений для X программа imake не может найти файл Imake.tmpl. Где он находится? Файл Imake.tmpl является частью пакета Imake, стандартного инструмента для построения X-приложений. Он, также как ещё несколько заголовочных файлов, требуемых для построения X-приложений, содержится в дистрибутиве программ X. Вы можете их проинсталлировать из &man.sysinstall.8; или взять из дистрибутива X. Как поменять местами кнопки мыши? Поместите команду xmodmap -e "pointer = 3 2 1" в один из ваших скриптов .xinitrc или .xsession. Как установить экранную заставку и где такие заставки можно найти? Перед самым выпуском релиза FreeBSD 3.1 в систему была добавлена возможность вывода заставки во время загрузки. На данный момент экраны заставок должны быть 256-цветными файлами формата BMP *.BMP или ZSoft PCX (*.PCX). Кроме того, они должны иметь разрешение 320x200 или меньше для работы со стандартными адаптерами VGA. Если вы включили поддержку VESA при компиляции ядра, то вы можете использовать экраны размером до 1024x768. Заметьте, что поддержка VESA требует указание опции VM86 при компиляции ядра. Реальная поддержка VESA может быть вкомпилирована в ядро при указании опции VESA либо загружена в виде kld-модуля ядра во время начальной загрузки. Чтобы использовать заставку, вам нужно изменить файлы, управляющие процессом загрузки FreeBSD. Формат этих файлов был изменён перед выпуском релиза FreeBSD 3.2, так что есть два способа загрузки экранных заставок: FreeBSD 3.1 Первым делом нужно найти экранную заставку в формате BMP. Релиз 3.1 поддерживает заставки только в формате Windows. После того, как вы нашли понравившуюся вам заставку, скопируйте её в файл /boot/splash.bmp. Затем вам нужно поместить в файл /boot/loader.rc следующие строки: load kernel load -t splash_image_data /boot/splash.bmp load splash_bmp autoboot FreeBSD 3.2+ Кроме поддержки заставок в формате PCX, FreeBSD 3.2 включает более гибкую систему конфигурации процесса загрузки. Если вы хотите, вы можете использовать метод, указанный выше для FreeBSD 3.1. Если же вы хотите использовать формат PCX, замените splash_bmp на splash_pcx. С другой стороны, если вы хотите использовать новую систему конфигурации процесса загрузки, вам нужно создать файл /boot/loader.rc, содержащий следующие строки: include /boot/loader.4th start и файл /boot/loader.conf со строками: splash_bmp_load="YES" bitmap_load="YES" Здесь предполагается, что в качестве заставки вы используете файл /boot/splash.bmp. Если вы используете PCX-файл, скопируйте его под именем /boot/splash.pcx, создайте файл /boot/loader.rc, как указано выше, и создайте файл /boot/loader.conf, который содержит следующее: splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" Теперь всё, что вам нужно - это сама заставка. Поищите заставки в галерее по адресу http://www.baldwin.cx/splash/. Можно ли в X использовать клавиши Windows(tm), которые есть на клавиатуре? Да. Всё, что вам нужно сделать, это с помощью &man.xmodmap.1; задать функции, которые вы хотите к этим клавишам привязать. Положим, что все клавиатуры Windows(tm) стандартны и 3 клавиши имеют следующие клавиатурные коды 115 - клавиша Windows(tm), между клавишами Ctrl и Alt с левой стороны 116 - клавиша Windows(tm), справа от клавиши Alt-Gr 117 - клавиша вызова меню, слева от клавиши Ctrl, находящейся справа Чтобы заставить левую клавишу Windows(tm) набирать запятую, попробуйте выполнить такую команду: &prompt.root; xmodmap -e "keycode 115 = comma" Чтобы увидеть результат, вам нужно будет перезапустить ваш оконный менеджер. Для того, чтобы переопределения клавиш Windows(tm) выполнялось автоматически каждый раз при запуске X, можно поместить вызов команд xmodmap в ваш ~/.xinitrc либо, что предпочтительней, создать файл ~/.xmodmaprc и включить в него параметры для xmodmap, по одному на строку, и добавить строку xmodmap $HOME/.xmodmaprc в ваш ~/.xinitrc. Например, вы можете переопределить эти 3 клавиши так, чтобы они выполняли функции F13, F14 и F15 соответственно. Это позволит легко привязать их к полезным функциям в приложениях или вашем менеджере окон, как будет показано далее. Чтобы сделать это, поместите в файл ~/.xmodmaprc вот такие строки: keycode 115 = F13 keycode 116 = F14 keycode 117 = F15 Если, к примеру, вы используете fvwm2, то можете переопределить клавиши таким образом, что F13 сворачивает в иконку (или восстанавливает предыдущие размеры) окна, на которое указывает курсор, F14 перемещает окно с курсором на передний план или, если оно уже впереди, возвращает обратно, а F15 вызывает главное меню Рабочего места (Workplace) (приложение), даже если курсор находится не на рабочем столе, что бывает полезно, если нет ни одного видимого кусочка рабочего стола (к тому же логотип на клавише соответствует этой функции). Вот строки из ~/.fvwmrc, с помощью которых достигаются описанные выше функции: Key F13 FTIWS A Iconify Key F14 FTIWS A RaiseLower Key F15 A A Menu Workplace Nop Как заставить работать аппаратное ускорение 3D-графики для OpenGL? Наличие 3D-ускорения зависит от версии используемого вами XFree86 и типа графического адаптера. Если у вас адаптер NVIDIA, то обратите внимание на страницу FreeBSD NVIDIA Driver Initiative , на которой обсуждается 3D-ускорение для наборов микросхем NVIDIA при использовании XFree86-4. Относительно использования аппаратного ускорения в XFree86-4 с другими адаптерами, включая Matrox G200/G400, ATI Rage 128/Radeon, а также 3dfx Voodoo 3, 4, 5 и Banshee, дополнительную информацию можно почерпнуть на страничке XFree86-4 Direct Rendering on FreeBSD. Пользователи XFree86 версии 3.3 могут воспользоваться портом Utah-GLX, находящимся в graphics/utah-glx, для получения частичного ускорения OpenGL для наборов микросхем Matrox Gx00, ATI Rage Pro, SiS 6326, i810, Savage и старых адаптеров NVIDIA. Работа в сети Где можно найти информацию о бездисковой загрузке? Бездисковая загрузка означает, что машина с FreeBSD загружается по сети и читает необходимые файлы с сервера, а не со своего диска. Подробное описание есть в соответствующей главе Руководства. Может ли машина с FreeBSD использоваться как маршрутизатор? Стандарты Internet и опыт практической работы не позволяют нам в FreeBSD держать маршрутизацию пакетов включенной по умолчанию. Вы можете сделать это, изменив значение следующей переменной в файле &man.rc.conf.5; на YES: gateway_enable=YES # Set to YES if this host will be a gateway Этот параметр изменит значение &man.sysctl.8;-переменной net.inet.ip.forwarding на 1. Кроме того, в большинстве случаев вам будет необходимо запустить программу маршрутизации, для того, чтобы объявить о появлении нового маршрутизатора другим системам в вашей сети; FreeBSD поставляется со стандартной для BSD-систем программой маршрутизации &man.routed.8;, в более сложных ситуациях вы можете попробовать GaTeD (доступный по адресу http://www.gated.org с ftp.gated.Merit.EDU), который поддерживает FreeBSD начиная с версии 3_5Alpha7. Мы обязаны предупредить вас, что даже когда FreeBSD настроена таким образом, она не полностью соответствует стандартам Internet для маршрутизаторов, однако для обычной работы этого хватает. Можно ли подключить машину с Win95 к Internet с помощью FreeBSD? Как правило, те, кто задает такие вопросы, имеют дома два компьютера, один с FreeBSD, а другой с Win95; идея состоит в использовании FreeBSD для подключения к Internet, а затем осуществлять выход в Internet из Windows95 через FreeBSD. На самом деле это просто особый случай предыдущего вопроса. ... и ответ на него - да! Во FreeBSD 3.x, ppp режима пользователя имеет параметр . Если вы запустите ppp с параметром , установив в файле /etc/rc.conf gateway_enable в значение YES и правильно настроите машину с Windows, то всё должно прекрасно заработать. Более подробная информация о настройке может быть найдена в Подробном Учебнике по PPP Стива Симса (Steve Sims). Если вы используете ppp режима ядра, или у вас Ethernet-подключение к Internet, можно воспользоваться командой &man.natd.8;. Пожалуйста, обратитесь к разделу о natd этого FAQ. Почему не проходит компиляция последней версии BIND от ISC? Это - результат конфликта между файлом cdefs.h в дистрибутиве и тем, что поставляется с FreeBSD. Достаточно удалить файл compat/include/sys/cdefs.h. Поддерживает ли FreeBSD протоколы SLIP и PPP? Да. Обратитесь к страницам справочника по командам &man.slattach.8;, &man.sliplogin.8;, &man.ppp.8;, и &man.pppd.8;. &man.ppp.8; и &man.pppd.8; могут обслуживать как входящие, так и исходящие соединения, когда как &man.sliplogin.8; имеет дело исключительно со входящими соединениям, а &man.slattach.8; - только с исходящими. Более подробная информация об их использовании находится в разделе Руководства о протоколах PPP и SLIP. Если вы имеете доступ в Internet только через командную строку оболочки, вам может подойти slirp. С его помощью можно получить (ограниченный) доступ к таким службам, как FTP и http прямо с вашей машины. Поддерживает ли FreeBSD NAT или Masquerading? Если у вас есть локальная сеть (одна или больше машин), но только один IP адрес, предоставленный провайдером, вас может привлечь &man.natd.8;. natd позволяет подключить всю сеть к Internet, используя единственный IP адрес. Программа &man.ppp.8; имеет похожую встроенную возможность через параметр . В обоих случаях используется библиотека alias (посмотрите справку по &man.libalias.3;). Как я могу соеденить две FreeBSD системы с помощью параллельного соеденения используя PLIP? Для этого нужен соединительный шнур типа laplink и на обеих машинах должна быть включена поддержка драйвера lpt. &prompt.root; dmesg | grep lp lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven lp0: TCP/IP capable interface Подключите кабель laplink к параллельным портам компьютеров. Настройте параметры сетевого интерфейса lp0 на обеих машинах, войдя администратором. Например, если вы хотите соединить хосты с именами max и moritz max <-----> moritz IP Address 10.0.0.1 10.0.0.2 на машине max дайте команду &prompt.root; ifconfig lp0 10.0.0.1 10.0.0.2 на машине moritz запустите &prompt.root; ifconfig lp0 10.0.0.2 10.0.0.1 Это всё! Пожалуйста, прочтите ещё страницы Справочника &man.lp.4; и &man.lpt.4;. Вы также должны добавить эти хосты в файл /etc/hosts. 127.0.0.1 localhost.my.domain localhost 10.0.0.1 max.my.domain max 10.0.0.2 moritz.my.domain Для проверки работоспособности связи выполните следующие действия: на машине max: &prompt.root; ifconfig lp0 lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 &prompt.root; netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire moritz max UH 4 127592 lp0 &prompt.root; ping -c 4 moritz PING moritz (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- moritz ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms Не могу создать устройство /dev/ed0! В стандарте сетевого взаимодействия Беркли сетевые интерфейсы напрямую доступны только ядру. За дополнительной информацией обратитесь к файлу /etc/rc.network и страницам справочника, описывающим различные сетевые программы, упоминаемые здесь. Если всё это оставит вас в недоумении, почитайте книгу, описывающую администрирование сети в другой BSD-подобной операционной системе; с некоторыми незначительными исключениями, администрирование сети во FreeBSD в основном совпадает с SunOS 4.0 и Ultrix. Как настроить алиас на Ethernet? Добавьте netmask 0xffffffff в командной строке &man.ifconfig.8; так, как это сделано здесь: &prompt.root; ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff Как заставить адаптер 3C503 использовать другой тип сетевого разъёма? Если вы хотите задействовать другой разъём, то должны указать дополнительный параметр при вызове команды &man.ifconfig.8;. Разъёмом по умолчанию является link0. Чтобы задействовать разъём AUI, а не BNC, используйте link2. Эти флаги должны быть указаны с помощью переменных ifconfig_* в файле /etc/rc.conf (посмотрите справку по &man.rc.conf.5;). У меня проблемы при работе NFS во FreeBSD. Некоторые сетевые адаптеры работают (мягко говоря) хуже, чем другие что может иногда вызывать проблемы при работе приложений типа NFS, интенсивно использующих сеть. Подробности описаны в соответствующей главе Руководства, посвящённой NFS. Почему я не могу смонтировать диск Linux по NFS? Некоторые версии NFS для Linux поддерживают запросы на монтирование только с привилегированного порта; попробуйте &prompt.root; mount -o -P linuxbox:/blah /mnt Почему я не могу смонтировать диск Sun по NFS? Рабочие станции Sun под управлением SunOS 4.X поддерживают запросы на монтирование только с привилегированного порта; попробуйте &prompt.root; mount -o -P sunbox:/blah /mnt Почему mountd продолжает выдавать сообщения can't change attributes и bad exports list на моем сервере NFS, работающем под управлением FreeBSD? В большинстве случаев проблема заключается в недостаточном понимании следующей фразы из справочной страницы по &man.exports.5;
Каждая строка файла (отличная от строк комментариев, начинающихся символом #) описывает точку (точки) монтирования и флаги экспорта внутри одной локальной файловой системы сервера для одного или большего количества хостов. Для каждой локальной файловой системы сервер хост может быть указан только один раз, и для каждой файловой системы сервера может быть только одна используемая по умолчанию строка, которая используется при работе со всеми другими хостами.
Наглядно это можно продемонстрировать на примере часто встречающейся ошибки. Если все, находящееся выше /usr, является частью одной файловой системы (то есть нет точек монтирования выше /usr), то следующий список экспортирования будет неправильным: /usr/src client /usr/ports client Здесь имееются две строки, описывающие свойства одной файловой системы, /usr, экспортируемой некоторому хосту с именем client. Правильный формат таков: /usr/src /usr/ports client Если перефразировать утверждение со страниц Справочника, то свойства одной файловой системы, экспортируемой некоторому хосту (экспортирование для всех интерпретируется как некий уникальный хост), должны быть описаны в одной строке. Да, при этом возникают ограничения на то, как вы можете экспортировать файловые системы, но для большинства людей проблем это не вызывает. Ниже дается пример правильно составленного списка экпортирования, где /usr и /exports являются локальными файловыми системами: # Экспортировать src и ports для client01 и client02, но только # client01 имеет на них права администратора /usr/src /usr/ports -maproot=0 client01 /usr/src /usr/ports client02 # "Клиентские" машины имеют корень и могут выполнять монтирование # где угодно выше каталога. # Все остальные могут монтировать /exports/obj только для чтения /exports -alldirs -maproot=0 client01 client02 /exports/obj -ro
Проблемы при связи по PPP с машинами NeXTStep. Попробуйте отменить все расширения TCP в файле /etc/rc.conf (посмотрите справку по &man.rc.conf.5;), изменив значение следующей переменной в NO: tcp_extensions=NO Маршрутизаторы Annex фирмы Xylogic не работают по этой же причине, поэтому при подключении к ним вам нужно проделать то же самое. Как включить поддержку multicast IP? Работа с многоадресной рассылкой по умолчанию полностью поддерживается версиями FreeBSD 2.0 и выше. Если вы хотите использовать ваш компьютер как маршрутизатор многоадресного трафика, вам нужно перекомпилировать ядро с включенной опцией MROUTING и запустить &man.mrouted.8;. Версии FreeBSD 2.2 и выше будут запускать &man.mrouted.8; во время загрузки, если переменная mrouted_enable в файле /etc/rc.conf установлена в значение YES. Приложения MBONE находятся в собственной категории портов, mbone. Если вы ищете приложения для организации конференций vic и vat, посмотрите там! Какие сетевые адаптеры сделаны на наборе микросхем DEC PCI? Вот список, составленный Гленом Фостером (Glen Foster) gfoster@driver.nsta.org, с некоторыми незначительными добавлениями: Сетевые карты созданые на основе наборе микросхем DEC PCI Производитель Модель ASUS PCI-L101-TB Accton ENI1203 Cogent EM960PCI Compex ENET32-PCI D-Link DE-530 Dayna DP1203, DP2100 DEC DE435, DE450 Danpex EN-9400P3 JCIS Condor JC1260 Linksys EtherPCI Mylex LNP101 SMC EtherPower 10/100 (Модель 9332) SMC EtherPower (Модель 8432) TopWare TE-3500P Znyx (2.2.x) ZX312, ZX314, ZX342, ZX345, ZX346, ZX348 Znyx (3.x) ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd)
Почему я должен использовать FQDN для хостов не в моей сети? Вы, наверное, обнаружили, что хост, к которому вы обратились, оказался на самом деле в другом домене; например, если вы находитесь в домене foo.example.org и хотите обратиться к хосту mumble в домене example.org, то должны указать его полное доменное имя, mumble.example.org, а не просто mumble. Традиционно, это позволял делать ресолвер BSD BIND. Однако текущая версия bind (посмотрите справку по &man.named.8;), поставляемая с FreeBSD, больше не добавляет имена доменов, отличающихся от того, в котором вы находитесь, для не полностью указанных имён хостов. Так что неполно указанный хост mumble будет найден либо как mumble.foo.example.org, либо будет искаться в корневом домене. Это отличается от предыдущего поведения, при котором поиск продолжался в mumble.example.org и mumble.edu. Посмотрите RFC 1535 о причинах объявления такого поведения плохой практикой и даже ошибкой в безопасности. Как хорошее решение, вы можете поместить строку search foo.example.org example.org вместо ранее используемой domain foo.example.org в файл /etc/resolv.conf (посмотрите справку по &man.resolv.conf.5;). Однако удостоверьтесь, что порядок поиска не нарушает границ полномочий между местным и внешним администрированием, как это названо в RFC 1535. Permission denied для любых действий, связанных с работой сети. Если вы компилировали ядро с опцией IPFIREWALL, имейте в виду, что политика по умолчанию настроена как в 2.1.7R (она на самом деле изменилась во время разработки 2.1-STABLE), то есть указан запрет на прохождение всех пакетов, которые явно не разрешены. Если вы случайно неверно отконфигурировали межсетевой экран, то для восстановления работоспособность сети дайте такую команду, войдя суперпользователем: &prompt.root; ipfw add 65534 allow all from any to any Также вы можете установить firewall_type='open' в файле /etc/rc.conf. Более подробная информация о конфигурировании межсетевого экрана в FreeBSD находится в соответствующем разделе Руководства. Какую нагрузку вызывает использование IPFW? Ответ на этот вопрос зависит главным образом от набора правил и производительности процессора. Для большинства приложений, имеющих дело с Ethernet и простым набором правил, ответ: незначительно. Для тех, кому нужны реальные цифры для удовлетворения любопытства, читайте дальше. Следующие измерения были сделаны с использованием 2.2.5-STABLE на машине 486-66. IPFW был модифицирован для измерения времени, затрачиваемого внутри процедуры ip_fw_chk и вывода результатов на консоль каждую тысячу пакетов. Тестировались два набора по 1000 правил в каждом. Первый набор был предназначен для демонстрации наихудшего случая, повторяя условие &prompt.root; ipfw add deny tcp from any to any 55555 Это наихудший случай, так как все условия IPFW будут проверены перед тем, как будет принято окончательное решение о том, что пакет не соответствует условию (мы меняли номер порта). После 999 повторений этого условия находилось правило allow ip from any to any. Второй набор был предназначен для быстрого прерывания процесса проверки условий: &prompt.root; ipfw add deny ip from 1.2.3.4 to 1.2.3.4 Неподходящий IP-адрес источника для указанного условия быстро вызывает пропуск этого правила. Как и ранее, последним правилом было allow ip from any to any. Затраты на обработку пакета в первом случае было примерно 2.703 мс/пакет, или примерно 2.7 микросекунд на правило. Таким образом, теоретический предел скорости обработки пакетов с этими правилами равен примерно 370 пакетам в секунду. Предполагая использование Ethernet 10Мб/с с размером пакета примерно 1500, мы можем достигнуть только 55.5% использования пропускной способности. В последнем случае на обработку каждого пакета было затрачено примерно 1.172мс, или около 1.2 микросекунд на правило. Теоретический предел обработки будет равен около 853 пакетам в секунду, что почти соответствует скорости 10Мб/с Ethernet. Большое количество протестированных правил и природа этих правил не даёт представление о реальной жизни - они были использованы только для генерации информации о времени обработки. Вот несколько наблюдений, которые нужно иметь в виду для построении эффективного набора правил: Поместите правило `established' в самое начало списка для обработки основного трафика TCP. Не помещайте перед ним никаких правил allow tcp. Старайтесь помещать часто вызываемые правила как можно раньше, а редко используемые - позже (без изменения политики, конечно). Вы можете выяснить частоту использования правил с помощью вывода статистики командой ipfw -a l. Почему мое правило fwd для ipfw по перенаправлению сервиса на другую машину не работает? Возможно, потому что вы хотите выполнять трансляцию сетевых адресов (NAT), а не просто перенаправлять пакеты. Правило fwd делает точно то, что означает; оно перенавравляет пакеты. Данные внутри пакета оно не меняет. Пусть, скажем, у нас имеется правило такого вида: 01000 fwd 10.0.0.1 from any to foo 21 Когда пакет с адресом назначения foo достигает машины с этим правилом, то он перенаправляется на 10.0.0.1, но в нем остается адрес назначения foo! Адрес назначения пакета не меняется на 10.0.0.1. Большинство машин скорее всего отбросят полученный пакет, имеющий адрес назначения, им не соответствующий. Таким образом, правило fwd не часто работает так, как ожидает пользователь. Такое поведение является особенностью, а не ошибкой. Обратитесь к FAQ о перенаправлении сервисов, руководству по &man.natd.8; или одной из нескольких утилит для перенаправления в Коллекции Портов для того, чтобы сделать это правильно. Как можно перенаправить запросы с одной машины на другую? Вы можете перенаправить запрос на FTP (или другой сервис) с помощью пакаджа socket, доступного в дереве портов в категории sysutils. Просто замените командную строку запуска сервиса на вызов socket, типа: ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.example.com ftp где ftp.example.com и ftp являются соответственно хостом и портом для перенаправления. Где можно найти средства управления сетевым трафиком? Для FreeBSD имеются три средства управления трафиком. &man.dummynet.4;, интегрированный в систему FreeBSD (более точно, в &man.ipfw.4;); свободно распространяемый ALTQ и коммерческий продукт Bandwidth Manager от Emerging Technologies. BIND (named) работает на порту 53 и на одном из портов с большим номером. Что происходит? Во FreeBSD версий 3.0 и выше используется версия BIND, которая для исходящих запросов использует случайно выбираемый порт с большим номером. Если для исходящих запросов вы хотите использовать порт с номером 53 для работы за межсетевым экраном либо просто для собственного спокойствия, то можете попробовать настроить файл /etc/namedb/named.conf следующим образом: options { query-source address * port 53; }; Можете заменить символ * некоторым IP-адресом, если хотите настроить все еще жестче. Кстати, поздравляем. Прекрасно, что вы читаете вывод команды &man.sockstat.1; и обращаете внимание на аномалии! Sendmail ждёт соединений как на стандартном порту 25, так и на порту 587! Что происходит? Последние версии Sendmail поддерживают механизм посылки почты, который работает по порту 587. Эта возможность пока широко не используется, но ее популярность растет. Почему появляются сообщения /dev/bpf0: device not configured? Для работы программ, использующих Berkeley Packet Filter &man.bpf.4; необходимо включение в ядро соответствующего драйвера. Перекомпилируйте ядро, добавив в его конфигурационный файл следующую строку: pseudo-device bpf # Berkeley Packet Filter Затем, после перезапуска системы, вам нужно создать соответствующий файл устройства. Это можно сделать, сменив текущий каталог на /dev и выполнив команду &prompt.root; sh MAKEDEV bpf0 Обратитесь к разделу руководства, посвящённому созданию файлов устройств за подробной информацией по этому вопросу. Как смонтировать диск Windows-машины в моей локальной сети, как это делает smbmount в Linux? Используйте пакет SMBFS. В него включён набор изменений в ядре и пользовательские программы. Программы и информация доступны в виде порта net/smbfs из Коллекции Портов или как часть базовой системы в 4.5-RELEASE и более поздних версиях. Что значат эти сообщения icmp-response bandwidth limit 300/200 pps в моих журнальных файлах? Это ядро сообщает вам, что имела место некоторая активность, приводящая к посылке большего количества ответных пакетов ICMP или сбросов TCP (RST), чем, как предполагается, это следует делать. Ответы ICMP часто генерируются в результате попыток подключения к незанятым портам UDP. Сбросы TCP генерируются в результате попыток подключения к неоткрытым портам TCP. Кроме всяких прочих, такие сообщения могут быть вызваны следующими действиями: Лобовая атака типа отказ в обслуживании DoS (в отличие от атак в один пакет, которые используют конкретную брешь в защите). Сканирование портов в попытке осуществить подключение к большому количеству портов (в отличие от проб нескольких известных портов). Первое число в сообщении указывает вам, какое количество пакетов ядро посылало бы при отсутствии ограничений, а второе число указывает лимит. Вы можете управлять этим ограничением при помощи системной переменной net.inet.icmp.icmplim приводимым ниже способом, где 300 является ограничением на количество посылаемых пакетов в секунду: &prompt.root; sysctl -w net.inet.icmp.icmplim=300 Если вы не хотите видеть подобные сообщения в журнальных файлах, но хотите использовать это ограничение в ядре, то можете использовать системную переменную net.inet.icmp.icmplim_output для подавления вывода, как это показано здесь: &prompt.root; sysctl -w net.inet.icmp.icmplim_output=0 И наконец, если вы хотите выключить это ограничение, то можете установить значение системной переменной net.inet.icmp.icmplim (смотрите пример выше) равным 0. Выключение этого лимита не приветствуется по причинам, перечисленным выше. Что это за сообщения arp: unknown hardware address format? Это означает, что какое-то устройство в вашей локальной сети использует MAC-адрес в формате, не распознаваемом FreeBSD. Скорее всего, это происходит из-за того, что кто-то в сети эскспериментирует с сетевым адаптером. Чаще всего это происходит в сетях с кабельными модемами. Это безобидно и не должно влиять на производительность машины с FreeBSD.
PPP Не могу заставить работать ppp. Что я делаю не так? Первым делом прочтите страницы справочника, посвящённые &man.ppp.8;, а также соответствующий раздел Руководства. Включите протоколирование командой set log Phase Chat Connect Carrier lcp ipcp ccp command Эта команда может быть набрана в командной строке ppp или она может находиться в конфигурационном файле /etc/ppp/ppp.conf (начало секции default - лучшее для неё место. Удостоверьтесь, что файл /etc/syslog.conf (посмотрите справку по &man.syslog.conf.5;) содержит строки !ppp *.* /var/log/ppp.log и файл /var/log/ppp.log существует. Теперь вы сможете найти полную информацию о происходящем в файле протокола. Не беспокойтесь, если не всё вам будет там понятно. Если вы будете пользоваться чьей-то помощью, протокол вам пригодится. Если ваша версия ppp не понимает команду set log, вы должны скачать последнюю версию. Она рассчитана на FreeBSD версий 2.1.5 и выше. Ppp просто зависает, когда я его запускаю Обычно это происходит, когда не может быть определено имя вашего хоста. Наилучший способ исправить это - удостовериться, что файл /etc/hosts используется вашим ресолвером. Отредактируйте файл /etc/host.conf, поместив на первое место строчку hosts. Затем просто добавьте записи о вашей машине в файл /etc/hosts. Если у вас нет локальной сети, измените строку localhost: 127.0.0.1 foo.bar.com foo localhost В противном случае просто добавьте ещё одну запись о вашем хосте. Обратитесь к соответствующим страницам справочника за подробным описанием. Если вы выполнили эти указания, вы сможете успешно выполнить команду ping -c1 `hostname`. Ppp не звонит в режиме -auto Во-первых, проверьте, что у вас есть маршрут по умолчанию. Выполнив команду netstat -rn (посмотрите справку по &man.netstat.1;), вы должны увидеть две строки такого вида: 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 Здесь предполагается, что вы использовали адреса, приведённые в Руководстве, Справочнике или файле ppp.conf.sample. Если у вас нет маршрута по умолчанию, это может быть из-за использования старой версии &man.ppp.8;, которая не понимает слова HISADDR в файле ppp.conf. Если ваша версия ppp из FreeBSD версий ранее чем 2.2.5, замените строку add 0 0 HISADDR на add 0 0 10.0.0.2 Другая причина отсутствия маршрута по умолчанию может крыться в том, что вы ошибочно установили маршрут по умолчанию в вашем файле /etc/rc.conf (посмотрите справку по &man.rc.conf.5;) (этот файл назывался /etc/sysconfig до 2.2.2-RELEASE), и вы пропустили строку delete ALL в ppp.conf. В таком случае обратитесь к соответствующему разделу Руководства. Что означает сообщение No route to host? Эта ошибка появляется из-за отсутствующего раздела MYADDR: delete ALL add 0 0 HISADDR в файле /etc/ppp/ppp.linkup. Он необходим, если ваш IP адрес выделяется динамически или адрес маршрутизатора вам не известен. Если вы используете интерактивный режим, вы можете набрать следующие команды после входа в пакетный режим (пакетный режим идентифицируется заглавными буквами PPP в приглашении): delete ALL add 0 0 HISADDR Обратитесь к разделу PPP и динамические IP адреса Руководства за подробной информацией. Соединение разрывается через 3 минуты Таймаут для ppp по умолчанию равен 3 минутам. Это может быть изменено строкой set timeout NNN где NNN - время неактивности в секундах, после которого соединение закрывается. Если NNN равно нулю, соединение никогда не разрывается по таймауту. Эту команду можно поместить в файл ppp.conf или набрать ее в интерактивном режиме. Изменение этого параметра также возможно при активном соединении, если подключиться к сокету ppp сервера с помощью программ &man.telnet.1; или &man.pppctl.8;. Обратитесь к страницам Справочника, посвящённым &man.ppp.8;. Соединение разрывается при большой нагрузке Если у вас включен Link Quality Reporting (LQR), возможно, что слишком много пакетов LQR теряется в канале. Ppp делает вывод, что канал плох, и разрывает соединение. В FreeBSD до версии 2.2.5 LQR было включено по умолчанию. Сейчас оно по умолчанию выключено. LQR можно выключить строкой disable lqr Соединение разрывается в случайные промежутки времени Иногда, на шумной линии или даже на линии с включенным режимом ожидания звонка, ваш модем может вешать трубку, думая (совершенно напрасно), что потерял несущую. В большинстве модемов есть параметр, определяющий чувствительность к временной потере несущей. Например, в модеме USR Sportster, это определяется значением регистра S10 в десятых долях секунды. Чтобы сделать связь более устойчивой, добавьте следующую последовательность посылок-ожиданий в строку набора: set dial "...... ATS10=10 OK ......" Обратитесь к руководству по вашему модему. Соединение часто рвётся в случайные промежутки времени Многие сообщают об обрывах соединений без видимой причины. Первым делом нужно выяснить, с какой стороны соединения рвётся связь. Если вы используете внешний модем, можете просто попробовать использовать утилиту &man.ping.8; и посмотреть, мигает ли индикатор TD при передаче данных. Если он мигает (а индикатор RD нет), проблема с той стороны. Если индикатор TD не загорается, проблема с вашей стороны. При использовании внутреннего модема вам необходимо воспользоваться командой set server, указав её в файле ppp.conf. Когда произойдёт обрыв связи, подключитесь к ppp с помощью pppctl. Если ваше сетевое подключение неожиданно восстановится (ppp оживает при проявлении активности на диагностическом сокете) или или если вы не сможете соединиться (здесь мы полагаем, что команда set socket в начальный момент была выполнена успешно), то проблема имеет локальный характер. Если вы сможете подключиться, но связи всё равно нет, включите вывод отладочной информации командой set log local async и запустите ping из другого окна или терминала, чтобы проверить связь. В отладочном выводе будут показаны данные, передаваемые и получаемые из канала связи. Если данные посылаются, но не принимаются обратно, проблема с противоположной стороны. Выяснив, является эта проблема локальной или удалённой системы, вы имеете следующие возможности: Удалённая система не отвечает Здесь вы мало что можете сделать. Большинство провайдеров отказываются оказать помощь, если вы используете ОС не от Microsoft. Вы можете добавить команду enable lqr в ваш ppp.conf, что позволит ppp отследить ошибки в удалённой системе и закрывать соединение, однако такое обнаружение достаточно медленно и поэтому не так уж полезно. Вы можете также просто не сообщать своему провайдеру, что запускаете user-ppp.... Первым делом попробуйте отключить всю местную компрессию, указав в конфигурационном файле следующее: disable pred1 deflate deflate24 protocomp acfcomp shortseq vj deny pred1 deflate deflate24 protocomp acfcomp shortseq vj Теперь попробуйте установить соединение ещё раз и удостовериться, что ситуация не изменилась. Если качество соединения улучшилось или проблема оказалась полностью решённой, выясните, настройка чего приводила к проблемам методом проб и ошибок. Это даст вам дополнительную защиту, когда вы будете разговаривать с вашим провайдером (хотя при этом может обнаружиться, что вы работаете не с продуктом Microsoft). Перед тем, как звонить провайдеру, включите вывод отладочной информации, как вы это делали ранее и подождите, пока соединение снова не прервётся. Правда, для этого требуется некоторое дисковое пространство. Интерес могут представлять последние прочитанные из порта данные. Обычно это данные в формате ascii и они могут даже содержать описание проблемы (Memory fault, core dumped ?). Если ваш провайдер согласен помочь вам, нужно будет включить режим отладки с их стороны, а потом, когда связь прервётся в следующий раз, они могут сказать вам, почему возникли проблемы с их стороны. Будет хорошо, если вы пришлёте детальное описание на адрес &a.brian;, или даже попросите провайдера связаться со мной напрямую. Ppp зависает Лучше всего в этом случае перекомпилировать ppp, добавив параметры CFLAGS+=-g и STRIP= в конец Makefile, а затем выполнить команду make clean && make && make install. Когда ppp зависнет, найдите идентификатор процесса ppp с помощью команды ps ajxww | fgrep ppp и выполните команду gdb ppp PID. Затем в приглашении gdb вы можете использовать команду bt для получения стека вызовов. Пошлите результат на адрес brian@Awfulhak.org. Ничего не происходит после сообщения Login OK! До версии FreeBSD 2.2.5, как только связь устанавливалась, &man.ppp.8; ожидал начала согласования Line Control Protocol (LCP) с противоположной стороны. Многие провайдеры Internet не начинают согласования и предполагают, что это сделает клиент. Чтобы заставить ppp инициировать согласование параметров LCP, используйте следующую строку: set openmode active Ничего страшного не произойдёт, если согласование начнут обе стороны, поэтому режим инициирования сейчас по умолчанию активный. Однако, в следующем разделе описывается ситуация, когда это приводит к некоторым неприятностям. В протоколе есть сообщения о том, что magic being the same. Иногда, сразу же после установления соединения, вы можете увидеть сообщения в протоколе, говорящие что magic is the same. Иногда эти сообщения проходят безболезненно, а иногда одна из сторон прекращает работу. Большинство реализаций ppp не может справиться с такой ситуацией, и, даже когда связь выглядит установившейся, вы будете видеть только бесконечно повторяющиеся конфигурационные запросы и подтверждения в файле протокола до тех пор, пока ppp окончательно не закроет соединение. Обычно это происходит на серверах с медленными дисками, на которых порт обслуживает программа getty, а ppp выполняется из сценария регистрации или другой программы после регистрации пользователя. Были сообщения, что такое случается постоянно при использовании slirp. Причина заключается в том, что во время, проходящее между завершением работы getty и запуском ppp, ppp со стороны клиента начинает посылать пакеты Line Control Protocol (LCP). Так как режим эха остаётся всё ещё включенным, ppp клиента получает отражения своих запросов. Частью процесса согласования параметров LCP является определение магического числа для каждой стороны соединения для обнаружения отражений. Согласно спецификации, когда одна сторона пытается использовать совпадающее "магическое" число, должен быть послан ответ NAK и должно быть выбрано новое "магическое" число. В тот момент, когда на порту сервера включен режим эха, клиент ppp посылает пакеты LCP, получает то же самое "магическое" число в отражённом пакете и отвечает на него NAK. Он также видит отражённый NAK (который также означает, что ppp должен изменить своё "магическое" число). В потенциале это может вызвать появление огромного количества процессов смен "магических" чисел, и все они накапливаются в буфере терминала. Как только запустится сервер ppp, он будет перегружен запросами на смену "магических", немедленно решит, что этого много для согласования LCP и прервёт соединение. В то же самое время, клиент, который больше не видит отражений, останавливается для того, чтобы увидеть, что сервер закрыл соединеие. Этого можно избежать, позволив начинать согласование противоположной стороне следующей строкой в файле ppp.conf: set openmode passive Это заставит ppp ожидать начала согласования LCP. Некоторые серверы, однако, могут никогда не начать согласование. Если это тот самый случай, вы можете сделать следующее: set openmode active 3 Это заставит ppp пассивно ждать 3 секунды, и только затем посылать запросы LCP. Если противоположная сторона начнёт посылать в этот момент запросы, ppp немедленно ответит, не ожидая истечения трёхсекундного интервала. Согласование LCP продолжается, пока не закроется соединение В настоящий момент одной из неприятных особенностей реализации ppp является то, что она не связывает сообщения LCP, CCP & IPCP с запросами. Как результат, если реализация ppp с одной стороны более чем на 6 секунд медленнее, чем с другой, противоположная сторона будет посылать два дополнительных запроса на согласование параметров LCP. Это фатально. Предположим, что у нас работают две реализации, на машинах A и B. A начинает посылать запросы LCP сразу же после соединения, а B требуется 7 секунд для запуска. Когда B запускается, A послало 3 LCP-запроса. Полагаем, что режим эха выключен, в противном случае мы столкнулись бы с проблемами "магического" числа, описанными в предыдущем разделе. B посылает REQ, затем ACK на первый REQ от A. Это приводит к тому, что A входит в состояние OPENED и посылает (первый) ACK обратно B. В то же самое время B посылает обратно ещё два ACK в ответ на два дополнительных REQ, посланные A до старта B. B затем получает первый ACK от A и возвращается в состояние REQ-SENT, послав ещё один (четвёртый) REQ согласно RFC. Затем он получает третий ACK и входит в состояние OPENED. В это же время B принимает четвёртый REQ от A, что возвращает его в состояние ACK-SENT и посылает ещё один (второй) REQ и (четвёртый) ACK согласно RFC. A получает REQ, переходит в состояние REQ-SENT и посылает ещё один REQ. Он немедленно принимает последующий ACK и входит в состояние OPENED. Это будет продолжаться до тех пор, пока одна из сторон не обнаружит, что это ни к чему не приводит и не закроет соединение. Лучшим способом избежать этой ситуации является конфигурация одной из сторон как passive, чтобы она ждала другую для начала согласования. Это можно сделать командой set openmode passive С этой командой нужно быть осторожным. Вы также должны будете использовать команду set stopped N для ограничения периода ожидания, в течении которого ppp ждёт начала согласования с противоположной стороны. Как вариант, может быть использована строка set openmode active N (где N - период ожидания в секундах перед тем, как начать согласование). Вскоре после соединения ppp блокируется В версиях FreeBSD ранее 2.2.5, была возможна ситуация, когда связь выключалась очень скоро после соединения из-за некорректной обработки запроса на согласования сжатия данных ppp. Это случалось, когда обе стороны пытались установить разные типы CCP (Compression Control Protocol). Эта проблема сейчас решена, но если вы всё ещё используете старую версию ppp, проблема может быть обойдена с помощью строки disable pred1 Когда я выполняю команду shell для тестирования соединения, ppp блокируется Когда вы выполняете команду shell или !, ppp запускает оболочку (если были заданы параметры, ppp их использует). Ppp будет ждать окончания выполнения команды, прежде чем продолжить. Если вы попытаетесь воспользоваться связью ppp после запуска команды, связь будет выглядеть заблокированной. Это происходит из-за того, что ppp ждёт завершения выполнения запущенной команды. Если вам необходимо выполнять подобные команды, используйте команду !bg. В этом случае нужная команда будет выполняться в фоновом режиме, а ppp сможет продолжить обслуживание канала связи. Ppp, обслуживающее нуль-модем, никогда не закрывается ppp не может определить, что соединение было закрыто. Это происходит из-за метода использования сигнальных линий нуль-модемного кабеля. При использовании такого типа соединения всегда включайте LQR. enable lqr По умолчанию LQR включается, если это было затребовано с противоположной стороны на этапе согласования параметров соединения. В режиме -auto ppp неожиданно начинает звонить Если ppp начинает неожиданно звонить, вы должны определить причину и задать фильтры dfilters для предотвращения подобных звонков. Для выяснения причины такого поведения, используйте строку: set log +tcp/ip Это включит протоколирование всего трафика через соединение. В следующий раз, когда неожиданно будет установлено соединение, вы установите причину по временным отметкам в файле протокола. После этого вы можете запретить дозвонку при выясненных условиях. Как правило, такие проблемы возникают из-за обращений к DNS. Для предотвращения обращений к DNS и установления соединения (что не запретит ppp пропускать пакеты через уже установленное соединение), используйте такую комбинацию: set dfilter 1 deny udp src eq 53 set dfilter 2 deny udp dst eq 53 set dfilter 3 permit 0/0 0/0 Это может вам не подойти, так как закроет возможность дозвонки по запросу - большинству программ нужно обратиться к DNS до того, как начать работать. В случае DNS, вы должны попытаться определить, кто пытается определить имя хоста. В большинстве случаев виновным оказывается &man.sendmail.8;. Удостоверьтесь, что вы указали программе sendmail не осуществлять обращений к DNS в его конфигурационном файле. Обратитесь к разделу о настройке почты за подробным описанием создания конфигурационного файла и что туда нужно поместить. Вам может понадобиться добавить в файл .mc строку: define(`confDELIVERY_MODE', `d')dnl Это заставит sendmail ставить все сообщения в очередь до тех пор, пока не будет запущена её обработка (как правило, sendmail запускается с параметрами , указывающими, что обрабатывать очередь нужно каждые 30 минут) или до тех пор, пока не будет выполнена команда sendmail -q (может быть, из файла ppp.linkup). Что означают ошибки CCP В файле протокола появляются такие сообщения об ошибках: CCP: CcpSendConfigReq CCP: Received Terminate Ack (1) state = Req-Sent (6) Это происходит, если ppp пытается установить компрессию типа Predictor1, а противоположная сторона не хочет устанавливать никакой компрессии. Эти сообщения безобидны, но если вы хотите от них избавиться, вы можете запретить компрессию Predictor1 и у себя тоже: disable pred1 Ppp блокируется во время передачи файла с ошибками ввода-вывода В FreeBSD 2.2.2 и ранее существовала ошибка в драйвере устройства tun, которая не позволяла проходить пакетам размером, превышающим значение MTU интерфейса. Приём пакета, большего, чем размер MTU, приводит к ошибке ввода-вывода, который протоколируется через syslogd. Спецификация протокола ppp утверждает, что MRU, равное 1500, должно всегда подходить как минимальное, несмотря на согласование LCP, таким образом, если сделать MTU меньше 1500, ваш провайдер может начать передавать пакеты размером 1500, несмотря ни на что, и вы это почувствуете - ваше соединение заблокируется. Проблема может быть обойдена, если никогда не ставить MTU, меньшее, чем 1500, для FreeBSD 2.2.2 и ранее. Почему ppp не протоколирует скорость соединения? Для вывода протокола взаимодействия с модемом вам нужно включить следующее: set log +connect Это заставит &man.ppp.8; протоколировать всё, вплоть до последней прочтённой через expect строки. Если вы хотите видеть скорость соединения и используете PAP или CHAP (и поэтому вам не нужно определять никаких сценариев входа через set login после получения строки CONNECT сценарием дозвонки dial), вы должны указать ppp, что нужно ожидать полную строку CONNECT, вроде следующего: set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \ \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n" Здесь мы получили строку CONNECT, ничего не посылаем, затем ожидаем символа перевода строки, заставляя ppp принять полный ответ модема. Ppp игнорирует символ \ в chat-скрипте Ppp обрабатывает каждую строку в ваших конфигурационных файлах, так что он может проинтерпретировать строку вида set phone "123 456 789" правильно (и обнаружить. что номер является на самом деле единственным аргументом. Для того, чтобы указать символ ", вы должны экранировать его символом обратного слэша (\). Когда интерпретатор chat обрабатывает каждую строку, он ещё раз просматривает аргумент для того, чтобы найти какую-либо специальную последовательность типа \P или \T (обратитесь к Справочнику). В результате этой двойной интерпретации вы должны всегда использовать правильное число экранирующих символов. Если вам нужно передать символ \, например, вашему модему, вам необходимо указать что-то типа: set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK" что приведёт к такой последовательности: ATZ OK AT\X OK или set phone 1234567 set dial "\"\" ATZ OK ATDT\\T" что даст такую последовательность: ATZ OK ATDT1234567 Ppp получает ошибку защиты, но я не вижу файла ppp.core Ppp (или любая другая программа такого рода) никогда не создаёт файлов дампа памяти. Так так ppp запускается с эффективным uid, равным 0, то операционная система не будет записывать дамп памяти ppp на диск перед его завершением. Если, однако ppp всё же прекратит работу из-за нарушения защиты, или по другому сигналу, который вызывает создание дампа памяти, и вы уверены, что используете самую последнюю версию (смотрите самое начало раздела), то вы должны сделать следующее: &prompt.user; tar xfz ppp-*.src.tar.gz &prompt.user; cd ppp*/ppp &prompt.user; echo STRIP= >>Makefile &prompt.user; echo CFLAGS+=-g >>Makefile &prompt.user; make clean all &prompt.user; su &prompt.root; make install &prompt.root; chmod 555 /usr/sbin/ppp Теперь у вас есть отладочная версия ppp. Вам нужно стать суперпользователем для запуска ppp, так как соответствующие биты прав были убраны. Когда запустите ppp, обратите особое внимание на то, какой каталог у вас был текущим на этот момент. Итак, если ppp получит ошибку нарушения защиты, он сбросит дамп памяти с именем ppp.core. Затем вам нужно сделать следующее: &prompt.user; su &prompt.root; gdb /usr/sbin/ppp ppp.core (gdb) bt ..... (gdb) f 0 .... (gdb) i args .... (gdb) l ..... Вся эта информация должна быть предоставлена вместе с вашим вопросом, чтобы проблему можно было продиагностировать. Если вы умеете обращаться с gdb, вы можете попробовать найти причины образования дампа, а также адреса и значения относящихся к этому переменных. Процесс, вызвавший прозвонку в режиме auto, никогда не получает затребованного соединения Эта проблема проявлялась, когда ppp в режиме auto был настроен на динамическое согласование локального IP-адреса с противоположной стороной. Это исправлено в последней версии - поищите на странице справочника слово iface. Причиной было то, что когда эта программа использует системный вызов &man.connect.2;, для сокета назначается IP-адрес tun-интерфейса. Ядро создаёт первый исходящий пакет и записывает его в устройство tun. Затем ppp читает пакет и устанавливает соединение. Если в результате согласования ppp динамического IP-адреса адрес интерфейса изменется, сокет будет работать некорректно. Любые IP-пакеты, передаваемые через сокет, будут отброшены. Если даже этого не произойдёт, ответные данные не будут достигать отправителя, так как этот адрес больше ему не принадлежит. Теоретически есть несколько способов решить эту проблему. Лучше всего, если противоположная сторона назначит интерфейсу тот же самый IP-адрес :-) Текущая версия ppp именно так и поступает, более ранние реализации этого не делали. Самым простым решением будет просто никогда не менять IP-адрес tun-интерфейса, а вместо этого изменять на лету все исходящие пакеты так, чтобы IP-адрес источника менялся с IP-адреса интерфейса на соответствующий с противоположной стороны. Это, в сущности, то же самое, что делает опция iface-alias в последней версии ppp (с помощью библиотеки &man.libalias.3; и ключа для ppp) - она отслеживает все назначенные ранее интерфейсу адреса и замещает их на последний из назначенных. Другой возможный (и, наверное, самый надёжный) способ - это создать системный вызов, меняющий IP-адреса всем уже связанным сокетам. ppp использовал бы этот вызов для модификации сокетов всех работающих программ после согласования нового IP-адреса. Этот же самый системный вызов могли бы использовать клиенты DHCP, когда они осуществляют повторную привязку к сокету. Ещё одной возможностью является разрешение интерфейсу становиться активным без IP-адреса. Исходящим пакетам будет даваться IP адрес 255.255.255.255 до тех пор, пока не будет дан ioctl-запрос SIOCAIFADDR. приводящий к полной привязке сокета. Ppp нужно будет изменять IP-адрес источника и контрольную сумму пакета, только если он установлен в 255.255.255.255. Это, однако, является некоторым хаком, так как ядро будет посылать некорректные пакеты на не полностью сконфигурированный интерфейс, в предположении, что существует механизм исправления этих пакетов. Почему большинство игр не работает с опцией -nat? Причиной, по которой игры и подобные программы не работают с библиотекой libalias заключается в том, что внешняя машина будет пытаться открыть соединение или посылать (нежданные) UDP пакеты на машину внутренней сети. Программное обеспечение, обеспечивающее опцию -nat, не знает о том, что она должна пересылать эти пакеты машине внутренней сети. Чтобы это всё же заработало, удостоверьтесь, что единственной запущенной программой является программное обеспечение, с которым вы испытываете проблемы, затем напустите tcpdump на tun-интерфейс маршрутизатора либо включите протоколирование tcp/ip в ppp (set log +tcp/ip) на маршрутизаторе. Когда вы запустите некорректно работающее программное обеспечение, вы должны увидеть пакеты, проходящие через маршрутизатор. Когда что-то начнёт приходить извне, оно будет отброшено (в этом-то и проблема). Заметьте номер порта получателя этих пакетов, затем завершите работу вашего программного обеспечения. Выполните эту процедуру несколько раз для того, чтобы убедиться, что номер порта постоянен. Если это так, то следующая строчка в соответствующем разделе /etc/ppp/ppp.conf заставит программное обеспечение функционировать нормально: nat port proto internalmachine:port port Здесь proto - это tcp либо udp, internalmachine - это машина, которой вы хотите перенаправлять пакеты, и port - это номер порта получателя пакетов. Несомненно, вы не сможете использовать программное обеспечение на других машинах, не изменяя указанную выше команду, а также запускать программное обеспечение на двух машинах внутри сети одновременно - в конце концов, внешний мир видит всю вашу сеть как единственную машину. Если номера портов непостоянны, есть ещё три варианта: Настройте поддержку этого в libalias. Примеры особых случаев можно найти в /usr/src/lib/libalias/alias_*.c (alias_ftp.c - хорошее начало). Это означает, что вам нужно будет использовать чтение некоторых распознаваемых исходящих пакетов, обнаруживать команды для установления внешней машиной обратной связи на внутреннюю машину на конкретный (случайный) порт и настраивать маршрут в таблице соответствий так, чтобы последующие пакеты проходили нормально. Это самое трудоёмкое решение, но оно наилучшее и позволит программному обеспечению работать на нескольких машинах. Используйте прокси-сервер. Приложение может поддерживать, например, socks5 или (как в случае cvsup) может иметь режим passive, обходящийся без запросов к противоположной стороне на открытие обратного соединения. Переназначьте всё на внутреннюю машину с помощью команды nat addr. Это решение в лоб. Кто-нибудь ведёт список полезных номеров портов? Пока нет, но ниже находится список, могущий таковым стать (если к этому будет проявлен какой-либо интерес). В каждом примере internal нужно заменить на IP-адрес машины, участвующей в игре. Asheron's Call nat port udp internal:65000 65000 Находясь в игре, вручную смените номер порта на 65000. Если у вас есть несколько машин, на которых вы хотите играть, назначьте каждой машине уникальный номер порта (то есть 65001, 65002 и так далее), и добавьте по строчке nat port для каждой машины. Half Life nat port udp internal:27005 27015 PCAnywhere 8.0 nat port udp internal:5632 5632 nat port tcp internal:5631 5631 Quake nat port udp internal:6112 6112 Альтернативное решение, обеспечивающее поддержку прокси для Quake, можно найти на сервере www.battle.net. Quake 2 nat port udp internal:27901 27910 nat port udp internal:60021 60021 nat port udp internal:60040 60040 Red Alert nat port udp internal:8675 8675 nat port udp internal:5009 5009 Что такое ошибки FCS? FCS является сокращением от Frame Check Sequence (контроль последовательности кадров). Каждый кадр ppp имеет контрольную сумму для проверки того, что принятые данные совпадают с переданными. Если FCS принятого пакета некорректна, пакет отбрасывается и счётчик FCS для HDLC увеличивается. Значения ошибок уровня HDLC можно вывести командой show hdlc. Если у вас плохая линия (или драйвер коммуникационного адаптера отбрасывает пакеты), ошибки FCS неизбежны. Это обычно не является причиной для волнений, хотя это существенно замедляет протоколы компрессии. Если у вас внешний модем, проверьте качество экранирования соединительного кабеля - это может избавить от проблемы. Если ваша связь замирает, как только вы соединились и наблюдается большое количество ошибок FCS, это может быть вызвано не полной прозрачностью канала для 8-битовых данных. Проверьте, что модем не использует программного управления потоком (XON/XOFF). Если же оборудование должно , использовать программное управление потоком, то воспользуйтесь командой set accmap 0x000a0000 для указания ppp экранировать символы ^Q и ^S. Другой причиной слишком большого количества ошибок FCS может быть прекращение противоположной стороной сеанса PPP. В этом случае Вам может понадобиться включить протоколирование async для проверки того, не являются ли поступаемые из линии данные на самом деле приглашениями login или shell. Если вы получили приглашение shell с противоположной стороны, возможно завершение ppp без обрыва связи командой close lcp (последующая команда term снова вернёт вас к приглашению shell на удалённой машине). Если ничего в файле протокола не говорит о том, что связь была прервана, вы должны спросить у администратора удалённой машины (вашего провайдера), почему сеанс был закрыт. Почему при работе в MacOS и Windows 98 соединения замирают, когда на маршрутизаторе используется PPPoE Мы благодарим Майкла Возняка (Michael Wozniak) mwozniak@netcom.ca, который сообщил следующую информацию, и Дэна Флемминга (Dan Flemming) danflemming@mac.com за решение проблемы в случае Mac: Это происходит из-за эффекта, который можно назвать чёрной дырой на маршрутизаторе. MacOS и Windows 98 (и, может быть, другие операционные системы от Microsoft), посылают пакеты TCP с запрашиваемым размером сегмента, который слишком велик для того, чтобы быть помещённым в кадр PPPoE (для сети Ethernet размер MTU по умолчанию равен 1500) и с установленным битом не фрагментировать (по умолчанию для TCP), а маршрутизаторы Telco не посылает пакет ICMP нужно фрагментировать обратно на сайт www, с которым вы работаете. (Либо маршрутизатор посылает пакеты ICMP правильно, а межсетевой экран на стороне веб-сервера их сбрасывает.) Когда веб-сервер посылает вам кадры, которые не помещаются в поток PPPoE, то маршрутизаторы Telco их отбрасывают и странички не загружаются (часть страниц/графики всё же видно, потому что они меньше, чем MSS). Похоже, что такие настройки действуют по умолчанию на большинстве конфигураций PPPoE Telco (если они вообще знают, как программировать маршрутизатор... да уж...). Одним из способов исправить это является использование утилиты regedit на машинах 96/98 для того, чтобы добавить в реестр следующий параметр... HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU Это должна быть строка со значением 1436, так как имеются сведения, что некоторые маршрутизаторы ADSL не могут работать с пакетами размером, превышающим эту величину. В Windows 2000 этот параметр реестра был перенесён в Tcpip\Parameters\Interfaces\ID адаптера\MTU и имеет тип DWORD. Обратитесь к документам из Microsoft Knowledge Base Q158474 - Windows TCPIP Registry Entries и Q120642 - TCPIP & NBT Configuration Parameters for Windows NT для получения более полной информации по изменению MTU в Windows для работы с NAT-маршрутизатором. Другим вариантом с Windows 2000 является установка в регистре DWORD-параметра Tcpip\Parameters\Interfaces\ID адаптера\EnablePMTUBHDetect в 1, как это отмечено в документе Microsoft 120642, указанном выше. К несчастью, в MacOS нет возможности изменить настройки TCP/IP. Однако имеется коммерческое программное обеспечение, такое, как OTAdvancedTuner (OT for OpenTransport, the MacOS TCP/IP stack) компании Sustainable Softworks, которое позволяет пользователям настраивать параметры TCP/IP. Пользователи MacOS NAT должны выбрать ip_interface_MTU из выпадающего меню, ввести число 1450 вместо 1500 в окне, затем щёлкнуть на кнопке, следующей за Save as Auto Configure, и щёлкнуть на Make Active. В самой последней версии ppp (2.3 и выше) имеется команда enable tcpmssfixup, которая автоматически выравнивает значение MSS к нужному. Эта возможность по умолчанию включена. Если у вас возникли проблемы с более старой версией ppp, то вас может заинтересовать порт tcpmssd. Ничего не помогает - я уже отчаялся! Если всё уже перепробовано, и ничего не получается, пошлите нам максимальное количество информации, ваш конфигурационный файл, способ запуска ppp, соответствующие части файла протокола, и вывод команды netstat -rn (до и после соединения) в &a.questions; или в телеконференцию comp.unix.bsd.freebsd.misc, и может быть, кто-нибудь укажет вам верное направление. Коммуникационные адаптеры В этом разделе освещены вопросы о работе последовательных адаптеров во FreeBSD. Протоколы PPP и SLIP рассматриваются в разделе, посвящённом . Как узнать, какие последовательные порты были обнаружены FreeBSD? При загрузке ядра FreeBSD оно будет пытаться найти последовательные порты, с поддержкой которых было откомпилировано. Вы можете повнимательней присмотреться к выдаваемым сообщениям либо выполнить команду &prompt.user; dmesg | grep sio после загрузки и запуска системы. Вот пример вывода указанной команды: sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A Здесь присутствуют два последовательных порта. Первый использует irq 4, порт ввода/вывода 0x3f8 и построен на микросхеме UART типа 16550A. Второй использует тот же тип микросхемы, но использует irq 3 и адрес порта ввода/вывода 0x2f8. Внутренние модемы выглядят точно также, как последовательные порты, за исключением того, что к модем ним подключен всегда. В ядро GENERIC встроена поддержка двух последовательных портов, с irq и адресами портов ввода/вывода, как в примере выше. Если эти настройки не соответствуют вашим, или если вы добавили внутренние модемы, или у вас больше последовательных портов, чем описано в ядре, просто переконфигурируйте ядро. За дополнительной информацией обратитесь к разделу о построении ядра. Как узнать, какие внутренние модемы были обнаружены FreeBSD? Посмотрите ответ на предыдущий вопрос. Я только что поставил 2.0.5 и не нашёл устройств tty0X! Не волнуйтесь, просто они были объединены с устройствами ttydX. Вам придётся подправить конфигурационные файлы, которые вы раньше использовали. Как осуществляется доступ к последовательным портам во FreeBSD? Третий последовательный порт, sio2 (посмотрите справку по &man.sio.4;), который в DOS называется COM3), обозначается как /dev/cuaa2 для устройств, выполняющих исходящие звонки, и /dev/ttyd2 для устройств, принимающих входящие звонки. Какая разница между этими двумя классами устройств? Вы должны использовать ttydX для входящих соединений. При открытии /dev/ttydX в блокирующем режиме, процесс будет ожидать неактивности соответствующего устройства cuaaX, а затем появления сигнала о наличии несущей. При открытии устройства cuaaX, он проверяет, что последовательный порт не используется уже устройством ttydX. Если порт доступен, он похищает его у устройства ttydX. Также устройство cuaXX не следит за наличием несущей. С такой схемой работы и модемом, находящимся в режиме автоответа, вы можете позволить пользователям входить в систему и в то же время можете осуществлять исходящие звонки, а система позаботится о возможных конфликтах. Как включить поддержку многопортовых последовательных адаптеров? Повторим ещё раз: информация о конфигурировании ядра содержится в разделе, посвящённом этому вопросу. Для многопортовых последовательных адаптеров в файле конфигурации ядра поместите ключевое слово &man.sio.4; для каждого порта на адаптере. Но irq и вектор должен быть указан только у одного порта. Все порты на адаптере должны использовать одно и то же irq. Используйте последний последовательный порт для указания irq. Также включите опцию COM_MULTIPORT. В следующем примере дано описание 4-портового адаптер AST на irq 7: 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 Флаги указывают, что управляющий порт имеет младший номер устройства 7 (0x700), включена диагностика на время обнаружения (0x080), и все порты используют одно и то же irq (0x001). Может ли FreeBSD использовать несколько многопортовых адаптеров с одинаковым irq? Пока нет. Вы должны назначить уникальный irq для каждого адаптера. Можно ли установить режим работы по умолчанию для порта? Вашему приложению может понадобиться открыть устройства ttydX (или cuaaX). Когда процесс открывает устройство, оно имеет набор параметров ввода/вывода. Вы можете посмотреть их значения командой &prompt.root; stty -a -f /dev/ttyd1 Когда вы меняете настройки этого устройства, они действуют вплоть до закрытия устройства. При повторном открытии оно будут иметь режимы работы по умолчанию. Чтобы изменить значения режимов работы по умолчанию, вы можете открыть и изменить настройки в устройстве начального состояния. Например, чтобы сделать режимом по умолчанию режим CLOCAL, 8 бит, и управление потоком XON/XOFF для устройства ttyd5, сделайте следующее: &prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff Для выполнения таких действий предназначен скрипт /etc/rc.serial. Теперь при открытии устройства ttyd5 приложение будет иметь именно такой режим работы с портом. Оно, однако. может изменить эти режимы по своему усмотрению. Вы можете запретить изменение приложением некоторых режимов работы, выполнив настройки устройства постоянного состояния. Например, чтобы сделать скорость работы ttyd5 постоянной и равной 57600 bps, выполните &prompt.root; stty -f /dev/ttyld5 57600 Теперь, если приложение откроет ttyd5 и попытается изменить скорость работы порта, она всё равно останется равной 57600 bps. Естественно, вы должны сделать устройства начального и постоянного состояний доступными на запись только пользователю root. Скрипт &man.MAKEDEV.8; при создании файлов устройств этого НЕ делает. Как сделать вход через модем? Похоже, что вы хотите стать Internet-провайдером, да? Сначала вам необходимо подключить к системе один или несколько модемов, которые могут работать в режиме автоответа. Модем должен держать сигнал наличия несущей, только когда она присутствует. Он должен вешать трубку и переинициализировать, когда сигнал готовности устройства DTE (DTR) меняет состояние из включенного на выключенный. Должно использоваться аппаратное (RTS/CTS) управление потоком или вовсе отсутствовать. Ещё он должен работать на постоянной скорости с портом компьютера, но (что удобно для звонящих) с согласованием скорости передачи с другим модемом. Для большинства модемов, поддерживающих набор команд Hayes, следующая последовательность команд выполнит эти настройки и сохранит их в энергонезависимой памяти: AT &C1 &D3 &K3 &Q6 S0=1 &W Информация о том, как сделать эти настройки без обращения к терминальным программам MS-DOS, содержится в разделе о посылке AT-команд. Затем опишите модем в файле /etc/ttys (посмотрите справку по &man.ttys.5;). В нём перечислены все порты, с которых операционная система ожидает входа пользователей. Добавьте строку, которая выглядит как эта: ttyd1 "/usr/libexec/getty std.57600" dialup on insecure В этой строке указано, что ко второму последовательному порту (/dev/ttyd1) подключен модем на скорости 57600 bps без контроля по чётности (std.57600, что берётся из файла /etc/gettytab (посмотрите справку по &man.gettytab.5;). Тип терминала для этого порта определён как dialup. Порт включен (on) и небезопасен (insecure), что означает, что попытки войти в систему пользователем root с этого порта будут отвергнуты. Для портов, обслуживающих входящие звонки, как этот, используйте устройства вида ttydX. Использование слова dialup в качестве имени терминала является обычной практикой. Многие пользователи включают в свои файлы .profile или .login скрипты для задания реального типа терминала, если начальным является тип dialup. В примере порт описан небезопасным. Чтобы войти пользователем root на этом порту, вам нужно сначала войти обычным пользователем, а затем командой &man.su.1; стать пользователем root. Если порт имеет атрибут secure, то пользователь root может входить с этого порта непосредственно. После редактирования файла /etc/ttys вам нужно послать сигнал потери связи или HUP процессу &man.init.8;: &prompt.root; kill -HUP 1 Это заставит процесс &man.init.8; снова прочитать файл /etc/ttys. Процесс init запустит процессы getty для всех портов с характеристикой on. Вы можете проверить, доступны ли входы с конкретного порта, выполнив команду &prompt.user; ps -ax | grep '[t]tyd1' Вы должны увидеть нечто вроде следующего: 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1 Как подключить терминал к FreeBSD? Если вы собираетесь использовать другой компьютер в качестве терминала для FreeBSD, соедините их последовательные порты нуль-модемным кабелем. Если у вас есть терминал, обратитесь к его документации. Затем модифицируйте файл /etc/ttys (посмотрите справку по &man.ttys.5;) описанным выше способом. Например, если вы подключаете терминал WYSE-50 к пятому последовательному порту, используйте такую строчку: ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure В этом примере описан порт на /dev/ttyd4, имеющий терминал wyse50, подключенный на скорости 34800 bps без контроля по четности (std.38400 из файла /etc/gettytab, информацию о котором можно получить из справки по &man.gettytab.5;) и разрешён непосредственный вход пользователя root (secure). Почему не удаётся запустить tip или cu? Скорее всего, в вашей системе запуск программ &man.tip.1; и &man.cu.1; разрешён только пользователю uucp и членам группы dialer. Вы можете использовать группу dialer для управления доступом к вашему модему или удалённым системам. Достаточно добавить пользователя в группу dialer. Вы можете разрешить всем пользователям вашей системы запускать &man.tip.1; и &man.cu.1;, выполнив команды: &prompt.root; chmod 4511 /usr/bin/cu &prompt.root; chmod 4511 /usr/bin/tip Мой модем Hayes не поддерживается---что можно сделать? На самом деле страница Справочника о программе &man.tip.1; устарела. Модемы Hayes поддерживаются системой. Просто добавьте at=hayes в ваш файл /etc/remote (посмотрите справку по &man.remote.5;). Драйвер модемов Hayes не достаточно умён, чтобы поддерживать некоторые из новых возможностей современных модемов---сообщения типа BUSY, NO DIALTONE или CONNECT 115200 будут приводить его в замешательство. Вы должны выключить вывод таких сообщений при использовании программы &man.tip.1; (командой ATX0&W). Кроме того, значение таймаута по умолчанию для программы &man.tip.1; равен 60 секундам. Ваш модем должен использовать меньшее значение, иначе tip будет думать, что у вас проблемы со связью. Попробуйте ATS7=45&W. На самом деле tip в том виде, каком поставляется, не поддерживает модемы Hayes полностью. Решением является редактирование файла tipconf.h в каталоге /usr/src/usr.bin/tip/tip. Чтобы это сделать, вам нужен дистрибутив исходных текстов системы. Замените строку #define HAYES 0 на #define HAYES 1. Затем выполните команды make и make install. После этих действий всё работает замечательно. Как я должен ввести эти AT-команды? Создайте так называемое прямое описание в вашем файле /etc/remote (посмотрите справку по &man.remote.5;). Например, если ваш модем подключен к первому последовательному порту, /dev/cuaa0, сделайте такую строку: cuaa0:dv=/dev/cuaa0:br#19200:pa=none Укажите максимальную скорость обмена с портом, поддерживаемую модемом в параметре br. Затем выполните команду tip cuaa0 (обратитесь к справке по &man.tip.1;) и вы подключитесь к модему. Если в вашей системе нет устройства /dev/cuaa0, сделайте следующее: &prompt.root; cd /dev &prompt.root; sh MAKEDEV cuaa0 Или используйте cu, войдя администратором, с такими параметрами: &prompt.root; cu -lline -sspeed где line - это имя последовательного порта (например, /dev/cuaa0), а speed - скорость работы модема с портом (например, 57600). После ввода AT-команд, наберите ~. для завершения работы. Знак <@> для описания характеристики pn не работает! Знак <@> в характеристике, описывающей номер телефона, указывает программе tip обратиться к файлу /etc/phones для поиска телефонного номера. Однако знак <@> является также и специальным символом в файлах описания характеристик типа /etc/remote. Экранируйте его символом обратного слэша: pn=\@ Как набрать телефонный номер из командной строки? Поместите так называемое общее описание в ваш файл /etc/remote (посмотрите справку по &man.remote.5;). Например: 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: Тогда вы сможете выполнять команды вроде tip -115200 5551234. Если предпочитаете программу &man.cu.1;, а не &man.tip.1;, используйте общее описание для cu: cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du: и выполняйте команду cu 5551234 -s 115200. Нужно ли при этом каждый раз задавать скорость работы с портом? Создайте описание для tip1200 или cu1200, но не останавливайтесь на этом и используйте подходящую скорость при задании характеристики br. &man.tip.1; полагает, что хорошим значением по умолчанию является 1200 bps, поэтому он использует описание для tip1200. Однако вас никто не заставляет использовать именно эту скорость. Мне нужно иметь доступ к нескольких хостам через терминальный сервер. Вместо того, чтобы каждый раз ожидать подключения к терминальному серверу, а затем набирать команду CONNECT host, используйте характеристику cm программы tip. Например, вот такое описание в файле /etc/remote (обратитесь к справке по &man.remote.5;): 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: позволит вам просто набирать tip pain или tip muffin для подключения к хостам pain или muffin и tip deep13 для доступа к терминальному серверу. Может ли tip использовать несколько телефонов для одного сайта? Эта проблема возникает, когда в университете есть пара модемных входов и несколько тысяч студентов, пытающихся ими воспользоваться... Создайте описание для вашего университета в файле /etc/remote (посмотрите справку по &man.remote.5;) и используйте <\@> при задании характеристики pn: big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none: После этого пропишите номера телефонов университета в файле /etc/phones (посмотрите справку по &man.phones.5;): big-university 5551111 big-university 5551112 big-university 5551113 big-university 5551114 &man.tip.1; будет пытаться воспользоваться всеми телефонными номерами в указанном порядке, прежде чем завершить работу. Если вы хотите, чтобы попытки были продолжены, запустите &man.tip.1; в цикле while. Почему нужно нажимать CTRL+P дважды для посылки одного этого символа? По умолчанию CTRL+P является специальным символом принудительного ввода, используемым для указания программе &man.tip.1;, что следующий символ является байтом данных. Вы можете назначить функцию символа принудительного ввода любому другому символу с помощью команды ~s, которая предназначена для установки значений переменных. Наберите ~sforce=single-char'' с начала новой строки. Здесь под single-char имеется в виду любой одиночный символ. Если вы не зададите single-char, то символом принудительного ввода будет нулевой символ, который можно получить, набрав CTRL+2 или CTRL+SPACE. Подходящим значением для single-char может быть SHIFT+CTRL+6, который используется только некоторыми терминальными серверами. Вы можете задать любое значение для символа принудительного ввода, указав его в вашем файле $HOME/.tiprc: force=single-char Неожиданно всё стало набираться ЗАГЛАВНЫМИ БУКВАМИ? Должно быть, вы нажали CTRL+A, символ перехода в верхний регистр программы &man.tip.1;, специально предназначенный для тех, у кого не работает клавиша caps-lock. Используйте команду ~s, как это было сделано выше, и установите значение переменной raisechar во что-нибудь подходящее. В действительности вы можете установить его равным символу принудительного ввода, если не собираетесь пользоваться этими особенностями. Следующий пример файла .tiprc должен понравиться пользователям редактора Emacs, которым часто приходится нажимать CTRL+2 и CTRL+A: force=^^ raisechar=^^ Здесь ^^ обозначает SHIFT+CTRL+6. Как можно передавать файлы с помощью программы tip? Если вы соединились с другой Unix-системой, вы можете посылать и принимать файлы командами ~p (передача) и ~t (приём). Эти команды запускают программы &man.cat.1; и &man.echo.1; на удалённой системе, чтобы принять и послать файлы. Синтаксис вызова имеет такой вид: ~p <local-file> [<remote-file>] ~t <remote-file> [<local-file>] Контроль ошибок передачи при этом не осуществляется, так что вам может понадобиться другой протокол передачи, например, zmodem. Как использовать zmodem вместе с tip? Первым делом установите одну из программ, реализующих протокол zmodem из коллекции портов (там есть парочка в категории comms, lrzsz и rzsz). Для приёма файлов запустите программу передачи на противоположной стороне. Затем нажмите enter и наберите ~C rz (или ~C lrz, если у вас установлен lrzsz) для начала приёма их на локальную машину. Для посылки файлов, запустите программу приёма на противоположной стороне. Затем нажмите enter и наберите ~C sz files (или ~C lsz files) для посылки файлов на удалённую систему. FreeBSD не распознаёт последовательные порты на моей машине, хотя все настройки верны. Микросхемы UART производства Acer на материнских платах и адаптерах распознаются некорректно. Для решения этой проблемы попробуйте воспользоваться патчем с сервера www.lemis.com. Разное Почему FreeBSD использует гораздо больше места в разделе подкачки, чем Linux? Это только кажется, что для FreeBSD требуется больше места на разделе подкачки, чем для Linux. На самом деле это не так. Главное отличие FreeBSD от Linux в этом плане заключается в том, что FreeBSD активно перемещает неиспользуемые страницы памяти, к которым не было обращений, в раздел подкачки, чтобы увеличить объём доступной физической памяти для активного использования. Linux же перемещает страницы памяти в раздел подкачки только в крайнем случае. Получаемое во FreeBSD увеличение нагрузки на раздел подкачки компенсируется более эффективным использованием оперативной памяти. Заметьте, что, хотя FreeBSD предпочитает использовать раздел подкачки, она не может сбросить все неактивные страницы в своп при полностью неактивной системе. Так что вряд ли может возникнуть ситуация, когда, проснувшись рано утром, вы обнаружите, что вся ваша система находится в разделе подкачки, хотя она простаивала всю ночь. Почему утилита &man.top.1; показывает очень маленький объём свободной памяти, даже когда запущено всего лишь несколько приложений? Просто дело в том, что под свободной памятью подразумевается никак не используемая память. Вся память, которая вашей программе явно не выделялась, используется ядром FreeBSD для дискового кэша. Значения, показываемые утилитой &man.top.1;, помеченные как Inact, Cache и Buf - это всё кэшированные данные разных степеней устаревания. То, что данные находятся в кэше, означает, что система не будет обращаться к медленному диску снова за теми данными, обращение к которым было недавно, повышая таким образом общую производительность. В общем случае маленькие значения в пункте Free, показываемые утилитой &man.top.1; для свободной памяти - это хорошо, если, конечно они не очень маленькие. Почему используются (и что из себя представляют) форматы выполнимых файлов a.aut и ELF? Для понимания того, почему FreeBSD использует формат ELF, вы должны сначала получить представление о трёх доминирующих форматах выполнимых файлов для Unix: До FreeBSD версии 3.x, во FreeBSD использовался формат a.out. &man.a.out.5; Это самый старый, классический формат объектных файлов для Unix. В нём используется короткий и компактный заголовок с магическим числом в начале, которое часто используется для определения формата (за подробным описанием обратитесь к странице Справочника о &man.a.out.5;). Он содержит три загружаемых сегмента: .text, .data и .bss плюс таблицу символов и таблицу строк. COFF Это формат объектных файлов SVR3. Дополнительно в заголовок включена таблица секций, так что вы можете иметь их больше, чем только .text, .data и .bss. ELF Преемник COFF, в который добавлены возможности иметь много секций и 32- или 64-разрядные значения. Один большой минус: ELF был спроектирован также в предположении, что для каждой аппаратной платформы будет существовать только один ABI. Это предположение достаточно некорректно, и даже в мире коммерческих реализаций SYSV (в котором имеется по крайней мере три ABI: SVR4, Solaris и SCO) это не так. FreeBSD каким-то образом пытается решить эту проблему, предоставляя утилиту для пометки конкретного выполнимого файла ELF с информацией о ABI, с которым он совместим. Обратитесь к странице Справочника об утилите &man.brandelf.1; за подробной информацией. FreeBSD выросла на классических традициях и традиционно использовала формат &man.a.out.5;, технологию, опробованную и проверенную во многих вариациях BSD. Хотя давно уже можно было компилировать и выполнять родные выполнимые файлы (и ядро) в формате ELF, FreeBSD с самого начала сопротивлялась переходу на ELF как на формат, используемый по умолчанию. Почему? Когда мир Linux делал болезненный переход к ELF, причин отвергнуть формат a.out было не так уж и много, разве что их негибкий механизм работы с совместно используемыми библиотеками, который был основан на таблице переходов, что делало построение таких библиотек очень затруднительным для разработчиков. Так как средства работы с ELF предоставляли решение этой проблемы и это было в общем-то шагом вперёд в любом случае, цена перехода была признана стоящей того и переход был сделан. В случае FreeBSD, наш механизм работы с совместно используемыми библиотеками очень похож на механизм, применяемый в SunOS, поэтому его очень легко использовать. Однако, начиная с 3.0, FreeBSD официально поддерживает ELF как формат, используемый по умолчанию. И, хотя формат a.out поддерживается в полной мере, разработчики из проекта GNU, являющиеся авторами компилятора, который мы используем, больше не поддерживают формат a.out. Это заставило нас поддерживать различные версии компилятора и компоновщика, и не позволило воспользоваться всеми возможностями последних разработок GNU. Потребность в наличии реализации ISO-C++, в основном конструкторов и деструкторов, также привела к поддержке ELF в будущих релизах FreeBSD. Да, но почему так много разных форматов? Если вернуться в далёкое тёмное прошлое, то тогда компьютеры были очень просто устроены. На них могла работать простая, маленькая система. Формат a.out полностью решал задачу представления программ на простых системах (PDP-11). Когда же люди перенесли Unix с простых систем, они оставили a.out, так как его было достаточно для ранних реализаций Unix для таких архитектур, как Motorola 68k, VAX, и тд. Затем какой-то умный инженер решил, что если он может заставить программное обеспечение делать некоторые тонкие манипуляции, то это позволит преодолеть некоторые ограничения при проектировании и позволит ядру процессора работать быстрее. Когда это было сделано с новым типом аппаратуры (в наши дни известном как RISC), оказалось, что a.out плохо подходит для этой аппаратуры, поэтому было разработано много новых форматов для достижения большей производительности от такого аппаратного обеспечения, чем может дать простой, имеющий ограничения формат a.out. Были разработаны такие форматы, как COFF, ECOFF и ещё несколько безвестных других со своими ограничениями, пока наконец все не остановились на формате ELF. Вдобавок к этому, так как размеры программ стали достигать огромных размеров, а дисковая (и физическая) память оставалась сравнительно небольшой, то возникла концепция совместно используемых библиотек. Система VM также стала более мощной. Хотя каждое из этих нововведений продолжало использовать формат a.out, его бесполезность становилась видна всё больше и больше с добавлением каждой новой возможности. К тому же люди захотели динамически загружать код во время выполнения программ или сбрасывать части программ после выполнения кода инициализации для экономии основной памяти и/или размера свопа. Языки программирования становились всё более умными и люди захотели автоматического запуска некоторого кода перед главной процедурой программы. С форматом a.out была сделана масса ухищрений для реализации всех этих требований, и они в общем-то работали. В конце концов наступил момент, когда формат a.out перестал бы справляться со всеми этими проблемами без ещё больших потерь в коде и гибкости в работе. Тогда как ELF решал многие из этих проблем, переход на него был бы болезненным на рабочей системе. Так что ELF ждал момента, когда был бы более болезненным оставаться с форматом a.out, чем перейти к формату ELF. Однако с течением времени инструменты разработки, на которых основаны инструменты разработки FreeBSD (особенно ассемблер и загрузчик), разделились на две параллельные ветви. В дерево FreeBSD была добавлена поддержка совместно используемых библиотеки и были исправлены некоторые ошибки. Разработчики из GNU, которые изначально писали эти программы, полностью их переделали, добавив более простую поддержку построения кросс-компиляторов, в котором можно использовать различные форматы, и тд. Когда многие захотели строить кросс-компилятор с выходным кодом для FreeBSD, то им не повезло, так как старые исходные тексты, которые FreeBSD использовала для as и ld, не подошли. Новый набор утилит от GNU (binutils) поддерживает кросс-компиляцию, ELF, совместно используемые библиотеки, расширения C++, и тд. Вдобавок, многие разработчики выпускают программы в бинарном формате ELF, и для FreeBSD было бы полезно иметь возможность их запускать. И если такая возможность будет реализована, зачем тогда вообще продолжать опираться на a.out? Это измученная старая лошадь, которая была полезна долгое время, но сейчас самое время от неё отказаться, оставив в прошлом долгие годы преданной службы. ELF более выразителен, чем a.out, и позволяет реализовать большую расширяемость основной системы. Инструменты для работы с ELF лучше поддерживаются разработчиками, и предоставляют поддержку кросс-компиляции, что для многих важно. ELF может работать немного медленнее, чем a.out, но это трудно измерить. Также между ними есть некоторые отличия по распределению страниц памяти, обработке кода инициализации, и тд. Никакие из этих отличий особо не важны, но эти отличия всё же есть. Со временем поддержка a.out будет убрана из ядра GENERIC, и постепенно убрана из системы совсем, как только отпадёт нужда в запуске старых программ в формате a.out. Почему командой chmod невозможно изменить права на символические ссылки? Символические ссылки не имеют прав доступа, а по умолчанию утилита &man.chmod.1; не следует символической ссылке для изменения прав доступа к файлу, на который указывает ссылка. Поэтому, если у вас есть файл, скажем, с именем foo и символическая ссылка bar на этот файл, то эта команда всегда будет выполняться успешно. &prompt.user; chmod g-w bar Однако права на файл foo не изменятся. Чтобы это работало, используйте опции или вместе с опцией . Обратитесь к страницам Справочника по команде &man.chmod.1; и по &man.symlink.7;. Опция выполняет команду &man.chmod.1; РЕКУРСИВНО. Будьте осторожны, задавая каталоги или символические ссылки на каталоги в параметрах &man.chmod.1;. Если вы хотите изменить права на каталог, на который указывает символическая ссылка, используйте &man.chmod.1; без опций и следуйте символической ссылке с помощью лидирующего слэша (/). Например, если foo является символической ссылкой на каталог bar, а вы хотите изменить права на foo (на самом деле bar), вы должны выполнить команду типа следующей: &prompt.user; chmod 555 foo/ Если задан лидирующий слэш, &man.chmod.1; будет следовать символической ссылке, foo, меняя права на каталог bar. Почему длина регистрационного имени во FreeBSD 2.2.X и более ранних версий не должна превышать 8 символов? Наверное, вы думаете, что достаточно будет изменить значение константы UT_NAMESIZE, перекомпилировать полностью систему и всё будет работать. К несчастью, часть приложений и утилит (включая системные) имеют жёстко заданные малые значения (не всегда 8 или 9, но и такие странные, как 15 или 20) в структурах и буферах. Это приведёт не только к порче файлов журналов (из-за записи полей переменного размера там, где ожидается поле фиксированного размера), но может повлиять на работу клиентов системы Sun NIS и может в принципе вызвать другие проблемы при взаимодействии с другими системами Unix. Во FreeBSD 3.0 и старше, максимальная длина имени была увеличена до 16 символов и все утилиты с предопределённым размером имени были найдены и исправлены. Так как это касается столь многих областей в системе, то такие изменения не делались вплоть до 3.0. Если вы абсолютно уверены, что сможете найти и исправить проблемы такого рода самостоятельно, когда они возникнут, то можете увеличить длину регистрационного имени в ранних релизах, отредактировав файл /usr/include/utmp.h и изменив соответствующим образом константу UT_NAMESIZE. Вы должны будете также изменить значение MAXLOGNAME в файле /usr/include/sys/param.h, чтобы оно соответствовало UT_NAMESIZE. И наконец, если вы компилируете из исходных текстов, не забудьте, что /usr/include обновляется каждый раз! Делайте изменения в соответствующих файлах каталога /usr/src/.. Можно ли запускать программы для DOS во FreeBSD? Да, начиная с версии 3.0, вы можете использовать эмулятор DOS doscmd от BSDI, который был интегрирован в систему и усовершенствован. Пошлите письмо &a.emulation;, если вы заинтересованы в участии в этом проекте. Для систем, предшествующих 3.0, в коллекции портов есть замечательная утилита pcemu, эмулирующая процессор 8088 и функции BIOS, чего достаточно для запуска приложений DOS, работающих в текстовом режиме. Она требует X Window System (которая поставляется как XFree86). Что мне нужно сделать чтобы перевести документацию FreeBSD на мой родной язык?. Ознакомтесь с Часто Задаваемыми Вопросами по Переводам в FreeBSD Documentation Project Primer. Где можно получить бесплатный доступ к FreeBSD? Хотя FreeBSD не предоставляет бесплатный доступ ни к одному из своих серверов, другие компании предоставляют Unix-системы с открытым доступом. Стоимость этой услуги различна, также как и ограниченный набор услуг. Arbornet, Inc, также известный как M-Net, предоставляет свободный доступ к Unix-системам с 1983. Начиная на платформе Altos с работающей System III, сайт перешел на BSD/OS в 1991. В июне 2000 сайт сменил систему снова, теперь на FreeBSD. M-Net может быть доступна через протоколы telnet и SSH и предоставляет доступ к полному набору программного обеспечения FreeBSD. Однако доступ к сети ограничен для членов и спонсоров, которые поддерживают систему, которая работает как неприбыльная организация. M-Net предоставляет также услуги электронной доски объявлений (BBS) и интерактивного чата. Grex представляет собой сайт, очень похожий на M-Net, включая то же самое программное обеспечение для электронной доски объявлений (BBS) и интерактивного чата. Однако платформой является Sun 4M под управлением SunOS Что такое sup и как это можно использовать? Сокращение SUP означает Software Update Protocol, который был разработан в CMU для синхронизации исходных текстов. Мы используем его для синхронизации исходных текстов на удалённых сайтах с основным сервером разработчиков. Протокол SUP использует пропускную способность канала неэффективно, и был отвергнут. В настоящее время рекомендуемым методом для синхронизации исходных текстов является протокол CVSup. Как зовут этого маленького симпатичного красного парня? У него нет определенного имени, он называется просто даемон BSD. Если вам непременно нужно имя, называйте его beastie. Заметьте, что beastie произносится как BSD. Больше о даемоне BSD вы можете узнать из его домашней страницы. Могу ли я использовать изображение даемона BSD? Вполне. Права на даемона BSD имеет Marshall Kirk McKusick. Для выяснения подробностей относительно правил его использования вы можете обратиться к странице автора Statement on the Use of the BSD Daemon Figure. В общем, вы можете свободно использовать изображение в высокохудожественном стиле и в личных целях, если даются соответствующие отсылки. Если вы хотите использовать его в коммерческих целях, вы должны обратиться к Керку МакКузику. Дополнительная информация находится на домашней странице Даемона BSD. Не найдется ли у вас изображений даемона BSD, которые можно использовать? В каталоге /usr/share/examples/BSD_daemon/ есть рисунки в форматах eps и Xfig. Насколько греется процессор при работе FreeBSD? В. Кто-нибудь делал замеры температуры при работе FreeBSD? Я знаю, что Linux греется меньше, чем DOS, но никогда не видел упоминания FreeBSD. Наверное, он сильно греется. О. Нет, но мы сделали различные вкусовые тесты у добровольцев с завязанными глазами, которые до этого приняли по 250 микрограмм LSD-25. 35% добровольцев заявило, что FreeBSD имеет вкус апельсина, тогда как вкус Linux расценивался как фиолетовый туман. Ни одна из групп не отметила значительной разницы в температуре. Мы хотели опубликовать полные результаты этого опроса, когда обнаружили, что слишком много добровольцев покинули помещение во время тестов, что несколько смазало результаты. Думаем, что большинство из них работают сейчас в Apple над их новым GUI чеши и нюхай. Это старый добрый бизнес! Серьёзно, и FreeBSD, и Linux используют инструкцию HLT (halt), когда система простаивает, что уменьшает потребление энергии и в свою очередь, выделение тепла. Вдобавок, если у вас настроен APM (комплексное управление энергопотреблением), то FreeBSD может переводить процессор в режим пониженного энергопотребления. Кто там скребётся в микросхемах памяти?? В. Делает ли FreeBSD что-нибудь эдакое при компиляции ядра, что вызывает поскрипывание микросхем памяти? При компиляции (и в короткий промежуток времени после обнаружения дисковода при старте системы) от микросхем памяти исходит странный царапающий звук. О. Да! Вы, наверное, видели частое упоминание даемонов в документации по BSD, но не многие знают, что это настоящие нематериальные существа, которые теперь завладели вашим компьютером. Царапающий звук, издаваемый микросхемами памяти - это на самом деле высокочастотное перешёптывание между даемонами, когда они решают, как лучше справиться с различными задачами по администрированию системы. Если шум достиг ваших ушей, команда DOS fdisk /mbr их спугнёт, но не удивляйтесь, если они отреагируют соответствующим образом и попытаются вас остановить. Фактически, если во время выполнения этой команды вы услышите сатанинский голос Билла Гейтса из встроенного динамика, бегите и даже не оглядывайтесь! Избавленные от противостояния с даемонами BSD, близнецы-демоны DOS и Windows часто могут захватить полный контроль не только над вашей машиной и навлечь вечное проклятие на вашу душу. Теперь, когда вы это знаете, если бы у вас был выбор, думаем, что вы бы предпочли слышать царапающий звук, не так ли? Что такое MFC? MFC - это сокращение от Merged From -CURRENT. Оно используется в протоколах изменений CVS для отметки того, что изменение было перенесено в ветвь STABLE из CURRENT. Что означает сокращение BSD? Это сокращение значит что-то на секретном языке, который могут знать только посвящённые. Это нельзя перевести один к одному, однако достаточно сказать, что перевод с BSD - это что-то между Команда Formula-1, Пингвины - это вкусные плюшки и Мы прикольнее, чем Linux. :-) Если серьёзно, то BSD является сокращением от Berkeley Software Distribution, названия, которое было выбрано Berkeley CSRG (Computer Systems Research Group) для их дистрибутива Unix. Что такое repo-copy? repo-copy (что является краткой формой от repository copy) обозначает прямое копирование файлов внутри репозитория CVS. Без repo-copy, если есть необходимость скопировать или переместить файл в другое место репозитория, то коммиттер должен выполнять команды cvs add для помещения файла на новое место, а затем cvs rm, чтобы удалить старый файл, если старая копия должна быть удалена. Минусом этого метода является то, что история (то есть записи в журналах CVS) работы с файлом не копируются в новое место. Так как Проект FreeBSD осознаёт важность сохранения истории, вместо описанного процесса зачастую используется копирование в репозитории. Это действие заключается в том, что один из хозяев репозитория копирует файлы непосредственно внутри репозитория, не пользуясь командами &man.cvs.1;. Почему я должен беспокоиться о цвете фар велосипеда? На самом деле краткий, очень краткий ответ на этот вопрос заключается в том, что вы этого делать не должны. Если давать более подробный ответ, то ваше умение делать фары не должно означать, что вы должны препятствовать другим делать их просто потому, что вам не нравится цвет, в который они собираются их окрашивать. Эта метафора означает, что вам не нужно обсуждать каждую мелочь просто потому, что вы знаете о ней достаточно много. Некоторые люди отмечают, что объём шума, генерируемый при появлении некоторого изменения, находится в обратной зависимости от сложности самого изменения. Более пространный и полный ответ заключается в том, что после очень долгого обсуждения того, должна ли утилита &man.sleep.1; обрабатывать дробное число, заданное в качестве второго аргумента, &a.phk; опубликовал большое сообщение, озаглавленное Велосипедная фара (любого цвета) на зелёной траве.... Соответствующие части этого сообщения цитируются ниже.
&a.phk; on freebsd-hackers, October 2, 1999 Что там насчёт этой велосипедной фары? Кто-то из вас меня спрашивал. Это долгая история, или же это старая история, но на самом деле она коротка. В начале 1960-х годов Паркинсон (C. Northcote Parkinson) написал книгу Закон Паркинсона, которая содержит много интересных взглядов на процесс управления. [немного выдержек из краткого содержания книги] В конкретном примере с велосипедной фарой другим важным объектом является атомная электростанция. Я полагаю, что это иллюстрирует древность книги. Паркинсон показал, что вы можете прийти на совещание руководителей и получить добро на строительство многомиллионной или даже многомиллиардной атомной электростанции, но если вы хотите получить финансирование производства велосипедных фар, то погрязнете в бесконечных обсуждениях. Паркинсон объясняет это тем, что атомная станция настолько большой, дорогой и сложный объект, что люди не могут его осознать и вместо того, чтобы попробовать это сделать, они полагаются на то, что кто-то уже проверил все мелочи до того, как всё зашло так далеко. В своей книге Ричард П. Фейнманн (Richard P. Feynmann) даёт несколько интересных и очень поучительных примеров, связанных с Лос Аламос. Велосипедная фара - это противоположный случай. Любой может сделать фару за один уикэнд, и у него ещё останется время посмотреть футбол по телевизору. Так что не важно, насколько хорошо вы готовились к обсуждению, насколько убедительны будут ваши аргументы, кто-нибудь воспользуется шансом показать, что он не зря ест свой хлеб, что он обращает внимание, что он здесь. В Дании это называется оставить отпечаток своего пальца. Это касается личной гордости и престижа, это похоже на возможность указать куда-то и сказать: Вон там! Это сделал я. Это сильно выражено в политиках, но присутствует во многих людях, которые получают возможность сделать это. Просто вспомните об отпечатках ног во влажном цементе.
Сколько требуется разработчиков FreeBSD, чтобы сменить электрическую лампочку? Необходимо иметь ровно одну тысячу сто семьдесят два разработчика: Двадцать три сообщат в -CURRENT о том, что не горит свет; Четыре начнут утверждать, что это проблема конфигурации и такие сообщения нужно посылать в -questions; Трое оформят PR по этому поводу, причём одно их них будет направлено в doc и будет содержать только строчку "здесь темно"; Один закоммитит неоттестированную лампочку, что сломает построение системы, а затем через пять минут вернёт всё назад; Восемь поругаются с авторами PR по поводу включения патчей в PR; Пять сообщат о том, что не проходит компиляция системы; Тридцать один человек ответит, что у них всё работает и наверное, те выполняли cvsup в неподходящее время; Один пошлёт патч для новой лампочки в -hackers; Один пожалуется, что у него имелись патчики ещё три года назад, но когда он послал их в -CURRENT, они были проигнорированы и он имел неудачный опыт работы с системой PR; кроме того предлагаемая лампочка не имеет отражателя. Тридцать семь начнут кричать, что лампочки не относятся к базовой системе, что коммиттеры не имеют права делать такие вещи без опроса общественности и ЧТО ВООБЩЕ -CORE ДЕЛАЕТ ПО ЭТОМУ ПОВОДУ? Две сотни напишут о цвете велосипедных фар; Трое скажут, что этот патч не соответствует &man.style.9; Семнадцать возразят, что предлагаемая новая лампа подпадает под лицензию GPL; Пятьсот восемьдесят шесть раздуют флейм по поводу сравнения лицензий GPL, BSD, MIT, NPL и личных мнений о неизвестных основателей FSF; Семеро пошлют различные части этих обсуждений в -chat и -advocacy; Один закоммитит предлагаемую лампу, хотя она светит хуже, чем старая; Двое откатят эти изменения с ужасной руганью в журнале коммита о том, что лучше FreeBSD будет сидеть в темноте, чем с тусклой лампой. Сорок шесть громко воспротивятся этому изменению и потребуют объяснений от -core; Одиннадцать попросят уменьшить размер лампочки, чтобы она подошла к их Тамагочи на случай, если мы когда-нибудь соберёмся переносить FreeBSD на эту платформу; Семьдесят три заявят о SNR в -hackers и -chat и в знак протеста отпишутся; Тринадцать пошлют письма "unsubscribe", "How do I unsubscribe?", и "Please remove me from the list" с обычной подписью; Один закоммитит работающую лампочку в то время, как все будут слишком заняты руганью, чтобы это заметить; Тридцать один человек напишет, что новая лампочка будет светить на 0.364% ярче, если её откомпилировать с помощью TenDRA (хотя при этом она приобретёт форму куба) и что FreeBSD должна перейти на компилятор TenDRA, а не на EGCS; Один заметит, что у лампочки отсутствует цоколь; Девять (включая авторов PR) спросят "что такое MFC?"; Спустя две недели после смены лампочки пятьдесят семь человек сообщат о том, что света всё равно нет. &a.nik; добавил: Я сильно смеялся над всем этим. И тогда я подумал, "Постойте-ка, найдётся ли кто-нибудь, чтобы задокументировать это где-нибудь?" И на меня снизошло озарение :-) Куда направляются данные, записываемые в /dev/null? Они отправляются в специальную сточную трубу для данных в CPU, где пробразуются в тепло, выдуваемое через охлаждающие вентиляторы. Вот почему охлаждение ЦП становится все более важным; так как люди используют все более быстрые процессоры, они все менее заботятся о данных, все большее их количество оканчивает свой путь в /dev/null, перегревая ЦП. Если вы удалите /dev/null (что соответственно отключит трубу данных в ЦП), то ваш процессор может охладиться, но система начнет переполняться излишними данными и начнет работать с ошибками. Если у вас быстрое сетевое подключение, вы можете охладить CPU, читая данные из /dev/random и посылая их куда-нибудь; однако вы рискуете перегреть ваше сетевое соединение и / или разозлить вашего провайдера, так как большинство данных преобразуется в тепло на его оборудовании, но, как правило, у него хорошее охлаждение, так что если вы не перестараетесь, все должно быть в порядке. Пол Робинсон (Paul Robinson) добавляет: Есть и другие методы. Как знает каждый хороший системный администратор, частью хорошей практики является посылка данных на экран интересным образом, чтобы феи, которые образуют картинку, были счастливы. Экранные феи (часто неправильно называемые 'пикселами') различаются по типу головных уборов, которые они носят (красные, зеленые или синие), и прячутся или появляются (показывая, таким образом, цвет своих шляп), когда получают немного пищи. Видеоадаптеры преобразуют данные в еду для фей, а затем посылают ее феям - чем дороже адаптер, тем лучше еда, тем лучше ведут себя феи. Им также нужны постоянные тренировки - вот зачем нужны хранители экранов. Продолжив наше предположение, вы можете просто выдавать случайные данные на консоль, таким образом позволяя феям их потреблять. Это вовсе приводит к прекращению выделения тепла, феи постоянно счастливы, а данные быстро исчезают, даже если на вашем экране все выглядит несколько хаотично. Как бывший администратор крупного провайдера, который имел много проблем при попытке поддерживать постоянную температуру в серверной комнате, я выступаю против того, чтобы люди посылали ненужные им данные в сеть. Волшебников, которые выполняют коммутацию пакетов и маршрутизацию, это также затрудняет.
Сложные темы Как можно узнать больше о внутреннем устройстве FreeBSD? В настоящее время нет книги по внутреннему устройству ОС, специфичному для FreeBSD. Однако большинство общих представлений о UNIX непосредственно применимо к FreeBSD. Кроме того, нет книг, специфичных для BSD, которые еще актуальны. Список можно найти в разделе Руководства Библиография по внутреннему устройству операционной системы. Что такое SNAP и RELEASE? В Репозитории CVS сейчас находятся три активно/полуактивно развивающихся ветки FreeBSD (ветвь RELENG_2 меняется от силы пару раз в год, вот почему в разработке только три активных ветки): RELENG_2_2 AKA 2.2-STABLE RELENG_3 AKA 3.X-STABLE RELENG_4 AKA 4-STABLE HEAD AKA -CURRENT AKA 5.0-CURRENT HEAD - это не реальный тэг ветки, как другие два; это просто символьная константа для обозначения текущего, не ветвящегося, находящегося в разработке дерева, то есть -CURRENT. На данный момент -CURRENT является находящимся в разработке деревом 5.0, ветка 4-STABLE, RELENG_4, отделилась от -CURRENT в марте 2000 года. Ветвь 2.2-STABLE, RELENG_2_2, отделилась от -CURRENT в ноябре 1996 и развитие этой ветви было полностью прекращено. Как самим сделать релиз? Чтобы сделать релиз, вам нужно иметь три вещи: Во-первых, вам нужно работать с ядром, включающим драйвер &man.vn.4;. Добавьте его в файл конфигурации ядра и откомпилируйте новое ядро: pseudo-device vn #Vnode driver (turns a file into a device) Во-вторых, вам нужно иметь на диске полное дерево CVS. Чтобы добиться этого, вы можете использовать CVSUP, указав в файле supfile в качестве имени релиза cvs и удалив все поля с тегами и датами: *default prefix=/home/ncvs *default base=/a *default host=cvsup.FreeBSD.org *default release=cvs *default delete compress use-rel-suffix ## Main Source Tree src-all # Other stuff ports-all www doc-all После этого запустите cvsup -g supfile для выкачки всех нужных исходных текстов на ваш компьютер... Наконец, вам нужно свободное место для построения системы. Допустим, что свободное место есть в каталоге /some/big/filesystem и, как в примере выше, вы поместили дерево CVS в каталог /home/ncvs: &prompt.root; setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; cd /usr/src/release &prompt.root; make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release Пожалуйста, отметьте, что вам не нужно выполнять процедуру построения системы полностью, если у вас уже есть заполненный /usr/obj. Полный релиз будет строиться в каталоге /some/big/filesystem/release и по окончании этого процесса дистрибутив, готовый к помещению на FTP-сервер, будет находиться в каталоге /some/big/filesystem/release/R/ftp. Если вы захотите построить SNAP другой ветки, не -CURRENT, то можете указать RELEASETAG=SOMETAG в командной строке make release выше, например, при указании RELEASETAG=RELENG_2_2, будет строиться самый свежий снэпшот ветки 2.2-STABLE. Как создать инсталляционные диски? Весь процесс создания инсталляционных дисков и дистрибутивов исходных текстов и бинарников автоматизирован в файле /usr/src/release/Makefile. Информации, в нём содержащейся, должно быть достаточно, чтобы начать. Однако, должны вас предупредить, что этот процесс включает в себя выполнение make world и поэтому занимает много времени и дискового пространства. По команде make world были переустановлены все программы. Да, так и должно быть; как говорит название этой команды, make world выполняет построение всех системных файлов с нуля, так что в итоге можете быть уверены, что получите чистую рабочую систему (вот почему это занимает столько времени). Если в момент запуска команд make world или make install определена переменная окружения DESTDIR, то вновь создаваемые файлы будут помещены в дерево каталогов. идентичное существующему, с корнем, располагающимся в ${DESTDIR}. Однако некоторые случайные комбинации модификаций совместно используемых библиотек и версий компилируемых программ при исполнении команды make world, может этому помешать. При загрузке системы выдаётся сообщение (bus speed defaulted). Адаптеры SCSI Adaptec 1542 позволяют программно изменять скорость доступа к шине. Предыдущие версии драйвера 1542 пытались определить максимально возможную скорость работы и установить это значение. Мы обнаружили, что у некоторых пользователей это приводило к нарушению работоспособности системы, поэтому эта возможность сейчас вынесена в параметр конфигурации ядра TUNE_1542. Использование этой опции на тех системах, где она работает, может привести к ускорению доступа к дискам, а там, где это не работает, может привести к потере данных. Можно ли работать с current при ограниченном доступе в Internet? Да, это можно делать без скачивания полного дерева исходных текстов с помощью системы CTM. Как вы разделяете дистрибутив на файлы по 240К? Команда split в современных BSD-системах имеет опцию , позволяющую разрезать файлы на части с точностью до байта. Вот пример из файла /usr/src/Makefile. bin-tarball: (cd ${DISTDIR}; \ tar cf - . \ gzip --no-name -9 -c | \ split -b 240640 - \ ${RELEASEDIR}/tarballs/bindist/bin_tgz.) Я написал некоторое добавление к ядру, кому его послать? Обратитесь к соответствующему документу, в котором описано, как это сделать. И спасибо Вам за Ваши усилия! Как распознаются и инициализируются адаптеры ISA Plug N Play? От: Фрэнка Дурды IV (Frank Durda IV) uhclem@nemesis.lonestar.org Если рассматривать на самом низком уровне, то существует несколько портов ввода/вывода, в которые должны выводить информацию все адаптеры PnP, когда компьютер пытается выполнить запрос о наличии установленных адаптеров. Так что, когда запускается процедура определения адаптеров PnP, она выполняет запрос о наличии каких-либо адаптеров PnP, а все такие адаптеры выдают свой номер модели при чтении того же порта ввода/вывода, поэтому процедура определения получит ответ на свой запрос, состоящий из логически наложенных номеров моделей, интерпретируемый как да. В этом ответе по крайней мере один бит будет установлен в единицу. Затем код определения адаптеров может выключать адаптеры с ID (назначаемыми Microsoft/Intel), большими, чем X. Потом следует попытка определить, остались ли ещё адаптеры, отвечающие на запрос. Если ответ 0, то адаптеров с ID, большими чем X, нет. После этого делается попытка определить наличие адаптеров с номерами, меньшими чем X. Если они есть, то становится известно, что есть адаптеры с номерами, меньшими, чем X. Тогда происходит запрос адаптерам, большим чем X-(limit-4), на выключение. Запрос повторяется. Применив этот метод полудвоичного поиска границ расположения ID достаточное количество раз, код идентификации найдёт все адаптеры PnP, установленные в данной машине за число итераций, гораздо меньшее, чем может занять перебор 2^64 возможных вариантов ID. ID представляет собой два 32-разрядные числа (всего их 2^64) + 8 бит контрольной суммы. Первые 32 бита являются идентификатором производителя. Они никогда не сообщаются, однако часто бывает, что различные типы адаптеров от одного и того же производителя имеют различные 32-битные значения идентификатора производителя. Необходимость в 32 разрядах только для задания производителя адаптера выглядит несколько излишним. Оставшиеся 32 бита являются серийным номером, Ethernet-адресом, чем-либо, делающим этот адаптер уникальным. Производитель не должен выпускать других адаптеров, имеющих то же самое значение этих битов, если, конечно, у них не разные идентификаторы производителя. Таким образом, вы можете иметь несколько адаптеров одинакового типа, но с различными 64-разрядными номерами. Группы по 32 бита не могут быть нулевыми. Это позволяет при логическом объединении OR их номеров получать ненулевое значение во время начального поиска адаптеров. Как только система определила ID всех адаптеров, она активизирует каждый адаптер, по одному за раз (через те же порты ввода/вывода), и определяет, какие ресурсы требуются данному адаптеру, какие возможные прерывания доступны и тд. Сканирование и сбор информации происходит по всем адаптерам. Эта информация соотносится с содержащейся в файлах ECU на диске или в MLB BIOS. Поддержка PnP из ECU и BIOS для аппаратуры на MLB обычно имеет синтетический характер, и периферия не выполняет полностью процедуру настоящего PnP. Однако, используя BIOS и информацию из ECU, процедура инициализации может обнаружить устройства PnP, которые не могут быть найдены другим способом. Затем устройства PnP опрашиваются ещё раз для назначения им портов ввода/вывода, DMA, IRQ и адресов отображаемой памяти. Теперь устройства должны иметь именно такие настройки и они должны оставаться такими до следующей перезагрузки, хотя нигде не сказано, что вы не можете их менять, когда захотите. Здесь сделано много упрощений, однако общую идею вы должны уловить. Microsoft использовала для PnP некоторые порты статуса первого принтера, по их логике, не существует адаптеров, использующих эти адреса для ввода/вывода. Я обнаружил один такой адаптер принтера от IBM, который декодирует запись в порт статуса в момент начального опроса устройств PnP, на что MS ответил хулиган. Так что они выполняют запись в порт статуса принтера для установки адресов, вдобавок используют этот адрес + 0x800, и ещё один порт ввода/вывода, который может располагаться где угодно в диапазоне между 0x200 и 0x3ff, для чтения. Мне нужно старшее число для написанного мною драйвера устройства. Всё зависит от того, планируете вы сделать этот драйвер общедоступным или нет. Если это так, то, пожалуйста, пошлите нам копию исходных текстов драйвера вместе с соответствующими модификациями в файле files.i386, пример описания устройства в файле конфигурации ядра и соответствующий код &man.MAKEDEV.8; для создания специальных файлов устройств, которые использует ваше устройство. Если это не так. или это невозможно из-за лицензионных ограничений, то для старшего числа символьного устройства и старшего числа блочного устройства для этих целей были зарезервированы значения 32 и 8 соответственно; используйте их. В любом случае. мы будем рады услышать о вашем драйвере в &a.hackers; Альтернативный метод размещения каталогов В ответ на вопрос о других методах размещения каталогов могу сказать, что используемая в настоящее схема не претерпела изменений с 1983 года. Эти соглашения были предназначены для оригинальной файловой системы FFS, я никогда их не пересматривал. Эта схема прекрасно работает, позволяя избежать переполнения групп дорожек. Как некоторые из вас замечали, она работает плохо при поиске. Большинство файловых систем создаются из архивов, которые были созданы с глубиной первого поиска (aka ftw). Это приводит к тому, что их каталоги размещаются на нескольких группах дорожек, создавая наихудший случай для последующего поиска глубиной один. Если бы было известно общее количество каталогов, которые должны быть созданы, выходом было бы создание (общее количество / количество групп дорожек) на дорожку группу перед переходом. Обычно это число определяется чисто эвристически. Даже при использовании маленького фиксированное числа, скажем 10, значительно улучшает ситуацию. Чтобы различать операции восстановления от обычных операций (где текущий алгоритм подходит), вы можете использовать объединение в кластеры объёмом до 10, если они делаются в окне, равным 10 секундам. Во всяком случае, я думаю, что это требует некоторых экспериментов. Кирк МакКузик (Kirk McKusick), Сентябрь 1998 Что делать при аварийном остановах системы [Этот раздел был вырезан из письма, написанного &a.wpaul; в список рассылки freebsd-current &a.des;, который исправил несколько опечаток и добавил комментарии в квадратных скобках] 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 Бен Розенгарт отправил письмо, содержащее следующее аварийное сообщение системы] > 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 [Если] вы увидите такое сообщение, просто его воспроизвести и послать нам не достаточно. Указатель инструкций, выделенный мною, важен, к сожалению, его значение зависит от конфигурации ядра. Другими словами, его значение меняется в зависимости от конкретного ядра, которое вы используете. Если вы используете ядро GENERIC одного из снэпшотов, то кто-то ещё может отследить функцию, вызвавшую ошибку, но если вы работаете со специально отконфигурированным ядром, то только вы можете сказать нам, где случилась ошибка. Вот что вы должны сделать: Запишите значение указателя инструкций. Заметьте, что часть 0x8: в этом случае не важна: нам нужна часть 0xf0xxxxxx. Когда система перезагрузится, сделайте следующее: &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxxx где f0xxxxxx - это значение указателя инструкций. Однако неприятность заключается в том, что вы не получите точного соответствия, так как в таблице имен ядра для точек входа в функции даны адреса на начало функций, а указатель инструкций будет указывать куда-то внутрь её тела. Если вы не получили точного соответствия, опустите последнюю цифру в значении указателя инструкций и попробуйте снова, то есть: &prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxx Если и это не привело ни к каким результатам, отрежьте следующую цифру. Повторяйте, пока не получите хоть что-то. Результатом будет список функций, которые, возможно, привели к аварийному останову. Этот механизм обнаружения ошибочного места довольно неточен, но это всё же лучше, чем ничего. Зачастую люди приводят подобные аварийные сообщения, на редко кто утруждается привести соответствие указателя инструкций с функцией в таблице символов ядра. Лучшим способом выяснить причину, вызвавшую аварийный останов, является получение аварийного дампа системы, а затем использование &man.gdb.1; для получения трассировки вызовов в этом дампе. Во всяком случае, обычно я использую такой способ: Отредактируйте конфигурационный файл ядра, добавив строку options DDB, если вам зачем-то понадобился встроенный отладчик. (Я использую его в основном для указания точек останова, если подозреваю возникновение бесконечных циклов.) Выполните config -g KERNELCONFIG для создания каталога построения ядра. cd /sys/compile/KERNELCONFIG; make Дождитесь окончания компиляции ядра. make install reboot В процессе выполнения команды &man.make.1; будут построены два ядра, kernel и kernel.debug. kernel будет установлен как /kernel, тогда как kernel.debug может быть использован в качестве источника отладочной информации для &man.gdb.1;. Чтобы включить сброс аварийного дампа, вам нужно отредактировать файл /etc/rc.conf так, чтобы устройство dumpdev указывало на раздел подкачки. В этом случае скрипты &man.rc.8; будут вызывать команду &man.dumpon.8; для включения создания аварийных дампов. Вы можете запустить команду &man.dumpon.8; вручную. После аварийной остановки аварийный дамп может быть получен с помощью программы &man.savecore.8; если значение переменной dumpdev было установлено в /etc/rc.conf, скрипты &man.rc.8; запустят &man.savecore.8; автоматически и поместят аварийный дамп в каталог /var/crash. Аварийные дампы FreeBSD обычно имеют размер, равный физическому объёму оперативной памяти вашей машины. Так что если у вас 64МБ ОЗУ, вы получите дамп размером 64МБ. Поэтому вы должны удостовериться, что в каталоге /var/crash достаточно места для хранения дампа. Либо вы можете вручную запустить &man.savecore.8; и создать аварийный дамп в другом каталоге, где достаточно места. Размер аварийного дампа можно уменьшить, указав в конфигурации ядра options MAXMEM=(размер) подходящее значение для объёма памяти, которое будет использоваться ядром. Например, если у вас 128 МБ ОЗУ, вы можете ограничить использование памяти ядром 16 мегабайтами, так что размер аварийного дампа будет равен 16МБ, а не 128. Как только вы получили аварийный дамп, вы можете выполнить трассировку вызовов с помощью &man.gdb.1; таким образом: &prompt.user; gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0 (gdb) where Заметьте, что при этом может быть выведено несколько экранов информации; в идеале вы должны использовать &man.script.1; для их перехвата. При использовании необработанного образа ядра со всей отладочной информацией может быть найдена конкретная строка исходного текста ядра, при достижении которой случилась аварийная остановка. Для выяснения последовательности событий, приведших к аварийному останову, обычно читается трассировка стека снизу вверх. Вы можете также использовать &man.gdb.1; для вывода значений различных переменных или структур, чтобы выяснить состояние системы во время аварии. Теперь, если вы в самом деле душевнобольной и у вас есть второй компьютер, то можете настроить &man.gdb.1; для удалённой отладки, так, что сможете использовать &man.gdb.1; на одном компьютере, чтобы отладить ядро на другом, включая использование точек останова, пошагового прохода по коду ядра, всё как с обычной прикладной программой. Я пока с этим не игрался, так как не часто имею возможность поставить две машины одну напротив другой для отладки. [Билл (Bill) добавил: "Я забыл обратить ваше внимание на одну вещь: если у вас включена поддержка DDB и ядро переходит в режим отладки, вы можете намеренно вызвать аварийный останов (и создание аварийного дампа), набрав 'panic' в командной строке ddb. Этот процесс может снова вызвать отладчик. В этом случае наберите 'continue' и процесс будет завершён созданием аварийного дампа." -ed] Перестала работать функция dlsym() для ELF! По умолчанию при работе с форматом ELF символы, определённые в выполнимом файле, не доступны динамическому загрузчику. Поэтому при вызове функции dlsym(), которая осуществляет поиск по дескриптору, полученному после вызова dlopen(NULL, flags), желаемый результат достигнут не будет. Если вы хотите осуществить поиск в выполнимом файле процесса с помощью функции dlsym(), вам нужно компоновать выполнимый файл с опцией компоновщика ELF (&man.ld.1;). Увеличение и уменьшение адресного пространства ядра По умолчанию размер адресного пространства ядра равен 256 МБ во FreeBSD 3.x и 1 ГБ во FreeBSD 4.x. Если вы используете FreeBSD в качестве сервера с интенсивной сетевой нагрузкой (скажем, большой FTP или HTTP сервер), вы можете обнаружить, что 256 МБ недостаточно. Каким же образом можно увеличить адресное пространство? Здесь есть два момента. Во-первых, вам нужно указать ядру выделить большее количество адресного пространства для самого ядра. Во-вторых, так как ядро загружается в верхнюю часть адресного пространства, вам нужно уменьшить адрес загрузки так, чтобы он не вышел за верхнюю границу. Первая проблема решается увеличением значения константы NKPDE в файле src/sys/i386/include/pmap.h. В случае 1 ГБ адресного пространства он должен выглядеть примерно так: #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 Для вычисления значения NKPDE разделите желаемый объём адресного пространства (в мегабайтах) на четыре и вычтите из получившегося числа единичку в случае однопроцессорной машины и двоечку в случае многопроцессорного ядра. Для достижения второй цели вам нужно правильный адрес для загрузки ядра: просто отнимите размер адресного пространства (в байтах) от 0x100100000; результат будет равным 0xc0100000 для адресного пространства в 1 ГБ. Установите значение константы LOAD_ADDRESS в файле src/sys/i386/conf/Makefile.i386 в это значение; затем установите значение счётчика в начале списка секций в файле src/sys/i386/conf/kernel.script в то же самое значение, как это сделано здесь: 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) } После этого переконфигурируйте и перестройте ядро. Вы можете столкнуться с проблемами при работе утилит &man.ps.1;, &man.top.1; и подобных им; решить их может make world (или ручная перекомпиляция libkvm, &man.ps.1; и &man.top.1; после копирования исправленного pmap.h в /usr/include/vm/). ЗАМЕЧАНИЕ: Размер адресного пространства ядра должен быть кратен четырём мегабайтам. [&a.dg; добавил: Я думаю, что размер адресного пространства ядра должен быть степенью двойки, но я в этом не уверен. Для работы с верхними адресами памяти использовался код старого загрузчика, и я ожидаю по крайней мере точность в 256 МБ.] Наши благодарности
FreeBSD Core Team Если вы обнаружили неточности в этом FAQ или хотите что-то в него добавить, пожалуйста, напишите нам по адресу &a.faq;. Мы ждём ваши отзывы и пожелания, чтобы с вашей помощью сделать этот документ ещё лучше!
&a.jkh; Различные упорядочения и добавления в FAQ. &a.dwhite; Работа с &a.questions; &a.joerg; Работа с телеконференциями Usenet &a.wollman; Раздел о сети и форматирование Jim Lowe Информация о протоколе многоадресной передачи &a.pds; Раб-наборщик Andrey Zakhvatov Перевод на русский язык The FreeBSD Team Охи, вздохи, стоны, добавления И всем остальным, оставшимся неизвестными, наши глубочайшие извинения и сердечные благодарности!
Библиография 4.4BSD System Manager's Manual Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1st Edition June 1994 804 pages ISBN 1-56592-080-5 4.4BSD User's Reference Manual Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1st Edition June 1994 905 pages ISBN 1-56592-075-9 4.4BSD User's Supplementary Documents Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1st Edition June 1994 712 pages ISBN 1-56592-076-7 4.4BSD Programmer's Reference Manual Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1st Edition June 1994 866 pages ISBN 1-56592-078-3 4.4BSD Programmer's Supplementary Documents Computer Systems Research Group, University of California, Berkeley O'Reilly and Associates 1st Edition June 1994 596 pages ISBN 1-56592-079-1 The Design and Implementation of the 4.4BSD Operating System M. K. McKusick Kirk Marshall Keith Bostic Michael J Karels John Quarterman Addison-Wesley
Reading MA
1996 ISBN 0-201-54979-4
Unix System Administration Handbook Evi Nemeth Garth Snyder Scott Seebass Trent R. Hein John Quarterman Prentice-Hall 3rd edition 2000 ISBN 0-13-020601-6 The Complete FreeBSD Greg Lehey Walnut Creek 3rd edition June 1999 773 pages ISBN 1-57176-246-9 The FreeBSD Handbook FreeBSD Documentation Project BSDi 1st Edition November 1999 489 pages ISBN 1-57176-241-8 McKusick et al, 1994 Berkeley Software Architecture Manual, 4.4BSD Edition M. K. McKusick M. J. Karels S. J. Leffler W. N. Joy R. S. Faber 5:1-42
diff --git a/share/sgml/catalog b/share/sgml/catalog index d8585b8d15..0a21abfd71 100644 --- a/share/sgml/catalog +++ b/share/sgml/catalog @@ -1,110 +1,113 @@ -- ...................................................................... -- -- FreeBSD SGML Public Identifiers ...................................... -- -- $FreeBSD$ -- -- ...................................................................... -- -- Language neutral ..................................................... -- -- These identifiers are shared across all translations of the FreeBSD documentation, even though the listed language is "EN" -- PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN" "freebsd.dtd" PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" "freebsd41.dtd" PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN" "man-refs.ent" PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//EN" "freebsd.dsl" PUBLIC "-//FreeBSD//DOCUMENT DocBook Language Neutral Stylesheet//EN" "freebsd.dsl" PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN" "freebsd.ent" -- ...................................................................... -- -- English specific ..................................................... -- -- These identifiers should only be used by English language versions of the FreeBSD Documentation. All other translations should base their FPIs on these, but change the final parameter in the FPI to represent the target language, as appropriate. Do not change the rest of the FPI -- PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//EN" "../../en_US.ISO8859-1/share/sgml/bookinfo.ent" PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN" "../../en_US.ISO8859-1/share/sgml/authors.ent" +PUBLIC "-//FreeBSD//ENTITIES DocBook Team Entities//EN" + "../../en_US.ISO8859-1/share/sgml/teams.ent" + PUBLIC "-//FreeBSD//ENTITIES DocBook Newsgroup Entities//EN" "../../en_US.ISO8859-1/share/sgml/newsgroups.ent" -- ...................................................................... -- -- French specific ...................................................... -- PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//FR" "../../fr_FR.ISO8859-1/share/sgml/bookinfo.ent" PUBLIC "-//FreeBSD//ENTITIES Common Document URL Entities//FR" "../../fr_FR.ISO8859-1/share/sgml/urls.ent" PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//FR" "../../fr_FR.ISO8859-1/share/sgml/translators.ent" PUBLIC "-//FreeBSD//ENTITIES DocBook Abstract Entities//FR" "../../fr_FR.ISO8859-1/share/sgml/abstract.ent" PUBLIC "-//FreeBSD//ENTITIES DocBook ArtHeader Entities//FR" "../../fr_FR.ISO8859-1/share/sgml/artheader.ent" -- ...................................................................... -- -- Russian specific ...................................................... -- PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//RU" "../../ru_RU.KOI8-R/share/sgml/bookinfo.ent" -- ...................................................................... -- -- German specific ...................................................... -- PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//DE" "../../de_DE.ISO8859-1/share/sgml/bookinfo.ent" PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//DE" "../../de_DE.ISO8859-1/share/sgml/freebsd.dsl" PUBLIC "-//FreeBSD//DOCUMENT DocBook Language Neutral Stylesheet//DE" "../../de_DE.ISO8859-1/share/sgml/freebsd.dsl" PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//DE" "../../de_DE.ISO8859-1/share/sgml/translators.ent" -- ...................................................................... -- -- Portuguese Brazilian specific ........................................ -- PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//PTBR" "../../pt_BR.ISO8859-1/share/sgml/bookinfo.ent" PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//PTBR" "../../pt_BR.ISO8859-1/share/sgml/freebsd.dsl" PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//PTBR" "../../pt_BR.ISO8859-1/share/sgml/translators.ent" -- ...................................................................... -- -- Spanish specific ..................................................... -- PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//ES" "../../es_ES.ISO8859-1/share/sgml/bookinfo.ent" PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//ES" "../../es_ES.ISO8859-1/share/sgml/freebsd.dsl"