diff options
Diffstat (limited to 'ru_RU.KOI8-R/books/faq/book.xml')
-rw-r--r-- | ru_RU.KOI8-R/books/faq/book.xml | 11254 |
1 files changed, 11254 insertions, 0 deletions
diff --git a/ru_RU.KOI8-R/books/faq/book.xml b/ru_RU.KOI8-R/books/faq/book.xml new file mode 100644 index 0000000000..34eb340e3e --- /dev/null +++ b/ru_RU.KOI8-R/books/faq/book.xml @@ -0,0 +1,11254 @@ +<?xml version="1.0" encoding="koi8-r" standalone="no"?> +<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN" + "../../../share/sgml/freebsd42.dtd" [ +<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//RU" "../../share/sgml/entities.ent"> +%entities; +<!ENTITY bibliography SYSTEM "../../../share/sgml/bibliography.xml"> +<!ENTITY rel.head "<emphasis>10-CURRENT</emphasis>"> +<!ENTITY rel.head.relx "10.<replaceable>X</replaceable>"> +<!ENTITY rel.head.releng "<symbol>HEAD</symbol>"> +<!ENTITY rel.head.packages "packages-10-current"> +<!ENTITY rel.relx "9.<replaceable>X</replaceable>"> +<!ENTITY rel.stable "<emphasis>9-STABLE</emphasis>"> +<!ENTITY rel.releng "<symbol>RELENG_9</symbol>"> +<!ENTITY rel.relengdate "в сентябре 2011 года"> +<!ENTITY rel.packages "packages-9-stable"> +<!ENTITY rel2.relx "8.<replaceable>X</replaceable>"> +<!ENTITY rel2.stable "<emphasis>8-STABLE</emphasis>"> +<!ENTITY rel2.releng "<symbol>RELENG_8</symbol>"> +<!ENTITY rel2.relengdate "в августе 2009 года"> +<!ENTITY rel2.packages "packages-8-stable"> +<!ENTITY rel3.current "7.4"> +<!ENTITY rel3.relx "7.<replaceable>X</replaceable>"> +<!ENTITY rel3.stable "<emphasis>7-STABLE</emphasis>"> +<!ENTITY rel3.releng "<symbol>RELENG_7</symbol>"> +<!ENTITY rel3.relengdate "в октябре 2007 года"> +<!ENTITY rel3.packages "packages-7-stable"> +]> + +<!-- + The FreeBSD Russian Documentation Project + + $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/book.xml,v 1.213 2007/05/14 19:27:34 gad Exp $ + + Original revision: r38488 +--> + +<book lang="ru"> + <bookinfo> + <title>Часто задаваемые вопросы по &os; + &rel3.relx;, &rel2.relx; и &rel.relx;</title> + + <corpauthor>The &os; Documentation Project</corpauthor> + + <copyright> + <year>1995</year> + <year>1996</year> + <year>1997</year> + <year>1998</year> + <year>1999</year> + <year>2000</year> + <year>2001</year> + <year>2002</year> + <year>2003</year> + <year>2004</year> + <year>2005</year> + <year>2006</year> + <year>2007</year> + <year>2008</year> + <year>2009</year> + <year>2010</year> + <year>2011</year> + <year>2012</year> + <holder>The &os; Documentation Project</holder> + </copyright> + + &legalnotice; + + <legalnotice id="trademarks" role="trademarks"> + &tm-attrib.freebsd; + &tm-attrib.3com; + &tm-attrib.adobe; + &tm-attrib.creative; + &tm-attrib.cvsup; + &tm-attrib.ibm; + &tm-attrib.ieee; + &tm-attrib.intel; + &tm-attrib.iomega; + &tm-attrib.linux; + &tm-attrib.microsoft; + &tm-attrib.mips; + &tm-attrib.netscape; + &tm-attrib.opengroup; + &tm-attrib.oracle; + &tm-attrib.sgi; + &tm-attrib.sparc; + &tm-attrib.sun; + &tm-attrib.usrobotics; + &tm-attrib.xfree86; + &tm-attrib.general; + </legalnotice> + + <releaseinfo>$FreeBSD$</releaseinfo> + + <abstract> + <para>Этот документ является так называемым FAQ (Frequently Asked + Questions), то есть списком Часто Задаваемых Вопросов по &os; версий + &rel3.relx;, &rel2.relx; и &rel.relx;. + Если не оговорено обратное, предполагается, что все замечания + справедливы для версий &os; &rel3.relx; и выше. + Если вы + хотите помочь в составлении этого документа, пошлите письмо в &a.doc;. + Последняя редакция этого документа всегда доступна с <ulink + url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/faq/index.html"> + Web-сервера &os;</ulink>. Его также + можно получить в виде одного большого <ulink url="book.html"> + HTML-файла</ulink> по HTTP или в виде обычного текстового файла, файла + формата &postscript;, PDF или другого формата с <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">FTP-сервера</ulink>. + Вы также можете осуществить <ulink + url="&url.base;/search/search.html">поиск</ulink> в + FAQ.</para> + </abstract> + </bookinfo> + + <chapter id="introduction"> + <title>Вступление</title> + + <para>Добро пожаловать в FAQ по &os; + &rel3.relx;, &rel2.relx; и &rel.relx;!</para> + + <para>Как и обычный FAQ конференций Usenet, этот документ содержит + большинство из часто задаваемых вопросов, касающихся операционной системы + &os; (и, конечно же, ответы на них). Первоначально предназначенный для + уменьшения потока сообщений и избежания повторения одних и тех же + вопросов, постепенно FAQ превратился в ценный источник информации.</para> + + <para>Мы прилагаем все усилия, чтобы сделать этот FAQ максимально + информативным; если у вас есть идеи по его усовершенствованию, + пожалуйста, напишите нам на адрес &a.doc;.</para> + + <qandaset> + <qandaentry> + <question id="what-is-FreeBSD"> + <para>&os; - что это такое?</para> + </question> + + <answer> + <para>В двух словах, &os; - это &unix;-подобная операционная + система для платформ AMD64 и &intel; EM64T, &i386;, PC-98, IA-64, + &arm;, &powerpc; и &ultrasparc;, разработанная на основе операционной + системы <quote>4.4BSD-Lite</quote> с некоторыми + усовершенствованиями, взятыми из <quote>4.4BSD-Lite2</quote> + Калифорнийского Университета (Беркли). Также она косвенно + базируется на 386BSD (BSD Net/2, перенесённой на платформу &i386; + Уильямом Джолитцем (William Jolitz)), хотя от того первоначального + кода осталось очень мало. Более подробные объяснения того, что + представляет из себя &os; и для чего она может вам пригодиться, + можно найти на <ulink url="&url.base;/index.html">домашней + странице &os;</ulink>.</para> + + <para>&os; используется компаниями, Интернет-провайдерами, + научными работниками, профессионалами в вычислительной технике, + студентами и рядовыми пользователями по всему миру для работы, + образования и отдыха.</para> + + <para>Для более детального знакомства с &os;, пожалуйста, + обратитесь к <ulink url="&url.books.handbook;/index.html"> + Руководству по &os;</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="FreeBSD-goals"> + <para>Какова цель &os;?</para> + </question> + + <answer> + <para>Цель, преследуемая проектом &os; - это предоставление + программного обеспечения, которое может быть использовано в любых + целях без каких бы то ни было ограничений. Многие из нас + вкладывают значительные усилия в её разработку (и проектирование) и + определённо были бы не против получения финансовой поддержки, но + требовать её мы не будем. Мы надеемся, что наша основная и самая + значительная <quote>миссия</quote> - предоставить код всем + желающим, для любых целей, так чтобы он нашел самое широкое + применение и принёс наибольшую пользу. Это, на наш взгляд, одна + из самых фундаментальных целей Free Software, которую мы с + энтузиазмом поддерживаем.</para> + + <para>Часть исходного кода нашей системы, подпадающая под действие + <ulink url="http://www.FreeBSD.org/copyright/COPYING">GNU General + Public License (GPL)</ulink> или <ulink + url="http://www.FreeBSD.org/copyright/COPYING.LIB">GNU Library + General Public License (LGPL)</ulink>, имеет несколько + больше ограничений, хотя и представляет собой навязывание доступа к + исходным текстам, а не наоборот, как обычно. Из-за дополнительных + сложностей, которые могут возникнуть в случае коммерческого + использования программного обеспечения GPL, мы стараемся, где + только это возможно, заменить подобное программное обеспечение + аналогичным, но подпадающим под менее строгую <ulink + url="http://www.FreeBSD.org/copyright/freebsd-license.html"> + лицензию &os;</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="bsd-license-restrictions"> + <para>Есть ли в лицензии &os; какие-то ограничения?</para> + </question> + + <answer> + <para>Да. Эти ограничения не касаются того, как именно вы + используете код, но главным образом описывают ваше отношение при + этом в целом к Проекту &os;. Если у вас есть серьезные + проблемы с лицензированием, прочтите собственно <ulink + url="http://www.FreeBSD.org/copyright/freebsd-license.html">текст + лицензионного соглашения</ulink>. Упрощенно оно может быть вкратце + изложено следующим образом.</para> + + <itemizedlist> + <listitem> + <para>Не говорите, что это написано вами.</para> + </listitem> + + <listitem> + <para>Не судитесь с нами, если что-то не работает.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="replace-current-OS"> + <para>Может ли &os; заменить операционную систему, используемую + мною сейчас?</para> + </question> + + <answer> + <para>Для большинства людей, да. Но этот ответ не так уж + однозначен.</para> + + <para>Большинство пользователей на самом деле не используют + операционную систему. Они работают с приложениями. Именно + прикладные программы и используют операционную систему. &os; + разработана для того, чтобы дать надежное и полнофункциональное + окружение для приложений. Она поддерживает широкий спектр + Web-браузеров, офисных пакетов, программ для работы с электронной + почтой, графических пакетов, программных сред, сетевых серверов и + практически все, что вы можете захотеть. Большинство этих + приложений могут быть получено из <ulink + url="http://www.FreeBSD.org/ports/">Коллекции + Портов</ulink>.</para> + + <para>Если вам необходимо использовать приложение, которое доступно + только для одной операционной системы, вам просто нельзя заменять + операционную систему. Однако есть вероятность, что похожая + программа существует для &os;. Если вам нужен стабильно + работающий сервер для офиса или сервер Интернет, надежная рабочая + станция или просто возможность выполнять работу без сбоев, &os; + практически всегда справится со всем, что вам нужно. Многие + пользователи по всему миру, включая как новичков, так и опытных + администраторов &unix;, используют &os; в качестве своей + единственной настольной операционной системы.</para> + + <para>Если вы переходите на &os; с какого-то другого варианта + &unix;, вы уже знаете большинство ваших потребностей. Если вы + привыкли к таким графическими операционными системам, как &windows; + или старым версиям &macos;, будьте готовы к затратам + дополнительного + времени на изучение подхода &unix; к работе. Этот FAQ и <ulink + url="&url.books.handbook;/index.html">Руководство по + &os;</ulink> являются прекрасным способом начать это + изучение.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="why-called-FreeBSD"> + <para>Почему система называется именно &os;?</para> + </question> + + <answer> + <itemizedlist> + <listitem> + <para>Она может использоваться безо всяческих выплат, даже + для извлечения выгоды.</para> + </listitem> + + <listitem> + <para>Все исходные тексты операционной системы свободно + доступны, на её использование в других разработках (как + коммерческих, так и некоммерческих) и дальнейшее + распространение наложены минимальные ограничения.</para> + </listitem> + + <listitem> + <para>Любой, у кого есть усовершенствования или исправления, + может предоставить свой код и он будет (правда, с парой + оговорок) добавлен в исходные тексты системы.</para> + </listitem> + </itemizedlist> + + <para>Следует отметить, что слово <quote>free</quote> + используется здесь в двух смыслах, один означает + <quote>бесплатно</quote>, а другой <quote>вы можете делать всё, + что хотите</quote>. За исключением пары вещей, которые вы + <emphasis>не можете</emphasis> делать с &os;, например, + претендовать на то, что являетесь её разработчиком, на самом + деле можно делать с ней всё, что вам заблагорассудится.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="differences-to-other-bsds"> + <para>В чём заключается разница между &os; и NetBSD, OpenBSD + и другими операционными системами с открытыми кодами + семейства BSD?</para> + </question> + + <answer> + <para>Джеймс Ховард (James Howard) создал хорошее описание истории и + различий между различными проектами под названием <ulink + url="http://www.freebsdworld.gr/freebsd/bsd-family-tree.html"> + Семейное древо BSD</ulink>, в котором даётся подробный ответ на + этот вопрос.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="latest-version"> + <para>Какова последняя версия &os;?</para> + </question> + +<!-- + Этот ответ является хаком для работы с тем фактом, что теперь имеется + несколько "последних" версий FreeBSD. +--> + + <answer> + <para>На любом этапе разработки &os; может существовать + несколько параллельных веток. Релизы &rel.relx; выполняются + из ветки &rel.stable;, а релизы &rel2.relx; выполняются из + &rel2.stable;.</para> + + <para>До выпуска 8.0 линейка &rel3.relx; была + известна как <emphasis>-STABLE</emphasis>. + Однако к моменту выхода 8.0 линейка &rel3.relx; + получит статус <quote>extended support</quote> (расширенная + поддержка), и исправления будут вноситься только для серьезных + проблем, к примеру исправления, связанные с безопасностью. Из + ветки &rel3.stable; новые релизы выпускаться не будут, ветка + считается <quote>legacy</quote> (устаревшая), и большинство + текущих изменений будет уже частью только &rel.stable; и + &rel2.stable;.</para> + + <para>Версия <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/"> + &rel.current;</ulink>, выпущенная &rel.current.date;, является + самым последним релизом в ветке &rel.stable;. + Версия <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/"> + &rel2.current;</ulink>, выпущенная &rel2.current.date;, является + самым последним релизом в ветке &rel2.stable;.</para> + + <para>Если вкратце, то ветка <emphasis>-STABLE</emphasis> + предназначена поставщикам услуг Internet, корпоративным + пользователям, а также всем тем, кому в первую очередь нужна + надёжность и минимальное количество отличий от последнего + релиза по сравнению с новыми (и, возможно, ненадёжно работающими) + возможностями последнего снэпшота <emphasis>-CURRENT</emphasis>. + Релизы можно делать из любой ветки, но + <emphasis>-CURRENT</emphasis> можно использовать только в том + случае, если вы уверены, что готовы к постоянным (по + сравнению со <emphasis>-STABLE</emphasis>) изменениям в работе + системы.</para> + + <para>Релизы делаются <link linkend="release-freq">раз в + несколько месяцев</link>. Хотя многие стараются отслеживать + актуальное состояние исходных текстов &os; (обратите внимание на + вопросы о <link linkend="current">&os.current;</link> и <link + linkend="stable">&os.stable;</link>), делать это не обязательно, + так как исходные тексты постоянно меняются.</para> + + <para>Более полную информацию о релизах &os; можно получить со + страницы о <ulink url="http://www.FreeBSD.org/releng/index.html"> + Процессе выпуска релизов</ulink> на Web-сайте &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="current"> + <para>Что такое <emphasis>&os;-CURRENT</emphasis>?</para> + </question> + + <answer> + <para><ulink + url="&url.books.handbook;/current-stable.html#CURRENT"> + &os.current;</ulink> - это версия операционной системы, + находящаяся в стадии разработки, которая должна потом стать + новой веткой &os.stable;. Таким образом, она представляет + реальный интерес только для разработчиков системы и её фанатов. + Обратитесь к <ulink + url="&url.books.handbook;/current-stable.html#CURRENT"> + соответствующему + разделу</ulink> <ulink url="&url.books.handbook;/index.html"> + Руководства</ulink> для прояснения деталей работы с + <emphasis>-CURRENT</emphasis>.</para> + + <para>Если вы не специалист по операционным системам или не в + состоянии отличить реальную проблему от временных явлений, вы не + должны использовать &os.current;. Эта ветвь зачастую меняется + очень быстро и иногда может быть не работоспособна. + Те, кто используют &os.current;, должны быть + в состоянии анализировать любые проблемы и сообщать о них, если + это действительно ошибки, а не <quote>глюки</quote>. Сообщения + типа <quote>make world produces some error about groups</quote>, + отправленные в &a.current;, могут быть восприняты + пренебрежительно.</para> + + <para>Ежемесячно из веток <emphasis>-CURRENT</emphasis> и + <emphasis>-STABLE</emphasis> делаются <ulink + url="&url.base;/snapshots/">снэпшоты</ulink>. + Их предназначение:</para> + + <itemizedlist> + <listitem> + <para>Тестирование самой последней версии программы установки + системы.</para> + </listitem> + + <listitem> + <para>Дать людям, которые хотят работать с + <emphasis>-CURRENT</emphasis> или <emphasis>-STABLE</emphasis>, + но не имеют времени или возможности (пропускной способности) + для отслеживания ежедневных изменений, простой способ её + установки.</para> + </listitem> + + <listitem> + <para>Фиксация точки для последующих ссылок в случае, + если позже мы что-нибудь очень сильно сломаем. (Хотя CVS, как + правило, не позволяет случиться ничему такому ужасному.)</para> + </listitem> + + <listitem> + <para>Все новые возможности, которым требуется тестирование, + должны иметь как можно больше потенциальных тестеров.</para> + </listitem> + </itemizedlist> + + <para>Не утверждается, что всякий снэпшот + <emphasis>-CURRENT</emphasis> имеет качество + <quote>готового продукта</quote>. Если вам нужна стабильно + работающая и полностью оттестированная система, то необходимо + дождаться выхода полного релиза или воспользоваться снэпшотами + <emphasis>-STABLE</emphasis>.</para> + + <para>Снэпшот-релизы доступны непосредственно <ulink + url="&url.base;/snapshots/">отсюда</ulink>.</para> + + <para>Официальные снэпшоты постоянно генерируются каждый месяц + для всех активно разрабатываемых веток. Также ежедневно + делаются снэпшоты популярных веток &arch.i386; и &arch.amd64; + и доступны на <ulink + url="http://snapshots.us.freebsd.org/"></ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="stable"> + <para>В чём смысл <emphasis>&os;-STABLE</emphasis>?</para> + </question> + + <answer> + <para>После того, как была выпущена &os; 2.0.5, разработка &os; + разделилась на две части. Одна ветка получила название <ulink + url="&url.books.handbook;/current-stable.html#STABLE"> + -STABLE</ulink>, а другая <ulink + url="&url.books.handbook;/current-stable.html#CURRENT"> + -CURRENT</ulink>. + <emphasis>&os;-STABLE</emphasis> предназначена для + провайдеров услуг Интернет и + других коммерческих пользователей, для которых неожиданные + изменения или экспериментальные возможности + весьма нежелательны. В неё вносятся только хорошо оттестированные + исправления и другие небольшие последовательные усовершенствования. + С другой стороны, <emphasis>&os;-CURRENT</emphasis> являлась + единой веткой, не + разрываемой с момента выхода версии 2.0 и ведущей к + &rel.current;-RELEASE и последующим релизам. Для получения + более подробной информации по веткам обратитесь к + разделу статьи <quote><ulink + url="&url.articles.releng;/release-proc.html#REL-BRANCH"> + Подготовка релизов &os;: Создание ветки + релиза</ulink></quote>. Статус веток и расписание + предстоящих релизов можно получить на странице <ulink + url="http://www.FreeBSD.org/releng">Информация о подготовке + релизов</ulink>.</para> + + <para>Ветвь 2.2-STABLE была завершена выходом релиза 2.2.8. Ветвь + 3-STABLE была завершена выходом релиза 3.5.1, последнего из + 3.<replaceable>X</replaceable>. Ветвь 4-STABLE была завершена + выходом релиза 4.11, последнего из 4.<replaceable>X</replaceable>. + Единственными изменениями в этих ветвях могут быть только + исправления ошибок, касающихся безопасности. Поддержка ветви + 5-STABLE была завершена выходом релиза 5.5, последнего из + 5.<replaceable>X</replaceable>. Поддержка ветви 6-STABLE + продолжится некоторое время, но в основном будет касаться + исправления ошибок в информационной защите и других серьёзных + вопросах.</para> + + <para>Активно разрабатываемой веткой <emphasis>-STABLE</emphasis> + является &rel.current;-STABLE. Последним релизом в ветке + &rel.current;-STABLE является + &rel.current;-RELEASE, выпущенный &rel.current.date;.</para> + + <para>Активно разрабатываемой веткой <emphasis>-CURRENT</emphasis> + является ветка &rel.head;, которая движется к созданию следующего + поколения &os;. + Прочтите ответ на вопрос <link linkend="current">Что такое + &os;-CURRENT?</link> для получения более подробной информации об + этой ветке.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="release-freq"> + <para>В какой момент выпускаются новые версии &os;?</para> + </question> + + <answer> + <para>&a.re; выпускает новую старшую версию &os; в среднем + каждые 18 месяцев и младшие версии каждые 8 месяцев. Даты + релизов обычно объявляются заранее, так что те, кто + работает над системой, знают, когда их проекты должны быть + закончены и протестированы. Период тестирования предшествует + выходу каждого релиза, для того, чтобы удостовериться в том, что + добавление новых возможностей не повлияло на стабильность работы + релиза. Многие пользователи расценивают такую осторожность + как одну из приятнейших черт &os;, хотя необходимость дожидаться + <emphasis>-STABLE</emphasis> для получения всех этих новых + возможностей может несколько разочаровывать.</para> + + <para>Дополнительная информация о процессе подготовки релиза (в том + числе планы выпуска последующих релизов) может быть найдена на + страницах Web-сайта &os;, посвящённых <ulink + url="http://www.FreeBSD.org/releng/index.html">выпуску + релизов</ulink>.</para> + + <para>Для тех, кому нужно или хочется, ежедневно выпускаются + бинарные релизы, как это описано выше.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="responsible"> + <para>Кто разрабатывает &os;?</para> + </question> + + <answer> + <para>Решения, которые касаются ключевых моментов в проекте &os;, + такие, как общее направление развития проекта или кто + может добавлять код к дереву исходных текстов, принимаются <ulink + url="&url.base;/administration.html#t-core">основной + командой</ulink> разработчиков (Core Team), состоящей из 9 человек. + Также существует многочисленная группа, состоящая из более чем 350 + так называемых <ulink + url="&url.articles.contributors;/article.html#STAFF-COMMITTERS"> + коммиттеров</ulink> (committers), которые могут вносить изменения + прямо в дерево исходных текстов &os;.</para> + + <para>Однако большинство нетривиальных изменений широко обсуждается + в <link linkend="mailing">списках рассылки</link>, и не существует + никаких ограничений на участие в подобных дискуссиях.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="where-get"> + <para>Где можно найти &os;?</para> + </question> + + <answer> + <para>Все основные релизы &os; доступны по FTP с <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/">FTP-сервера + &os;</ulink>:</para> + + <itemizedlist> + <listitem> + <para>Последний релиз &rel.stable;, &rel.current;-RELEASE, + можно найти в <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE"> + каталоге с &rel.current;-RELEASE</ulink>.</para> + </listitem> + + <listitem> + <para><ulink url="&url.base;/snapshots/"> + Снэпшот-релизы</ulink> для веток <link + linkend="current">-CURRENT</link> и <link + linkend="stable">-STABLE</link> выпускаются ежемесячно, но + они нужны исключительно для разработчиков и тех, кто тестирует + самые последние наработки.</para> + </listitem> + + <listitem> + <para>Последний релиз &rel2.stable;, &rel2.current;-RELEASE, + можно найти в <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/"> + каталоге с &rel2.current;-RELEASE</ulink>.</para> + </listitem> + + <listitem> + <para>Последний релиз &rel3.stable;, &rel3.current;-RELEASE, + можно найти в <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel3.current;-RELEASE/"> + каталоге с &rel3.current;-RELEASE</ulink>.</para> + </listitem> + </itemizedlist> + + <para>Информация о получении/приобретении &os; на CD, DVD и + других носителях доступна в <ulink + url="&url.books.handbook;/mirrors.html">Руководстве</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="access-pr"> + <para>Как можно получить доступ к базе сообщений о проблемах (Problem + Report)?</para> + </question> + + <answer> + <para>База данных всех сообщений пользователей о проблемах может быть + запрошена с помощью нашего <ulink + url="http://www.FreeBSD.org/cgi/query-pr.cgi?query"> + Web-интерфейса</ulink>.</para> + + <para>Команда &man.send-pr.1; может быть использована для передачи + и изменения сообщений о проблемах через электронную почту. + Альтернативно можно использовать <ulink + url="http://www.freebsd.org/send-pr.html">Web-интерфейс для отсылки + сообщений об ошибках</ulink> через браузер.</para> + + <para>Перед тем, как посылать сообщение об ошибке, пожалуйста, + прочтите статью <ulink + url="&url.articles.problem-reports;/article.html">Составление + сообщений о проблеме во &os;</ulink> о том, как писать хорошие + сообщения об ошибках.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="other-info-sources"> + <para>Другие источники информации.</para> + </question> + + <answer> + <para>Пожалуйста, посмотрите список имеющейся <ulink + url="http://www.FreeBSD.org/docs.html">документации</ulink> на + главной странице сайта <ulink + url="http://www.FreeBSD.org">&os;</ulink>.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="support"> + <title>Документация и поддержка</title> + + <qandaset> + <qandaentry> + <question id="books"> + <para>Есть ли хорошие книги по &os;?</para> + </question> + + <answer> + <para>В рамках проекта создан широкий спектр документации, которая + доступна on-line по следующей ссылке: <ulink + url="http://www.FreeBSD.org/docs.html"></ulink>. Кроме того, + в <link linkend="bibliography">Библиографии</link> + в конце этого FAQ и в <ulink + url="&url.books.handbook;/bibliography.html">Руководстве</ulink> + имеются ссылки на другие рекомендуемые для чтения книги.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="doc-formats"> + <para>Есть ли версии документации в другом формате, например, + в виде обычного текста ASCII или &postscript;?</para> + </question> + + <answer> + <para>Да. Документация имеется в нескольких различных форматах и + упакованная разными способами на FTP-сервере &os;, и находится + она в каталоге <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/"> + /pub/FreeBSD/doc/</ulink>.</para> + + <para>Документация подразделяется на категории различными способами. + Это включает:</para> + + <itemizedlist> + <listitem> + <para>Имя документа, например, <literal>faq</literal> или + <literal>handbook</literal>.</para> + </listitem> + + <listitem> + <para>Язык и кодировка документа. Они опираются на имена + локализаций, которые вы найдёте в каталоге + <filename class="directory">/usr/share/locale</filename> + вашей системы &os;. + На данный момент для документации поддерживаются следующие + языки и кодировки:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Кодировка</entry> + + <entry>Язык</entry> + </row> + </thead> + + <tbody> + <row> + <entry><literal>en_US.ISO8859-1</literal></entry> + + <entry>Английский (США)</entry> + </row> + + <row> + <entry><literal>bn_BD.ISO10646-1</literal></entry> + + <entry>Бенгальский или Бангла (Бангладеш)</entry> + </row> + + <row> + <entry><literal>da_DK.ISO8859-1</literal></entry> + + <entry>Датский (Дания)</entry> + </row> + + <row> + <entry><literal>de_DE.ISO8859-1</literal></entry> + + <entry>Немецкий (Германия)</entry> + </row> + + <row> + <entry><literal>el_GR.ISO8859-7</literal></entry> + + <entry>Греческий (Греция)</entry> + </row> + + <row> + <entry><literal>es_ES.ISO8859-1</literal></entry> + + <entry>Испанский (Испания)</entry> + </row> + + <row> + <entry><literal>fr_FR.ISO8859-1</literal></entry> + + <entry>Французский (Франция)</entry> + </row> + + <row> + <entry><literal>hu_HU.ISO8859-2</literal></entry> + + <entry>Венгерский (Венгрия)</entry> + </row> + + <row> + <entry><literal>it_IT.ISO8859-15</literal></entry> + + <entry>Итальянский (Италия)</entry> + </row> + + <row> + <entry><literal>ja_JP.eucJP</literal></entry> + + <entry>Японский (Япония, кодировка EUC)</entry> + </row> + + <row> + <entry><literal>mn_MN.UTF-8</literal></entry> + + <entry>Монгольский (Монголия, кодировка UTF-8)</entry> + </row> + + <row> + <entry><literal>nl_NL.ISO8859-1</literal></entry> + + <entry>Голландский (Нидерланды)</entry> + </row> + + <row> + <entry><literal>no_NO.ISO8859-1</literal></entry> + + <entry>Норвежский (Норвегия)</entry> + </row> + + <row> + <entry><literal>pl_PL.ISO8859-2</literal></entry> + + <entry>Польский (Польша)</entry> + </row> + + <row> + <entry><literal>pt_BR.ISO8859-1</literal></entry> + + <entry>Португальский (Бразилия)</entry> + </row> + + <row> + <entry><literal>ru_RU.KOI8-R</literal></entry> + + <entry>Русский (Россия, кодировка KOI8-R)</entry> + </row> + + <row> + <entry><literal>sr_YU.ISO8859-2</literal></entry> + + <entry>Сербский (Сербия)</entry> + </row> + + <row> + <entry><literal>tr_TR.ISO8859-9</literal></entry> + + <entry>Турецкий (Турция)</entry> + </row> + + <row> + <entry><literal>zh_CN.GB2312</literal></entry> + + <entry>Упрощённый китайский (Китай, кодировка + GB2312)</entry> + </row> + + <row> + <entry><literal>zh_TW.Big5</literal></entry> + + <entry>Традиционный китайский (Тайвань, кодировка + Big5)</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <note> + <para>Некоторые документы могут иметься не на всех + языках.</para> + </note> + </listitem> + + <listitem> + <para>Формат документа. Мы создаём документацию в нескольких + различных форматах. У каждого из форматов имеются свои плюсы + и свои минусы. Некоторые форматы лучше подходят для чтения + в on-line, когда как другие предназначены для получения + эстетично выглядящей на бумаге копии. Наличие документации + во всех этих форматах обеспечивает возможность прочтения + нашими пользователями любой её части как с экрана монитора, так + и на бумаге после вывода на печать. На данный момент + поддерживаются следующие форматы;</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Формат</entry> + + <entry>Значение</entry> + </row> + </thead> + + <tbody> + <row> + <entry><literal>html-split</literal></entry> + + <entry>Набор маленьких связанных друг с другом + HTML-файлов.</entry> + </row> + + <row> + <entry><literal>html</literal></entry> + + <entry>Один большой HTML-файл, полностью содержащий + документ.</entry> + </row> + + <row> + <entry><literal>pdf</literal></entry> + + <entry>Adobe's Portable Document Format</entry> + </row> + + <row> + <entry><literal>ps</literal></entry> + + <entry>&postscript;</entry> + </row> + + <row> + <entry><literal>rtf</literal></entry> + + <entry>Rich Text Format от Microsoft</entry> + </row> + + <row> + <entry><literal>txt</literal></entry> + + <entry>Обычный текст</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <note> + <para>Номера страниц при загрузке Rich Text Format в + Word автоматически не обновляются. Для обновления + нумерации нажмите <keycombo action="simul"> + <keycap>Ctrl</keycap><keycap>A</keycap> + </keycombo>, + <keycombo action="simul"> + <keycap>Ctrl</keycap><keycap>End</keycap></keycombo>, + <keycap>F9</keycap> после загрузки документа.</para> + </note> + </listitem> + + <listitem> + <para>Способ сжатия и создания архива. Сейчас используется + три варианта.</para> + + <orderedlist> + <listitem> + <para>В случае формата <literal>html-split</literal>, файлы + архивируются с помощью &man.tar.1;. Получающийся файл + <filename>.tar</filename> затем подвергается сжатию по + схемам, подробно описываемым далее.</para> + </listitem> + + <listitem> + <para>Все другие форматы генерируют один файл с именем + <filename><replaceable>type</replaceable>.<replaceable>format</replaceable></filename> + (то есть <filename>article.pdf</filename>, + <filename>book.html</filename>, и так далее).</para> + + <para>Эти файлы затем сжимаются по двум схемам сжатия.</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Схема</entry> + + <entry>Описание</entry> + </row> + </thead> + + <tbody> + <row> + <entry><literal>zip</literal></entry> + + <entry>Формат <literal>zip</literal>. Если + вам нужно будет развернуть это во &os;, то + потребуется установить сначала порт <filename + role="package">archivers/unzip</filename>.</entry> + </row> + + <row> + <entry><literal>bz2</literal></entry> + + <entry>Формат <literal>bzip2</literal>. + Используется реже, чем Zip, но, как правило, + даёт файлы меньшего размера. Чтобы работать + с такими файлами, установите порт <filename + role="package">archivers/bzip2</filename>.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Таким образом, сжатая в <literal>bzip2</literal> + версия Руководства в формате &postscript;, будет + находиться в файле + с именем <filename>book.ps.bz2</filename> в каталоге + <filename class="directory">handbook/</filename>.</para> + </listitem> + </orderedlist> + </listitem> + </itemizedlist> + + <para>После выбора формата и способа компрессии, в котором вы хотите + получить файл, вам нужно самим + сгрузить упакованные файлы, распаковать их, а затем скопировать + документацию в соответствующие места.</para> + + <para>Например, версия FAQ в виде отдельных HTML-файлов, упакованная + при помощи &man.bzip2.1;, находится в файле + <filename>doc/ru_RU.KOI8-R/books/faq/book.html-split.tar.bz2</filename>. + Для сгрузки и распаковки этого файла вам нужно сделать вот + что.</para> + + <screen>&prompt.root; <userinput>fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</userinput> +&prompt.root; <userinput>bzip2 -d book.html-split.tar.bz2</userinput> +&prompt.root; <userinput>tar xvf book.html-split.tar</userinput></screen> + + <para>У вас получится набор файлов <filename>.html</filename>. + Главным является <filename>index.html</filename>, и в нём + находится оглавление, вводный материал и ссылки на остальные части + документа. После этого вы их можете копировать и перемещать при + необходимости на окончательное местоположение.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="mailing"> + <para>Где найти информацию по спискам рассылки &os;?</para> + </question> + + <answer> + <para>Исчерпывающая информация содержится в <ulink + url="&url.books.handbook;/eresources.html#ERESOURCES-MAIL"> + разделе</ulink> + Руководства, который посвящён спискам рассылки.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="newsgroups"> + <para>Какие существуют телеконференции по &os;?</para> + </question> + + <answer> + <para>Полная информация о группах новостей есть в <ulink + url="&url.books.handbook;/eresources-news.html">разделе</ulink> + Руководства, касающемся телеконференций.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="irc"> + <para>Существуют ли каналы IRC (Internet Relay Chat) по + &os;?</para> + </question> + + <answer> + <para>Да, большинство сетей IRC имеют канал &os;:</para> + + <itemizedlist> + <listitem> + <para>Канал <literal>#FreeBSD</literal> в сети <ulink + url="http://www.efnet.org/index.php">EFNet</ulink> посвящён + &os;, но не обращайтесь туда за технической поддержкой и + даже не пытайтесь найти человека, который поможет вам + обойтись без чтения страниц Справочника или собственных + изысканий. Этот канал предназначен в первую и основную + очередь для общения, и в круг обсуждаемых тем входят секс, + спорт, ядерное оружие, как будто это и есть &os;. В + общем, вас предупредили! Канал доступен на сервере + <hostid>irc.efnet.org</hostid>.</para> + </listitem> + + <listitem> + <para>Канал <literal>#FreeBSDhelp</literal> в сети <ulink + url="http://www.efnet.org/index.php">EFNet</ulink> + предназначен для помощи пользователям &os;. Здесь гораздо + более благосклонно относятся к вопросам, чем на канале + <literal>#FreeBSD</literal>.</para> + </listitem> + + <listitem> + <para>Канал <literal>##FreeBSD</literal> в сети + <ulink url="http://freenode.net/">Freenode</ulink> + предназначен для помощи общего характера, на нём + в любое время присутствует много посетителей. + Общение в течение уже некоторого времени известно своей + тенденцией сводиться к разговорам не по теме, но приоритет + отдается пользователям с вопросами по &os;. Мы рады + помочь разобраться в основах, отсылая к Руководству по мере + возможности и направляя вас туда, где вы сможете более + глубоко изучить интересующие вас темы. В целом, мы + являемся англоговорящим каналом, несмотря на то, что к нам + приходят пользователи со всего мира. Если вы пожелаете + общаться на родном языке, то попробуйте попросить об этом + на английском и затем перейдите на другой канал + <literal>##freebsd-<replaceable>lang</replaceable></literal> + по мере необходимости.</para> + </listitem> + + <listitem> + <para>Канал <literal>#FreeBSD</literal> в сети <ulink + url="http://www.dal.net/">DALNET</ulink> + доступен на сервере <hostid>irc.dal.net</hostid> в США и на + <hostid>irc.eu.dal.net</hostid> в Европе.</para> + </listitem> + + <listitem> + <para>Канал <literal>#FreeBSD</literal> в сети <ulink + url="http://www.undernet.org/">UNDERNET</ulink> + доступен на серверах <hostid>us.undernet.org</hostid> в США и + <hostid>eu.undernet.org</hostid> в Европе. Так как это канал + взаимопомощи, приготовьтесь к чтению документации, к которой + вас отошлют.</para> + </listitem> + + <listitem> + <para>Канал <literal>#FreeBSD</literal> в сети + <ulink url="http://www.rusnet.org.ru/">RUSNET</ulink> + это канал для русскоговорящих посетителей, посвящённый + помощи пользователям &os;. Также это хорошее место + для не технических дискуссий.</para> + </listitem> + + <listitem> + <para>Канал <literal>#bsdchat</literal> в сети + <ulink url="http://freenode.net/">Freenode</ulink> + это канал для посетителей, говорящих на китайском + традиционном языке (кодировка UTF-8), посвящённый + помощи пользователям &os;. Также это хорошее место + для не технических дискуссий.</para> + </listitem> + </itemizedlist> + + <para>Все эти каналы разные и не имеют отношения друг к другу. Их + стили общения также отличаются, так что вам, может быть, придётся + попробовать все, чтобы найти тот, который соответствует вашему + стилю. Как и обычно с <emphasis>любым</emphasis> каналом IRC, + если вы легко раздражаетесь или не можете иметь дела с большим + количеством лиц школьного (и младшего школьного) возраста, + пытающихся озвучить свои попытки самоутвердиться, не обращайте на + это внимания.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="forums"> + <para>Есть ли какие-нибудь web-форумы для обсуждения &os;?</para> + </question> + + <answer> + <para>Официальные форумы &os; расположены по адресу <ulink + url="http://forums.FreeBSD.org/">http://forums.FreeBSD.org/</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="training"> + <para>Где можно пройти платные курсы по &os; и получить + поддержку?</para> + </question> + + <answer> + <para><ulink + url="http://www.ixsystems.com">iXsystems, Inc.</ulink>, + дочерней компанией которой является <ulink + url="http://www.freebsdmall.com/">&os; Mall</ulink>, + предоставляет <ulink + url="http://www.ixsystems.com/bsdsupport">поддержку</ulink> + &os; и программного обеспечения PC-BSD на коммерческой + основе, в дополнение к разработке &os; и решениям, требующим + тонкой настройки.</para> + + <para>BSD Certification Group, Inc. предоставляет сертификацию + системного администрирования DragonFly BSD, &os;, + NetBSD, OpenBSD. Если вы в этом заинтересованы, посетите + <ulink url="http://www.BSDCertification.org">их + сайт</ulink>.</para> + + <para>Чтобы попасть в этот список, другие организации, + осуществляющие обучение и поддержку, должны обратиться к + нам в Проект.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="install"> + <chapterinfo> + <author> + <firstname>Nik</firstname> + <surname>Clayton</surname> + <affiliation> + <address><email>nik@FreeBSD.org</email></address> + </affiliation> + </author> + </chapterinfo> + + <title>Установка</title> + + <qandaset> + <qandaentry> + <question id="floppy-download"> + <para>Какой файл нужно скачать для установки &os;?</para> + </question> + + <answer> + <para>Вам нужны образы трёх дискет: + <filename>floppies/boot.flp</filename>, + <filename>floppies/kern1.flp</filename> и + <filename>floppies/kern2.flp</filename>. Эти образы нужно + перенести на дискеты с помощью таких утилит, как + <command>fdimage</command> или &man.dd.1;.</para> + + <para>Если вы хотите скачать дистрибутив самостоятельно (например, + для установки с раздела DOS), вот список рекомендованных частей + дистрибутива:</para> + + <itemizedlist> + <listitem> + <para>base/</para> + </listitem> + + <listitem> + <para>manpages/</para> + </listitem> + + <listitem> + <para>compat*/</para> + </listitem> + + <listitem> + <para>doc/</para> + </listitem> + + <listitem> + <para>src/ssys.*</para> + </listitem> + </itemizedlist> + + <para>Полные инструкции по этой процедуре и об установке вообще можно + найти в <ulink url="&url.books.handbook;/install.html"> + разделе</ulink> Руководства, посвящённом установке &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="floppy-image-too-large"> + <para>Помогите! Загрузочный файл не помещается на дискету!</para> + </question> + + <answer> + <para>На дискету размером 3.5 дюйма (1.44 Мбайт) может + поместиться 1,474,560 байт данных. Образ дискеты имеет + размер ровно 1,474,560 байт.</para> + + <para>Типичные ошибки при подготовке загрузочной дискеты:</para> + + <itemizedlist> + <listitem> + <para>Образ дискеты был загружен по FTP не в режиме + <emphasis>binary</emphasis>.</para> + + <para>Некоторые клиентские программы FTP используют по умолчанию + текстовый (<emphasis>ascii</emphasis>) режим передачи и + пытаются поменять все принятые последовательности символов + "конец строки" на соответствующие им в вашей системе. В таком + случае образ загрузочного диска будет неизбежно испорчен. + Проверьте размер полученного файла: если он не + <emphasis>точно</emphasis> такой же, как на FTP-сервере, то + ошибка произошла, скорее всего, в процессе передачи.</para> + + <para>Во избежание этого введите команду + <emphasis>binary</emphasis> в командной строке FTP после того, + как вы подключитесь к серверу, но до того, как начали + скачивать файл.</para> + </listitem> + + <listitem> + <para>Для переноса образа на дискету была использована команда DOS + <command>copy</command> (или её аналог с графическим + интерфейсом).</para> + + <para>Программы типа <command>copy</command> не работают с + образами дискет, предназначенными для загрузки. Образ содержит + полное содержимое дискеты, дорожка за дорожкой, и не + предназначен для помещения на дискету в качестве обычного + файла. Вам необходимо перенести его на дискету + <quote>непосредственно</quote>, используя низкоуровневые + средства (такие, как <command>fdimage</command> или + <command>rawrite</command>), описанные в <ulink + url="&url.books.handbook;/install.html"> + Руководстве</ulink>.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="install-instructions-location"> + <para>Где инструкции по установке &os;?</para> + </question> + + <answer> + <para>Инструкции по установке могут быть найдены в + <ulink url="&url.books.handbook;/install.html">главе</ulink> + Руководства, посвящённой установке &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="need-to-run"> + <para>Что мне нужно иметь для запуска &os;?</para> + </question> + + <answer> + <para>Для работы &os; необходим ПК класса 486 и + выше с оперативной памятью объёмом не менее 24 Мбайт и жёстким + диском объёмом не менее 150 Мбайт.</para> + + <para>Все версии &os; могут работать с недорогими + графическими адаптерами MDA, но для работы с &xorg; требуется + адаптер стандарта VGA или лучше.</para> + + <para>Обратитесь также к <xref linkend="hardware"/>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="custom-boot-floppy"> + <para>Как сделать оригинальную загрузочную дискету?</para> + </question> + + <answer> + <para>В настоящий момент нет <emphasis>простого</emphasis> способа + сделать оригинальную загрузочную дискету. Вам придётся делать + новый релиз полностью, включая загрузочную дискету.</para> + + <para>Чтобы сделать оригинальный релиз, следуйте инструкциям в + статье о <ulink url="&url.articles.releng;/article.html">процессе + выпуска релизов</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="windows-coexist"> + <para>Может ли &windows; сосуществовать с &os;?</para> + </question> + + <answer> + <para>Сначала установите &windows;, а затем &os;. Менеджер + загрузки &os; будет управлять процессом загрузки &windows; или + &os;. Если после этого вы ещё раз выполните процедуру установки + &windows;, то при этом менеджер загрузки будет грубо + удалён. Если такое случится, обратитесь к следующему + разделу.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="win95-damaged-boot-manager"> + <para>&windows; уничтожила мой менеджер загрузки! Как мне его + вернуть?</para> + </question> + + <answer> + <para>Вы можете переустановить менеджер загрузки &os; тремя + способами:</para> + + <itemizedlist> + <listitem> + <para>Запустите DOS, перейдите в каталог <filename + class="directory">tools</filename> вашего + дистрибутива &os; и найдите программу + <filename>bootinst.exe</filename>. Запустите её следующим + образом:</para> + + <screen><prompt>...\TOOLS></prompt> <userinput>bootinst.exe boot.bin</userinput></screen> + + <para>и менеджер загрузки будет переустановлен.</para> + </listitem> + + <listitem> + <para>Загрузитесь с установочной дискеты &os; и перейдите в + меню установки <guimenuitem>Custom</guimenuitem>. Выберите + пункт <guimenuitem>Partition</guimenuitem>. Выберите + устройство, на котором будет располагаться ваш менеджер + загрузки (это будет самый первый диск) и когда вы перейдете + к редактированию разделов, первым делом (то есть ещё не + делая никаких изменений) нажмите <keycap>W</keycap>. + Последует запрос на подтверждение, выберите &gui.yes;, и + когда вы попадёте в меню выбора менеджера загрузки, выберите + пункт <application>&os; Boot Manager</application>. + Менеджер загрузки будет переписан на диск. Теперь нужно + выйти из меню установки и загрузиться с винчестера как + обычно.</para> + </listitem> + + <listitem> + <para>Загрузитесь с установочной дискеты (или компакт-диска) + &os; и найдите пункт меню <guimenuitem>Fixit</guimenuitem>. + Выберите + Fixit floppy или CD-ROM #2 (<quote>живая</quote> файловая + система) соответственно вашему случаю и вы окажетесь в + приглашении командного процессора. + Теперь выполните следующую команду:</para> + + <screen><prompt>Fixit#</prompt> <userinput>fdisk -B -b /boot/boot0 <replaceable>bootdevice</replaceable></userinput></screen> + + <para>подставив вместо <replaceable>bootdevice</replaceable> + название реально используемого для загрузки устройства, + например, <devicename>ad0</devicename> (первый диск IDE), + <devicename>ad4</devicename> (первый диск IDE на дополнительном + контроллере), <devicename>da0</devicename> (первый диск SCSI) и + тому подобное.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="boot-on-thinkpad"> + <para>На компьютерах IBM Thinkpad серий A, T и X операционная система + устанавливается, но при следующей перезагрузке машины зависают. + Как можно от этого избавиться?</para> + </question> + + <answer> + <para>Из-за ошибки в первых версиях BIOS от IBM раздел &os; на + этих машинах распознаётся как возможный служебный раздел FAT для + режима сна. Когда BIOS пытается обработать раздел &os;, + происходит зависание.</para> + + <para>Согласно IBM<footnote> <para>Письмо от Keith Frechette + <email>kfrechet@us.ibm.com</email>.</para></footnote>, + исправление включено в следующие релизы моделей/BIOS.</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Модель</entry> + + <entry>Номер версии BIOS</entry> + </row> + </thead> + + <tbody> + <row> + <entry>T20</entry> + + <entry>IYET49WW и выше</entry> + </row> + + <row> + <entry>T21</entry> + + <entry>KZET22WW и выше</entry> + </row> + + <row> + <entry>A20p</entry> + + <entry>IVET62WW и выше</entry> + </row> + + <row> + <entry>A20m</entry> + + <entry>IWET54WW и выше</entry> + </row> + + <row> + <entry>A21p</entry> + + <entry>KYET27WW и выше</entry> + </row> + + <row> + <entry>A21m</entry> + + <entry>KXET24WW и выше</entry> + </row> + + <row> + <entry>A21e</entry> + + <entry>KUET30WW</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Сообщалось, что в более поздних версиях BIOS от IBM эта + ошибка может появиться снова. <ulink + url="http://docs.FreeBSD.org/cgi/mid.cgi?20010427133759.A71732">Это + сообщение</ulink> от &a.nectar; в &a.mobile; описывает + процедуру, выполнение которой может помочь, если ваш новый лэптоп + от IBM не загружает &os;, и вы можете изменить BIOS.</para> + + <para>Если у вас BIOS более ранней версии и обновление для вас не + представляется возможным, то это можно обойти, установив &os;, + изменив идентификатор раздела, используемый &os; и установив + новые загрузочные блоки, которые могут работать с различными ID + разделов.</para> + + <para>Во-первых, вам нужно привести компьютер в состояние, когда он + проходит через экран самотестирования. Для этого требуется включить + машину, не позволяя ей найти раздел &os; на ведущем диске. Одним + из способов сделать это является извлечение винчестера и временное + его установка на более старый ThinkPad (такой, как ThinkPad 600) или + настольный ПК с подходящим переходным кабелем. Здесь вы можете + удалить раздел &os; и вернуть диск на место. ThinkPad должен + загружаться снова.</para> + + <para>С работающей машиной вы можете использовать процедуру, описанную + здесь, для получения рабочей системы &os;.</para> + + <procedure> + <step> + <para>Сгрузите файлы <filename>boot1</filename> и + <filename>boot2</filename> по адресу <ulink + url="http://people.FreeBSD.org/~bmah/ThinkPad/"></ulink>. + Поместите эти файлы куда-нибудь, откуда вы сможете их потом + взять.</para> + </step> + + <step> + <para>Установите &os; обычным образом на ThinkPad. + <emphasis>Не используйте</emphasis> режим <literal>Dangerously + Dedicated</literal>. <emphasis>Не перезагружайтесь</emphasis> + после окончания установки.</para> + </step> + + <step> + <para>Переключитесь в экран <quote>Emergency Holographic + Shell</quote> (<keycombo action="simul"><keycap>Alt</keycap> + <keycap>F4</keycap></keycombo>) или запустите оболочку + <quote>fixit</quote>.</para> + </step> + + <step> + <para>Используйте команду &man.fdisk.8; для изменения + идентификатора раздела &os; со <literal>165</literal> на + <literal>166</literal> (этот тип используется в OpenBSD).</para> + </step> + + <step> + <para>Перепишите файлы <filename>boot1</filename> и + <filename>boot2</filename> на локальную файловую систему.</para> + </step> + + <step> + <para>Для записи <filename>boot1</filename> и + <filename>boot2</filename> на слайс с &os; воспользуйтесь + командой &man.disklabel.8;.</para> + + <screen>&prompt.root; <userinput>disklabel -B -b boot1 -s boot2 ad0s<replaceable>n</replaceable></userinput></screen> + + <para>Здесь <replaceable>n</replaceable> означает номер слайса, + в котором установлена &os;.</para> + </step> + + <step> + <para>Выполните перезагрузку. В приглашении загрузчика вам будет + дан выбор для загрузки <literal>OpenBSD</literal>. На самом + деле при этом загружается &os;.</para> + </step> + </procedure> + + <para>Случай, когда вы хотите загружать OpenBSD и &os; на одном и + том же лэптопе, оставлен читателю в качестве упражнения.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="install-bad-blocks"> + <para>Можно ли производить установку на диск с повреждёнными + блоками?</para> + </question> + + <answer> + <para>Вы можете это сделать, но это плохая идея.</para> + + <para>Если вы обнаружите испорченные блоки на современном диске IDE, + то весьма вероятно, что он скоро выйдет из строя совсем + (собственная способность переносить испорченные блоки исчерпана, + что означает очень большую порчу поверхности); мы рекомендуем + приобрести новый диск.</para> + + <para>Если повреждённые блоки находятся на SCSI диске, взгляните на + <link linkend="awre">такое решение</link>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="boot-floppy-strangeness"> + <para>Странные вещи происходят при загрузке с установочного + диска!</para> + </question> + + <answer> + <para>Если вы видите, что машина зависает или неожиданно + перезагружается, когда вы пытаетесь загрузиться с установочной + дискеты, вы должны задать себе три вопроса:</para> + + <orderedlist> + <listitem> + <para>Вы используете новую, только что отформатированную дискету + (предпочтительно неиспользованную прямо из коробки, а не ту, + что пришла с популярным журналом и последние три года провела + под диваном)?</para> + </listitem> + + <listitem> + <para>Вы скачали образ дискеты в двоичном режиме? + (не смущайтесь, даже лучшие из нас время от времени скачивают + двоичный файл в режиме ASCII!)</para> + </listitem> + + <listitem> + <para>Если вы используете &windows; 95 или + &windows; 98, удостоверьтесь, + что вы запускаете <command>fdimage</command> или + <command>rawrite</command> в режиме чистого DOS? Эти + операционные системы могут влиять на программы, работающие + непосредственно с оборудованием, что и делает программа + создания установочного диска; даже запуск из DOS в графической + оболочке может вызвать проблемы.</para> + </listitem> + </orderedlist> + + <para>Есть сведения, что &netscape; вызывает проблемы при скачивании + загрузочного диска, так что лучше всего использовать специальную + программу FTP, если она у вас есть.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="no-install-cdrom"> + <para>Я загрузился с ATAPI CD-ROM, однако программа установки + сообщила, что CD-ROM не найден. Куда он подевался?</para> + </question> + + <answer> + <para>Обычной причиной возникновения такой проблемы является + неправильно сконфигурированный привод CD-ROM. Теперь зачастую ПК + продаются с CD-ROM, установленным как ведомое устройство на втором + контроллере IDE, но без ведущего устройства на этом контроллере. + Согласно спецификации ATAPI, такая конфигурация неверна, однако + &windows; в таком случае всё же работает, и BIOS игнорирует это при + загрузке. Вот почему BIOS может видеть CD-ROM при загрузке, а + &os; для завершения установки - нет.</para> + + <para>Переконфигурируйте вашу систему так, чтобы CD-ROM оказался либо + основным устройством на том IDE-контроллере, на котором он + установлен, либо ведомым устройством на контроллере IDE, который + имеет ведущее устройство.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="install-PLIP"> + <para>Можно ли я установить систему на лэптоп через PLIP (Parallel + Line IP)?</para> + </question> + + <answer> + <para>Да. Используйте стандартный кабель Laplink. Если необходимо, + обратитесь к <ulink url="&url.books.handbook;/network-plip.html"> + разделу Руководства о PLIP</ulink> для выяснения деталей о работе + в сети через параллельный порт.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="geometry"> + <para>Какие параметры диска я должен использовать?</para> + </question> + + <answer> + <note> + <para>Под <quote>параметрами</quote> диска мы понимаем число + дорожек, головок и секторов на дорожку на диске, что для простоты + обозначается как C/H/S. Именно так работает BIOS персональных + компьютеров при чтении или записи диска.</para> + </note> + + <para>Это вызывает много недоразумений у начинающих системных + администраторов. Прежде всего, <emphasis>физические</emphasis> + параметры диска SCSI не имеют никакого значения, так как &os; + работает в терминах дисковых блоков. Фактически нет такого + показателя, как <emphasis>физические параметры</emphasis>, так как + плотность размещения секторов различна по всему диску. То, что + производители называют <emphasis>физическими + параметрами</emphasis>, есть не что иное, как параметры, которые + они получили по занимаемому пространству. Для + дисков IDE, &os; работает в терминах C/H/S, но во всех + современных дисках они преобразовываются во внутреннее + представление.</para> + + <para>Имеют значение только <emphasis>логические</emphasis> + параметры. Это то, что получает BIOS, когда спрашивает + <quote>какие у тебя параметры?</quote> Затем они используются для + обращения к диску. Так как &os; использует BIOS при загрузке, + очень важно получить верные параметры. В частности, если у вас на + диске находятся несколько операционных систем, они обе должны иметь + одинаковое представление о параметрах диска. В противном случае + серьёзные проблемы при загрузке неизбежны!</para> + + <para>В случае дисков SCSI, параметры используются в зависимости от + того, включена ли поддержка расширенной трансляции на вашем + контроллере (что часто обозначается как <quote>поддержка дисков + DOS >1GB</quote> или что-то похожее). Если эта возможность + выключена, то используйте <replaceable>N</replaceable> дорожек, 64 + головки и 32 сектора на дорожку, где <replaceable>N</replaceable> + - это ёмкость диска в мегабайтах. Например, 2-гигабайтный диск + должен иметь 2048 дорожек, 64 головки и 32 сектора на + дорожку.</para> + + <para>Если трансляция <emphasis>включена</emphasis> (что обычно + используется для преодоления некоторых ограничений &ms-dos;) и + ёмкость диска превышает 1 Гбайт, используйте + <replaceable>M</replaceable> дорожек, 63 + сектора на дорожку (<emphasis>не</emphasis> 64) и 255 головок, где + <replaceable>M</replaceable> обозначает объём диска в мегабайтах, + поделённый на 7.844238 (!). Таким + образом, наш диск объёмом 2 Гбайт будет иметь 261 дорожку, 63 + сектора на дорожку и 255 головок.</para> + + <para>Если вы не уверены, или &os; ошибается при определении + параметров диска во время установки, самый простой способ решить + эту проблему - создать на диске маленький раздел DOS. После этого + BIOS должна определить параметры диска правильно (и вы всегда + можете удалить раздел DOS в редакторе разделов, если вы не хотите + его сохранить. Однако вы можете оставить его для настройки сетевых + адаптеров и тому подобных вещей.</para> + + <para>Кроме того, существует свободно доступная утилита, + распространяемая вместе с &os;, которая называется + <filename>pfdisk.exe</filename>. Вы можете найти её в каталоге + <filename class="directory">tools</filename> компакт-диска с + &os; или на различных + FTP-серверах с &os;. Эту программу можно использовать для + определения параметров, используемых другими операционными + системами, расположенными на вашем диске. Затем вы можете + использовать эти параметры в редакторе разделов.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="disk-divide-restrictions"> + <para>Есть ли ограничения на разбиение диска?</para> + </question> + + <answer> + <para>Да. Вы должны убедиться, что корневой раздел находится до + 1024 дорожки, так чтобы BIOS могла загрузить с него ядро. + (Заметьте, что это ограничение BIOS компьютера, а не + &os;).</para> + + <para>Для диска SCSI, это, как правило, будет означать, что + корневой раздел располагается в первых 1024 Мбайтах (или в первых + 4096 Мбайтах, если включен режим расширенной трансляции - + посмотрите предыдущий вопрос). Для дисков IDE соответствующее + значение равно 504 Мбайтам.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="disk-manager"> + <para>Совместима ли &os; с менеджерами дисков?</para> + </question> + + <answer> + <para>&os; распознаёт <application>Ontrack Disk Manager</application> + и допускает его + использование. Другие менеджеры дисков не поддерживаются.</para> + + <para>Если вы хотите использовать диск с &os;, вам не нужен + менеджер диска. Отконфигурируйте диск на столько пространства, + сколько сможет обработать BIOS (обычно 504 Мбайта), и + &os; распознает, сколько места у вас есть на самом деле. + Если вы используете старый диск с контроллером MFM, вам может + потребоваться точно указать &os; количество используемых + дорожек.</para> + + <para>Если вы хотите использовать &os; совместно с другой + операционной системой, это можно сделать и без менеджера диска: + удостоверьтесь, что загрузочный раздел &os; и раздел для другой + операционной системы не выходят за пределы 1024 дорожки. Если вы + будете осторожны, 20 мегабайтного раздела для загрузки будет + достаточно.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="missing-os"> + <para>При загрузке &os; первый раз после установки выдаётся + сообщение <errorname>Missing Operating System</errorname>. В чём + дело?</para> + </question> + + <answer> + <para>Это классический случай, когда &os; и DOS или другая + операционная система конфликтуют по поводу <link + linkend="geometry">параметров</link> диска. Вам нужно будет + переустановить &os;, но имейте в виду, что инструкции, данные + выше, помогают всегда.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="stop-at-boot-manager"> + <para>После приглашения менеджера загрузки <prompt>F?</prompt> + ничего не происходит.</para> + </question> + + <answer> + <para>Это ещё один признак проблемы, описанной в предыдущем разделе. + Параметры диска в BIOS и параметры, используемые &os;, не + совпадают. Если ваш контроллер или BIOS поддерживают трансляцию + дорожек (часто обозначаемую как <literal>>1GB drive + support</literal>), попробуйте включить эту возможность и + переустановить &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="need-complete-sources"> + <para>Нужно ли устанавливать все исходные тексты системы?</para> + </question> + + <answer> + <para>В общем случае, нет. Однако мы настоятельно рекомендуем + установить, как минимум, исходные тексты набора + <literal>base</literal>, включающий некоторые файлы, здесь + упоминаемые, и <literal>sys</literal>, в который включены исходные + тексты ядра. Для работы системы присутствия исходных текстов не + требуется, разве что для программы конфигурирования ядра + &man.config.8;. За исключением исходных текстов ядра, структура + исходных текстов системы позволяет монтировать их в режиме "только + для чтения" через NFS и генерировать выполнимые файлы программ + (из-за ограничений в исходных текстах ядра мы рекомендуем + монтировать их не прямо в <filename + class="directory">/usr/src</filename>, а в + какой-нибудь другой каталог с символическими ссылками для + дублирования структуры каталогов).</para> + + <para>Наличие исходных текстов системы значительно облегчает процесс + перехода на новые версии &os;.</para> + + <para>Для выбора подмножества исходных текстов, которое вы хотите + установить, используйте пункт меню <guimenuitem>Custom</guimenuitem>, + когда находитесь в меню <guimenuitem>Distributions</guimenuitem> + программы установки.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="need-kernel"> + <para>Нужно ли перекомпилировать ядро?</para> + </question> + + <answer> + <para>Изначально построение нового ядра в большинстве случаев + являлось неотъемлемым шагом при установке &os;, однако + последние релизы предоставляют более дружественные методы + конфигурации ядра. Выполнить конфигурацию + ядра очень просто с помощью более гибкой системы параметров + <quote>hints</quote>, которые можно задать в приглашении + загрузчика.</para> + + <para>В дальнейшем всё же стоит построить новое ядро, содержащее + только те драйверы, которые вам нужны, для того, чтобы сэкономить + немного ОЗУ, хотя для большинства систем это делать больше не + обязательно.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="password-encryption"> + <para>Какой из паролей DES, Blowfish или MD5 я должен использовать, + и как указать, какого типа пароли используются + пользователями?</para> + </question> + + <answer> + <para>По умолчанию во &os; используется формат паролей на основе + <emphasis>MD5</emphasis>. Это делается в предположении, что он + более защищён, чем традиционный формат паролей &unix;, в котором + используется схема на основе алгоритма <emphasis>DES</emphasis>. + Пароли DES остаются применимыми, если вам нужно использовать файл + паролей совместно с более старыми операционными системами, в + которых используется менее защищённый формат паролей. + &os; также позволяет использовать пароли + в более защищённом формате Blowfish. Управление выбором + используемого формата для новых паролей осуществляется через + параметр входа <literal>passwd_format</literal> в файле + <filename>/etc/login.conf</filename>, принимающий значения + <literal>des</literal>, <literal>blf</literal> (если они есть) или + <literal>md5</literal>. Более подробная информация о параметрах + входа находится на странице Справочника &man.login.conf.5;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="boot-floppy-hangs"> + <para>Загрузка с установочной дискеты прерывается на сообщении + <literal>Probing Devices...</literal>. Почему?</para> + </question> + + <answer> + <para>Если у вас установлены устройства IDE &iomegazip; или jaz;, + уберите их и попробуйте снова. Они могут мешать установочной + программе. После того, как система будет установлена, вы можете + снова подключить устройства. Надеемся, что это будет исправлено в + более поздних релизах.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="panic-on-install-reboot"> + <para>Почему появляется сообщение <errorname>panic: cant mount + root</errorname> после перезагрузки только что установленной + системы.</para> + </question> + + <answer> + <para>Эта ошибка проявляется, когда есть несогласованность между + представлениями загрузочного блока и ядра о дисковых устройствах. + Эта ошибка обычно проявляется на системах с двумя дисками IDE, с + винчестерами, установленными как ведущий или единственный на + отдельных контроллерах IDE, с &os;, установленной на втором + контроллере IDE. Программа в загрузочных блоках полагает, что + система установлена на <devicename>ad0</devicename> (второй диск + BIOS), тогда как ядро даёт первому диску на втором контроллере + название <devicename>ad2</devicename>. После + обнаружения устройства ядро пытается смонтировать то, что + загрузочные блоки выдают за загрузочный диск, + <devicename>ad0</devicename>, тогда как он + на самом деле <devicename>ad2</devicename>, и ошибается.</para> + + <para>Для решения этой проблемы выполните одно из следующих + действий:</para> + + <orderedlist> + <listitem> + <para>Перезагрузите систему и нажмите + <keycap>Enter</keycap> при появлении приглашения + <literal>Booting kernel in 10 seconds; hit [Enter] to + interrupt</literal>. Вы окажетесь в загрузчике.</para> + + <para>После этого наберите <userinput>set + root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>. + Здесь в качестве <replaceable>disk_number</replaceable> должен + быть указан <literal>0</literal>, если &os; установлена на + ведущем диске первого контроллера IDE, <literal>1</literal>, + если она установлена на ведомом диске первого контроллера IDE, + <literal>2</literal>, если система находится на ведущем диске + второго IDE-контроллера и <literal>3</literal>, если она + установлена на ведомом диске второго контроллера IDE.</para> + + <para>Затем введите команду <userinput>boot</userinput>, и ваша + система должна нормально загрузиться.</para> + + <para>Чтобы сделать эти изменения постоянными (то есть чтобы вам + не было нужды выполнять эти действия каждый раз при + перезагрузке или включении вашей машины с &os;), поместите + строчку + <userinput>root_disk_unit="<replaceable>disk_number</replaceable>"</userinput> + в файл <filename>/boot/loader.conf.local</filename>.</para> + </listitem> + + <listitem> + <para>Поместите диск с &os; на первичный контроллер IDE, так + чтобы именования диском пришли в соответствие.</para> + </listitem> + </orderedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="memory-limits"> + <para>Какие имеются ограничения на объём оперативной памяти?</para> + </question> + + <answer> + <para>Ограничение на память зависит от используемой платформы. + Для стандартной системы &i386; размер оперативной памяти + ограничен величиной 4 Гбайт, дополнительный объём + памяти поддерживается через &man.pae.4;. Смотрите <link + linkend="memory-i386-over-4gb">инструкции по использованию + 4 Гбайт памяти или больше на &i386;</link>.</para> + + <para>&os;/pc98 имеет ограничение в 4 ГБ оперативной памяти, + PAE здесь использовать невозможно. + Остальные архитектуры, поддерживаемые &os;, имеют гораздо + большие теоретические ограничения объёмов памяти (многие + терабайты).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ffs-limits"> + <para>Какие существуют ограничения для файловой системы FFS?</para> + </question> + + <answer> + <para>Для файловой системы FFS максимальный теоретический размер + равен 8 ТБ (2Г блоков) или 16 ТБ при стандартном + размере блока 8 КБ. На практике есть программное + ограничение в 1 ТБ, но с некоторыми модификациями + достижимы 4 ТБ (и такие системы существуют).</para> + + <para>Максимальный размер одного файла FFS равен примерно 1 млрд. + блоков, или 4 ТБ при размере блока 4 КБ.</para> + + <table> + <title>Максимальные размеры файлов</title> + + <tgroup cols="3"> + <thead> + <row> + <entry>размер блока ФС</entry> + + <entry>работает</entry> + + <entry>должно работать</entry> + </row> + </thead> + + <tbody> + <row> + <entry>4 KБ</entry> + + <entry>> 4 ГБ</entry> + + <entry>4 ТБ - 1</entry> + </row> + + <row> + <entry>8 КБ</entry> + + <entry>> 32 ГБ</entry> + + <entry>32 ТБ - 1</entry> + </row> + + <row> + <entry>16 КБ</entry> + + <entry>> 128 ГБ</entry> + + <entry>32 ТБ - 1</entry> + </row> + + <row> + <entry>32 КБ</entry> + + <entry>> 512 ГБ</entry> + + <entry>64 ТБ - 1</entry> + </row> + + <row> + <entry>64 КБ</entry> + + <entry>> 2048 ГБ</entry> + + <entry>128 ТБ - 1</entry> + </row> + </tbody> + </tgroup> + </table> + + <para>При размере блока файловой системы 4 КБ тройная + косвенная адресация блоков работает, и всё должно быть + ограничено максимальным количеством блоков, которое задаётся + в виде тройной переадресации блока (примерно + 1024<superscript>3</superscript> + 1024<superscript>2</superscript> + 1024), + однако всё ограничивается (ошибочным) лимитом + 1 млрд. - 1 на количество блоков файловой системы. + Это ограничение должно быть равным 2 млрд. - 1. + При количестве блоков, приближающемся к 2 млрд. - 1, + появляются некоторые ошибки, но этот предел недостижим при + размере блока 4 КБ.</para> + + <para>При размере блока 8 КБ и больше всё должно быть + ограничено лимитом 2 млрд. - 1 на количество + блоков файловой системы, но реально ограничено пределом в + 1 млрд. - 1. Использование верного ограничения + в 2 млрд. - 1 блоков вызывает проблемы.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="archsw-readin-failed-error"> + <para>Я скомпилировал новое ядро и при загрузке получил сообщение об + ошибке <errorname>archsw.readin.failed</errorname>.</para> + </question> + + <answer> + <para>Это произошло, потому что ваше ядро и компоненты системы не + синхронизированы. Такая ситуация не поддерживается. Убедитесь, + что вы используете команды + <command>make <maketarget>buildworld</maketarget></command> и + <command>make <maketarget>buildkernel</maketarget></command> + для обновления вашего ядра.</para> + + <para>Вы можете загрузить систему, непосредственно указав ядро на + втором этапе загрузки, нажав любую клавишу до запуска загрузчика + при появлении символов <literal>|</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="boot-acpi"> + <para>Установка аварийно завершается ещё при загрузке системы. + Что я могу сделать?</para> + </question> + + <answer> + <para>Попытайтесь отключить поддержку ACPI. Когда загрузится + загрузчик, нажмите <keycap>Пробел</keycap>. Система отобразит + следующее:</para> + + <screen>OK</screen> + + <para>Наберите:</para> + + <screen><userinput>unset acpi_load</userinput></screen> + + <para>А затем:</para> + + <screen><userinput>boot</userinput></screen> + </answer> + </qandaentry> + + </qandaset> + </chapter> + + <chapter id="hardware"> + <title>Аппаратная совместимость</title> + + <sect1 id="compatibility-general"> + <title>Вопросы общего характера</title> + + <qandaset> + <qandaentry> + <question id="which-hardware-to-get"> + <para>Я хочу приобрести аппаратуру для моей системы &os;. Какая + модель/производитель/тип лучше всего?</para> + </question> + + <answer> + <para>Это постоянно обсуждается в списках рассылки &os;. Так + как аппаратура меняется так быстро, мы это ожидаем. Мы + <emphasis>всё же</emphasis> настоятельно рекомендуем, чтобы вы + прочитали Hardware Notes для &os; <ulink + url="&rel.current.hardware;">&rel.current;</ulink> или <ulink + url="&rel2.current.hardware;">&rel2.current;</ulink>, а также + выполнили поиск по <ulink + url="http://www.FreeBSD.org/search/#mailinglists">архивам</ulink> + списков рассылки перед тем, как задавать вопросы о самом последнем + и лучшем оборудовании. Весьма вероятно, что обсуждение требуемого + вам оборудование как раз было на прошлой неделе.</para> + + <para>Если вы подбираете лэптоп, посмотрите архивы &a.mobile;. + В противном случае вам нужны архивы + &a.questions; или, возможно, специфичные списки рассылки по + конкретному типу оборудования.</para> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-memory"> + <title>Память</title> + + <qandaset> + <qandaentry> + <question id="memory-upper-limitation"> + <para>Поддерживает ли &os; больше 4 Гбайт памяти (ОЗУ)? + Больше 16 Гбайт? Больше 48 Гбайт?</para> + </question> + + <answer> + <para>Да. &os; как операционная система в целом поддерживает + столько же физической памяти (ОЗУ), сколько аппаратная + платформа, на которой она работает. Имейте в виду, что + различные платформы имеют различные ограничения на память; + например, &i386; без <acronym>PAE</acronym> поддерживает + максимум 4 Гбайт памяти (и обычно еще меньше из-за + адресного пространства PCI), а &i386; с PAE поддерживает + максимум 64 Гбайт. Платформы AMD64, существующие на + текущий момент, ограничены объемом 1 Тбайт физической + памяти.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="memory-i386-over-4gb"> + <para>Почему &os; видит меньше 4 Гбайт памяти, когда + система установлена на машину &i386;?</para> + </question> + + <answer> + <para>Общее адресное пространство для машин &i386; является + 32-разрядным; это означает, что адресоваться (т.е. быть + получено) может не более 4 Гбайт памяти. Более того, + некоторые адреса в этом диапазоне зарезервированы для + различных целей аппаратным обеспечением, например, для + использования и управления устройствами PCI, для доступа + к видеопамяти, и так далее. Таким образом, общий объем + памяти, используемой операционной системой для ядра и + приложений, ограничен размером, значительно меньшим, чем + 4 Гбайт. В такой конфигурации максимально доступная + физическая память составляет от 3.2 Гбайт до + 3.7 Гбайт.</para> + + <para>Для преодоления ограничения в 3.2 Гбайт-3.7 Гбайт + установленной памяти (т.е. для получения 4 Гбайт, но + также более 4 Гбайт) должен использоваться специальный + механизм, именуемый <acronym>PAE</acronym>. Сокращение PAE + расшифровывается как Physical Address Extension (расширение + физического адреса) и предоставляет для 32-разрядных x86 + процессоров способ адресовать более 4 Гбайт памяти. + PAE переназначает память, которая иначе была бы перекрыта + адресными резервациями для аппаратных устройств выше + диапазона 4 Гбайт, и использует ее как дополнительную + физическую память (смотрите &man.pae.4;). Использование PAE + имеет свои недостатки; такая модель доступа к памяти является + чуть более медленной по сравнению с обычным режимом (без PAE), + и также не работают динамически загружаемые модули (смотрите + &man.kld.4;). Это означает, что все драйверы должны + присутствовать статически в самом ядре.</para> + + <para>Самый общий способ включить PAE — это собрать + новое ядро со специальным уже подготовленным файлом + конфигурации ядра, именуемым <filename>PAE</filename>, + который уже сконфигурирован для сборки безопасного ядра. + Имейте в виду, что некоторые строки в этом файле конфигурации + ядра являются слишком консервативными, и некоторые драйверы, + помеченные как неготовые для использования с PAE, на самом + деле являются годными. На практике, если драйвер работает + на 64-разрядной архитектуре (такой как AMD64), он также + работает с PAE. Если вы хотите создать свой собственный + файл конфигурации ядра, то вы можете включить PAE, добавив + в свою конфигурацию следующую строку:</para> + + <programlisting>options PAE</programlisting> + + <para>PAE не является широко используемым в настоящее время, + поскольку большинство нового x86 аппаратного обеспечения + также поддерживает работу в 64-разрядном режиме, также + известном как AMD64 или &intel; 64. Этот режим имеет + большее адресное пространство и не нуждается в таких трюках. + &os; поддерживает AMD64, и рекомендуется использование + этой версии &os; вместо версии &i386;, если требуется больше + 4 Гбайт памяти.</para> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-processors"> + <title>Аппаратные платформы и процессоры</title> + + <qandaset> + <qandaentry> + <question id="architectures"> + <para>Поддерживает ли &os; аппаратные платформы, отличные от + x86?</para> + </question> + + <answer> + <para>Да. В настоящее время &os; работает на архитектурах + Intel x86 и AMD64. Также поддерживаются архитектуры Intel + EM64T, IA-64, &arm;, &powerpc; и &sparc64;. Планируются + к поддержке платформы &mips; и &s390;. Дополнительную + информацию о происходящей работе над платформой &mips; можно + получить, подписавшись на &a.mips;. Для обсуждения общих + вопросов, касающихся новых аппаратных платформ, предназначен + &a.platforms;.</para> + + <para>Если аппаратная платформа Вашего компьютера не поддерживается + &os; и Вам нужно его запустить прямо сейчас, мы советуем + обратить Ваш взгляд также на <ulink + url="http://www.NetBSD.org">NetBSD</ulink> и + <ulink url="http://www.OpenBSD.org">OpenBSD</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="smp-support"> + <para>Поддерживает ли &os; многопроцессорные системы + (SMP)?</para> + </question> + + <answer> + <para>Системы с симметричным мультипроцессированием (SMP) во + &os; в целом поддерживаются, хотя в некоторых случаях ошибки + в BIOS или системной плате могут вызывать определенные + проблемы.</para> + + <para>&os; задействует преимущества HyperThreading (HTT) на + процессорах Intel, которые это поддерживают. Ядро с включенной + <literal>options SMP</literal> автоматически распознает + дополнительные логические процессоры. Планировщик заданий &os;, + используемый по умолчанию, распознает логические процессоры + как дополнительные физические процессоры; иначе говоря, не + предпринимается никаких попыток оптимизировать распределение + используемых совместно ресурсов между логическими процессорами + внутри одного CPU. Поскольку такое простое планирование + может вызвать деградацию производительности, то в некоторых + случаях рекомендуется отключать логические процессоры через + переменную sysctl <varname>machdep.hlt_logical_cpus</varname>. + Также можно отключить любой CPU, работающий в пустом цикле, + через переменную sysctl <varname>machdep.hlt_cpus</varname>. + За подробной информацией обращайтесь к странице Справочника + &man.smp.4;.</para> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-drives"> + <title>Жёсткие диски, ленточные устройства и приводы CD и DVD</title> + + <qandaset> + <qandaentry> + <question id="supported-hard-drives"> + <para>Какие типы винчестеров поддерживает &os;?</para> + </question> + + <answer> + <para>&os; работает с дисками стандартов EIDE, SATA, SCSI и + SAS (с совместимыми контроллерами; смотрите следующий раздел), + и всеми дисками, использующими оригинальный интерфейс <quote>Western + Digital</quote> (MFM, RLL, ESDI и, конечно же, IDE). Некоторые + контроллеры ESDI, использующие собственные интерфейсы, могут и не + работать: к таким относятся WD1002/3/6/7 и их клоны.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="supported-scsi-controllers"> + <para>Какие поддерживаются контроллеры SCSI или SAS?</para> + </question> + + <answer> + <para>Полный список приведён в Hardware Notes для &os; + <ulink url="&rel.current.hardware;">&rel.current;</ulink> или + <ulink url="&rel2.current.hardware;">&rel2.current;</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="tape-support"> + <para>Какие типы стримеров поддерживаются?</para> + </question> + + <answer> + <para>&os; поддерживает устройства SCSI и QIC-36 (с интерфейсом + QIC-02), включая 8-мм (Exabyte) и DAT.</para> + + <para>Некоторые ранние модели 8-мм стримеров не совсем соответствуют + стандарту SCSI-2 и могут работать не совсем хорошо.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="tape-changer-support"> + <para>Поддерживает ли &os; роботов для смены лент?</para> + </question> + + <answer> + <para>&os; поддерживает роботизированные устройства SCSI через + устройство &man.ch.4; и команду &man.chio.1;. Подробная + информация об управлении такими роботами может быть найдена на + странице Справочника по команде &man.chio.1;.</para> + + <para>Если вы не используете <application>AMANDA</application> + или другое программное обеспечение, умеющее работать с роботами, + имейте в виду, что они могут только переносить ленты с одного + места на другое, так что вам нужно самим отслеживать, в каком + слоте находится нужная лента, и в какой слот нужно вернуть ленту, + находящуюся в стримере.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="supported-cdrom-drives"> + <para>Какие приводы CD-ROM поддерживаются во &os;?</para> + </question> + + <answer> + <para>Поддерживаются любые SCSI-устройства чтения компакт дисков, + подключенные к поддерживаемому контроллеру. Поддерживается + большинство ATAPI-совместимых IDE CD-ROM.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="supported-cdrw-drives"> + <para>Какие приводы CD-RW поддерживаются во &os;?</para> + </question> + + <answer> + <para>&os; поддерживает все ATAPI-совместимые IDE-приводы CD-R + или CD-RW. Более полную информацию можно найти на справочной + странице по команде &man.burncd.8;.</para> + + <para>&os; поддерживает также все SCSI-приводы CD-R или CD-RW. + Установите и используйте программу <command>cdrecord</command> из + системы портов или пакаджей, но проверьте, что в вашем ядре + присутствует устройство <devicename>pass</devicename>.</para> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-kbd-mice"> + <title>Клавиатуры и мыши</title> + + <qandaset> + <qandaentry> + <question id="usbkbd"> + <para>Поддерживает ли &os; USB клавиатуры?</para> + </question> + + <answer> + <para>&os; имеет встроенную поддержку клавиатур USB. + После включения поддержки USB-клавиатуры в системе + AT-клавиатуре будет соответствовать + <devicename>/dev/kbd0</devicename>, а клавиатуре USB + <devicename>/dev/kbd1</devicename>, если они обе подключены к + системе. Если присутствует только клавиатура USB, ей будет + соответствовать <devicename>/dev/ukbd0</devicename>.</para> + + <para>Если вы хотите использовать клавиатуру USB на консоли, вы + должны явно указать драйверу консоли на использование имеющейся + клавиатуры USB. Это может быть сделано в процессе инициализации + системы следующей командой.</para> + + <screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd1 < /dev/console > /dev/null</userinput></screen> + + <para>Заметьте, что если клавиатура USB является единственной + присутствующей, она доступна как <devicename>/dev/ukbd0</devicename>, + и поэтому команда должна выглядеть примерно так:</para> + + <screen>&prompt.root; <userinput>kbdcontrol -k /dev/ukbd0 < /dev/console > /dev/null</userinput></screen> + + <note> + <para>Чтобы сохранить это изменение, добавьте в + <filename>/etc/rc.conf</filename> строку + <literal>keyboard="/dev/ukbd0"</literal>.</para> + </note> + + <para>Как только вы всё это сделаете, клавиатура USB будет работать и + в X-окружении без каких-либо особых настроек.</para> + + <para>Если вам нужно переключиться обратно на клавиатуру, + используемую по умолчанию, выполните такую команду:</para> + + <screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd0 > /dev/null</userinput></screen> + + <para>Для одновременной работы второй USB клавиатуры и первой + AT клавиатуры в консоли через драйвер &man.kbdmux.4;, + наберите следующие команды:</para> + + <screen>&prompt.root; <userinput>kbdcontrol -K < /dev/console > /dev/null</userinput> +&prompt.root; <userinput>kbdcontrol -a atkbd0 < /dev/kbdmux0 > /dev/null</userinput> +&prompt.root; <userinput>kbdcontrol -a ukbd1 < /dev/kbdmux0 > /dev/null</userinput> +&prompt.root; <userinput>kbdcontrol -k /dev/kbdmux0 < /dev/console > /dev/null</userinput></screen> + + <para>За дополнительной информацией обратитесь к страницам + справочной системы &man.ukbd.4;, &man.kbdcontrol.1; и + &man.kbdmux.4;.</para> + + <note> + <para>Выключение и включение USB-клавиатуры на ходу может ещё + не работать совершенно корректно. Во избежание неприятностей + мы рекомендуем подключить клавиатуру перед запуском системы + и не отключать её до завершения работы системы.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="busmouse"> + <para>У меня необычная мышь типа bus mouse. Как её настроить?</para> + </question> + + <answer> + <para>&os; поддерживает мыши типов bus mouse и InPort bus mouse + от таких производителей, как Microsoft, Logitech и ATI. В ядре + <filename>GENERIC</filename> драйвера таких устройств нет. + Для построения + специального ядра с драйвером такой мыши, добавьте в + конфигурационный файл ядра следующую строку:</para> + + <programlisting>device mse0 at isa? port 0x23c irq5</programlisting> + + <para>Мыши типа bus mouse обычно поставляются с отдельными + интерфейсными адаптерами. Они позволяют установить адрес порта + ввода/вывода и номер IRQ, отличающиеся от приведённых выше. Для + получения дополнительной информации обратитесь к документации по + вашей мыши и странице Справочника &man.mse.4;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ps2mouse"> + <para>Как использовать мышь PS/2 (типа <quote>mouse port</quote> + или <quote>keyboard</quote>)?</para> + </question> + + <answer> + <para>Мышь PS/2 системой поддерживается. Необходимый драйвер + устройства, <devicename>psm</devicename>, включён в ядро + <filename>GENERIC</filename>.</para> + + <para>Если в вашем ядре его нет, то добавьте следующую строку в + файл конфигурации ядра и постройте новое ядро.</para> + + <programlisting>device psm0 at atkbdc? irq 12</programlisting> + + <para>После того, как ядро правильно обнаружило устройство + <devicename>psm0</devicename> во время загрузки, файл + устройства для <devicename>psm0</devicename> будет создан + автоматически.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="moused"> + <para>Можно ли каким-либо образом использовать мышь, кроме + X Window?</para> + </question> + + <answer> + <para>Если вы используете стандартный драйвер консоли, + &man.syscons.4;, то можете использовать указатель мыши в текстовых + консолях для выделения и переноса текста. Запустите демон мыши, + &man.moused.8;, и включите отображение указателя мыши на + виртуальной консоли:</para> + + <screen>&prompt.root; <userinput>moused -p /dev/<replaceable>xxxx</replaceable> -t <replaceable>yyyy</replaceable></userinput> +&prompt.root; <userinput>vidcontrol -m on</userinput></screen> + + <para>Здесь <replaceable>xxxx</replaceable> - это имя устройства + мыши, а <replaceable>yyyy</replaceable> - тип протокола, + используемого мышью. Даемон мыши может автоматически определять + тип протокола большинства мышей, за исключением старых, работающих + по последовательному интерфейсу. Для выполнения автоматического + определения в качестве протокола укажите <literal>auto</literal>. + Если автоматическое определение не работает, то обратитесь к + справочным страницам по &man.moused.8; для получения списка + поддерживаемых типов протоколов.</para> + + <para>Если у вас мышь типа PS/2, просто добавьте строчку + <literal>moused_enable="YES"</literal> в файл + <filename>/etc/rc.conf</filename> для запуска даемона мыши во + время загрузки системы. Кроме того, если вы хотите использовать + даемон мыши во всех виртуальных терминалах, а не только на консоли, + добавьте <literal>allscreens_flags="-m on"</literal> в файле + <filename>/etc/rc.conf</filename>.</para> + + <para>После запуска даемона мыши, доступ к мыши должен + согласовываться между даемоном мыши и другими программами типа X + Window. Обратитесь к вопросу из FAQ <link linkend="x-and-moused"> + Почему моя мышь не работает с X?</link> для получения более полной + информации по этому вопросу.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="text-mode-cut-paste"> + <para>Как можно вырезать и копировать текст с помощью мыши в + текстовой консоли?</para> + </question> + + <answer> + <para>После того, как вы запустили даемон мыши (посмотрите <link + linkend="moused">предыдущий раздел</link>), нажмите кнопку 1 + (левую) и двигайте мышь для выделения текста. Затем + нажмите кнопку 2 (среднюю) для его вставки с позиции текстового + курсора. Нажатие кнопки 3 (правой) <quote>расширит</quote> + выбранную текстовую область.</para> + + <para>Если у вашей мыши отсутствует средняя кнопка, вы можете её + сэмулировать или переназначить кнопки опциями даемона мыши. + Обратитесь к справочным страницам по &man.moused.8; для получения + полной информации.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="mouse-wheel-buttons"> + <para>У моей мыши есть дополнительные колёсико и кнопочки. Можно ли + их использовать во &os;?</para> + </question> + + <answer> + <para>Ответ, к сожалению, <quote>в зависимости от + обстоятельств</quote>. Эти мышки с дополнительными возможностями, + как правило, требуют наличия специальных драйверов. До тех пор, + пока драйвер мыши или прикладная программа не будут иметь отдельную + поддержку такой мыши, она будет работать как стандартная двух- или + трёхкнопочная мышь.</para> + + <para>Возможные способы использования колёсиков мыши при работе в X + Window описаны в <link linkend="x-and-wheel">другом + разделе</link>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="laptop-mouse-trackball"> + <para>Как использовать мышь/трэкболл/сенсорную панель на + лэптопе?</para> + </question> + + <answer> + <para>Посмотрите <link linkend="ps2mouse">ответ на предыдущий + вопрос</link>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="keyboard-delete-key"> + <para>Как использовать клавишу delete в <command>sh</command> + и <command>csh</command>?</para> + </question> + + <answer> + <para>Для <application>Bourne Shell</application> добавьте + следующие строки в ваш <filename>.shrc</filename>. Смотрите + &man.sh.1; и &man.editrc.5;.</para> + + <programlisting>bind ^? ed-delete-next-char # для консоли +bind ^[[3~ ed-delete-next-char # для xterm</programlisting> + + <para>Для <application>C Shell</application> добавьте следующие + строки в ваш <filename>.cshrc</filename>. Смотрите + &man.csh.1;.</para> + + <programlisting>bindkey ^? delete-char # для консоли +bindkey ^[[3~ delete-char # для xterm</programlisting> + + <para>За дополнительной информацией обращайтесь к <ulink + url="http://www.ibb.net/~anne/keyboard.html">этой + странице</ulink>.</para> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-networking"> + <title>Сетевые и последовательные устройства</title> + + <qandaset> + <qandaentry> + <question id="network-cards"> + <para>Какие сетевые адаптеры поддерживает &os;?</para> + </question> + + <answer> + <para>Обратитесь к файлу Hardware Notes, поставляемому с каждым + релизом &os;, для получения полного списка.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="support-broadcom"> + <para>Существует ли собственный драйвер для адаптеров Broadcom + 43xx?</para> + </question> + + <answer> + <para>Да, многие из адаптеров Broadcom 43xx поддерживаются + драйверами &man.bwn.4; и &man.bwi.4;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="multiport-serial-support"> + <para>Какие многопортовые последовательные адаптеры поддерживаются во + &os;?</para> + </question> + + <answer> + <para>Список таких устройств находится в главе Руководства + <ulink url="&url.books.handbook;/serial.html">Последовательные + соединения</ulink>.</para> + + <para>Некоторые безымянные клоны таких адаптеров тоже работают + нормально, особенно те, которые заявляют о своей совместимости + с AST.</para> + + <para>Прочтите страницы Справочника о &man.sio.4; для получения + подробной информации о конфигурировании таких адаптеров.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="serial-console-prompt"> + <para>Как сделать, чтобы приглашение boot: выводилось на консоль на + последовательном порту?</para> + </question> + + <answer> + <para>Подробная информация находится в <ulink + url="&url.books.handbook;/serialconsole-setup.html">этом + разделе Руководства</ulink>.</para> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-sound"> + <title>Звуковые устройства</title> + + <qandaset> + <qandaentry> + <question id="sound-card-support"> + <para>Какие звуковые адаптеры поддерживаются во &os;?</para> + </question> + + <answer> + <para>&os; поддерживает различные звуковые адаптеры + (дополнительную информацию + можно найти в <ulink url="&url.base;/releases/">Информации о + релизе &os;</ulink> и странице справочной системы + по &man.snd.4;). Имеется также ограниченная поддержка MPU-401 + и совместимых с ним адаптеров. Поддерживаются и адаптеры, + соответствующие спецификации µsoft; Sound System.</para> + + <note> + <para>Это касается только звука! Этот драйвер не поддерживает + CD-ROM, SCSI или джойстики ни на каких подобных адаптерах, кроме + &soundblaster;. Поддерживаются устройства на SCSI-интерфейсе + &soundblaster; и не-SCSI CD-ROM, но загрузиться с них + невозможно.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="es1370-silent-pcm"> + <para>Есть ли решение проблемы отсутствия звука при использовании + звуковых адаптеров &man.pcm.4;?</para> + </question> + + <answer> + <para>Некоторые звуковые адаптеры при каждой + загрузке сбрасывают уровень громкости в 0. Выполняйте следующую + команду при каждой загрузке машины:</para> + + <screen>&prompt.root; <userinput>mixer pcm 100 vol 100 cd 100</userinput></screen> + </answer> + </qandaentry> + </qandaset> + </sect1> + + <sect1 id="compatibility-other"> + <title>Другое оборудование</title> + + <qandaset> + + <qandaentry> + <question id="power-management-support"> + <para>Поддерживает ли &os; управление энергосбережением на + лэптопах?</para> + </question> + + <answer> + <para>&os; поддерживает <acronym>APM</acronym> + на некоторых машинах. Более полная информация может быть найдена + в справочной странице по &man.apm.4;.</para> + + <para>&os; также поддерживает функции + <acronym>ACPI</acronym>, реализованные в основной массе + современного оборудования. Дополнительную информацию можно найти + на странице справочной системы &man.acpi.4;. Если система + поддерживает как <acronym>APM</acronym>, так и + <acronym>ACPI</acronym>, можно использовать любую из них. Мы + рекомендуем опробовать обе и выбрать ту, что подходит вам в + большей степени.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="disable-acpi"> + <para>Как я могу отключить ACPI?</para> + </question> + + <answer> + <para>Добавьте следующую строчку в файл + <filename>/boot/device.hints</filename>:</para> + + <screen>hint.acpi.0.disabled="1"</screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="micron-hang-boot"> + <para>Компьютеры Micron зависают при загрузке</para> + </question> + + <answer> + <para>Некоторые материнские платы Micron имеют BIOS, не + удовлетворяющую стандарту PCI BIOS, что приводит к печальным + последствиям при загрузке &os;, потому что имеет место + несоответствие устройств PCI занимаемым ими адресам.</para> + + <para>Для устранения этой проблемы отключите в BIOS опцию + <quote>Plug and Play Operating System</quote>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="asusk7v-boot-failure"> + <para>При загрузке с установочной дискеты машины с материнской платой + ASUS K7V зависают. Как это исправить?</para> + </question> + + <answer> + <para>Войдите в настройку BIOS и выключите <quote>защиту от + загрузочных вирусов</quote>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="micron-3comnic-failure"> + <para>Почему сетевой адаптер &tm.3com; PCI не работает с компьютерами + Micron?</para> + </question> + + <answer> + <para>Смотрите <link linkend="micron-hang-boot">предыдущий + ответ</link>.</para> + </answer> + </qandaentry> + + </qandaset> + </sect1> + </chapter> + + <chapter id="troubleshoot"> + <title>Устранение некоторых проблем</title> + + <qandaset> + <qandaentry> + <question id="pae"> + <para>Почему &os; определяет неправильное количество памяти + на аппаратуре &i386?</para> + </question> + + <answer> + <para>Наиболее вероятная причина заключается в различии между + адресами физической и виртуальной памяти.</para> + + <para>Существующее соглашение для большинства оборудования ПК + заключается в использовании пространства памяти, лежащей в + диапазоне между 3.5 ГБ и 4 ГБ для специальных нужд + (обычно для нужд PCI). Это пространство адресов используется + для доступа к PCI оборудованию. Как результат, реальная + физическая память не может быть получена в данном адресном + пространстве.</para> + + <para>Какие действия выполняются с памятью в данном регионе + зависит от вашего оборудования. К сожалению, некоторое + оборудование ничего не выполняет и возможность использовать + эти 500 МБ ОЗУ полностью потеряна.</para> + + <para>К счастью, большинство оборудования перераспределяет + память к более верхней позиции, так что она всё ещё может + использоваться. Тем не менее, это может вызвать некоторое + замешательство, если вы посмотрите сообщения, выдаваемые при + загрузке.</para> + + <para>На 32-битной версии &os; кажется, что эта память + потерялась. На самом деле она перераспределится в промежуток, + лежащий за 4 ГБ, который не видим для 32 битного ядра. + В данном случае, решение заключается в сборке ядра, с включенной + опцией PAE. За дополнительной информацией обращайтесь к <link + linkend="memory-limits">статье об ограничениях памяти</link> + и <link linkend="memory-upper-limitation">о различных + ограничениях памяти на различных платформах</link>.</para> + + <para>На 64nbsp;битной версии &os; или в случае использования ядра с + включённым PAE &os; корректно определит и перераспределит память, + так, что она станет годной к использованию. Тем не менее, во + время загрузки может показаться, что &os; определяет больше + памяти, чем реально имеется в системе из-за описанного + перераспределения. Это нормально, и информация + о доступной памяти будет скорректирована по окончанию процесса + загрузки.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="awre"> + <para>На моём винчестеры есть запорченные блоки!</para> + </question> + + <answer> + <para>Если это SCSI-устройство, то винчестер должен иметь возможность + автоматической переадресации таких блоков. Однако во многих + поставляемых дисках эта возможность отключена.</para> + + <para>Для включения переадресации запорченных блоков, измените + режим работы устройства, что может быть выполнено пользователем + <username>root</username> по команде</para> + + <screen>&prompt.root; <userinput>camcontrol modepage sd0 -m 1 -e -P 3</userinput></screen> + + <para>и изменить значения параметров AWRE и ARRE с 0 на 1:</para> + + <programlisting>AWRE (Auto Write Reallocation Enbld): 1 +ARRE (Auto Read Reallocation Enbld): 1</programlisting> + + <para>Контроллеры современных IDE-дисков имеют встроенную функцию + переадресации запорченных блоков, которая на момент продажи + включена.</para> + + <para>Если вы увидите предупреждения о запорченных блоках (на любом + типе устройства), это значит, что пришло время подумать над заменой + диска. Вы можете воспользоваться диагностической программой + производителя диска для поиска этих запорченных блоков, и в лучшем + случае это только отнимет ваше время.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="hpnetserver-scsi-failure"> + <para>Почему &os; не распознаёт SCSI-контроллер на машине HP + Netserver?</para> + </question> + + <answer> + <para>В общем-то это известная проблема. EISA-контроллеры SCSI, + расположенные на материнской плате машин HP Netserver, занимают + EISA-слот номер 11, так что все <quote>настоящие</quote> слоты + EISA будут ему предшествовать. Так как адресное пространство для + слотов EISA выше 10 пересекается с адресным пространством, + предназначенным для PCI, то автоконфигуратор &os; в настоящее + время не может эту проблему нормально обойти.</para> + + <para>Так что пока лучшее, что вы можете предпринять, это попытаться + указать, что пересечения диапазонов адресов нет :), установив опцию + ядра <literal>EISA_SLOTS</literal> в значение 12. + Отконфигурируйте и откомпилируйте ядро так, как это описано в <ulink + url="&url.books.handbook;/kernelconfig.html">разделе + Руководства</ulink> о конфигурировании ядра.</para> + + <para>Конечно, это даст вам типичную ситуации "курица или яйцо" + при установке системы на такой машине. Для обхода этой проблемы + внутри <emphasis>UserConfig</emphasis> есть специальный хак. Не + используя <quote>визуального</quote> интерфейса, а только + интерфейс командной строки, просто наберите следующую команду + в приглашении и установите систему как обычно.</para> + + <programlisting>eisa 12 +quit</programlisting> + + <para>В любом + случае рекомендуется, что вы отконфигурируете и установите + собственное ядро.</para> + + <para>Надеемся, что будущие версии будут содержать полное решение + этой проблемы.</para> + + <note> + <para>Вы не сможете использовать режим <literal>dangerously + dedicated</literal> на машинах HP Netserver. Полное описание + причин содержится в <link linkend="dedicate">этом + замечании</link>.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="ed1-timeout"> + <para>Выдаются сообщения типа <errorname>ed1: + timeout</errorname>.</para> + </question> + + <answer> + <para>Обычно это вызвано конфликтом прерываний (например, двух + адаптеров, использующих один и тот же IRQ). Загрузите систему с + опцией <option>-c</option> и смените строку, описывающую + <devicename>ed0</devicename>/<devicename>de0</devicename>/... + на соответствующую вашей системе.</para> + + <para>Если вы используете разъём BNC сетевого адаптера, таймауты + устройства могут быть вызваны плохим терминированием. Чтобы это + проверить, подключите терминатор к адаптеру (без кабеля) и + посмотрите, не исчезли ли сообщения об ошибках.</para> + + <para>Некоторые NE2000-совместимые адаптеры выдают такую ошибку, + если нет связи по UTP-порту или отключен кабель.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="bad-3c509"> + <para>Почему мой адаптер &tm.3com; 3C509 перестал работать без всякой + видимой причины?</para> + </question> + + <answer> + <para>Этот адаптер имеет странную привычку терять информацию о своих + настройках. Обновите настройки вашего адаптера при помощи утилиты + <command>3c5x9.exe</command> из DOS.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="printer-slow"> + <para>Мой параллельный принтер печатает невероятно медленно. Что тут + можно сделать?</para> + </question> + + <answer> + <para>Если проблема только в том, что принтер работает ужасно + медленно, попробуйте сменить <ulink + url="&url.books.handbook;/printing-intro-setup.html#PRINTING-PARALLEL-PORT-MODE"> + режим работы порта принтера</ulink> так, как это описано в разделе + <ulink url="&url.books.handbook;/printing-intro-setup.html"> + Настройка принтера</ulink> Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="signal11"> + <para>Программы аварийно завершают работу с ошибкой <errorname>Signal + 11</errorname>.</para> + </question> + + <answer> + <para>Ошибки выполнения, связанные с сигналом 11, происходят, + когда ваш процесс пытается обратиться к области памяти, доступ к + которой ему не был дан операционной системой. Если что-то подобное + происходит в случайные, на первый взгляд, промежутки времени, то + вам нужно попытаться выяснить подробности происходящих событий + более детально.</para> + + <para>Эти проблемы могут быть классифицированы следующим + образом:</para> + + <orderedlist> + <listitem> + <para>Если проблема возникает только в определённом приложении, + которое было самостоятельно вами разработано, то, скорее всего, + это ошибка в вашем коде.</para> + </listitem> + + <listitem> + <para>Если это проблема в части базового комплекта системы + &os;, то это тоже может быть ошибка в программном коде, хотя + в большинстве случаев такие проблемы обнаруживаются и ошибки + исправляются задолго до того, как обычным читателям FAQ + доводится использовать этот код (именно для этого предназначена + версия -current).</para> + </listitem> + </orderedlist> + + <para>В частности, достоверно <emphasis>не</emphasis> ошибка &os;, + если вы сталкиваетесь с проблемой при компиляции программы, но при + работе компилятора место сбоя каждый раз изменяется.</para> + + <para>Например, положим, что вы запускаете команду <command>make + <maketarget>buildworld</maketarget></command> и компиляция + завершилась аварийно при попытке + компиляции <filename>ls.c</filename> в <filename>ls.o</filename>. + Если при следующей попытке повторно выполнить <command>make + <maketarget>buildworld</maketarget></command> и компиляция + прервётся на том же самом месте, + то это ошибки процесса построения — попробуйте обновить исходные + тексты и попробуйте снова. Если же компиляция прерывается в + каком-то другом месте, то в этом практически достоверно виновато + оборудование.</para> + + <para>Что вы должны сделать:</para> + + <para>В первом случае вы должны воспользоваться отладчиком, к + примеру, &man.gdb.1;, для нахождения точки программы, в которой + делается попытка доступа к неверному адресу и затем исправить эту + ошибку.</para> + + <para>Во втором случае вам нужно проверить, что ваше оборудование + исправно.</para> + + <para>Среди часто приводящих к этому причин:</para> + + <orderedlist> + <listitem> + <para>Ваши винчестеры могут перегреваться: Проверьте работу + вентиляторов в вашем системном блоке, так как ваш диск (и может, + также другие компоненты, могут перегреваться).</para> + </listitem> + + <listitem> + <para>Работающий процессор перегревается: Это может произойти + из-за выхода частоты процессора за рабочие границы или поломки + вентилятора на процессоре. В любом случае вам нужно + убедиться, что ваше оборудование работает так, как ему + положено, по крайней мере, на момент поиска причин + неисправности, другими словами, установите частоту работы на + настройки по умолчанию.</para> + + <para>Если вы превысили рабочие частоты работы процессора, + заметьте, что дешевле обходится медленная система, чем + сгоревшая система, требующая замены! Также общество не часто + симпатизирует проблемам на таких системах, вне зависимости от + того, считаете ли вы увеличение рабочей частоты не влияющим на + работу или нет.</para> + </listitem> + + <listitem> + <para>Хитрая память: Если у вас установлено множество микросхем + SIMM/DIMM, то вытащите их все и попытайтесь поработать + индивидуально с каждой микросхемой SIMM или DIMM и локализовать + проблему либо до проблематичной микросхемы DIMM/SIMM, либо даже + их комбинации.</para> + </listitem> + + <listitem> + <para>Чересчур оптимистические настройки материнской платы: При + настройке вашей BIOS и выборе положения перемычек на + материнской плате вы имеете возможность задать различные + частоты и задержки, и в большинстве случаев настройки по + умолчанию достаточны, но иногда установка слишком малых + периодов ожидания для ОЗУ, установка параметра <quote>RAM + Speed: Turbo</quote> и подобных параметров в BIOS вызовет + странное поведение. Возможным решением может стать установка + параметров BIOS по умолчанию, но сначала стоит записать ваши + настройки!</para> + </listitem> + + <listitem> + <para>Неустойчивое или недостаточное электропитание материнской + платы. Если в вашей системе есть неиспользуемые адаптеры + ввода/вывода, винчестеры или приводы компакт-дисков, попробуйте + временно их убрать или отключить от кабеля электропитания, + чтобы посмотреть, сможет ли ваш блок питания работать с меньшей + нагрузкой. Или попробуйте воспользоваться другим блоком + питания, желательно большей мощности (например, если имеющийся + блок питания рассчитан на 250 Ватт, попробуйте другой + мощностью 300 Ватт).</para> + </listitem> + </orderedlist> + + <para>Вы также должны прочитать FAQ по SIG11 (ссылка дана ниже), в + котором даны прекрасные описания всех этих проблем, хотя и с точки + зрения &linux;. Также обсуждается, как аппаратура или программное + обеспечение для тестирования памяти могут пропускать сбойную + память.</para> + + <para>Наконец, если ничего из этого не помогает, то возможно, что + просто вы нашли ошибку во &os; и должны следовать инструкциям + по посылке сообщений о проблемах.</para> + + <para>Подробная информация по этому вопросу содержится в <ulink + url="http://www.bitwizard.nl/sig11/">FAQ по проблеме + SIG11</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="trap-12-panic"> + <para>Моя система аварийно завершает работу с сообщениями + <errorname>Fatal trap 12: page fault in kernel mode</errorname> + либо <errorname>panic:</errorname>, и выдаёт много дополнительной + информации. Что мне делать?</para> + </question> + + <answer> + <para>Разработчики &os; очень интересуются такими ошибками, но + им нужно несколько больше информации, чем просто факт + возникновения этой ошибки. Полностью скопируйте сообщение. + Затем обратитесь к разделу FAQ об <link + linkend="kernel-panic-troubleshooting">аварийных завершениях + работы ядра</link>, постройте отладочное ядро и получите + трассу вызовов. Это может звучать трудной задачей, но вам не + нужны никакие знания программирования; просто следуйте + указаниям.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="screen-loses-sync"> + <para>При загрузке монитор темнеет и теряет синхронизацию!</para> + </question> + + <answer> + <para>Это известная проблема с видеоадаптерами ATI Mach64. Она + вызвана тем, что этот адаптер использует адрес + <literal>2e8</literal>, как и четвёртый последовательный порт. + Из-за ошибки (или особенности работы?) в драйвере &man.sio.4; он + обращается к порту, даже если он не существует, и + <emphasis>даже</emphasis> если вы отключите + <devicename>sio3</devicename> (четвёртый порт), + который, как правило, использует этот адрес ввода/вывода.</para> + + <para>Пока это не исправлено, используйте следующий метод:</para> + + <orderedlist> + <listitem> + <para>В приглашении загрузчика наберите <option>-c</option>. + (Это переведёт ядро в режим конфигурации).</para> + </listitem> + + <listitem> + <para>Отключите устройства <devicename>sio0</devicename>, + <devicename>sio1</devicename>, <devicename>sio2</devicename> и + <devicename>sio3</devicename> (все их). После этого драйвер + &man.sio.4; не будет активизироваться и проблем не + будет.</para> + </listitem> + + <listitem> + <para>Для продолжения загрузки наберите exit.</para> + </listitem> + </orderedlist> + + <para>Если вам нужно использовать последовательные порты, вы должны + построить новое ядро со следующей модификацией: в файле + <filename>/usr/src/sys/dev/sio/sio.c</filename> (или в файле + <filename>/usr/src/sys/pc98/cbus/sio.c</filename> для pc98) + найдите строчку, + содержащую число <literal>0x2e8</literal> и удалите её вместе с + предшествующий запятой (оставив следующую). После этого следуйте + обычным указаниям по построению ядра.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="reallybigram"> + <para>Почему &os; использует только 64 Мбайт ОЗУ, тогда как + установлено все 128 Мбайт?</para> + </question> + + <answer> + <para>Так как для определения объёма памяти &os; использует + информацию BIOS, она ограничена 16 битами, используемыми для + выражения размера ОЗУ в килобайтах (65535 Кбайт = 64 Мбайт) (или + меньше... некоторые BIOS ограничивают размеры памяти до 16 Мбайт). + Если у вас больше чем 64 Мбайт ОЗУ, &os; будет пытаться + обнаружить эту память; однако эта попытка может и не + удаться).</para> + + <para>Для решения этой проблемы вам нужно использовать опцию ядра, + указанную ниже. Способ выяснения полной информации о памяти из + BIOS существует, но у нас нет места в загрузочном блоке, чтобы это + делать. Когда проблема нехватки места в загрузочных блоках будет + решена, мы будем использовать расширенные функции BIOS для + получения полной информации о памяти... но пока мы остановились на + опции ядра.</para> + + <programlisting>options MAXMEM=<replaceable>n</replaceable></programlisting> + + <para>Здесь <replaceable>n</replaceable> - это объём памяти в + килобайтах. Для машины со 128 Мбайт ОЗУ вам нужно использовать + значение <literal>131072</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="kmem-map-too-small"> + <para>Объём оперативной памяти моей системы превышает 1 Гбайт, работа + завершается аварийно с выдачей сообщения <errorname>kmem_map too + small</errorname> messages. Что не так?</para> + </question> + + <answer> + <para>Как правило, &os; определяет параметры ядра, в частности, + максимальное количество одновременно открытых файлов, исходя из + объёма памяти, установленного в системе. В системах, имеющих 1 + Гбайт или больший объём оперативной памяти, этот механизм + <quote>автоматического определения параметров</quote> может выбрать + слишком большие значения: при запуске ядро выделяет пространство + под различные таблицы и другие структуры, которые заполняют + основной объём доступной ядру памяти. В дальнейшем при работе + системы у ядра не остаётся пространства для динамического + распределения памяти, и оно завершает работу аварийно.</para> + + <para>Скомпилируйте новое ядро, добавив параметр + <option>VM_KMEM_SIZE_MAX</option> в конфигурационный файл ядра, + увеличив его максимальный размер до 400 Мбайт + (<option>options VM_KMEM_SIZE_MAX=419430400</option>). + 400 Мбайт должно быть достаточно для машин с объёмом + оперативной до 6 Гбайт.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="panic-kmemmap-too-small"> + <para>В моей системе нет 1 Гбайта оперативной памяти, однако &os; + аварийно завершает работу, выдавая сообщение <errorname>kmem_map + too small</errorname>!</para> + </question> + + <answer> + <para>Такое завершение работы показывает, что системе не хватает + виртуальной памяти для сетевых буферов (точнее, структур mbuf). Вы + можете увеличить количество виртуальной памяти для структур mbuf, + если будете действовать в соответствии с инструкциями раздела + <ulink + url="&url.books.handbook;/configtuning-kernel-limits.html#NMBCLUSTERS"> + Ограничения сети</ulink> Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="proc-table-full"> + <para>Почему я получаю сообщение об ошибке <errorname>kernel: proc: + table is full</errorname>?</para> + </question> + + <answer> + <para>Ядро &os; позволяет существовать одновременно ограниченному + числу процессов. Оно зависит от значения переменной + &man.sysctl.8; <varname>kern.maxusers</varname>. + <varname>kern.maxusers</varname> также влияет на другие ограничения + ядра, такие как буферы работы с сетью (обратитесь к <link + linkend="panic-kmemmap-too-small">этому</link> рассмотренному ранее + вопросу). Если ваша машина сильно загружена, вам, наверное, + понадобится увеличить <varname>kern.maxusers</varname>. Кроме + максимального числа процессов это увеличит значения и других + параметров, ограничивающих систему.</para> + + <para>Для корректировки значения <varname>kern.maxusers</varname> + обратитесь к разделу <ulink + url="&url.books.handbook;/configtuning-kernel-limits.html#KERN-MAXFILES"> + Ограничения файлов/процессов</ulink> Руководства. (Хотя в нём + говорится об открытых файлах, те же самые ограничения касаются и + процессов.)</para> + + <para>Если ваша машина загружена слабо, и просто у вас + слишком много процессов, то вы можете настроить это через sysctl + <varname>kern.maxproc</varname>. Если данная переменная нуждается + в настройке, она должна быть определена в + <filename>/boot/loader.conf</filename>. За дополнительной информацией, + касающейся работы с sysctl переменными обращайтесь к страницам + справочника &man.loader.conf.5; и &man.sysctl.conf.5;. Если эти + процессы запущены одним и тем же пользователем, вам также задать значение + <varname>kern.maxprocperuid</varname> на единицу меньшим, чем новое + значение <varname>kern.maxproc</varname>. (Оно должно быть по + крайней мере на единицу меньшим, потому что системная программа + &man.init.8;, должна работать всегда.)</para> + + <para>Чтобы сохранить значения sysctl, задайте + их в <filename>/etc/sysctl.conf</filename>. Дополнительную информацию + о настройке системы с помощью &man.sysctl.8; можно найти в главе + Руководства <ulink + url="&url.books.handbook;/configtuning-sysctl.html">Настройка с + помощью sysctl</ulink> </para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cmap-busy-panic"> + <para>При перезагрузке с новым ядром выдаётся сообщение + <literal>CMAP busy panic</literal>.</para> + </question> + + <answer> + <para>Процедура определения устаревших файлов + <filename>/var/db/kvm_*.db</filename> иногда даёт сбой и использует + не те файлы, что может вызвать аварийный останов системы.</para> + + <para>Если это случилось, загрузитесь в однопользовательский + режим и выполните команду:</para> + + <screen>&prompt.root; <userinput>rm /var/db/kvm_*.db</userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="brkadrint-illegal-host-access"> + <para>Что означает сообщение <errorname>ahc0: brkadrint, Illegal + Host Access at seqaddr 0x0</errorname></para> + </question> + + <answer> + <para>Это - результат конфликта со SCSI-адаптером Ultrastor.</para> + + <para>Во время загрузки войдите в меню конфигурации ядра и выключите + устройство <devicename>uha0</devicename>, являющееся источником + этой проблемы.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="aci0-illegal-cable"> + <para>При загрузке моей системы выдается сообщение об ошибке + <errorname>ahc0: illegal cable configuration</errorname>. С + подключением кабеля все в порядке. Что происходит?</para> + </question> + + <answer> + <para>На вашей материнской плате отсутствует внешняя логика + поддержки автоматического терминирования. Установите в вашем SCSI + BIOS правильное терминирование для вашей конфигурации вместо + автоматического терминирования. Драйвер &man.ahc.4; не может + определить, есть ли внешняя логика для распознавания кабеля (и, + соответственно, автоматического терминирования). Драйвер просто + полагает, что эта поддержка должна быть, если конфигурация, + содержащаяся в EEPROM, установлена в + <quote>automatic termination</quote>. Без + внешней логики распознавания кабеля драйвер часто будет ошибаться + при настройке терминирования, что может сказаться на надежности + шины SCSI.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="mail-loopback"> + <para><application>Sendmail</application> сообщает, что + <errorname>mail loops back to myself</errorname></para> + </question> + + <answer> + <para>Подробный ответ вы можете получить в <ulink + url="&url.books.handbook;/mail-trouble.html#Q26.5.2.">Руководстве</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="remote-fullscreen"> + <para>Полноэкранные приложения на удалённой машине ведут себя + неправильно!</para> + </question> + + <answer> + <para>На удалённой машине тип терминала может быть установлен + в значение, отличное от типа терминала <literal>cons25</literal>, + требуемом при использовании консоли &os;.</para> + + <para>Есть несколько возможных способов решения этой + проблемы:</para> + + <itemizedlist> + <listitem> + <para>После входа на другую машину установите значение + переменной окружения <envar>TERM</envar> равным + <literal>ansi</literal> + или <literal>sco</literal>, если эта машина знает об этих + типах терминалов.</para> + </listitem> + + <listitem> + <para>Используйте эмулятор VT100, например + <application>screen</application> на консоли &os;. + <application>Screen</application> даёт вам возможность + открывать несколько рабочих сеансов на одном терминале, + и она имеет ещё ряд полезных особенностей. Каждое окно + программы <application>screen</application> ведёт себя + как терминал VT100, так что переменная <envar>TERM</envar> + на удалённой + машине должна быть установлена в + значение <literal>vt100</literal>.</para> + </listitem> + + <listitem> + <para>Опишите терминал <literal>cons25</literal> в базе + данных характеристик терминалов на удалённой машине. + Способ описания зависит от используемой на этой машине + операционной системе. Вам может помочь чтение руководств + по администрированию удалённой системы.</para> + </listitem> + + <listitem> + <para>Запустите X-сервер на стороне &os; и войдите на + удалённую систему с помощью какого-либо эмулятора терминала, + работающего в X Window, такого, как <command>xterm</command> + или <command>rxvt</command>. Переменная окружения + <envar>TERM</envar> + на удалённой машине должна быть установлена в значение + <literal>xterm</literal> или <literal>vt100</literal>.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="pnp-not-found"> + <para>Почему мой PnP-адаптер + не обнаруживается (или определяется + как <literal>unknown</literal>)?</para> + </question> + + <answer> + <para>Причины такого поведения объясняются в следующем сообщении + электронной почты, опубликованном в &a.questions; + Питером Уэммом (&a.peter;) в ответ на вопрос о внутреннем модеме, + который перестал распознаваться после обновления до &os; + 4.<replaceable>X</replaceable> + (комментарии внутри <literal>[]</literal> были добавлены для + пояснения контекста послания).</para> + + <note> + <para>Содержание этой цитаты по сравнению с оригинальным текстом + было изменено.</para> + </note> + + <blockquote> + <para>BIOS, поддерживающая PNP, предварительно отводит и оставляет + ему [модему] место в адресном пространстве портов, так что [в + 3.<replaceable>X</replaceable>] процедура обнаружения в старом + стиле ISA <quote>находит</quote> его здесь.</para> + + <para>В 4.0 код для работы с ISA гораздо более PnP-центричен. + [В 3.<replaceable>X</replaceable>] было возможно при + распознавании ISA найти + <quote>беспризорное</quote> устройство и затем по идентификатору + PNP-устройства произвести поиск и получить ошибку из-за конфликта + ресурсов. Поэтому для предотвращения повторной процедуры + распознавания в нём сначала выключаются все управляемые + адаптеры. Это также означает, что для поддерживаемого + оборудования PnP нужно знать их PnP-идентификаторы. Имеются + планы на обеспечение возможности настройки этого со стороны + пользователя.</para> + </blockquote> + + <para>Чтобы заставить устройство работать снова, требуется определить + его PnP-идентификатор и добавить его в список, который используется + процедурой распознавания ISA для идентификации устройств PnP. Этот + идентификатор можно получить при помощи программы &man.pnpinfo.8;, + найдя устройство в её выдаче, вот, например, вывод команды + &man.pnpinfo.8; в случае внутреннего модема:</para> + + <screen>&prompt.root; <userinput>pnpinfo</userinput> +Checking for Plug-n-Play devices... + +Card assigned CSN #1 +Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff +PnP Version 1.0, Vendor Version 0 +Device Description: Pace 56 Voice Internal Plug & Play Modem + +Logical Device ID: PMC2430 0x3024a341 #0 + Device supports I/O Range Check +TAG Start DF + I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8 + [16-bit addr] + IRQ: 4 - only one type (true/edge)</screen> + + <para>[лишние строки TAG исключены]</para> + + <screen>TAG End DF +End Tag + +Successfully got 31 resources, 1 logical fdevs +-- card select # 0x0001 + +CSN PMC2430 (0x3024a341), Serial Number 0xffffffff + +Logical device #0 +IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 +IRQ 5 0 +DMA 4 0 +IO range check 0x00 activate 0x01</screen> + + <para>Информация, которая вам нужна, находится в строке + <literal>Vendor ID</literal> в самом начале вывода команды. + Шестнадцатеричное число в скобках (в этом примере + <literal>0x3024a341</literal>) является PnP-идентификатором, а + строчка, идущая прямо перед ним (<literal>PMC2430</literal>) + является уникальным ASCII-идентификатором.</para> + + <para>Либо, если в списке, выдаваемом &man.pnpinfo.8;, адаптера нет, + можно воспользоваться утилитой &man.pciconf.8;. Вот часть выдачи + команды <command>pciconf -vl</command> для интегрированного в + материнскую плату звукового адаптера:</para> + + <screen>&prompt.root; <userinput>pciconf -vl</userinput> +chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02hdr=0x00 + vendor = 'Intel Corporation' + device = '82801AA 8xx Chipset AC'97 Audio Controller' + class = multimedia + subclass = audio</screen> + + <para>В данном случае вам нужно использовать значение для + <varname>chip</varname>, <literal>0x24158086</literal>.</para> + + <para>Эту информацию (ID производителя или номер микросхемы) нужно + добавить в файл <filename>/usr/src/sys/dev/sio/sio_isa.c</filename>.</para> + + <para>Сначала вы должны сделать резервную копию файла + <filename>sio_isa.c</filename> просто на тот случай, если что-то пойдёт + не так. Эта копия также может потребоваться для создания патча для + посылки его вместе с вашим PR (вы же собираетесь послать PR, не + правда ли?) отредактировав файл <filename>sio_isa.c</filename> и + поискав строчку:</para> + + <programlisting>static struct isa_pnp_id sio_ids[] = {</programlisting> + + <para>Затем переместитесь ниже и найдите подходящее место, чтобы + добавить строчку для вашего устройства. Записи имеют примерно такой + вид, и они отсортированы по ASCII-строкам Vendor ID, которые должны + быть помещены в поле комментария справа от строки кода вместе с + полным описанием устройства (если оно поместится) или частью из + <emphasis>Device Description</emphasis> вывода программы + &man.pnpinfo.8;:</para> + + <programlisting>{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */ +{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */ +{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */ +{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */ +{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */</programlisting> + + <para>Добавьте шестнадцатеричный идентификатор Vendor ID вашего + устройства в соответствующее место, сохраните файл, перестройте + ядро и выполните перезагрузку. Ваше устройство должно теперь быть + найдено в виде устройства <devicename>sio</devicename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="nlist-failed"> + <para>Почему при запуске некоторых программ, например, + <command>top</command> или <command>systat</command>, выдается + сообщение об ошибке <errorname>nlist failed</errorname>?</para> + </question> + + <answer> + <para>Проблема в том, что приложение, которое вы пытаетесь + запустить, ищет специфические ссылки в ядре, но по каким-либо + причинам не может их найти; эта ошибка происходит от одной из + следующих проблем:</para> + + <itemizedlist> + <listitem> + <para>Ваше ядро и программы пользователей не соответствуют + друг другу (например, вы построили ядро, но не выполнили + команду <maketarget>installworld</maketarget>, или наоборот), + и поэтому таблица имен отличается от того, что думают о ней + пользовательские приложения. Если это ваш случай, просто + завершите процесс обновления (обратитесь к файлу + <filename>/usr/src/UPDATING</filename> для выяснения + правильной последовательности действий).</para> + </listitem> + + <listitem> + <para>Для загрузки ядра вы не используете + <command>/boot/loader</command>, а делаете это + непосредственно из <filename>boot2</filename> (обратитесь + к справочно странице по &man.boot.8;). Хотя нет ничего + плохого в обходе <command>/boot/loader</command>, обычно + работу по доступности символьной информации ядра из + пользовательских приложений он выполняет лучше.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="connection-delay"> + <para>Почему подключение через <command>ssh</command> или + <command>telnet</command> к моему компьютеру занимает так + долго времени?</para> + </question> + + <answer> + <para>Симптом: между моментом установления TCP-соединения и + выдачей клиентским программным обеспечением запроса на ввод + пароля (или, в случае использования &man.telnet.1;, выдачей + приглашения на вход) проходит большой промежуток времени.</para> + + <para>Проблема: скорее всего, задержка вызвана программным + обеспечением на стороне сервера, которое пытается преобразовать + IP-адрес клиента в имя хоста. Многие серверы, включая + <application>Telnet</application> и <application>SSH</application>, + поставляемые с &os;, делают это для того, чтобы, кроме всего + прочего, записать имя хоста в файле журнала для справки + администратора.</para> + + <para>Лечение: Если проблема возникает вне зависимости от того, + к какому серверу вы подключаетесь с вашего компьютера (клиента), + то причина в клиенте; или же, если проблема возникает только + при чьей-либо попытке подключиться к вашему компьютеру (серверу), + то проблема с сервером.</para> + + <para>Если проблема с клиентом, то единственным методом ее решения + является исправление DNS, чтобы сервер смог распознать вашу + машину. Если это происходит в локальной сети, то предположите, + что это проблема с сервером и продолжайте чтение; обратно, если + это происходит в глобальной сети Интернет, то в большинстве + случаев вам нужно обратиться к вашему провайдеру и попросить + исправить положение.</para> + + <para>Если проблема с сервером, и это происходит в локальной + сети, то вам нужно настроить сервер для разрешения запросов на + преобразование адреса в имя хоста в диапазоне ваших локальных + адресов. Обратитесь к страницам Справочника по &man.hosts.5; + и &man.named.8; для получения более подробной информации. + Если это происходит в глобальной сети Интернет, то проблема + может заключаться в некорректной работе ресолвера вашего сервера. + Для проверки попробуйте найти другой хост, скажем, + <hostid>www.yahoo.com</hostid>. Если это не работает, то + проблема у вас.</para> + + <para>Из-за свежей установки &os;, также возможно, что + информация о домене и сервере имён отсутствует в + <filename>/etc/resolv.conf</filename>. Это часто будет + вызывать задержку в работе <application>SSH</application>, + так как опция <literal>UseDNS</literal> по умолчанию + установлена в значение <literal>yes</literal> в файле + <filename>sshd_config</filename> из каталога <filename + class="directory">/etc/ssh</filename>. Если именно это является + причиной проблемы, то вам нужно будет либо добавить недостающую + информацию в <filename>/etc/resolv.conf</filename>, либо в + качестве временной меры установить <literal>UseDNS</literal> + в <literal>no</literal> в файле + <filename>sshd_config</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="stray-irq"> + <para>Что означает сообщение <errorname>stray IRQ</errorname>?</para> + </question> + + <answer> + <para>Потерянные IRQ являются признаком странностей в работе + аппаратных IRQ, в основном оборудования, которое удаляет свои + запросы на прерывание посреди цикла подтверждения запроса на + прерывание.</para> + + <para>Имеется три варианта работы с такими ситуациями:</para> + + <itemizedlist> + <listitem> + <para>Примириться с сообщениями. В любом случае подавляются все + сообщения, кроме каждых первых 5 на IRQ.</para> + </listitem> + + <listitem> + <para>Убрать предупреждающие сообщения, изменив значение + <varname>MAX_STRAY_LOG</varname> с <literal>5</literal> на + <literal>0</literal> в файле + <filename>intr_machdep.c</filename> для вашей платформы + (например, &i386;), и собрать новое ядро, и тогда все + предупреждения будут подавлены.</para> + </listitem> + + <listitem> + <para>Избавиться от предупреждений, установив параллельный порт, + использующий IRQ 7 и драйвер PPP для него (это есть на + большинстве систем), и установив диск IDE или другое + оборудование, использующее IRQ 15 и подходящий драйвер.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="file-table-full"> + <para>Почему в &man.dmesg.8; регулярно выводятся сообщения + <errorname>file: table is full</errorname>?</para> + </question> + + <answer> + <para>Такое сообщение об ошибке сигнализирует о том, что в вашей + системе исчерпано количество доступных файловых дескрипторов. + Пожалуйста, обратитесь к разделу <ulink + url="&url.books.handbook;/configtuning-kernel-limits.html#KERN-MAXFILES"> + kern.maxfiles</ulink> главы о <ulink + url="&url.books.handbook;/configtuning-kernel-limits.html"> + Настройке ограничений ядра</ulink> Руководства для выяснения всех + подробностей и устранения этой проблемы.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="calcru-negative-runtime"> + <para>Почему выводятся сообщения + <errorname>calcru: negative runtime</errorname> или + <errorname>calcru: runtime went backwards</errorname>?</para> + </question> + + <answer> + <para>При включении в BIOS &intel; Enhanced SpeedStep может + возникнуть проблема, при которой ядро начинает выводить + сообщения <errorname>calcru</errorname> как показано + ниже:</para> + + <screen>calcru: runtime went backwards from 6 usec to 3 usec for pid 37 (pagezero) +calcru: runtime went backwards from 6 usec to 3 usec for pid 36 (vmdaemon) +calcru: runtime went backwards from 170 usec to 138 usec for pid 35 (pagedaemon) +calcru: runtime went backwards from 553 usec to 291 usec for pid 15 (swi6: task queue) +calcru: runtime went backwards from 15521 usec to 10366 usec for pid 2 (g_event) +calcru: runtime went backwards from 25 usec to 12 usec for pid 11 (swi1: net) +calcru: runtime went backwards from 4417 usec to 3960 usec for pid 1 (init) +calcru: runtime went backwards from 2084385 usec to 1793542 usec for pid 1 (init) +calcru: runtime went backwards from 408 usec to 204 usec for pid 0 (swapper)</screen> + + <para>Причиной является то, что &intel; SpeedStep (EIST) не + совместим с некоторыми системными платами.</para> + + <para>Обходной путь: отключить EIST в BIOS. При этом у вас + сохраняется возможность управлять частотой ACPI-совместимого + процессора, используя &man.powerd.8;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="computer-clock-skew"> + <para>Почему часы на моем компьютере показывают неправильное + время?</para> + </question> + + <answer> + <para>На вашем компьютере установлены двое или большее количество + таймеров, а &os; выбрала не тот.</para> + + <para>Запустите &man.dmesg.8; и посмотрите строки, содержащие слово + <literal>Timecounter</literal>. &os; выбирает таймер с + наибольшим значением качества.</para> + + <screen>&prompt.root; <userinput>dmesg | grep Timecounter</userinput> +Timecounter "i8254" frequency 1193182 Hz quality 0 +Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000 +Timecounter "TSC" frequency 2998570050 Hz quality 800 +Timecounters tick every 1.000 msec</screen> + + <para>Вы можете удостовериться в этом, проверив + &man.sysctl.3;-переменную + <varname>kern.timecounter.hardware</varname>.</para> + + <screen>&prompt.root; <userinput>sysctl kern.timecounter.hardware</userinput> +kern.timecounter.hardware: ACPI-fast</screen> + + <para>Это может быть неработающий таймер ACPI. Самым простым + решением будет отключить таймер ACPI в + <filename>/etc/loader.conf</filename>:</para> + + <programlisting>debug.acpi.disabled="timer"</programlisting> + + <para>Либо же BIOS может изменить частоту TSC—может, для изменения + скорости работы процессора при работе от батареек или переводя в + режим пониженного электропитания, но &os; не отслеживает это и + в результате часы начинают спешить или отставать.</para> + + <para>В этом примере имеется также и таймер <literal>i8254</literal>, + и он может быть выбран записью его имени в + &man.sysctl.3;-переменную + <varname>kern.timecounter.hardware</varname>.</para> + + <screen>&prompt.root; <userinput>sysctl -w kern.timecounter.hardware=i8254</userinput> +kern.timecounter.hardware: TSC -> i8254</screen> + + <para>Теперь ваш компьютер будет аккуратнее следить за временем.</para> + + <para>Чтобы это изменение вступало в силу во время загрузки системы, + добавьте в файл <filename>/etc/sysctl.conf</filename> такую + строчку:</para> + + <programlisting>kern.timecounter.hardware=i8254</programlisting> + </answer> + </qandaentry> + + + <qandaentry> + <question id="null-null"> + <para>Почему мой лэптоп некорректно распознаёт PC-карты?</para> + </question> + + <answer> + <para>Эта проблема часто встречается на лэптопах, которые работают + более чем с одной операционной системой. Некоторые не-BSD + операционные системы оставляют аппаратную часть PC-карт в + неустойчивом состоянии. &man.pccardd.8; распознает + карту как <errorname>"(null)""(null)"</errorname>, а не как + реально используемую модель.</para> + + <para>Вы должны убрать всё питание со слота PC-карты для полного + сброса аппаратуры. Полностью выключите лэптоп. (Не переводите его + ни в спящий, ни в ждущий режим; питание должно быть выключено + полностью.) Подождите несколько секунд и выполните перезагрузку. + Теперь ваша PC-карта должна заработать.</para> + + <para>В некоторых лэптопах аппаратная часть неверно сообщает о + своём выключении. Если описанное выше не работает, остановите + работу, выньте батарею, подождите несколько секунд, вставьте + батарею и выполните перезагрузку.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="boot-read-error"> + <para>Сразу после экрана BIOS начальный загрузчик &os; выводит + сообщение <errorname>Read error</errorname> и + останавливается.</para> + </question> + + <answer> + <para>Начальный загрузчик &os; неверно определяет параметры + винчестера. Их можно установить вручную утилитой &man.fdisk.8; при + создании или изменении параметров слайса &os;.</para> + + <para>Правильные значения параметров диска можно посмотреть в BIOS. + Обратите внимание на число дорожек, головок и секторов для этого + диска.</para> + + <para>В подпрограмме fdisk утилиты &man.sysinstall.8; нажмите + <keycap>G</keycap> для установки параметров диска (disk + geometry).</para> + + <para>Появится диалоговое окно, запрашивающее количество дорожек, + головок и секторов. Задайте значения, взятые из BIOS и разделяемые + символами слэша. Например, 5000 дорожек, 250 головок и 60 секторов + будут введены как <userinput>5000/250/60</userinput>.</para> + + <para>Нажмите <keycap>Enter</keycap> для установки этих значений, + а затем клавишу + <keycap>W</keycap> для того, чтобы записать новую таблицу + разделов на диск.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="bootmanager-restore"> + <para>Другая операционная система уничтожила мой менеджер загрузки, + как мне его восстановить?</para> + </question> + + <answer> + <para>Запустите утилиту &man.sysinstall.8; и выберите пункт + <guimenuitem>Configure</guimenuitem>, а затем + <guimenuitem>Fdisk</guimenuitem>. Выберите диск, на котором ранее + находился менеджер загрузки, при помощи клавиши + <keycap>Пробел</keycap>. Нажмите <keycap>W</keycap> для записи + изменений на диск. Появится диалоговое окно для выбора + устанавливаемого начального загрузчика. Выберите нужный, и он + будет восстановлен.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="indefinite-wait-buffer"> + <para>Что означает сообщение <errorname>swap_pager: indefinite + wait buffer:</errorname>?</para> + </question> + + <answer> + <para>Это значит, что процесс пытается сбросить страницу памяти на + диск, и попытка сделать это оканчивается неудачно вот уже в течение + более чем 20 секунд. Это может быть вызвано испорченными блоками + на диске, кабелями, подключением или другим оборудованием + ввода/вывода. Если диск сам по себе на самом деле испорчен, вы + также увидите ошибки работы с диском в + <filename>/var/log/messages</filename> и при работе команды + <command>dmesg</command>. В противном случае проверьте кабели и + подключения.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="udma-icrc"> + <para>Что означают ошибки <errorname>UDMA ICRC</errorname>, и как их + исправить?</para> + </question> + + <answer> + <para>Драйвер &man.ata.4; сообщает об ошибках + <errorname>UDMA ICRC</errorname>, когда нарушается передача в или с + диска в режиме DMA. Драйвер будет повторять передачу + несколько раз. Если повторные попытки окончатся неудачей, он + переключится из режима DMA в более медленный режим PIO + взаимодействия с устройством.</para> + + <para>Проблема может возникать по многим причинам, хотя самым + распространённой является неправильное или сбоящее подключение + кабелей. Проверьте кабели ATA на наличие повреждений и + соответствие используемому режиму Ultra DMA. Если вы используете + диски на съёмных салазках, они также должны быть совместимыми с + этим режимом. Удостоверьтесь, что все соединения подключены + хорошо. Проблемы также наблюдались, когда старый диск + устанавливался на тот же самый канал ATA, что и Ultra DMA 66 + (или более быстрый) диск. Наконец, такие ошибки могут указывать на + сбойность самого диска. Большинство производителей дисков + предоставляют программное обеспечение для тестирования своих + дисков, так что проверьте свой диск, и, если это необходимо, + сделайте резервную копию данных и замените его.</para> + + <para>Для просмотра и выбора режимов DMA или PIO для каждого + устройства ATA можно использовать утилиту &man.atacontrol.8;. В + частности, команда <command>atacontrol mode + <replaceable>channel</replaceable></command> выдаст режимы, + используемые заданным каналом ATA, причём первичный канал + нумеруется нулём, и так далее.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="lock-order-reversal"> + <para>Что означают сообщения <errorname>lock order + reversal</errorname>?</para> + </question> + + <answer> + <para>Ответ на этот вопрос можно найти в глоссарии &os;, + смотрите <ulink + url="&url.books.handbook;/freebsd-glossary.html#LOR-GLOSSARY">LOR</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="called-with-non-sleepable-locks-held"> + <para>Что означают сообщения <errorname>Called ... with + the following non-sleepable locks held</errorname>?</para> + </question> + + <answer> + <para>Это означает, что функция, которая может находиться в + <quote>спящем</quote> состоянии была вызвана во время + использования мьютекс (или другого не <quote>засыпающего</quote>) + блокирования.</para> + + <para>Причина этого - ошибка, потому что мьютексы не предполагают + находиться в удерживаемом состоянии длительные промежутки + времени, а блокировать только на короткие периоды синхронизации. + Это правило позволяет драйверам устройств использовать мьютексы + для синхронизации с остальной частью ядра во время прерываний. + Прерывания (во &os;) могут находиться не в <quote>спящем + состоянии</quote>. Следовательно необходимо, чтобы не было + подсистем в ядре, которые бы занимались блокировкой длительный + период, используя мьютекс.</para> + + <para>Для ловли таких ошибок, в ядро могут быть добавлены + assertions, которые будут взаимодействовать с подсистемой + &man.witness.4; + для генерирования предупреждения или фатальной ошибки (в + зависимости от системной конфигурации) в случаях когда + производится потенциально блокирующий вызов с удержанием + мьютекса.</para> + + <para>В общем, такие предупреждения не критичны, но тем не менее, + с неудачной синхронизацией (timing) они могут вызвать нежелательные + эффекты, начиная от незначительной задержки в ответной реакции системы + до полной блокировки системы.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="touch-not-found"> + <para>Почему процесс + <maketarget>buildworld</maketarget>/<maketarget>installworld</maketarget> + завершается с сообщением + <errorname>touch: not found</errorname>?</para> + </question> + + <answer> + <para>Эта ошибка не означает, что не найдена утилита &man.touch.1;. + Ошибка наверняка появляется из-за того, что даты модификации файлов + установлены в будущем. Если ваши CMOS часы установлены на локальное + время, то вам надо отрегулировать часовой механизм ядра, запустив + команду <command>adjkerntz -i</command>, при загрузке в + однопользовательском режиме.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="commercial"> + <title>Коммерческие приложения</title> + + <note> + <para>Этот раздел выглядит довольно заброшенным, однако мы, + конечно же, надеемся, что производители сделают добавления! :) Проект + &os; финансово не заинтересован в успехах ни одной из компаний, + которые здесь упоминаются, хотя приводит их список в интересах + общества (в предположении, что коммерческий интерес к &os; может + положительно повлиять на дальнейшее развитие &os;). Мы просим + поставщиков коммерческого программного обеспечения присылать нам + информацию о ваших продуктах для включения в этот список. Более + полный список производителей находится на <ulink + url="&url.base;/commercial/commercial.html">странице + производителей</ulink>.</para> + </note> + + <qandaset> + <qandaentry> + <question id="officesuite"> + <para>Где можно найти набор офисных программ для &os;?</para> + </question> + + <answer> + <para>Офисные пакеты с открытым кодом <application><ulink + url="http://www.openoffice.org">OpenOffice.org</ulink></application> + и <application><ulink + url="http://www.libreoffice.org">LibreOffice</ulink></application> + имеют версии, предназначенные для работы во &os;. + &linux;-версия <application><ulink + url="http://www.oracle.com/us/products/applications/open-office/index.html"> + Oracle Open Office</ulink></application>, + расширенной закрытой версии OpenOffice.org, также работает во + &os;.</para> + + <para>В Коллекции Портов &os; имеется также множество текстовых + редакторов, электронных таблиц и программ для работы с + изображениями.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="motif"> + <para>Где можно купить <application>&motif;</application> для + &os;?</para> + </question> + + <answer> + <para>Open Group опубликовала исходные тексты + <application>&motif; 2.2.2</application>. Вы можете + установить пакет + <filename role="package">x11-toolkits/open-motif</filename> + или скомпилировать его из портов. Воспользуйтесь <ulink + url="&url.books.handbook;/ports.html">секцией Порты Руководства</ulink> для + получения детальной информации о том, как это сделать.</para> + + <note> + <para>Лицензия <application>Open &motif;</application> + позволяет распространение, только если + библиотека используется на операционной системе + <ulink url="http://www.opensource.org/"> + с открытыми исходными текстами</ulink>.</para> + </note> + + <para>В дополнение нужно сказать, что существуют также, + дистрибьюторы предлагающие коммерческий вариант + <application>&motif;</application>. Эта библиотека не + бесплатна, но ее лицензия позволяет вести разработку приложений с + закрытыми исходными текстами. Обратитесь в фирму + <link linkend="apps2go">Apps2go</link>, предлагающую + самый дешёвый дистрибутив + <application>&motif; 2.1.20</application> для &os; + (&i386;) в формате ELF.<anchor id="apps2go"/></para> + + <para>Существуют два дистрибутива, <quote>для разработчиков</quote> + (<quote>development edition</quote>) и ещё более дешёвая + <quote>времени выполнения</quote> (<quote>runtime edition</quote>). + В эти дистрибутивы включены:</para> + + <itemizedlist> + <listitem> + <para><application>OSF/&motif; manager</application>, + <application>xmbind</application>, + <application>panner</application>, + <application>wsm</application>.</para> + </listitem> + + <listitem> + <para>Пакет разработчика с uil, mrm, xm, xmcxx, заголовочными + файлами и файлами <application>Imake</application>.</para> + </listitem> + + <listitem> + <para>Статические и динамические ELF-библиотеки.</para> + </listitem> + + <listitem> + <para>Демонстрационные приложения.</para> + </listitem> + </itemizedlist> + + <para>При оформлении заказа не забудьте указать, что вам нужна + версия <application>&motif;</application> именно для &os; + (не забудьте также указать архитектуру процессора)! + <emphasis>Apps2go</emphasis> также продаёт версии для NetBSD + и OpenBSD. В настоящий момент их можно получить только по + FTP.</para> + + <variablelist> + <varlistentry><term>Дополнительная информация</term> + <listitem> + <para><ulink + url="http://www.apps2go.com/">WWW-сервер Apps2go</ulink></para> + </listitem> + </varlistentry> + + <varlistentry><term>или</term> + <listitem> + <para>электронные адреса отделов <ulink + url="mailto:sales@apps2go.com">продаж</ulink> и <ulink + url="mailto:support@apps2go.com">поддержки</ulink>.</para> + </listitem> + </varlistentry> + + <varlistentry><term>или</term> + <listitem> + <para>телефоны (817) 431 8775 или + +1 817 431-8775</para> + </listitem> + </varlistentry> + </variablelist> + + </answer> + </qandaentry> + + <qandaentry> + <question id="cde"> + <para>Где можно купить <application>CDE</application> для + &os;?</para> + </question> + + <answer> + <para>Фирма <emphasis>Xi Graphics</emphasis> предлагала + <application>CDE</application> для + &os;, но сейчас этот продукт в продаже отсутствует.</para> + + <para><ulink + url="http://www.kde.org/"><application>KDE</application></ulink> + - это свободно + распространяемый вариант графической среды для X11, которая во + многом похожа на <application>CDE</application>. Вам может + также приглянуться <ulink + url="http://www.xfce.org/"><application>xfce</application></ulink>. + <application>KDE</application> и <application>xfce</application> + можно получить из + <ulink url="&url.base;/ports/">Коллекции Портов</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="database-systems"> + <para>Существуют ли СУБД для &os;?</para> + </question> + + <answer> + <para>Да! Обратитесь к разделу <ulink + url="&url.base;/commercial/software_bycat.html#CATEGORY_DATABASE"> + Поставщики программного обеспечения</ulink> на Web-сервере &os;.</para> + + <para>Также посмотрите раздел <ulink + url="&url.base;/ports/databases.html">Базы данных</ulink> + Коллекции Портов.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="oracle-support"> + <para>Можно ли запустить <application>&oracle;</application> + на &os;?</para> + </question> + + <answer> + <para>Да. Указания по настройке &linux; + <application>&oracle;</application> на &os; + находятся по адресу <ulink + url="http://www.shadowcom.net/freebsd-oracle9i/"> + http://www.shadowcom.net/freebsd-oracle9i/</ulink></para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="applications"> + <title>Прикладные программы</title> + + <qandaset> + <qandaentry> + <question id="user-apps"> + <para>Итак, где находятся все прикладные программы?</para> + </question> + + <answer> + <para>Пожалуйста, загляните на <ulink + url="&url.base;/ports/index.html">страницу портов</ulink>, + содержащую информацию о программных продуктах, перенесённых + во &os;. На данный момент в этом списке находится более + &os.numports; приложений и он ежедневно увеличивается, так + что почаще туда заглядывайте или подпишитесь на &a.announce;, + в котором публикуется информация о появлении новых + приложений.</para> + + <para>Большинство портов должно нормально работать на системах + веток &rel3.relx;, &rel2.relx; и &rel.relx;. + При выходе нового релиза &os; в него в каталог <filename + class="directory">ports/</filename> включается актуальная на + момент выхода Коллекция Портов.</para> + + <para>Мы также поддерживаем концепцию <quote>пакаджа</quote>, + являющегося не более чем упакованным дистрибутивом в бинарной + форме с некоторыми встроенными возможностями по его настройке + во время установки. Пакадж может быть легко установлен и + деинсталлирован снова без углубления в детали того, какие файлы + должны быть установлены.</para> + + <para>Используйте меню установки пакаджей + <guimenuitem>Packages</guimenuitem> в &man.sysinstall.8; (в + пункте меню <guimenuitem>Configure</guimenuitem>) или + запускайте &man.pkg.add.1; с указанием конкретных файлов с + пакаджами, которые вы хотите установить. Файл с пакаджем, как + правило, идентифицируется по его суффиксу + <filename>.tbz</filename>. Для обладателей дистрибутива + системы на компакт-диске предназначен каталог <filename + class="directory">packages/All</filename>, содержащий все эти + файлы. Также разные версии &os; можно получить по сети со + следующих серверов:</para> + + <variablelist> + <varlistentry> + <term>для &rel3.relx; -RELEASE/&rel3.stable;</term> + + <listitem> + <para><ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel3.packages;/"> + ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel3.packages;</ulink></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>для &rel2.relx; -RELEASE/&rel2.stable;</term> + + <listitem> + <para><ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel2.packages;/"> + ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel2.packages;</ulink></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>для &rel.relx; -RELEASE/&rel.stable;</term> + + <listitem> + <para><ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel.packages;/"> + ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel.packages;</ulink></para> + </listitem> + </varlistentry> + </variablelist> + + <para>или с ближайшего к вам зеркального сервера.</para> + + <para>Имейте в виду, что не все порты могут быть доступны в виде + пакаджей, так как постоянно идёт добавление новых. Неплохо + время от времени проверять, какие пакаджи доступны на основном + сервере <ulink + url="ftp://ftp.FreeBSD.org/pub/FreeBSD/">ftp.FreeBSD.org</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="configure-inn"> + <para>Как настроить INN (Internet News) на моей машине?</para> + </question> + + <answer> + <para>После установки пакаджа или порта <filename + role="package">news/inn</filename> для начала загляните в + <ulink url="http://www.eyrie.org/~eagle/faqs/inn.html">INN + FAQ</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="java"> + <para>Поддерживает ли &os; среду &java;?</para> + </question> + + <answer> + <para>Да. Посетите страницу <ulink + url="&url.base;/java/index.html"> + http://www.FreeBSD.org/java/</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ports-4x"> + <para>Почему этот порт не компилируется на моей машине с + &rel3.relx; -, &rel2.relx; - + или &rel.relx; -STABLE?</para> + </question> + + <answer> + <para>Если вы пользуетесь версией &os;, значительно отстающей от + <emphasis>-CURRENT</emphasis> или <emphasis>-STABLE</emphasis>, + вам может потребоваться обновить Коллекцию + Портов. Дополнительную информацию о том, как это сделать, можно + найти в <ulink url="&url.books.porters-handbook;/keeping-up.html"> + соответствующем разделе</ulink> Руководства по созданию портов. + Если ваша Коллекция Портов находится в актуальном состоянии, + то, скорее всего, кто-то внёс изменения в порт, так что + он работает в <emphasis>-CURRENT</emphasis>, но не работает в + <emphasis>-STABLE</emphasis>. Так как + предполагается, что Коллекция Портов должна работать как в ветке + <emphasis>-CURRENT</emphasis>, так и в ветви + <emphasis>-STABLE</emphasis>, то, пожалуйста, пошлите сообщение + об этой ошибке с помощью команды &man.send-pr.1;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="make-index"> + <para>Я попытался сформировать файл <filename>INDEX</filename> + командой <command>make <maketarget>index</maketarget></command>, + однако попытка окончилась неудачей. Почему?</para> + </question> + + <answer> + <para>Первым делом всегда проверяйте, что ваша Коллекция Портов + находится в актуальном состоянии. Ошибки, которые отражаются на + построении файла <filename>INDEX</filename> из актуальной копии + Коллекции Портов, бросаются в глаза и поэтому практически всегда + исправляются немедленно.</para> + + <para>Если ваши данные обновлены, возможно, вы столкнулись с другой + проблемой. У команды <command>make + <maketarget>index</maketarget></command> имеется + известная ошибка, касающаяся работы с неполными копиями + Коллекции Портов. При выполнении команды предполагается, что у вас + имеется локальная копия каждого порта, от которого зависит любой + другой порт, локальная копия которого у вас имеется. Предположив, + что у вас на диске есть копия <filename>foo/bar</filename>, и + <filename>foo/bar</filename> зависит от + <filename>baz/quux</filename>, то у вас также должна быть копия + <filename>baz/quux</filename>, а также всех портов, от которых + зависит <filename>baz/quux</filename>, и так далее. В противном + случае у <command>make <maketarget>index</maketarget></command> + будет недостаточно + информации для создания дерева зависимостей.</para> + + <para>В частности, эта проблема отражается на пользователях &os;, + использующих &man.cvsup.1; (или &man.csup.1;) для отслеживания + Коллекции Портов, но + отказывающихся от установки определенных категорий приложений их + перечислением в файле <filename>refuse</filename>. Теоретически + любой пользователь может отказаться от некоторых категорий, однако + на практике имеется слишком много портов, которые зависят от + портов, относящихся к другим категориям. Пока кто-нибудь не + предложит решения этой проблемы, общая рекомендация заключается в + том, что если вы хотите сформировать <filename>INDEX</filename>, то + должны иметь полную копию Коллекции Портов.</para> + + <para>В редких случаях <filename>INDEX</filename> не перестраивается + из-за странных комбинаций значений переменных + <makevar>WITH_<replaceable>*</replaceable></makevar> или + <makevar>WITHOUT_<replaceable>*</replaceable></makevar>, заданных в + файле <filename>make.conf</filename>. Если вы думаете, что это ваш + случай, прежде чем сообщать об этом в &a.ports;, попытайтесь + сформировать <filename>INDEX</filename> с + отключенными значениями этих переменных.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cvsup-in-base"> + <para>Почему <application>CVSup</application> не интегрирована + в основное дерево &os;?</para> + </question> + + <answer> + <para>Базовый комплект установки &os; спроектирован + самодостаточным — то есть операционную систему возможно полностью + построить, имея весьма ограниченный набор инструментов. Так, все + инструменты, действительно необходимые для компиляции исходных + текстов &os;, сами поставляются с исходными текстами. Речь идёт + о компиляторе C (&man.gcc.1;), &man.make.1;, &man.awk.1; и подобных + средствах.</para> + + <para>Так как <application>CVSup</application> написан на языке + Modula-3, его включение в + базовый комплект &os; также потребует добавление и поддержку + компилятора Modula-3. Это приведёт как к увеличению как дискового + пространства, требуемого исходным текстам &os;, так и усилий + по их поддержке. Таким образом, как + разработчикам, так и пользователям гораздо проще держать + <application>CVSup</application> в + виде отдельного порта, который легко устанавливается как пакадж, + размещаемый на установочных CD с &os;.</para> + + <para>Тем не менее, начиная с версии &os; 6.2-RELEASE, + пользователи &os; больше не страдают от отсутствия встроенного + клиента, совместимого с <application>CVSup</application>. + Благодаря &a.mux;, <application>CVSup</application> был + переписан на языке Си и получил название &man.csup.1;, и теперь + является частью базового комплекта. И хотя в настоящее время + в клиенте не реализованы все функциональные возможности + <application>CVSup</application>, он является хорошим (и + весьма быстрым!) вариантом для синхронизации ваших исходных + текстов. Для систем, выпущенных до 6.2, клиент можно установить + из порта или пакета (смотрите <filename + role="package">net/csup</filename>).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ports-update"> + <para>Я обновил исходные тексты. Как теперь обновить + установленные порты?</para> + </question> + + <answer> + <para>С &os; не поставляется инструмент обновления портов, но + есть несколько программ, немного облегчающих этот процесс. Вы + можете также установить дополнительные инструменты для упрощения + работы с портами, смотрите раздел Руководства &os; <ulink + url="&url.books.handbook;/ports-using.html">Использование + Коллекции Портов</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ports-major-upgrade"> + <para>Нужно ли мне перекомпилировать все порты каждый раз, + когда я выполняю мажорное обновление (со сменой старшей + версии &os;)?</para> + </question> + + <answer> + <para>Разумеется! На свежеобновленной системе программное + обеспечение, скомпилированное под более старый релиз, будет + по прежнему работать, но в конечном счете вы придёте к тому, + что некоторые приложения перестанут правильно работать и + будут падать в произвольном месте, как только вы начнете + устанавливать другие порты или обновлять существующие.</para> + + <para>Когда система обновлена, различные совместно используемые + библиотеки, загружаемые модули и другие части системы замещаются + более новыми версиями. Приложения, скомпонованные с более + старыми версиями, могут перестать запускаться либо начнут + функционировать неправильно.</para> + + <para>Для получения дополнительной информации обращайтесь к <ulink + url="&url.books.handbook.en;/updating-upgrading-freebsdupdate.html#FREEBSDUPDATE-UPGRADE">разделу, + посвящённому обновлениям,</ulink> руководства &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ports-minor-upgrade"> + <para>Нужно ли мне перекомпилировать все порты каждый раз, + когда я выполняю минорное обновление (без изменения старшей + версии &os;)?</para> + </question> + + <answer> + <para>В общем случае, нет. Разработчики &os; делают всё + возможное для сохранения двоичной совместимости между всеми + релизами в пределах одной старшей версии. Любые исключения + из этого правила документируются в "Примечаниях к релизу", и + там же даются советы, которых следует придерживаться.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="minimal-sh"> + <para>Почему возможности <command>/bin/sh</command> так малы? + Почему бы во &os; не использовать <command>bash</command> или + какой-либо другой командный процессор?</para> + </question> + + <answer> + <para>Потому что в стандарте &posix; сказано, что все командные + процессоры должны вести себя так же, как shell.</para> + + <para>Более подробный ответ заключается в следующем: многим + требуется, чтобы разрабатываемые скрипты для командного процессора + были переносимы между многими системами. Именно поэтому в &posix; + очень подробно описан командный процессор и набор утилит. + Большинство скриптов пишутся на языке процессора Bourne shell, к + тому же некоторые важные программные вызовы (&man.make.1;, + &man.system.3;, &man.popen.3; и их аналоги на языках скриптов + высокого уровня, таких как Perl или Tcl) предполагают для + интерпретации команд использование именно Bourne shell. Так как + Bourne shell используется столь широко и часто, то очень важно, + чтобы он стартовал очень быстро, его поведение было строго + регламентировано и при этом потребности в оперативной памяти были + малы.</para> + + <para>В имеющейся реализации мы приложили максимум усилий для + воплощения в жизнь всех этих требований одновременно. Для того, + чтобы сохранить <command>/bin/sh</command> небольшим по размеру, + мы не включили многие из обычных возможностей, которые имеются в + других командных процессорах. Однако в Коллекцию Портов включены + командные процессоры, обладающие гораздо большими возможностями, + такие, как <command>bash</command>, <command>scsh</command>, + <command>tcsh</command> и <command>zsh</command>. (Вы можете + сами сравнить + использование памяти всеми этими оболочками, посмотрев в колонки + <quote>VSZ</quote> и <quote>RSS</quote> вывода команды + <command>ps <option>-u</option></command>.)</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="netscape-slow-startup"> + <para>Почему <application>&netscape;</application> и + <application>Opera</application> запускаются так долго?</para> + </question> + + <answer> + <para>Обычно проблема заключается в том, что на вашей машине + неправильно настроен DNS. И <application>&netscape;</application>, + и <application>Opera</application> при запуске + обращаются к DNS. Браузер не появится на вашем рабочем столе, пока + программа либо не получит ответ на свой запрос, либо не определит, + что система к сети не подключена.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ports-base-update"> + <para>Я обновил некоторые разделы Коллекции Портов при помощи + <application>CVSup</application>, + и теперь многие порты перестали строиться со странными + диагностическими сообщениями! Что случилось? Коллекция Портов + каким-то образом оказалась неработоспособной?</para> + </question> + + <answer> + <para>Если вы обновляете Коллекцию Портов только частично, используя + один из более мелких наборов <application>CVSup</application>, + обходясь без <application>CVSup</application>-набора + <literal>ports-all</literal>, то вы должны + <emphasis>всегда</emphasis> обновлять также и набор + <literal>ports-base</literal>! Причины описаны в <ulink + url="&url.books.handbook;/cvsup.html#CVSUP-COLLEC-PBASE-WARN"> + Руководстве</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="midi-sound-files"> + <para>Как создать аудио-CD из файлов MIDI?</para> + </question> + + <answer> + <para>Для создания аудио-CD из MIDI-файлов сначала установите из + портов программу <filename + role="package">audio/timidity++</filename>, затем установите набор + патчей GUS от Эрика Уэлша (Eric A. Welsh), доступный по адресу + <ulink url="http://alleg.sourceforge.net/digmid.html"> + </ulink>. После корректной установки + <application>TiMidity++</application> MIDI-файлы могут + быть преобразованы в WAV-файлы следующей командой:</para> + + <screen>&prompt.user; <userinput>timidity -Ow -s 44100 -o <replaceable>/tmp/juke/01.wav</replaceable> <replaceable>01.mid</replaceable></userinput></screen> + + <para>WAV-файлы затем могут быть преобразованы в другие форматы или + записаны как аудио-CD, что описано в <ulink + url="&url.books.handbook;/creating-cds.html">Руководстве + &os;</ulink>.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="kernelconfig"> + <title>Конфигурирование ядра</title> + + <qandaset> + <qandaentry> + <question id="make-kernel"> + <para>Я хочу изменить настройки ядра. Это сложно?</para> + </question> + + <answer> + <para>Вовсе нет! Обратитесь к <ulink + url="&url.books.handbook;/kernelconfig.html">соответствующему + разделу</ulink> Руководства, который посвящён этому вопросу.</para> + + <note> + <para>Новый файл <filename>kernel</filename> будет установлен + в каталог <filename class="directory">/boot/kernel</filename> + вместе со своими + модулями, а старое ядро и его модули будут сдвинуты в каталог + <filename class="directory">/boot/kernel.old</filename>, так + что если вы + допустите ошибку в следующей конфигурации, то сможете + загрузить предыдущую версию вашего ядра.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="missing-hw-float"> + <para>Я не могу скомпилировать ядро. Отсутствует + <literal>_hw_float</literal>.Почему?</para> + </question> + + <answer> + <para>Наверное, вы удалили <devicename>npx0</devicename> (посмотрите + справку по &man.npx.4;) из вашего файла конфигурации ядра, потому + что у вас нет математического сопроцессора. Устройство + <devicename>npx0</devicename> является + <emphasis>ОБЯЗАТЕЛЬНЫМ</emphasis>. Где-то в вашем оборудовании всё + же присутствует устройство, обеспечивающее поддержку вычислений с + плавающей точкой, которое уже не является отдельной микросхемой, + как это было в старые добрые времена 386 процессоров. Вы + <emphasis>должны</emphasis> включить поддержку устройства + <devicename>npx0</devicename>. Даже если вам удастся построить + ядро без поддержки <devicename>npx0</devicename>, оно всё равно не + загрузится.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="why-kernel-big"> + <para>Почему моё ядро такое большое (больше 10 Мбайт)?</para> + </question> + + <answer> + <para>Скорее всего, вы компилировали ядро в <emphasis>отладочном + режиме</emphasis>. Ядра, построенные в этом режиме, содержат + много символьной информации, которая используется для отладки + и сильно увеличивает размер ядра. Заметьте, что уменьшения + производительности при использовании отладочного ядра нет или + оно незначительно, однако отладочное ядро полезно иметь под + рукой на случай аварийного завершения работы системы.</para> + + <para>Однако, если вы испытываете нехватку дискового пространства + или просто не хотите использовать отладочное ядро, проверьте, + что имеют место следующие две вещи:</para> + + <itemizedlist> + <listitem> + <para>В конфигурационном файле вашего ядра нет строчки, + имеющей такой вид:</para> + + <programlisting>makeoptions DEBUG=-g</programlisting> + </listitem> + + <listitem> + <para>Вы не запускали утилиту &man.config.8; с опцией + <option>-g</option>.</para> + </listitem> + </itemizedlist> + + <para>В любой из вышеописанных ситуаций ядро будет построено с + отладочным режимом. Если же вы точно следуете указанным шагам, + то сможете построить обычное ядро и заметите значительное + уменьшение его размера; большинство ядер имеют размер от + 1.5 Мбайт до 2 Мбайт.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="multiport-serial-interrupts"> + <para>Почему появляются конфликты прерываний при включении поддержки + многопортовых коммуникационных адаптеров.</para> + </question> + + <answer> + <para>Когда я компилирую ядро с поддержкой многопортовых + коммуникационных адаптеров, сообщается, что только первый порт + будет тестироваться, а все остальные пропускаются из-за конфликтов + прерываний. Как это исправить?</para> + + <para>Проблема состоит в том, что во &os; встроен код, + предохраняющий ядро от аппаратных и программных конфликтов. + Вам нужно убрать указания IRQ на всех портах, кроме одного. + Например:</para> + + <programlisting># +# Высокоскоростной многопортовый коммуникационный адаптер - 16550 UARTS +# +device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr +device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr +device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr +device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="generic-kernel-build-failure"> + <para>Почему мне не удаётся откомпилировать ни один вариант ядра, + даже <filename>GENERIC</filename>?</para> + </question> + + <answer> + <para>Есть несколько причин, приводящих к возникновению этой + проблемы. Вот они, в случайном порядке:</para> + + <itemizedlist> + <listitem> + <para>Вы не используете цели + <command>make <maketarget>buildkernel</maketarget></command> и + <command>make <maketarget>installkernel</maketarget></command>, + и ваше дерево исходных текстов отличается от того, которое + использовалось для построения работающей в данный момент + системы (например, вы выполняете построение + &rel.current;-RELEASE на системе &rel2.current;-RELEASE). + Если вы пытаетесь выполнить обновление, + то, пожалуйста, прочитайте файл + <filename>/usr/src/UPDATING</filename>, обратив особое внимание + на раздел <quote>COMMON ITEMS</quote> в его конце.</para> + </listitem> + + <listitem> + <para>Вы используете цели + <command>make <maketarget>buildkernel</maketarget></command> и + <command>make <maketarget>installkernel</maketarget></command>, + но выполнение цели + <command>make <maketarget>buildworld</maketarget></command> + не было завершено. Полное и корректное выполнение цели + <command>make <maketarget>buildkernel</maketarget></command> + зависит от файлов, генерирующихся при выполнении цели + <command>make <maketarget>buildworld</maketarget></command>.</para> + </listitem> + + <listitem> + <para>Даже если вы пытаетесь построить <link + linkend="stable">&os;-STABLE</link>, возможно, что вы + скачали дерево исходных текстов в момент, когда оно + модифицировалось или было неработоспособно по другим причинам; + абсолютно гарантируется построение только релизов, хотя в + большинстве случаев <link linkend="stable"> + &os;-STABLE</link> строится без проблем. Если вы ещё этого + не сделали, попробуйте сгрузить дерево исходных текстов + повторно и посмотреть, разрешилась ли проблема. Попробуйте + использовать другой сервер в случае, если есть проблемы с тем, + который вы используете сейчас.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="scheduler-in-use"> + <para>Каким образом можно определить, какой планировщик используется + в работающей системе?</para> + </question> + + <answer> + <para>Проверьте существование sysctl-переменной + <varname>kern.sched.quantum</varname>. Если она у вас есть, + то вы должны увидеть примерно такое сообщение:</para> + + <screen>&prompt.user; sysctl <replaceable>kern.sched.quantum</replaceable> +kern.sched.quantum: 99960</screen> + + <para>Если sysctl-переменная <varname>kern.sched.quantum</varname> + существует, то у вас используется планировщик 4BSD + (&man.sched.4bsd.4;). Если это не так, то вы получите сообщение + об ошибке, которое выдаст &man.sysctl.8;, (и которое вы можете + проигнорировать):</para> + + <screen>&prompt.user; sysctl <replaceable>kern.sched.quantum</replaceable> +sysctl: unknown oid 'kern.sched.quantum'</screen> + + <para>Название используемого + планировщика доступно напрямую в виде значения sysctl-параметра + <varname>kern.sched.name</varname>:</para> + + <screen>&prompt.user; sysctl <replaceable>kern.sched.name</replaceable> +kern.sched.name: 4BSD</screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="scheduler-kern-quantum"> + <para>Что такое <varname>kern.sched.quantum</varname>?</para> + </question> + + <answer> + <para><varname>kern.sched.quantum</varname> определяет максимальное + количество тактов, которое процесс может выполняться, не будучи + прерванным. Этот параметр специфичен для планировщика 4BSD, так + что вы можете использовать его наличие для определения типа + используемого планировщика.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="disks"> + <title>Диски, файловые системы и начальные загрузчики</title> + + <qandaset> + <qandaentry> + <question id="adding-disks"> + <para>Как добавить в систему новый диск?</para> + </question> + + <answer> + <para>Обратитесь к разделу <ulink + url="&url.books.handbook;/disks-adding.html">Добавление + дисков</ulink> Руководства &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="new-huge-disk"> + <para>Как перенести систему на большой новый диск?</para> + </question> + + <answer> + <para>Самый лучший способ заключается в переустановке ОС на новый + диск и последующем переносе данных пользователей. Это очень + рекомендуется делать, если вы следовали ветке + <emphasis>-STABLE</emphasis> в течение + более одного релиза или обновляли релиз, а не устанавливали + новый. Вы можете установить программу booteasy на оба диска с + помощью команды &man.boot0cfg.8; и выполнять загрузку с любого из + них до тех пор, пока не будете удовлетворены новой конфигурацией + системы. Пропустите следующий абзац, чтобы перейти к вопросу + переноса данных после этой операции.</para> + + <para>Если вы решили не делать новой установки, то вам нужно разбить + на разделы и разметить новый диск с помощью + &man.sysinstall.8; или &man.fdisk.8; и + &man.disklabel.8;. Вы также должны установить на оба диска + программу booteasy с помощью &man.boot0cfg.8;, чтобы иметь + возможность выполнять загрузку как старой, так и новой системы + после выполнения копирования.</para> + + <para>Итак, после подготовки диска вы можете переносить данные. К + сожалению, вы не можете просто скопировать данные. Такие вещи, как + файлы устройств (в каталоге <filename + class="directory">/dev</filename>), флаги и + ссылки будут этому мешать. Вам нужно использовать инструменты, + которые работают с такими случаями, а именно &man.dump.8;. Хотя + рекомендуется выполнять перенос данных в однопользовательском + режиме, это не обязательное условие.</para> + + <para>Вы не должны использовать ничего, кроме &man.dump.8; и + &man.restore.8; для переноса корневой файловой системы. Команда + &man.tar.1; может сработать, а может и не сработать. Также вы + должны использовать &man.dump.8; и &man.restore.8; при переносе + одного раздела в другой пустой раздел. Последовательность шагов + при использовании программы <command>dump</command> для переноса + данных раздела в новый раздел такова:</para> + + <procedure> + <step> + <para>выполните команду <command>newfs</command> над новым + разделом.</para> + </step> + + <step> + <para>командой <command>mount</command> смонтируйте его во + временный каталог.</para> + </step> + + <step> + <para>командой <command>cd</command> перейдите в этот + каталог.</para> + </step> + + <step> + <para>выполните команду <command>dump</command> над старым + разделом, направив вывод в новый раздел.</para> + </step> + </procedure> + + <para>Например, если вы собираетесь перенести корневую файловую + систему на устройство + <devicename>/dev/<replaceable>ad1s1a</replaceable></devicename> + с использованием каталога <filename + class="directory"><replaceable>/mnt</replaceable></filename> + в качестве + временной точки монтирования, то это делается так:</para> + + <screen>&prompt.root; <userinput>newfs /dev/<replaceable>ad1s1a</replaceable></userinput> +&prompt.root; <userinput>mount /dev/<replaceable>ad1s1a</replaceable> <replaceable>/mnt</replaceable></userinput> +&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput> +&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen> + + <para>Переразбиение разделов с использованием + <command>dump</command> требует несколько + больше усилий. Для объединения раздела типа + <filename class="directory">/var</filename> с его вышестоящим + разделом, создайте новый + раздел, достаточно большой для размещения их обоих, переместите + вышестоящий раздел так, как это описано выше, а затем переместите + нижестоящий раздел в пустой каталог, созданный при первом + перемещении:</para> + + <screen>&prompt.root; <userinput>newfs /dev/<replaceable>ad1s1a</replaceable></userinput> +&prompt.root; <userinput>mount /dev/<replaceable>ad1s1a</replaceable> <replaceable>/mnt</replaceable></userinput> +&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput> +&prompt.root; <userinput>dump 0af - / | restore rf -</userinput> +&prompt.root; <userinput>cd var</userinput> +&prompt.root; <userinput>dump 0af - /var | restore rf -</userinput></screen> + + <para>Для отделения каталога от вышестоящего, скажем, для + размещения <filename class="directory">/var</filename> в + собственном разделе, которого не было, + создайте оба раздела, затем смонтируйте нижестоящий раздел в + подходящий каталог во временную точку монтирования, а затем + переместите старый единый раздел:</para> + + <screen>&prompt.root; <userinput>newfs /dev/<replaceable>ad1s1a</replaceable></userinput> +&prompt.root; <userinput>newfs /dev/<replaceable>ad1s1d</replaceable></userinput> +&prompt.root; <userinput>mount /dev/<replaceable>ad1s1a</replaceable> <replaceable>/mnt</replaceable></userinput> +&prompt.root; <userinput>mkdir <replaceable>/mnt</replaceable>/var</userinput> +&prompt.root; <userinput>mount /dev/<replaceable>ad1s1d</replaceable> <replaceable>/mnt</replaceable>/var</userinput> +&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput> +&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen> + + <para>Вы можете использовать &man.cpio.1;, &man.pax.1;, &man.tar.1; + вместо &man.dump.8; для данных пользователей. На момент написания + этого документа было известно, что они теряют информацию о флагах + файлов, так что используйте их с осторожностью.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="dangerously-dedicated"> + <para>Не угрожает ли режим <quote>dangerously dedicated</quote> моему + здоровью?</para> + </question> + + <answer> + <para><anchor id="dedicate"/>В процессе установки вы можете выбрать + два различных метода разбиения вашего диска (дисков). По умолчанию + это делается + в режиме совместимости с другими операционными системами на этой же + машине с использованием записей в таблице разделов &man.fdisk.8; + (то, что называется <quote>слайсом</quote> во &os;), со слайсом + (разделом), выделенным &os;. Опционально, вы можете выбрать + установку менеджера загрузки для переключения между операционными + системами. Либо вы можете выделить диск полностью под &os;, не + заботясь о совместимости с другими операционными системами.</para> + + <para>Почему же этот режим называется <quote>dangerous</quote>? Дело + в том, что диск в этом режиме не будет содержать того, что обычные + утилиты для ПК распознают как таблицу разделов &man.fdisk.8;. + В зависимости от + того, насколько хорошо они написаны, они могут сообщить вам об + этом, как только обнаружат такой диск, или, что гораздо хуже, + могут запортить загрузчик BSD, даже не спрашивая и не сообщая об + этом. К тому же известно, что разметка диска в режиме + <quote>dangerously dedicated</quote> вводит в заблуждение BIOS + многих производителей, включая AWARD (которые используются в + компьютерах HP Netserver, Micronics и многих других) и Symbios/NCR + (производителя популярных SCSI-контроллеров серии 53C8xx). И это не + полный список, есть ещё другие производители. Симптомами подобных + проблем является сообщение <errorname>read error</errorname>, + выводимое загрузчиком &os;, когда он не может найти сам себя, а + также зависания системы при загрузке.</para> + + <para>Тогда зачем вообще нужен этот режим? Он экономит всего лишь + несколько килобайт дискового пространства и может вызвать + серьёзные проблемы при новой установке. Причиной появления + этого режима является желание избежать появления одной из самых + распространённых проблем, с которой сталкиваются новички — + соответствие параметров BIOS и реальных параметров диска.</para> + + <para><quote>Параметры</quote> диска являются устаревшей концепцией, + но она лежит в основе работы BIOS с диском. Когда программа + установки &os; создаёт слайсы, она записывает их расположение в + соответствии с тем, как с ними будет работать BIOS. Если это + делается неправильно, вы не сможете выполнить загрузку + системы.</para> + + <para>Режим <quote>dangerously dedicated</quote> пытается обойти + это, упрощая решение данной проблемы. Иногда он делает это + правильно. Однако это значит, что его нужно использовать только + как последнюю альтернативу — есть способы получше, решающие + проблему в 99 случаях из 100.</para> + + <para>Итак, как избежать использования режима <quote>DD</quote> во + время установки? Сначала запишите параметры диска, которые + сообщает BIOS. Вы можете выяснить это, заставив ядро вывести эти + параметры при загрузке, указав <option>-v</option> в приглашении + <literal>boot:</literal>, или используя <command>boot -v</command> + в загрузчике. Перед тем, как запустится программа установки, ядро + выведет параметры, используемые BIOS. Не волнуйтесь — подождите + запуска программы установки, а затем воспользуйтесь прокруткой, + чтобы посмотреть значения этих параметров. Как правило, BIOS + нумерует диски в том же порядке, что и &os;, сначала IDE, затем + SCSI.</para> + + <para>Когда вы разбиваете диск на слайсы, проверьте, что параметры + диска, выводимые в окне программы FDISK, корректны (то есть они + соответствуют параметрам BIOS); если это не так, нажмите + <keycap>G</keycap>, чтобы их исправить. Вы можете это + сделать, если на диске нет абсолютно ничего или если этот диск был + перенесён с другой системы. Заметьте, что это касается только + загрузочного диска; &os; прекрасно разберётся с остальными + дисками, которые могут у вас быть.</para> + + <para>Как только вы добились соответствия параметров диска в BIOS и + &os;, скорее всего, проблем у вас больше не будет, и + использовать режим <quote>DD</quote> не потребуется. Если, + однако, страшное сообщение <errorname>read error</errorname> + продолжает появляться при загрузке, самое время перекреститься и + попробовать этот режим — терять вам больше нечего.</para> + + <para>Чтобы вернуть диск из режима <quote>dangerously + dedicated</quote> к нормальному режиму использования, есть два + способа. Первый заключается в том, что вы записываете достаточное + количество байтов NULL поверх MBR, чтобы любая программа установки + системы полагала, что это чистый диск. Например, это можно + сделать такой командой:</para> + + <screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/<replaceable>rda0</replaceable> count=15</userinput></screen> + + <para>Другой способ - недокументированной командой DOS</para> + + <screen><prompt>C:\></prompt> <userinput>fdisk /mbr</userinput></screen> + + <para>установить новую MBR, удалив загрузчик BSD.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="safe-softupdates"> + <para>На каких разделах можно без опаски использовать механизм + Soft Updates? Я слышал, что использование Soft Updates на + <filename class="directory">/</filename> могут приводить к + проблемам.</para> + </question> + + <answer> + <para>Краткий ответ: обычно вы можете использовать Soft Updates + без опаски на всех разделах.</para> + + <para>Подробный ответ: Было несколько возражений против использования + Soft Updates на корневом разделе. Soft Updates имеют две + характеристики, которые этому способствуют. Во-первых, раздел с + Soft Updates имеет мало шансов потери данных по время + аварийного останова системы. (Раздел не будет попорчен; просто + будут потеряны данные.) Кроме того, Soft Updates могут приводить к + временной нехватке дискового пространства.</para> + + <para>При использовании Soft Updates ядро может задерживать до + тридцати секунд реальную запись изменений на физический диск. Если + вы удаляете большой файл, он остается на диске, пока ядро не + выполнит удаления на самом деле. Это может привести к очень + простой проблеме. Предположим, что вы удалили один большой файл и + тут же создали другой большой файл. Первый большой файл еще не + удален реально с физического диска, так что на диске может не + оказаться достаточного пространства для второго большого файла. Вы + получите ошибку, говорящую о том, что на разделе нет достаточного + пространства, хотя вы точно знаете, что только что освободили + его большой объем! Если вы попробуете еще раз выполнить операцию + секундами позже, создание файла сработает так, как это и ожидалось. + Это не раз заставляло пользователей почесать голову и дважды + проверить свое психическое здоровье, файловую систему &os; или оба + этих объекта.</para> + + <para>Если система может аварийно остановиться после того, как ядро + примет набор данных для записи на диск, но перед тем, как данные + реально запишутся, то данные могут потеряться или оказаться + испорченными. Такой риск весьма мал, но в общем-то, управляем. + Использование кэширование записи на IDE очень сильно увеличивает + этот риск; настоятельно рекомендуется выключить кэширование записи + для IDE при использовании Soft Updates.</para> + + <para>Эти проблемы влияют на все разделы, использующие Soft Updates. + Итак, что это означает для корневого раздела?</para> + + <para>Жизненно важная информация на корневом разделе меняется очень + редко. Файлы, такие как <filename>/boot/kernel/kernel</filename> + и содержимое + <filename class="directory">/etc</filename>, меняются только + при обслуживании системы, + или когда пользователи меняют свои пароли. Если в системе + произойдет сбой в период тридцатисекундного окна после выполнения + такого изменения, возможно, что данные окажутся потерянными. Этот + риск незначителен для большинства применений, но вы должны иметь в + виду, что он есть. Если ваша система не может принять такой риск, + не используйте Soft Updates с корневой файловой системой!</para> + + <para><filename class="directory">/</filename> традиционно + является одним из самых маленьких разделов. Если вы размещаете + каталог <filename class="directory">/tmp</filename> в <filename + class="directory">/</filename> и у вас заполнен <filename + class="directory">/tmp</filename>, вы можете встретиться с + возникающими время от времени проблемами с дисковым пространством. + Создание символической ссылки <filename + class="directory">/tmp</filename>, указывающей на <filename + class="directory">/var/tmp</filename>, решит эту проблему.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="inappropriate-ccd"> + <para>Что не так с устройством &man.ccd.4;?</para> + </question> + + <answer> + <para>Симптом выглядит так:</para> + + <screen>&prompt.root; <userinput>ccdconfig -C</userinput> +ccdconfig: ioctl (CCDIOCSET): /dev/<replaceable>ccd0c</replaceable>: Inappropriate file type or format</screen> + + <para>Это сообщение обычно выдаётся, когда вы пытаетесь объединить + разделы <literal>c</literal>, по умолчанию имеющие тип + <literal>unused</literal>. Драйвер &man.ccd.4; требует, чтобы + используемые разделы имели тип <literal>FS_BSDFFS</literal>. + Отредактируйте метки + тех дисков, которые вы хотите использовать, сменив типы разделов + на <literal>4.2BSD</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ccd-disklabel"> + <para>Почему невозможно отредактировать метку диска &man.ccd.4;?</para> + </question> + + <answer> + <para>Симптом выглядит так:</para> + + <screen>&prompt.root; <userinput>disklabel <replaceable>ccd0</replaceable></userinput> +(здесь выводится информация о диске, пробуем отредактировать метку) +&prompt.root; <userinput>disklabel -e <replaceable>ccd0</replaceable></userinput> +(редактирование, сохранение, выход) +disklabel: ioctl DIOCWDINFO: No disk label on disk; +use "disklabel -r" to install initial label</screen> + + <para>Это происходит из-за того, что метка диска, возвращаемая &man.ccd.4;, + на самом деле <quote>ненастоящая</quote>, не соответствующая + реально располагающейся на диске. Вы можете решить эту проблему, + явно записав эту метку обратно следующим образом:</para> + + <screen>&prompt.root; <userinput>disklabel <replaceable>ccd0</replaceable> > <replaceable>/tmp/disklabel.tmp</replaceable></userinput> +&prompt.root; <userinput>disklabel -Rr <replaceable>ccd0</replaceable> <replaceable>/tmp/disklabel.tmp</replaceable></userinput> +&prompt.root; <userinput>disklabel -e <replaceable>ccd0</replaceable></userinput> +(теперь это будет работать)</screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="mount-foreign-fs"> + <para>Можно ли смонтировать другие файловые системы?</para> + </question> + + <answer> + <para>&os; поддерживает ряд других файловых систем.</para> + + <variablelist> + <varlistentry> + <term>UFS</term> + + <listitem> + <para>Компакт-диски с файловой системой UFS могут быть + смонтированы без всяких проблем. Монтирование файловых + систем Digital UNIX или других систем, поддерживающих UFS, + может быть более сложным, в зависимости от особенностей + разбиения диска конкретной операционной системой.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>ext2/ext3</term> + + <listitem> + <para>&os; поддерживает разделы <literal>ext2fs</literal> + и <literal>ext3fs</literal>. + За дополнительной информацией обратитесь к странице + справочника &man.mount.ext2fs.8;.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>NTFS</term> + + <listitem> + <para>Во &os; имеется драйвер доступа к NTFS в режиме + только для чтения. Для получения более полной + информации обратитесь к странице справочника + &man.mount.ntfs.8;. Порт <ulink + url="http://www.tuxera.com/community/"><application>ntfs-3g</application></ulink> + также поддерживает операции записи на NTFS (смотрите + <filename + role="package">sysutils/fusefs-ntfs</filename>).</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>FAT</term> + + <listitem> + <para>Во &os; имеется драйвер для работы с FAT в режиме + чтения-записи. Для получения дополнительной информации + обратитесь к странице справочника &man.mount.msdosfs.8;.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>ReiserFS</term> + + <listitem> + <para>Во &os; имеется драйвер для работы с ReiserFS в режиме + только для чтения. Для получения более полной + информации обратитесь к странице справочника &man.mount.reiserfs.8;.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>ZFS</term> + + <listitem> + <para>На момент написания &os; включает в себя порт + драйвера для работы с &sun; ZFS. В настоящее время + рекомендуется использовать его только на платформе + &arch.amd64; с достаточным объемом памяти. Для получения + более полной информации обратитесь к странице справочника + &man.zfs.8;.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>&os; также поддерживает такие сетевые файловые системы, как + NFS (смотрите &man.mount.nfs.8;), NetWare (смотрите + &man.mount.nwfs.8;) и файловые системы SMB в стиле Microsoft + (обратитесь к &man.mount.smbfs.8;). Вы также можете найти + полезными порты, основанные на FUSE (<filename + role="package">sysutils/fusefs-kmod</filename>), для множества + других файловых систем.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="mount-dos"> + <para>Как смонтировать вторичный раздел DOS?</para> + </question> + + <answer> + <para>Вторичные разделы DOS находятся после <emphasis>всех</emphasis> + первичных разделов. + Например, если раздел <quote>E</quote> является вторым разделом + DOS на втором диске SCSI, то здесь будет файл устройства для + пятого <quote>слайса</quote> в каталоге <filename + class="directory">/dev</filename>, + так что просто смонтируйте его:</para> + + <screen>&prompt.root; <userinput>mount -t msdosfs /dev/da1s5 /dos/e</userinput></screen> + + </answer> + </qandaentry> + + <qandaentry> + <question id="crypto-filesystem"> + <para>Существует ли криптографическая файловая система для + &os;?</para> + </question> + + <answer> + <para>Да. Вы можете использовать &man.gbde.8; или &man.geli.8;. + Смотрите раздел <ulink + url="&url.books.handbook;/disks-encrypting.html">Шифрование + дисковых разделов</ulink> Руководства &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="nt-bootloader"> + <para>Как можно использовать загрузчик &windowsnt; для запуска + &os;?</para> + </question> + + <answer> + <para>Идея заключается в копировании первого сектора корневого + раздела &os; в файл, находящийся в разделе DOS/&windowsnt;. + Предположим, что вы назвали этот файл + <filename>c:\bootsect.bsd</filename> (по аналогии с + <filename>c:\bootsect.dos</filename>), после чего можете + отредактировать файл <filename>c:\boot.ini</filename>, чтобы он + выглядел примерно так:</para> + + <programlisting>[boot loader] +timeout=30 +default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS +[operating systems] +multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT" +C:\BOOTSECT.BSD="&os;" +C:\="DOS"</programlisting> + + <para>Если &os; установлена на тот же самый диск, что и + загрузочный раздел &windowsnt;, просто скопируйте + <filename>/boot/boot1</filename> в + <filename>C:\BOOTSECT.BSD</filename>. Однако, если &os; + установлена на другой диск, то <filename>/boot/boot1</filename> + работать не будет, нужно копировать + <filename>/boot/boot0</filename>.</para> + + <para><filename>/boot/boot0</filename> нужно устанавливать с помощью + &man.sysinstall.8;, выбрав менеджер загрузки &os; в диалоговом + окне при выборе менеджера загрузки. Это потому что + в <filename>/boot/boot0</filename> область таблицы разделов + заполнена символами NULL, а &man.sysinstall.8; копирует сюда + таблицу разделов перед тем, как скопировать + <filename>/boot/boot0</filename> в область MBR.</para> + + <warning> + <para>Не копируйте просто <filename>/boot/boot0</filename> вместо + <filename>/boot/boot1</filename>, этим вы перезапишете таблицу + разделов винчестера и ваш компьютер перестанет + загружаться!</para> + </warning> + + <para>При запуске менеджер загрузки &os; задаёт ОС, которая + загружалась последний раз, устанавливая для этой операционной + системы признак активизации в таблице разделов, а затем записывает + 512 байт самого себя обратно в MBR, так что если вы просто + скопируете <filename>/boot/boot0</filename> + в <filename>C:\BOOTSECT.BSD</filename>, то в MBR будет записана + пустая таблица разделов с флагом активности в некотором + месте.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="lilo-bootloader"> + <para>Как загрузить &os; и &linux; с помощью LILO?</para> + </question> + + <answer> + <para>Если у вас установлены &os; и &linux; на одном и том же + диске, следуйте указаниям по установке LILO о загрузке не-&linux; + операционных систем. Они сводятся к следующему:</para> + + <para>Загрузите &linux; и добавьте следующие строки в файл + <filename>/etc/lilo.conf</filename>:</para> + + <programlisting>other=/dev/hda2 +table=/dev/hda +label=&os;</programlisting> + + <para>(здесь мы предполагаем, что слайс с &os; известен + &linux; как <devicename>/dev/hda2</devicename>; измените + эту строку в соответствии с вашей конфигурацией). Затем + достаточно будет запустить <command>lilo</command>, войдя + в систему как администратор.</para> + + <para>Если &os; располагается на другом диске, вам нужно + добавить строчку <literal>loader=/boot/chain.b</literal> в + конфигурационный файл LILO. Например:</para> + + <programlisting>other=/dev/dab4 +table=/dev/dab +loader=/boot/chain.b +label=&os;</programlisting> + + <para>В некоторых случаях для успешной загрузки со второго диска + вам может потребоваться указать номер диска BIOS загрузчику + &os;. Например, если диск SCSI с &os; определяется BIOS + как диск 1, в приглашении загрузчика &os; нужно указать:</para> + + <screen>Boot: <userinput>1:da(0,a)/boot/kernel/kernel</userinput></screen> + + <para>Вы можете настроить &man.boot.8; на автоматическое принятие + таких параметров во время загрузки.</para> + + <para>В документе <ulink + url="http://tldp.org/HOWTO/Linux+FreeBSD.html"> + &linux;+&os; mini-HOWTO</ulink> содержится много информации, + касающейся взаимодействия &os; и &linux;.</para> + + </answer> + </qandaentry> + + <qandaentry> + <question id="grub-loader"> + <para>Как загрузить &os; и &linux; с помощью GRUB?</para> + </question> + + <answer> + <para>Настройка загрузки &os;, используя GRUB очень простой + процесс. Всего лишь добавьте следующие строки в ваш + конфигурационный файл + <filename>/boot/grub/menu.lst</filename> (в некоторых системах + <filename>/boot/grub/grub.conf</filename>, например, + Red Hat Linux и производных системах).</para> + + <programlisting>title &os; 6.1 +root <replaceable>(hd0,a)</replaceable> +kernel /boot/loader</programlisting> + + <para>Где <replaceable>hd0,a</replaceable> указывает на ваш + корневой раздел на первом диске. Если вам нужно указать номер + слайса, который должен использоваться, напишите что-то вроде + <replaceable>(hd0,2,a)</replaceable>. По умолчанию, если номер + слайса не указан, GRUB ищет первый слайс, содержащий в себе + партицию <literal>a</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="booteasy-loader"> + <para>Как загрузить &os; и &linux; с помощью + <application>BootEasy</application>?</para> + </question> + + <answer> + <para>Установите LILO в начало загрузочного раздела &linux;, а не в + Master Boot Record. После этого можно запустить LILO из + <application>BootEasy</application>.</para> + + <para>Это рекомендуется сделать в любом случае при одновременном + использовании &windows; и &linux;, чтобы упростить + восстановление работоспособности &linux; после переустановки + &windows; (которая является Ревнивой Операционной + Системой и не терпит присутствия других операционных систем + в Master Boot Record).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="changing-bootprompt"> + <para>Как сменить приглашение загрузчика с <literal>???</literal> на + что-нибудь более значащее?</para> + </question> + + <answer> + <para>Вы не можете сделать это со стандартным менеджером загрузки, не + переписав его. Среди портов из категории + <filename class="directory">sysutils</filename> есть несколько + других менеджеров + загрузки, которые предоставляют такую функциональность.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="removable-drives"> + <para>Как использовать устройство для чтения сменных дисков?</para> + </question> + + <answer> + <para>Каким бы ни было это устройство, типа &iomegazip;, EZ (или даже обычным + дисководом, если вы хотите его использовать) или каким-то + другим, как только оно будет установлено и распознано + системой, и вы вставите в него картридж/дискету/что-там-ещё, всё + будет выглядеть примерно одинаково.</para> + + <para>(этот раздел основан на материалах <ulink + url="http://www.vmunix.com/mark/FreeBSD/ZIP-FAQ.html"> + FAQ по устройствам ZIP</ulink> Марка Мэйо (Mark Mayo))</para> + + <para>Если это устройство ZIP или обычный дисковод, и у вас уже есть + файловая система DOS на дискетах, то вы можете использовать команду + типа:</para> + + <screen>&prompt.root; <userinput>mount -t msdosfs /dev/fd0c /floppy</userinput></screen> + + <para>для обычных дискет, или</para> + + <screen>&prompt.root; <userinput>mount -t msdosfs /dev/da2s4 /zip</userinput></screen> + + <para>для дискет ZIP со стандартной конфигурацией.</para> + + <para>Для других дисков посмотрите их параметры с помощью команды + &man.fdisk.8; или &man.sysinstall.8;.</para> + + <para>Остальные примеры даны для привода ZIP на + <devicename>da2</devicename>, третьем диске SCSI.</para> + + <para>Если это дискета или сменный диск, который будет + использоваться для обмена информацией с другими людьми, хорошей + идеей будет помещение туда файловой системы BSD. Вы получите + поддержку длинных имён файлов, увеличение производительности по + крайней мере в два раза и гораздо большую надёжность. Первым + делом вам снова будет нужно выполнить разбиение диска на + разделы/файловые системы. Вы можете воспользоваться утилитой + &man.fdisk.8; либо &man.sysinstall.8;, а в случае небольшого + диска, на котором не нужно располагать несколько операционных + систем, просто сотрите таблицу разделов (слайсов) FAT и используйте + разбиение на разделы BSD.</para> + + <screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda2 count=2</userinput> +&prompt.root; <userinput>disklabel -Brw da2 auto</userinput></screen> + + <para>Вы можете использовать &man.disklabel.8; или &man.sysinstall.8; + для создания нескольких разделов BSD. + Вам наверняка придётся это сделать, если вы станете добавлять место + для раздела подкачки на винчестере, хотя это не имеет отношения к + устройствам типа ZIP.</para> + + <para>В итоге вы должны создать новую файловую систему (в этом примере + она занимает весь наш диск ZIP):</para> + + <screen>&prompt.root; <userinput>newfs /dev/rda2c</userinput></screen> + + <para>и смонтировать её:</para> + + <screen>&prompt.root; <userinput>mount /dev/da2c /zip</userinput></screen> + + <para>Хорошо ещё добавить строку типа следующей в файл + <filename>/etc/fstab</filename> (прочтите справку по &man.fstab.5;), + чтобы в будущем можно было просто давать команду + <command>mount /zip</command>:</para> + + <programlisting>/dev/da2c /zip ffs rw,noauto 0 0</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="mount-cd-superblock"> + <para>При монтировании компакт-диска, выдаётся сообщение + <errorname>Incorrect super block</errorname>.</para> + </question> + + <answer> + <para>В параметрах команды &man.mount.8; вам нужно указать тип + устройства, который вы собираетесь смонтировать. Это описано в + <ulink url="&url.books.handbook;/creating-cds.html">разделе + Руководства об оптических носителях</ulink>, а именно в разделе + <ulink url="&url.books.handbook;/creating-cds.html#MOUNTING-CD"> + Использование CD с данными</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cdrom-not-configured"> + <para>При монтировании компакт-диска выдаётся сообщение + <literal>Device not configured</literal>.</para> + </question> + + <answer> + <para>Обычно это означает, что в приводе CD-ROM нет компакт-диска либо + устройство на шине не было увидено. Пожалуйста, посмотрите раздел + об <ulink url="&url.books.handbook;/creating-cds.html#MOUNTING-CD"> + использовании CD с данными</ulink> в Руководстве, где подробно + обсуждается этот вопрос.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cdrom-unicode-filenames"> + <para>Когда я монтирую CD-ROM, все неанглийские символы в именах + файлов выводятся как <quote>?</quote>.</para> + </question> + + <answer> + <para>Скорее всего, на вашем компакт-диске для хранения информации о + файлах и каталогах используется расширение <quote>Joliet</quote>. + Это описано в главе Руководства о <ulink + url="&url.books.handbook;/creating-cds.html">создании и + использовании CD-ROM</ulink>, а именно в разделе об <ulink + url="&url.books.handbook;/creating-cds.html#MOUNTING-CD"> + использовании CD-ROM с данными</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="burncd-isofs"> + <para>Я записал CD во &os; и теперь не могу считать его ни в какой + другой операционной системой. Почему?</para> + </question> + + <answer> + <para>Скорее всего, вы записали на CD непосредственно необработанный + файл без создания файловой системы ISO 9660. + Прочтите <ulink url="&url.books.handbook;/creating-cds.html">главу + Руководства о создании CD-ROM</ulink>, в частности, раздел о + <ulink url="&url.books.handbook;/creating-cds.html#RAWDATA-CD"> + записи данных непосредственно на компакт-диски</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="copy-cd"> + <para>Как создать образ CD с данными?</para> + </question> + + <answer> + <para>Это описано в разделе Руководства о <ulink + url="&url.books.handbook;/creating-cds.html#IMAGING-CD">копировании + CD с данными</ulink>. Более полную информацию о работе с + компакт-дисками можно найти в разделе о <ulink + url="&url.books.handbook;/creating-cds.html">создании + компакт-дисков</ulink> + главы об устройствах хранения данных Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="mount-audio-CD"> + <para>Почему я не могу смонтировать (командой + <command>mount</command> аудио CD?</para> + </question> + + <answer> + <para>Если вы попытаетесь смонтировать аудио CD, вы получите примерно + такое сообщение об ошибке: <errorname>cd9660: /dev/acd0c: Invalid + argument</errorname>. Причина этого заключается в том, что команда + <command>mount</command> работает только с файловыми системами. На + аудио CD файловых систем нет; они содержат только данные. Вам + нужна программа, читающая аудио CD, например, порт + <filename role="package">audio/xmcd</filename> port.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="multi-session-CD"> + <para>Как выполнить <command>mount</command> для многосеансового + CD?</para> + </question> + + <answer> + <para>По умолчанию &man.mount.8; будет пытаться смонтировать + последнюю дорожку (сеанс) CD с данными. Если вы хотите + загрузить более ранний сеанс, то должны воспользоваться опцией + командной строки <option>-s</option>. Пожалуйста, обратитесь к + справке по команде &man.mount.cd9660.8; для получения конкретных + примеров.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="user-floppymount"> + <para>Как разрешить обычным пользователям монтировать дискеты, + компакт-диски и другие сменные носители?</para> + </question> + + <answer> + <para>Обычным пользователям можно позволить монтировать устройства. + Вот как это делается:</para> + + <procedure> + <step> + <para>Как пользователь <username>root</username>, установите + системную переменную <varname>vfs.usermount</varname> в + значение <literal>1</literal>.</para> + + <screen>&prompt.root; <userinput>sysctl -w vfs.usermount=1</userinput></screen> + </step> + + <step> + <para>Работая пользователем <username>root</username>, назначьте + соответствующие права на устройства с поблочным доступом, + которые соответствуют сменным носителям.</para> + + <para>Например, чтобы позволить пользователям монтировать дискеты + в первом дисководе, воспользуйтесь командой</para> + + <screen>&prompt.root; <userinput>chmod 666 /dev/fd0</userinput></screen> + + <para>Чтобы разрешить пользователям из группы + <groupname>operator</groupname> монтировать CD-ROM, + сделайте так:</para> + + <screen>&prompt.root; <userinput>chgrp operator /dev/acd0c</userinput> +&prompt.root; <userinput>chmod 640 /dev/acd0c</userinput></screen> + </step> + + <step> + <para>Вам нужно + внести изменения в файл <filename>/etc/devfs.conf</filename>, + чтобы они сохранялись между перезагрузками.</para> + + <para>Как пользователь <username>root</username>, добавьте нужные + строки в файл <filename>/etc/devfs.conf</filename>. К примеру, + чтобы разрешить пользователям монтировать диски на первом + приводе для гибких дисков, добавьте такую строчку:</para> + + <programlisting># Разрешить пользователям монтировать дискеты. +own /dev/fd0 root:operator +perm /dev/fd0 0666</programlisting> + + <para>Чтобы разрешить пользователям группы + <groupname>operator</groupname> монтировать диск в приводе + CD-ROM, добавьте такую строку:</para> + + <programlisting># Разрешить членам группы operator монтировать CD-ROM. +own /dev/acd0 root:operator +perm /dev/acd0 0660</programlisting> + </step> + + <step> + <para>Наконец, добавьте строчку + <literal><varname>vfs.usermount</varname>=1</literal> в файл + <filename>/etc/sysctl.conf</filename>, чтобы она срабатывала + во время загрузки системы.</para> + </step> + </procedure> + + <para>Теперь все пользователи могут монтировать дискету + <devicename>/dev/fd0</devicename> в собственные каталоги:</para> + + <screen>&prompt.user; <userinput>mkdir <replaceable>~/my-mount-point</replaceable></userinput> +&prompt.user; <userinput>mount -t msdosfs /dev/fd0 <replaceable>~/my-mount-point</replaceable></userinput></screen> + + <para>Пользователи из группы <groupname>operator</groupname> теперь + могут монтировать CD-ROM <devicename>/dev/acd0c</devicename> + в собственные каталоги:</para> + + <screen>&prompt.user; <userinput>mkdir <replaceable>~/my-mount-point</replaceable></userinput> +&prompt.user; <userinput>mount -t cd9660 /dev/acd0c <replaceable>~/my-mount-point</replaceable></userinput></screen> + + <para>Размонтирование устройства осуществляется просто:</para> + + <screen>&prompt.user; <userinput>umount <replaceable>~/my-mount-point</replaceable></userinput></screen> + + <para>Использование <varname>vfs.usermount</varname>, однако, имеет + некоторые негативные стороны, связанные с вопросами безопасности. + Более правильным способом работы с носителями в формате &ms-dos; + является использование пакета <filename + role="package">emulators/mtools</filename> + из Коллекции Портов.</para> + + <note> + <para>Имя, использованное для обозначения устройства в предыдущих + примерах, должно быть изменено в соответствии с конфигурацией + вашей системы.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="du-vs-df"> + <para>Команды <command>du</command> и <command>df</command> + показывают разный объем доступного дискового пространства. Что + происходит?</para> + </question> + + <answer> + <para>Вам нужно разобраться, что на самом деле делают команды + <command>du</command> и <command>df</command>. + <command>du</command> проходит по дереву каталогов, замеряя, + насколько большой объем занимает каждый файл, и выдает общий объем. + <command>df</command> просто запрашивает файловую систему об + оставшемся объеме. Это выглядит как одно и то же, однако файл без + записи в каталоге затронет <command>df</command>, но не повлияет на + <command>du</command>.</para> + + <para>Когда программа использует файл, а вы его удалили, файл на + самом деле не удаляется из файловой системы, пока программа не + прекратит его использовать. Однако файл тут же удаляется из списка + каталога. Вы можете легко это видеть при помощи такой программы, + как <command>more</command>. Предположим, что у вас имеется файл, + настолько большой, что его присутствие влияет на вывод команд + <command>du</command> и <command>df</command>. (Так как в + настоящее время диски могут быть настолько большими, это может быть + <emphasis>очень</emphasis> большой файл!) Если вы удалите этот + файл в процессе работы <command>more</command> над ним, на команду + <command>more</command> это не повлияет и она не сообщит, что не + может просматривать файл. Запись о файле просто удалена из + каталога, так что другие программы или пользователи не смогут к + нему обратиться. <command>du</command> покажет, что файл исчез + — она просматривает дерево каталогов, а файла там не будет. + <command>df</command> показывает, что он все еще здесь, так как + файловая система знает, что <command>more</command> все еще + использует это пространство. Как только вы закончите работу с + <command>more</command>, команды <command>du</command> и + <command>df</command> придут в соответствие.</para> + + <para>Заметьте, что подсистема отложенных обновлений (Soft Updates) + может задерживать освобождение дискового пространства; вам может + потребоваться подождать до 30 секунд, прежде, чем изменения будут + заметны!</para> + + <para>Такая ситуация часта на Web-серверах. Многие устанавливают + Web-сервер на &os; и забывают обновлять файлы протоколов. + Журнал доступа заполняет <filename + class="directory">/var</filename>. Новый + администратор удаляет файл, но система все еще сообщает о том, что + раздел заполнен. Остановка и перезапуск программы Web-сервера + освободит файл, позволяя системе освободить дисковое пространство. + Для предотвращения этого настройте &man.newsyslog.8;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="add-swap-space"> + <para>Как добавить дополнительную виртуальную память?</para> + </question> + + <answer> + <para>В главе Руководства о <ulink + url="&url.books.handbook;/config-tuning.html">конфигурации и тонкой + настройке</ulink> вы найдёте <ulink + url="&url.books.handbook;/adding-swap-space.html">раздел</ulink>, в + котором описывается, как это сделать.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="manufacturer-disk-size"> + <para>Почему &os; считает, что размер моего диска меньше, чем + заявляет его производитель?</para> + </question> + + <answer> + <para>Производители дисков считают гигабайт равным миллиарду байт, + а &os; приравнивает его к 1073741824 байт. Это объясняет, + почему, к примеру, в сообщениях при загрузке &os; указывается, что + ёмкость диска, объём которого должен быть равным 80 Гбайт, + составляет 76319 Мбайт.</para> + + <para>Заметьте также, что &os; будет (по умолчанию) <link + linkend="disk-more-than-full">резервировать</link> 8% ёмкости + диска.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="disk-more-than-full"> + <para>Почему возможно заполнение раздела больше чем на 100%?</para> + </question> + + <answer> + <para>Часть каждого раздела UFS (по умолчанию 8%) зарезервировано для + использования операционной системой и пользователем + <username>root</username>. Утилита &man.df.1; не учитывает это + при подсчёте значения в колонке <literal>Capacity</literal>, так + что оно может превышать 100%. Также вы заметите, что колонка + <literal>Blocks</literal> всегда больше, чем сумма значений в + колонках <literal>Used</literal> и <literal>Avail</literal>, + обычно на 8%.</para> + + <para>Для получения более подробной информации обратитесь к описанию + опции <option>-m</option> в справке по &man.tunefs.8;.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="admin"> + <title>Системное администрирование</title> + + <qandaset> + <qandaentry> + <question id="startup-config-files"> + <para>Где расположены файлы конфигурации системы?</para> + </question> + + <answer> + <para>Основным настроечным файлом является + <filename>/etc/defaults/rc.conf</filename> (обратитесь к + &man.rc.conf.5;). Скрипты начального запуска системы, такие как + <filename class="directory">/etc/rc</filename> и <filename + class="directory">/etc/rc.d</filename> + (обратитесь к &man.rc.8;), просто включают этот файл. <emphasis>Не + редактируйте этот файл!</emphasis> Вместо этого, если в файле + <filename>/etc/defaults/rc.conf</filename> имеется параметр, + который вы хотите изменить, то вы должны скопировать строчку с ним + в файл <filename>/etc/rc.conf</filename> и поменять его значение + именно здесь.</para> + + <para>Например, если вы хотите запустить &man.named.8;, поставляемый + сервер DNS, то всё, что вам нужно сделать, это:</para> + + <screen>&prompt.root; <userinput>echo 'named_enable="YES"' >> /etc/rc.conf</userinput></screen> + + <para>Чтобы запустить местные сервисы, поместите скрипты в каталог + <filename class="directory">/usr/local/etc/rc.d</filename>. + У этих скриптов + должен быть выставлен бит выполнимости, по умолчанию + используются права доступа <literal>555</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="adding-users"> + <para>Как проще всего добавить пользователя?</para> + </question> + + <answer> + <para>Используйте команду &man.adduser.8; или &man.pw.8; в случае + выполнения более сложных операций.</para> + + <para>Чтобы удалить пользователя, используйте команду + &man.rmuser.8; или, если это будет необходимо, &man.pw.8;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="root-not-found-cron-errors"> + <para>Почему после редактирования моего файла + <filename>crontab</filename> я получаю сообщения вида + <errorname>root: not found</errorname>?</para> + </question> + + <answer> + <para>Обычно это случается при редактировании системного crontab-файла + (<filename>/etc/crontab</filename>) и последующего использования + утилиты &man.crontab.1; для его установки:</para> + + <screen>&prompt.root; <userinput>crontab /etc/crontab</userinput></screen> + + <para>Это неправильно. Системный crontab-файл имеет формат, отличный + от пользовательских crontab-файлов, которые обновляет утилита + &man.crontab.1; (страница Справочника по &man.crontab.5; описывает + отличия более подробно).</para> + + <para>Если это именно то, что вы сделали, то дополнительный + crontab-файл является просто копией файла + <filename>/etc/crontab</filename> в неправильном формате. Удалите + его такой командой:</para> + + <screen>&prompt.root; <userinput>crontab -r</userinput></screen> + + <para>В следующий раз при редактировании файла + <filename>/etc/crontab</filename>, вам не нужно делать ничего для + оповещения утилиты &man.cron.8; о сделанных изменениях, так как она + распознает их автоматически.</para> + + <para>Если вы хотите запускать что-то один раз в день, неделю или + месяц, то, наверное, лучше обновить скрипты + <filename class="directory">/usr/local/etc/periodic</filename> + и позволить команде + &man.periodic.8;, запускаемой системной утилитой + <command>cron</command>, планировать + их выполнение вместе с другими периодическими системными + задачами.</para> + + <para>Реальная причина ошибки заключается в том, что системный + crontab-файл имеет дополнительное поле, указывающее, какой + пользователь запускает команду. В системном crontab-файле, + поставляемом с &os; и используемом по умолчанию, это + пользователь <username>root</username> для всех строк. Если этот + crontab-файл используется в качестве crontab-файла пользователя + <username>root</username> (что <emphasis>не то же самое</emphasis>, + что системный crontab-файл), &man.cron.8; полагает, что слово + <literal>root</literal> является первым в команде на выполнение, + но такой команды не существует.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="su-wheel-group"> + <para>Команда <command>su</command> выдает, что <errorname>you are + not in the correct group to su root</errorname>, когда я пытаюсь + сменить привилегии на <username>root</username>.</para> + </question> + + <answer> + <para>Это особенность работы системы защиты. Для того, чтобы + изменить свои привилегии на пользователя <username>root</username> + (или любого другого пользователя, имеющего привилегии + администратора), вы должны быть членом группы + <groupname>wheel</groupname>. Если бы этого не было, любой, + имеющий доступ к системе и узнавший пароль пользователя + <username>root</username>, смог получить в системе + административные полномочия. С такой же защитой этого не + получится; &man.su.1; будет препятствовать попыткам даже ввести + пароль, если некто не являетесь членом группы + <groupname>wheel</groupname>.</para> + + <para>Чтобы разрешить кому-либо менять привилегии на + <username>root</username>, просто включите его в группу + <groupname>wheel</groupname>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="rcconf-readonly"> + <para>Я сделал ошибку в файле <filename>rc.conf</filename> или в + каком-то другом файле начальной загрузки, и теперь не могу его + отредактировать из-за того, что файловая система находится в + режиме только для чтения. Что мне делать?</para> + </question> + + <answer> + <para>Перезапустите систему, используя в приглашении загрузчика + команду <userinput>boot -s</userinput> для входа в + однопользовательский режим. При получении приглашения на ввод + полного пути до командного + процессора просто нажмите <literal>Enter</literal>, а затем + выполните команду <command>mount -urw /</command> для повторного + монтирования корневой файловой системы в режиме чтения/записи. Вам + может также потребоваться выполнить команду <command>mount -a -t + ufs</command> для монтирования файловой системы, в которой + расположен ваш любимый редактор. Если редактор расположен на + сетевой файловой системе, то вам потребуется выполнить сетевые + настройки вручную до монтирования сетевой файловой системы, либо + воспользоваться редактором, находящимся в локальной файловой + системе, таким, как &man.ed.1;.</para> + + <para>Если вы собираетесь использовать полноэкранный редактор, + такой, как &man.vi.1; или &man.emacs.1;, то вам нужно будет + выполнить команду <command>export TERM=cons25</command>, чтобы + такие редакторы смогли корректно взять данные из базы данных + &man.termcap.5;.</para> + + <para>После выполнения этих шагов вы сможете отредактировать файл + <filename>/etc/rc.conf</filename> так, как вы это обычно делаете + для исправления ошибки. Сообщение об ошибке, выводимое сразу же + после сообщений при загрузке ядра, должно указать вам на номер + строки в файле, которая содержит ошибку.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="printer-setup"> + <para>У меня проблемы с установкой принтера.</para> + </question> + + <answer> + <para>Обратитесь к соответствующему <ulink + url="&url.books.handbook;/printing.html">разделу</ulink> + Руководства, посвящённому печати. В нём описаны решения + большинства ваших проблем.</para> + + <para>Некоторые принтеры для выполнения любых операций по печати + требуют наличия на хосте драйвера. Такие так называемые + <quote>WinPrinters</quote> изначально во &os; не + поддерживаются. Если ваш принтер не работает в DOS или &windows;, + то, скорее всего, это WinPrinter. Единственное, что вам + остаётся сделать в надежде на то, что вы заставите его работать, + это проверить, поддерживает ли его порт + <filename role="package">print/pnm2ppa</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="keyboard-mappings"> + <para>Раскладка клавиатуры неверна.</para> + </question> + + <answer> + <para>Пожалуйста, обратитесь к разделу Руководства, посвящённому + <ulink url="&url.books.handbook;/using-localization.html"> + использованию локализации</ulink>, а именно к части, описывающей + <ulink + url="&url.books.handbook;/using-localization.html#SETTING-CONSOLE"> + настройку консоли</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="pnp-resources"> + <para>У меня при загрузке появляются сообщения вида + <errorname>unknown: <PNP0303> can't assign + resources</errorname></para> + </question> + + <answer> + <para>Ниже следует часть письма, адресованного в &a.current;.</para> + + <blockquote> + <attribution>&a.wollman;, 24 апреля 2001</attribution> + + <para>Сообщение <quote>can't assign resources</quote> говорит о + том, что устройство является устаревшим ISA-устройством, для + которого в ядре присутствует драйвер, не поддерживающий PnP. К + таким устройствам относятся контроллеры клавиатуры, микросхема + контроллера программируемых прерываний, а также другие части + стандартного набора. Ресурсы не могут выделены, потому что уже + есть драйвер, использующий эти адреса.</para> + </blockquote> + </answer> + </qandaentry> + + <qandaentry> + <question id="user-quotas"> + <para>Почему не получается заставить работать дисковые квоты?</para> + </question> + + <answer> + <!-- XXX Наверное, это самый худший ответ во всём документе. --> + <orderedlist> + <listitem> + <para>Возможно, что ваше ядро не сконфигурировано должным образом + для работы с квотами. Если это действительно так, то вам надо + добавить следующую строчку в ваш конфигурационный файл ядра и + пересобрать его:</para> + <programlisting>options QUOTA</programlisting> + + <para>Пожалуйста, прочтите <ulink url="&url.books.handbook;/quotas.html">главу + руководства по квотам</ulink> для полной информации.</para> + </listitem> + + <listitem> + <para>Не включайте квотирование на <filename + class="directory">/</filename>.</para> + </listitem> + + <listitem> + <para>Помещайте файл с квотами в ту файловую систему, которую + он обслуживает, то есть:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Файловая система</entry> + + <entry>Файл квот</entry> + </row> + </thead> + + <tbody> + <row> + <entry><filename + class="directory">/usr</filename></entry> + + <entry><filename>/usr/admin/quotas</filename></entry> + </row> + + <row> + <entry><filename + class="directory">/home</filename></entry> + + <entry><filename>/home/admin/quotas</filename></entry> + </row> + + <row> + <entry>…</entry> + + <entry>…</entry> + </row> + </tbody> + </tgroup> + </informaltable> + </listitem> + </orderedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="sysv-ipc"> + <para>Поддерживает ли &os; вызовы IPC из System V?</para> + </question> + + <answer> + <para>Да, во &os; в ядро <filename>GENERIC</filename> включена + поддержка IPC в стиле + System V, в том числе совместно используемой памяти, сообщений и + семафоров. Для включения их поддержки в конфигурационный файл + вашего ядра нужно добавить следующие строки.</para> + + <programlisting>options SYSVSHM # enable shared memory +options SYSVSEM # enable for semaphores +options SYSVMSG # enable for messaging</programlisting> + + <para>Перекомпилируйте и переустановите ядро.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="sendmail-alternative"> + <para>Какое другое программное обеспечение для почтового сервера + можно использовать вместо <application>sendmail</application>?</para> + </question> + + <answer> + <para><ulink + url="http://www.sendmail.org/"><application>sendmail</application></ulink> + является + программным обеспечением для работы почтового сервера во &os;, + используемым по умолчанию, но вы можете с легкостью заменить его + другим MTA (к примеру, установленным из портов).</para> + + <para>В дереве портов уже имеются различные альтернативные MTA, из + которых <filename role="package">mail/exim</filename>, + <filename role="package">mail/postfix</filename>, + <filename role="package">mail/qmail</filename> и + <filename role="package">mail/zmailer</filename> являются одними + из самых популярных.</para> + + <para>Разнообразие хорошо, а тот факт, что у вас есть выбор из многих + различных почтовых серверов, является хорошим признаком; поэтому + попытайтесь не задавать вопросы типа + <quote><application>Sendmail</application> лучше, чем + <application>qmail</application>?</quote> в списках рассылки. Если + вы захотите получить ответ, сначала просмотрите архивы списков + рассылки. Достоинства и недостатки каждого из имеющихся MTA уже + обсуждались неоднократно.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="forgot-root-pw"> + <para>Я забыл пароль пользователя <username>root</username>! Что + делать?</para> + </question> + + <answer> + <para>Без паники! Перезапустите систему, наберите + <userinput>boot -s</userinput> в приглашении + <literal>Boot:</literal> для входа в однопользовательский + режим. На вопрос об используемой оболочке нажмите + <keycap>Enter</keycap>. На приглашение + &prompt.root; введите <command>mount -urw /</command>, чтобы + перемонтировать корневую файловую систему в режиме чтения/записи, + после чего выполните команду <command>mount -a</command> для + монтирования всех файловых систем. Запустите команду + <command>passwd root</command>, чтобы сменить + пароль пользователя <username>root</username>, а затем + &man.exit.1; для продолжения процесса загрузки.</para> + + <note> + <para>Если при входе в однопользовательский режим предлагается + ввести пароль пользователя <username>root</username>, то + это означает, что консоль была помечена как + <literal>insecure</literal> в <filename>/etc/ttys</filename>. + В этом случае потребуется загрузиться с установочного диска + &os;, выбрать оболочку <guimenuitem>Fixit</guimenuitem> из + меню &man.sysinstall.8; и выполнить указанные выше команды.</para> + </note> + + <note> + <para>Если вы не можете смонтировать корневой раздел в + однопользовательском режиме, то возможно, что разделы + являются зашифрованными, и смонтировать их без ключей доступа + не представляется возможным. Ваши шансы зависят от выбранного + способа шифрования. За дополнительной информацией обращайтесь + к разделу <ulink + url="&url.books.handbook;/disks-encrypting.html">Руководства</ulink>, + посвященному шифрованию дисков во &os;.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="CAD-reboot"> + <para>Как запретить перезагрузку по нажатию <keycombo + action="simul"><keycap>Control</keycap><keycap>Alt</keycap> + <keycap>Delete</keycap></keycombo>?</para> + </question> + + <answer> + <para>Если вы используете драйвер консоли &man.syscons.4; (который + является стандартным), перегенерируйте и установите новое ядро с + таким параметром в конфигурационном файле:</para> + + <programlisting>options SC_DISABLE_REBOOT</programlisting> + + <para>Этого также можно достичь установкой следующего &man.sysctl.8;, + что не требует перезагрузки или пересборки ядра:</para> + + <screen>&prompt.root; <userinput>sysctl hw.syscons.kbd_reboot=0</userinput></screen> + + <note> + <para>Оба этих метода являются взаимоисключающими. Данный + &man.sysctl.8; не существует, если вы скомпилировали ядро + с параметром <literal>SC_DISABLE_REBOOT</literal>.</para> + </note> + + <para>Если же вы используете драйвер консоли &man.pcvt.4;, + то включите в конфигурационный файл следующую строку и + пересоберите ядро:</para> + + <programlisting>options PCVT_CTRL_ALT_DEL</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="dos-to-unix-txt"> + <para>Как преобразовать текстовые файлы DOS в формат &unix;?</para> + </question> + + <answer> + <para>Воспользуйтесь следующей командой &man.perl.1;:</para> + + <screen>&prompt.user; <userinput>perl -i.bak -npe 's/\r\n/\n/g' <replaceable>file(s)</replaceable></userinput></screen> + + <para>где <replaceable>file(s)</replaceable> - это один или + несколько файлов для обработки. + Преобразование делается в том же самом файле, оригинальные файлы + сохраняются с расширением <filename>.bak</filename>.</para> + + <para>Это преобразование также можно выполнить с помощью команды + &man.tr.1;:</para> + + <screen>&prompt.user; <userinput>tr -d '\r' < <replaceable>dos-text-file</replaceable> > <replaceable>unix-file</replaceable></userinput></screen> + + <para>где <replaceable>dos-text-file</replaceable> - это имя файла, + содержащего текст DOS, а в файл + <replaceable>unix-file</replaceable> будет помещён уже + преобразованный текст. Этот способ может работать гораздо + быстрее, чем при использовании <command>perl</command>.</para> + + <para>Еще один способ отформатировать тестовые файлы DOS + состоит в использовании <filename + role="package">converters/dosunix</filename> из Коллекции + Портов. Для получения дополнительной информации ознакомьтесь + с документацией порта.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="kill-by-name"> + <para>Как прервать процесс по имени?</para> + </question> + + <answer> + <para>Используйте команду &man.killall.1;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="root-acl"> + <para>Почему &man.su.1; выдаёт сообщение о том, что я + не вхожу в <username>root</username> ACL?</para> + </question> + + <answer> + <para>Эта ошибка выдаётся распределённой системой аутентификации + <application>Kerberos</application>. Эта ошибка не фатальна, + однако это раздражает. Вы можете запустить su с ключом + <option>-K</option> либо деинсталлировать + <application>Kerberos</application>, как описано в ответе на + следующий вопрос.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="uninstall-kerberos"> + <para>Как деинсталлировать + <application>Kerberos</application>?</para> + </question> + + <answer> + <para>Чтобы удалить <application>Kerberos</application> из + системы, переустановите дистрибутив <literal>base</literal> + того релиза, который у вас запущен. Если у вас есть CD-ROM, + вы можете смонтировать компакт-диск (положим, в каталог + <filename class="directory">/cdrom</filename>) и выполнить + команду</para> + + <screen>&prompt.root; <userinput>cd /cdrom/base</userinput> +&prompt.root; <userinput>./install.sh</userinput></screen> + + <para>Либо вы можете задействовать опцию + <makevar>NO_KERBEROS</makevar> в файле + <filename>/etc/make.conf</filename> и выполнить полное перестроение + системы.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="where-is-makedev"> + <para>Что случилось с <filename>/dev/MAKEDEV</filename>?</para> + </question> + + <answer> + <para>Во &os; 5.<replaceable>X</replaceable> и выше + используется система &man.devfs.8;, работающая по принципу + "устройства по требованию". Драйверы устройств + автоматически создают новые файлы + устройств, как только в них появляется необходимость, таким образом + обходясь без <filename>/dev/MAKEDEV</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="add-pty"> + <para>Как добавить в систему дополнительные псевдотерминалы?</para> + </question> + + <answer> + <para>Если у вас много пользователей, работающих в сеансах + <command>telnet</command>, <command>ssh</command>, X или в + <command>screen</command>, то вы можете столкнуться с проблемой + нехватки псевдотерминалов. По умолчанию до &os; 6.2 + включительно поддерживается 256 псевдотерминалов, а начиная с + &os; 6.3 — 512.</para> + + <tip> + <para>При необходимости можно добавить дополнительные + псевдотерминалы. Однако, это требует изменений в стандартной + библиотеке C, ядре и <filename>/etc/ttys</filename>. + Например, <ulink + url="http://www.freebsd.org/~jhb/patches/pty_1152.patch"></ulink> + расширяет количество псевдотерминалов до 1152. Отметим, что + данный патч может быть применен без ошибок только для + &os; 6.3 или выше.</para> + </tip> + </answer> + </qandaentry> + + <qandaentry> + <question id="reread-rc"> + <para>Как перечитать содержимое <filename>/etc/rc.conf</filename> + и перестартовать <filename>/etc/rc</filename> без перезагрузки + системы?</para> + </question> + + <answer> + <para>Перейдите в однопользовательский режим, а затем возвратитесь обратно + в многопользовательский.</para> + + <para>На консоли выполните следующее:</para> + + <screen>&prompt.root; <userinput>shutdown now</userinput> +(Замечание: без -r или -h) + +&prompt.root; <userinput>return</userinput> +&prompt.root; <userinput>exit</userinput></screen> + + </answer> + </qandaentry> + + <qandaentry> + <question id="release-candidate"> + <para>Я пытался обновить мою систему до последней + <emphasis>-STABLE</emphasis>, а получил + <emphasis>-BETA<replaceable>x</replaceable></emphasis>, + <emphasis>-RC</emphasis> или + <emphasis>-PRERELEASE</emphasis>! Что происходит?</para> + </question> + + <answer> + <para>Краткий ответ: это же просто название. <emphasis>RC</emphasis> + означает + <quote>Release Candidate</quote>. Это значит, что вскоре + произойдет выход релиза. Во &os; появление + <emphasis>-PRERELEASE</emphasis>, как + правило, равнозначно прекращению внесения изменений в код системы + перед появлением релиза. (Для некоторых релизом метка + <emphasis>-BETA</emphasis> использовалась точно так же, как и + <emphasis>-PRERELEASE</emphasis>.)</para> + + <para>Подробный ответ: во &os; релизы выпускаются из одного из + двух мест. Крупные релизы, точка-ноль, такие, как + 7.0-RELEASE и 8.0-RELEASE, ответвляются от основного потока + разработки, более известного как <link + linkend="current">-CURRENT</link>. Мелкие релизы, такие, как + 6.3-RELEASE или 5.2-RELEASE, являлись снэпшотами активной ветки + <link linkend="stable">-STABLE</link>. Начиная с 4.3-RELEASE, + каждый релиз также имеет свою ветвь, которой могут следовать те, + кому необходим сверхконсервативный метод обновления (как правило, + внесение только тех исправлений, которые касаются вопросов + обеспечения безопасности).</para> + + <para>Когда делается релиз, то ветвь, из которой он выпускается, + подвергается некоторой подготовке. Частью этого процесса является + замораживание кода. Когда инициируется замораживание кода, то имя + ветки изменяется для того, чтобы отразить факт близости релиза. + Например, если ветка называлась 6.2-STABLE, то её имя будет + изменено на 6.3-PRERELEASE, чтобы обозначить момент прекращения + внесения изменений в код системы и период дополнительного + тестирования перед выходом релиза. В это время исправления ошибок + могут быть внесены в код системы для того, чтобы быть включенными в + релиз. Когда исходный код подготовлен к выпуску релиза, имя будет + изменено на 6.3-RC для обозначения того, что релиз будет сделан, + скорее всего, именно из этого кода. Когда код находится на этапе + RC, в нём могут исправляться только самые критичные ошибки. Как + только релиз (в нашем примере 6.3-RELEASE) и ветка релиза будут + созданы, ветвь будет переименована в 6.3-STABLE.</para> + + <para>Для получения дополнительной информации о номерах версий и + различных ветках CVS обратитесь к статье о <ulink + url="&url.articles.releng;/article.html">выпуске + релизов</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="kernel-chflag-failure"> + <para>Я попытался установить новое ядро, однако утилита + &man.chflags.1; не сработала. Как это обойти?</para> + </question> + + <answer> + <para>Краткий ответ: Скорее всего, вы работаете в режиме + безопасности, большем, чем 0. Для установки ядра + перезагрузите машину и войдите в + однопользовательский режим.</para> + + <para>Подробный ответ: &os; запрещает менять системные + флаги при работе на уровнях безопасности, превышающих 0. + Вы можете определить ваш уровень такой командой:</para> + + <screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen> + + <para>Вы не можете понизить уровень безопасности; для установки + ядра вам нужно перезагрузиться в однопользовательский режим, + или изменить уровень безопасности в + <filename>/etc/rc.conf</filename>, а затем выполнить + перезагрузку. Обратитесь к странице Справочника по &man.init.8; + за подробной информацией об <literal>securelevel</literal> и + посмотрите <filename>/etc/defaults/rc.conf</filename> и + справочную страницу по &man.rc.conf.5; для выяснения + подробностей о файле <filename>rc.conf</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="kernel-securelevel-time"> + <para>Не получается изменить системное время больше чем на одну + секунду! Как это обойти?</para> + </question> + + <answer> + <para>Краткий ответ: Скорее всего, вы работаете на уровне + безопасности, превышающем 1. Для смены даты перезагрузите + машину и войдите в однопользовательский режим.</para> + + <para>Подробный ответ: &os; запрещает менять системное время + на больше чем одну секунду при работе на уровнях безопасности, + превышающих 1. Вы можете определить ваш уровень такой + командой:</para> + + <screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen> + + <para>Вы не можете понизить уровень безопасности; для изменения + даты вам нужно перезагрузиться в однопользовательский режим, + или изменить уровень безопасности в + <filename>/etc/rc.conf</filename>, а затем выполнить + перезагрузку. Обратитесь к странице Справочника по &man.init.8; + за подробной информацией об <literal>securelevel</literal> и + посмотрите <filename>/etc/defaults/rc.conf</filename> и + справочную страницу по &man.rc.conf.5; для выяснения + подробностей о файле <filename>rc.conf</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="statd-mem-leak"> + <para>В <command>rpc.statd</command>; есть ошибка работы с памятью! + Он использует 256 Мбайт оперативной памяти!</para> + </question> + + <answer> + <para>Нет, там нет ошибок и он не использует 256 Мбайт памяти. + Для удобства <command>rpc.statd</command> отображает неприлично + большой кусок памяти в своё адресное пространство. Здесь нет + ничего неправильного с технической точки зрения, это просто + сбивает с толку программы вроде &man.top.1; и &man.ps.1;</para> + + <para>&man.rpc.statd.8; отображает свой статусный файл + (находящийся на <filename class="directory">/var</filename>) + в свое адресное + пространство. Для того, чтобы постоянно не беспокоиться о будущих + переотражениях, когда файл вырастет в размерах, он просто + отображает его с огромным размером заранее. Это просто заметить + в исходных текстах, где как вы можете увидеть параметр длина + к функции &man.mmap.2; имеет значение + <literal>0x10000000</literal>, или одна шестнадцатая адресного + пространства для IA32, то есть 256 Мбайт.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="unsetting-schg"> + <para>Почему я не могу снять с файла флаг <literal>schg</literal>?</para> + </question> + + <answer> + <para>Вы работаете в системе с повышенным (то есть большим, чем 0) + уровнем защиты. Понизьте уровень защиты и попробуйте еще раз. + Для получения более подробной информации обратитесь к <link + linkend="securelevel">разделу FAQ об уровне защиты</link> и + справочной странице о &man.init.8;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ssh-shosts"> + <para>Почему в <application>SSH</application> аутентификация + посредством файла + <filename>.shosts</filename> не включена по умолчанию в + последних версиях &os;?</para> + </question> + + <answer> + <para>Причиной, по которой <filename>.shosts</filename> + аутентификация не работает по умолчанию в последних версиях + &os;, является то что &man.ssh.1; не устанавливается более + с битом изменения привилегий на пользователя + <username>root</username>. Если вы хотите + <quote>исправить</quote> это, то вы можете сделать одно + из двух нижеприведённых действий:</para> + + <itemizedlist> + <listitem> + <para>Как постоянную правку, установите + <makevar>ENABLE_SUID_SSH</makevar> в <literal>true</literal> в + файле <filename>/etc/make.conf</filename>, затем + перекомпилируйте и установите &man.ssh.1; (или выполните + команду <command>make <maketarget>world</maketarget></command>).</para> + </listitem> + + <listitem> + <para>Как временную правку, измените права доступа к файлу + <filename>/usr/bin/ssh</filename> на <literal>4555</literal> + командой <command>chmod 4555 /usr/bin/ssh</command> из-под + администратора. А потом добавьте строку + <literal><makevar>ENABLE_SUID_SSH</makevar>= true</literal> + в файл <filename>/etc/make.conf</filename>, чтоб это изменение + осталось в силе после очередного обновления системы с помощью + <command>make <maketarget>world</maketarget></command>.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="vnlru"> + <para>Что такое <literal>vnlru</literal>?</para> + </question> + + <answer> + <para><literal>vnlru</literal> сбрасывает и освобождает vnode, когда + система достигает своего ограничения по параметру + <varname>kern.maxvnodes</varname>. Этот подпроцесс ядра в основном + работает вхолостую и активируется только при наличии огромного + объема ОЗУ и обращении к десяткам или тысячам файлов маленького + размера.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="top-memory-states"> + <para>Что означают различные состояния памяти, показываемые утилитой + <command>top</command>?</para> + </question> + +<!-- Предоставил John Dyson через Usenet --> + + <answer> + <itemizedlist> + <listitem> + <para><literal>Active</literal>: по статистике страницы недавно + использовались.</para> + </listitem> + + <listitem> + <para><literal>Inactive</literal>: по статистике страницы + недавно не использовались.</para> + </listitem> + + <listitem> + <para><literal>Cache</literal>: (наиболее часто) + страницы, которых перемещены из числа неактивных в статус, в + котором они содержат данные, но которые могут часто сразу же + использоваться повторно (как с их старым содержимым, так и + повторно с новым). Это может быть некоторое непосредственное + перемещение из состояния <literal>active</literal> в состояние + <literal>cache</literal>, если известно, что страница чиста (не + модифицировалась), но такое + перемещение определяется политикой, зависящей от выбора + алгоритма разработчиком VM-системы.</para> + </listitem> + + <listitem> + <para><literal>Free</literal>: страницы, не содержащие данных, + и которые могут быть использованы при некоторых условиях, + когда страницы кэша могут не подойти. Свободные страницы + могут повторно использоваться в состояниях прерывания или + процессах.</para> + </listitem> + + <listitem> + <para><literal>Wired</literal>: страницы, зафиксированные в + памяти, обычно для использования ядром, а также иногда для + специального использования процессами.</para> + </listitem> + </itemizedlist> + + <para>Страницы чаще всего записываются на диск (типа синхронизации + VM), когда они находятся в неактивном состоянии, однако страницы + в активном состоянии также могут сбрасываться. Это зависит от + наличия и возможности отслеживания со стороны ЦП бита + 'модифицированности', и в некоторых ситуациях это может быть лучше + для блока синхронизируемых страниц VM, вне зависимости от их + активности. В большинстве встречающихся ситуаций лучше всего + представлять неактивную очередь как очередь сравнительно + неиспользуемых страниц, которые могут быть, а могут и не быть в + процессе записи на диск. Кэшируемые страницы уже + синхронизированы, не отображаются, но доступны для + непосредственного использования процессом со своей старой или новой + привязкой. Свободные страницы доступны на уровне прерывания, + однако кэшируемые или свободные страницы могут использоваться в + процессе повторно. Кэшируемые страницы недостаточно заблокированы + для того, чтобы быть доступными на уровне прерывания.</para> + + <para>Есть ещё некоторые другие флаги (например, флаг занятости или + счётчик занятости), которые могут изменить некоторые описанные + правила.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="free-memory-amount"> + <para>Сколько свободной памяти доступно?</para> + </question> + +<!-- Предоставил John Dyson посредством Usenet --> + + <answer> + <para>Есть несколько понятий <quote>свободной памяти</quote>. В + одном случае это объём памяти, непосредственно доступной в данный + момент без страничной выгрузки чего-либо. Этот объём равен + примерно размеру очереди кэша + размер очереди на высвобождение (с + учётом допустимых отклонений, зависящих от настроек системы). В + другом случае <quote>свободная память</quote> обозначает общий + объём пространства <acronym>VM</acronym>. Он может сложно + вычисляться, но зависит от объёма раздела подкачки и памяти. + Другие определения <quote>свободной памяти</quote> также возможны, + но они достаточно бесполезны, ведь в любом случае важно сохранять + низкий уровень подкачки и избегать исчерпания раздела + подкачки.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="var-empty"> + <para>Что такое <filename class="directory">/var/empty</filename>? + Я не могу его удалить!</para> + </question> + + <answer> + <para><filename class="directory">/var/empty</filename> + представляет собой каталог, который использует программа + &man.sshd.8; при выполнении разделения полномочий. Каталог + <filename class="directory">/var/empty</filename> пуст, его + владельцем является <username>root</username> и на нём + установлен флаг <literal>schg</literal>.</para> + + <para>Хотя этот каталог удалять не рекомендуется, для выполнения этой + операции вам нужно сначала снять флаг <literal>schg</literal>. + Обратитесь к справочным страницам по &man.chflags.1; для получения + более полной информации (и помните про ответ на <link + linkend="unsetting-schg">вопрос о снятии флага schg</link>).</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="x"> + <title>X Window System и виртуальные консоли</title> + + <qandaset> + <qandaentry> + <question id="whatis-X"> + <para>Что такое X Window System?</para> + </question> + + <answer> + <para>X Window System (обычно <literal>X11</literal>) + является самой широкодоступной оконной + системой, которая может работать на &unix; и &unix;-подобных + системах, в том числе и во &os;. Разработкой стандартов на + используемый <ulink + url="http://en.wikipedia.org/wiki/X_Window_System_core_protocol"> + X-протокол</ulink> занимается организация <ulink + url="http://www.x.org/wiki/">The X.Org Foundation</ulink>, с + текущей эталонной реализацией version 11 release &xorg.version;, + поэтому вы будете часто встречать краткую ссылку на них в виде + сокращения <literal>X11</literal>.</para> + + <para>Для разных архитектур и операционных систем существует + множество реализаций этой системы. Реализацию кода для + серверной части называют <literal>X-сервером</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="which-X"> + <para>Какие реализации X существуют для &os;?</para> + </question> + + <answer> + <para>Исторически складывалось так, что во &os; в качестве + используемой по умолчанию реализации X выступал пакет + &xfree86;, который поддерживает <ulink + url="http://www.xfree86.org">The XFree86 Project, + Inc.</ulink> Данное программное обеспечение устанавливалось по + умолчанию в версиях &os; до 4.10 и 5.2. Хотя &xorg; поддерживала + в то время свою реализацию, в целом она позиционировалась как + ссылочная платформа, от чего долгие годы значительно + страдала.</para> + + <para>Однако в начале 2004 года несколько разработчиков XFree86 + покинули проект из-за разногласий по поводу темпов внесения + изменений в код, будущего направления развития и личных конфликтов. + Теперь они передают свой код непосредственно в &xorg;. + Одновременно с этим &xorg; обновила своё дерево исходных текстов до + состояния, соответствующего последнему релизу &xfree86; + перед изменением лицензионного соглашения (<application>XFree86 + version 4.3.99.903</application>), включила туда множество + изменений, ранее поддерживаемых отдельно, и выпустила этот набор + как <application>X11R6.7.0</application>. Существует отдельный, + но связанный с этим проект <ulink + url="http://www.freedesktop.org/wiki/">freedesktop.org</ulink> + (для краткости <literal>fd.o</literal>), работающий над + перепроектированием оригинального кода &xfree86;, в котором больше + нагрузки должно лечь на графический адаптер (для улучшения + производительности), и который должен стать более модульным (для + улучшения поддержки и ускорения выпуска + релизов, а также упрощения настройки). &xorg; планирует включить + изменения, разработанные <literal>freedesktop.org</literal>, в + свои будущие релизы.</para> + + <para>С июля 2004 в &os.current; в качестве реализации, используемой + по умолчанию, &xfree86; была заменена на &xorg;. С тех пор + в качестве реализации X11 по умолчанию используется &xorg;.</para> + + <para>Для получения более полной информации прочтите раздел о <ulink + url="&url.books.handbook;/x11.html">X11</ulink> Руководства + &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="xfree86-split"> + <para>Всё же почему разделились два проекта X?</para> + </question> + + <answer> + <para>Ответ на этот вопрос находится вне круга проблем, описываемых + в FAQ. Заметим, что в Internet в архивах различных списков + рассылки хранится объёмная переписка. Для изучения истории этого + вопроса, пожалуйста, воспользуйтесь вашей любимой поисковой + системой, а не задавайте вопросы в списках рассылки &os;. Может + статься, что только непосредственные участники событий будут знать + доподлинно все произошедшее.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="why-choose-xorg"> + <para>Почему для установки по умолчанию во &os; были выбраны + порты &xorg;?</para> + </question> + + <answer> + <para>Разработчики &xorg; заявляют, что их целями является более + частый выпуск релизов и быстрое добавление новых функций. Если + они смогут это осуществить, что их разработка будет весьма + привлекательна. Кроме того, использование их программного + обеспечение продолжает подпадать под условия стандартного для X + лицензионного соглашения, тогда как &xfree86; пользуется несколько + модифицированным её вариантом.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="running-X"> + <para>Я хочу запустить X, как это сделать?</para> + </question> + + <answer> + <para>Если вы планируете установить X на уже работающую систему, то + вам необходимо использовать мета-порт <filename + role="package">x11/xorg</filename>, который построит и установит + все необходимые компоненты, либо установить &xorg; из + пакетов &os;.</para> + + <screen><userinput>&prompt.root; pkg_add -r xorg</userinput></screen> + + <para>Кроме того, установить &xorg; можно из &man.sysinstall.8;, + выбрав <guimenuitem>Configure</guimenuitem>, затем + <guimenuitem>Distributions</guimenuitem>, затем + <guimenuitem>The X.Org Distribution</guimenuitem>.</para> + + <para>После того, как &xorg; был успешно установлен, следуйте + указаниям в разделе <ulink + url="&url.books.handbook;/x-config.html">Конфигурация + X11</ulink> Руководства &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="running-X-securelevels"> + <para>Я <emphasis>попытался</emphasis> запустить X, но получил + сообщение <errorname>KDENABIO failed (Operation not + permitted)</errorname> после ввода команды + <command>startx</command>. Что мне теперь делать?</para> + </question> + + <answer> + <para>Вероятнее всего, в вашей системе установлен повышенный уровень + безопасности (<literal>securelevel</literal>). При повышенном + уровне защиты систему X запустить + невозможно, потому что X требуются права на операции записи в + устройство &man.io.4;. Дополнительную + информацию можно найти на страницах справочной системы по + &man.init.8;.</para> + + <para>Так что вопрос сводится к тому, как вам это обойти, и у вас + здесь есть в основном два варианта: установить значение + <literal>securelevel</literal> обратно в ноль (обычно это делается в + <filename>/etc/rc.conf</filename>) или во время загрузки + запускать &man.xdm.1; (до того, как повышается значение + <literal>securelevel</literal>).</para> + + <para>Обратитесь к <xref linkend="xdm-boot"/> для получения более + полной информации о запуске &man.xdm.1; во время загрузки.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="x-and-moused"> + <para>Почему моя мышь не работает с X?</para> + </question> + + <answer> + <para>Если вы используете &man.syscons.4; (стандартный драйвер + консоли), то можете настроить поддержку указателя мыши во всех + виртуальных экранах. Во избежание конфликтов с X, драйвер + &man.syscons.4; поддерживает виртуальное устройство + <devicename>/dev/sysmouse</devicename>. Все события, получаемые + от реальной мыши, пишутся в устройство &man.sysmouse.4; через + &man.moused.8;. Если вы хотите использовать вашу мышь на одной или + нескольких виртуальных консолях, <emphasis>продолжая</emphasis> + использовать X, посмотрите <xref linkend="moused" + remap="другой раздел"/> и настройте &man.moused.8;.</para> + + <para>Затем отредактируйте <filename>/etc/X11/xorg.conf</filename> + так, чтобы в нём были следующие строки:</para> + + <programlisting>Section "InputDevice" + Option "Protocol" "SysMouse" + Option "Device" "/dev/sysmouse" +.....</programlisting> + + <para>Начиная с версии &xorg; 7.4 раздел + <literal>InputDevice</literal> в файле + <filename>xorg.conf</filename> игнорируется, и вместо него + используется механизм автоматически определяемых устройств. + Чтобы восстановить прежнее поведение, добавьте в раздел + <literal>ServerLayout</literal> или + <literal>ServerFlags</literal> такую строку:</para> + + <programlisting>Option "AutoAddDevices" "false"</programlisting> + + <para>Некоторые предпочитают использовать в X устройство + <devicename>/dev/mouse</devicename>. Чтобы оно работало, файл + устройства <devicename>/dev/mouse</devicename> должен являться + ссылкой на <devicename>/dev/sysmouse</devicename> (посмотрите + справку по &man.sysmouse.4;). Это можно сделать, добавив + следующую строку в <filename>/etc/devfs.conf</filename> + (посмотрите справку по &man.devfs.conf.5;):</para> + + <programlisting>link sysmouse mouse</programlisting> + + <para>Ссылка может быть создана путем перезапуска &man.devfs.5; + с использованием следующей команды (из под пользователя + <username>root</username>):</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="x-and-wheel"> + <para>У моей мыши есть колёсико. Могу ли я его использовать при + работе в X?</para> + </question> + + <answer> + <para>Да.</para> + + <para>Вам нужно указать X, что используется 5-кнопочная мышь. Для + этого просто добавьте строчки <literal>Buttons 5</literal> и + <literal>ZAxisMapping 4 5</literal> в раздел + <quote>InputDevice</quote> файла + <filename>/etc/X11/xorg.conf</filename>. Например, в + вашем файле <filename>/etc/X11/xorg.conf</filename> секция + <quote>InputDevice</quote> может принять такой вид:</para> + + <example> + <title>Секция <quote>InputDevice</quote> для мыши с + колёсиком в файле конфигурации &xorg;</title> + + <programlisting>Section "InputDevice" + Identifier "Mouse1" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/sysmouse" + Option "Buttons" "5" + Option "ZAxisMapping" "4 5" +EndSection</programlisting> + </example> + + <example> + <title>Пример <quote>.emacs</quote> для простой прокрутки страницы + при помощи мыши с колёсиком (опционально)</title> + + <programlisting>;; wheel mouse +(global-set-key [mouse-4] 'scroll-down) +(global-set-key [mouse-5] 'scroll-up)</programlisting> + </example> + </answer> + </qandaentry> + + <qandaentry> + <question id="no-remote-x11"> + <para>Как использовать удалённые X-дисплеи?</para> + </question> + + <answer> + <para>Из соображений обеспечения информационной безопасности + открывать удалённые окна на машине по умолчанию запрещено.</para> + + <para>Для включения этой возможности просто запустите + <application>X</application> с аргументом + <option>-listen_tcp</option>:</para> + + <screen>&prompt.user; <userinput>startx -listen_tcp</userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="virtual-console"> + <para>Что такое виртуальные консоли и как изменить их + количество?</para> + </question> + + <answer> + <para>Виртуальные консоли, упрощённо говоря, позволяют вам иметь + несколько одновременных сеансов работы с той же самой машиной без + установки какой бы то ни было сети или запуска X.</para> + + <para>При запуске системы после вывода сообщений этапа загрузки на + консоль выдаётся приглашение на вход в систему. Вы можете ввести + своё имя и пароль и начать работать (или играть!) на первой + виртуальной консоли.</para> + + <para>В какой-то момент вы можете захотеть запустить ещё одну сеанс, + скажем, чтобы заглянуть в документацию по программе, которую вы + запустили или для для чтения электронной почты во время ожидания + завершения передачи данных по FTP. Просто нажмите <keycombo + action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo> + (удерживая клавишу <keycap>Alt</keycap>, нажмите + <keycap>F2</keycap>) и вы обнаружите приглашение, ждущее вас на + второй <quote>виртуальной консоли</quote>! Когда захотите + вернуться к первоначальному сеансу, нажмите <keycombo + action="simul"><keycap>Alt</keycap> + <keycap>F1</keycap></keycombo>.</para> + + <para>После установки по умолчанию во &os; задействованы восемь + виртуальных консолей, а комбинации клавиш + <keycombo action="simul"><keycap>Alt</keycap> + <keycap>F1</keycap></keycombo>, <keycombo + action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>, + <keycombo action="simul"><keycap>Alt</keycap> + <keycap>F3</keycap></keycombo> и так далее служат для переключения + между ними.</para> + + <para>Чтобы увеличить количество консолей, отредактируйте файл + <filename>/etc/ttys</filename> (посмотрите справку + по &man.ttys.5;), добавив туда записи для терминалов с именами от + <devicename>ttyv8</devicename> до <devicename>ttyvc</devicename> + после слов <quote>Virtual terminals</quote>:</para> + + <programlisting># Edit the existing entry for ttyv8 in /etc/ttys and change +# "off" to "on". +ttyv8 "/usr/libexec/getty Pc" cons25 on secure +ttyv9 "/usr/libexec/getty Pc" cons25 on secure +ttyva "/usr/libexec/getty Pc" cons25 on secure +ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting> + + <para>Используйте из них столько, сколько посчитаете нужным. Чем + больше виртуальных терминалов у вас имеется, тем больше ресурсов + они используют; это может иметь значение, если у вас меньше чем + 8 Мбайт ОЗУ. Вы можете сменить статус консолей с + <literal>secure</literal> на <literal>insecure</literal>.</para> + + <important> + <para>Если вы хотите запустить X, вы <emphasis>должны</emphasis> + оставить для него по крайней мере один неиспользуемый (или + выключенный) виртуальный терминал. Таким образов, если вы хотите + иметь приглашения login на всех двенадцати функциональных клавиши, + то вам не повезло — вы можете это сделать только для одиннадцати + из них, если хотите на этой же машине ещё запустить + X-сервер.</para> + </important> + + <para>Самым простым способом убрать консоль является просто её + выключение. Например, если вы запустили на всех 12 консолях + виртуальные терминалы, как указано выше, и ещё хотите запустить + X, то должны будете изменить параметры двенадцатого виртуального + терминала с:</para> + + <programlisting>ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting> + + <para>на:</para> + + <programlisting>ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting> + + <para>Если на вашей клавиатуре только десять функциональных клавиш, + то последние строки будут выглядеть так:</para> + + <programlisting>ttyv9 "/usr/libexec/getty Pc" cons25 off secure +ttyva "/usr/libexec/getty Pc" cons25 off secure +ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting> + + <para>(Вы также можете просто их удалить.)</para> + + <para>Самым простым (и надёжным) способом активировать виртуальные + консоли является перезагрузка. Однако если вы вовсе не хотите + этого делать, просто остановите X Window System и выполните (как + пользователь <username>root</username>):</para> + + <screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen> + + <para>При этом требуется, чтобы вы полностью закрыли X Window, если + она была запущена, до запуска этой команды. Если вы это не + сделаете, ваша система может повиснуть или заблокироваться после + выполнения команды <command>kill</command>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="vty-from-x"> + <para>Как осуществляется доступ к виртуальным консолям из X?</para> + </question> + + <answer> + <para>Используйте комбинацию клавиш + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>Alt</keycap> + <keycap>F<replaceable>n</replaceable></keycap> + </keycombo> + для переключения обратно в виртуальную консоль. Нажатие + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>Alt</keycap> + <keycap>F1</keycap> + </keycombo> + вернёт вас на первую виртуальную консоль.</para> + + <para>После того, как вы оказались в текстовой консоли, можете использовать, + как обычно, комбинации + <keycombo action="simul"> + <keycap>Alt</keycap> + <keycap>F<replaceable>n</replaceable></keycap> + </keycombo> для переключения между ними.</para> + + <para>Чтобы вернуться в сеанс работы X, вы должны переключиться + в виртуальную консоль, на которой запущена X Window. Если вы + запустили X из командной строки (например, при помощи команды + <command>startx</command>), то сеанс работы X будет привязан + к следующей неиспользуемой виртуальной консоли, а не к той + текстовой консоли, с которой он был запущен. Если у вас + имеется восемь активных виртуальных терминалов, то X будет + работать на девятом, и вам нужно будет воспользоваться комбинацией + <keycombo action="simul"> + <keycap>Alt</keycap> + <keycap>F9</keycap> + </keycombo> + для возврата в X.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="xdm-boot"> + <para>Как запустить <application>XDM</application> во время + загрузки?</para> + </question> + + <answer> + <para>Есть две философские школы, проповедующие различные методы + запуска &man.xdm.1;. Последователи одного течения запускают + <command>xdm</command> из <filename>/etc/ttys</filename> + (посмотрите &man.ttys.5;), используя приводимый пример, тогда + как другие вставляют запуск <command>xdm</command> в скрипт + <filename>rc.local</filename> (посмотрите справку по &man.rc.8;) + или <filename>X</filename>, помещая последний в каталог + <filename class="directory">/usr/local/etc/rc.d</filename>. + Оба метода + равноправны, и один из них может работать в ситуациях, с + которыми не справляется другой и наоборот. В обоих случаях + результат один и тот же: X выводит графическое приглашение + для входа в систему.</para> + + <para>Плюсом метода с использованием &man.ttys.5; является + документирование того, на каком vty будет запущен X и то, + что ответственность за перезапуск X-сервера при завершении + сеанса работы лежит на процессе &man.init.8;. Метод с + использованием &man.rc.8; позволяет просто прекратить работу + xdm командой <command>kill</command> <command>xdm</command>, + если при запуске X возникли какие-нибудь проблемы.</para> + + <para>Из &man.rc.8; <command>xdm</command> должен быть запущен + без аргументов, (то есть как даемон). <command>xdm</command> + должен быть запущен <emphasis>после</emphasis> запуска + &man.getty.8;, иначе они будут конфликтовать, блокируя консоль. + Лучше всего выдержать паузу секунд на 10 и потом запустить + <command>xdm</command>.</para> + + <para>Если <command>xdm</command> запускается из + <filename>/etc/ttys</filename>, то есть вероятность конфликта + между <command>xdm</command> и &man.getty.8;. Одним из способов + избежать этого является добавление номера <literal>vt</literal> в + файл <filename>/usr/local/lib/X11/xdm/Xservers</filename>:</para> + + <programlisting>:0 local /usr/local/bin/X vt4</programlisting> + + <para>В вышеприведённом случае X-серверу указывается работать на + <devicename>/dev/ttyv3</devicename>. Заметьте, что номера + отличаются на единицу. Дело в том, что X-сервер считает vty + от единицы, когда как отсчёт vty в ядре &os; ведётся с нуля.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="xconsole-failure"> + <para>При запуске <command>xconsole</command> выдаётся сообщение + <errorname>Couldn't open console</errorname>.</para> + </question> + + <answer> + <para>Если вы запускаете <application>X</application> с использованием + сценария <application>startx</application>, права на устройство + <devicename>/dev/console</devicename> + <emphasis>не</emphasis> изменяются, поэтому такие программы, как + <application>xterm -C</application> и + <application>xconsole</application>, не будут работать.</para> + + <para>Это зависит от прав доступа, установленных для консоли по умолчанию. + В многопользовательской системе вовсе не нужно, чтобы любой + пользователь мог выводить информацию на системную консоль. Для + пользователей, вошедших в систему через VTY, для решения этой проблемы + существует файл &man.fbtab.5;.</para> + + <para>В общем, раскомментируйте строчку в файле + <filename>/etc/fbtab</filename> (посмотрите справку по + &man.fbtab.5;):</para> + + <programlisting>/dev/ttyv0 0600 /dev/console</programlisting> + + <para>Этого будет достаточно для того, чтобы всякий, кто вошёл + в систему с терминала <devicename>/dev/ttyv0</devicename>, имел доступ к + консоли.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="xfree86-root"> + <para>Раньше я запускал &xfree86;, работая как обычный пользователь, а + теперь при запуске выдается сообщение о том, что я должен быть + пользователем <username>root</username>!</para> + </question> + + <answer> + <para>Все X-серверы должны запускаться пользователем + <username>root</username>, чтобы иметь прямой доступ к вашему + видеооборудованию. Более старые версии &xfree86; + (<= 3.3.6) устанавливали все поставляемые серверы так, что они + автоматически запускались пользователем root (с установленным битом + смены владельца запускаемого процесса). Несомненно, это рискованно, + потому что X-серверы являются большими, сложными программами. Более + новые версии &xfree86; не устанавливают на серверах бит смены + владельца на пользователя <username>root</username> именно по этой + причине.</para> + + <para>Очевидно, что запускать X-сервер, работая как + пользователь <username>root</username>, неправильно и небезопасно. + Есть два способа использовать X, работая как + обычный пользователь. Первый способ заключается в использовании + <application>xdm</application> или другого менеджера дисплеев (к + примеру, <application>kdm</application>); второй способ - в + использовании программы <command>Xwrapper</command>.</para> + + <para><application>xdm</application> представляет собой даемон, + который обрабатывает входы в систему в графическом режиме. Обычно + он запускается во время загрузки и отвечает за аутентификацию + пользователей и запуск их сеансов; практически это графический + аналог программ &man.getty.8; и &man.login.1;. Более подробная + информация о <application>xdm</application> находится в <ulink + url="http://www.xfree86.org/sos/resources.html">документации по + &xfree86;</ulink> и в <link linkend="xdm-boot">соответствующем разделе + FAQ</link>.</para> + + <para><command>Xwrapper</command> является оболочкой для X-сервера; + это маленькая утилита, позволяющая кому-либо запускать X-сервер, и + достаточно безопасная в использовании. Она выполняет некоторую + проверку передаваемых ей в командной строке аргументов, и если всё + в порядке, запускает соответствующий X-сервер. Если по каким-либо + причинам вы не хотите запускать менеджер дисплеев, то эта утилита + вам подойдет. Если у вас установлена полная Коллекция Портов, вы + можете найти этот порт в каталоге + <filename role="package">x11/wrapper</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ps2-x"> + <para>Моя мышь PS/2 в X работает неправильно.</para> + </question> + + <answer> + <para>Вполне может быть, что ваша мышь и её драйвер + рассинхронизировались.</para> + + <para>В редких случаях драйвер может ошибочно обнаруживать проблемы + с синхронизацией, и вы будете видеть такие сообщения ядра:</para> + + <programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting> + + <para>и заметите, что мышь теперь работает неправильно.</para> + + <para>Если это случится, отмените проверку согласования, установив + значение флага для драйвера мыши PS/2 в <literal>0x100</literal>. + Войдите в + конфигуратор <emphasis>UserConfig</emphasis>, задав опцию + <option>-c</option> в приглашении загрузчика:</para> + + <screen>boot: <userinput>-c</userinput></screen> + + <para>Затем в командной строке <emphasis>UserConfig</emphasis> + наберите:</para> + + <screen>UserConfig> <userinput>flags psm0 0x100</userinput> +UserConfig> <userinput>quit</userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="ps2-mousesystems"> + <para>Почему моя мышь PS/2 от MouseSystems не работает?</para> + </question> + + <answer> + <para>Было несколько сообщений, что некоторые модели мышей PS/2 от + MouseSystems работают только в режиме <quote>высокого + разрешения</quote>. В других режимах курсор мыши постоянно + прыгает в верхний левый угол экрана.</para> + + <para>Укажите флаг <literal>0x04</literal> драйверу мыши PS/2 для + перевода её в режим + высокого разрешения. Войдите в <emphasis>UserConfig</emphasis>, + задав опцию <option>-c</option> в приглашении загрузчика:</para> + + <screen>boot: <userinput>-c</userinput></screen> + + <para>Затем в командной строке <emphasis>UserConfig</emphasis> + наберите:</para> + + <screen>UserConfig> <userinput>flags psm0 0x04</userinput> +UserConfig> <userinput>quit</userinput></screen> + + <para>В предыдущем разделе описана возможная причина проблем с + мышью.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="mouse-button-reverse"> + <para>Как поменять местами кнопки мыши?</para> + </question> + + <answer> + <para>Поместите команду <command>xmodmap + -e "pointer = 3 2 1"</command> в один из ваших скриптов + <filename>.xinitrc</filename> или + <filename>.xsession</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="install-splash"> + <para>Как установить экранную заставку и где такие заставки можно + найти?</para> + </question> + + <answer> + <para>Подробный ответ находится в разделе <ulink + url="&url.books.handbook;/boot-blocks.html#BOOT-SPLASH">Загрузочные + экранные заставки</ulink> Руководства &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="windows-keys"> + <para>Можно ли в X использовать клавиши <keycap>Windows</keycap>, + которые есть на клавиатуре?</para> + </question> + + <answer> + <para>Да. Всё, что вам нужно сделать, это с помощью &man.xmodmap.1; + задать функции, которые вы хотите к этим клавишам привязать.</para> + + <para>Положим, что все клавиатуры <quote>Windows</quote> стандартны и + эти три клавиши имеют следующие клавиатурные коды:</para> + + <itemizedlist> + <listitem> + <para><keycode>115</keycode> — клавиша + <keycap>Windows</keycap> между клавишами <keycap>Ctrl</keycap> + и <keycap>Alt</keycap> с левой стороны</para> + </listitem> + + <listitem> + <para><keycode>116</keycode> — клавиша + <keycap>Windows</keycap> справа от клавиши + <keycap>AltGr</keycap></para> + </listitem> + + <listitem> + <para><keycode>117</keycode> — клавиша + <keycap>Menu</keycap>, слева от клавиши + <keycap>Ctrl</keycap>, находящейся справа</para> + </listitem> + </itemizedlist> + + <para>Чтобы заставить левую клавишу <keycap>Windows</keycap> + набирать запятую, попробуйте выполнить такую команду:</para> + + <screen>&prompt.root; <userinput>xmodmap -e "keycode 115 = comma"</userinput></screen> + + <para>Чтобы увидеть результат, вам нужно будет перезапустить ваш + оконный менеджер.</para> + + <para>Для того, чтобы переопределения клавиш + <keycap>Windows</keycap> выполнялось автоматически + каждый раз при запуске X, можно поместить вызов команд + <command>xmodmap</command> в ваш <filename>~/.xinitrc</filename> + либо, что предпочтительней, создать файл + <filename>~/.xmodmaprc</filename> и включить в него параметры + для <command>xmodmap</command>, по одному на строку, и добавить + в <filename>~/.xinitrc</filename> такую строку:</para> + + <programlisting>xmodmap $HOME/.xmodmaprc</programlisting> + + <para>Например, вы можете переопределить эти 3 клавиши так, чтобы они + выполняли функции клавиш <keycap>F13</keycap>, <keycap>F14</keycap> + и <keycap>F15</keycap> соответственно. Это позволит + легко привязать их к полезным функциям в приложениях или вашем + менеджере окон, как будет показано далее.</para> + + <para>Чтобы сделать это, поместите в файл + <filename>~/.xmodmaprc</filename> вот такие строки:</para> + + <programlisting>keycode 115 = F13 +keycode 116 = F14 +keycode 117 = F15</programlisting> + + <para>Если, к примеру, вы используете порт + <filename role="package">x11-wm/fvwm2</filename>, то + можете переопределить клавиши таким образом, что + <keycap>F13</keycap> сворачивает в иконку (или восстанавливает + предыдущие размеры) окна, на которое указывает курсор, + <keycap>F14</keycap> перемещает окно с курсором на передний план + или, если оно уже впереди, возвращает обратно, а + <keycap>F15</keycap> вызывает главное меню приложения + Workplace, даже если курсор находится не на рабочем + столе, что бывает полезно, если нет + ни одного видимого кусочка рабочего стола (к тому же логотип на + клавише соответствует этой функции).</para> + + <para>Вот строки из <filename>~/.fvwmrc</filename>, с помощью которых + достигаются описанные выше функции:</para> + + <programlisting>Key F13 FTIWS A Iconify +Key F14 FTIWS A RaiseLower +Key F15 A A Menu Workplace Nop</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="x-3d-acceleration"> + <para>Как заставить работать аппаратное ускорение 3D-графики для + &opengl;?</para> + </question> + + <answer> + <para>Наличие 3D-ускорения зависит от версии используемого вами + сервера &xorg; и типа графического адаптера. Если у + вас адаптер nVidia, то вы можете использовать бинарные файлы + драйверов для &os;, установив один из следующих портов:</para> + + <itemizedlist> + <listitem> + <para>Последние версии адаптеров nVidia поддерживаются + портом <filename + role="package">x11/nvidia-driver</filename>.</para> + </listitem> + <listitem> + <para>Адаптеры nVidia, такие как GeForce2 MX/3/4, + поддерживаются драйверами серии 96XX, доступными в + порте <filename + role="package">x11/nvidia-driver-96xx</filename>.</para> + </listitem> + <listitem> + <para>Более старые адаптеры, такие как GeForce and + RIVA TNT, поддерживаются драйверами серии 71XX, + доступными в порте <filename + role="package">x11/nvidia-driver-71xx</filename>.</para> + </listitem> + </itemizedlist> + + <para>nVidia предоставляет подробную информацию о том, какие + адаптеры поддерживаются тем или иным драйвером. Эта + информация доступна непосредственно с их сайта: <ulink + url="http://www.nvidia.com/object/IO_32667.html"></ulink>.</para> + + <para>Для адаптеров Matrox G200/G400 вам следует + попробовать порт <filename + role="package">x11-servers/mga_hal</filename>.</para> + + <para>Для ATI Rage 128 и Radeon посмотрите страницы + Справочника &man.ati.4x;, &man.r128.4x; и &man.radeon.4x;.</para> + + <para>Для адаптеров 3dfx Voodoo 3, 4, 5, и Banshee есть + порт <filename + role="package">x11-servers/driglide</filename>.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="networking"> + <title>Работа в сети</title> + + <qandaset> + <qandaentry> + <question id="diskless-booting"> + <para>Где можно найти информацию о <quote>бездисковой + загрузке</quote>?</para> + </question> + + <answer> + <para><quote>Бездисковая загрузка</quote> означает, что машина + с &os; загружается по сети и читает необходимые файлы с + сервера, а не со своего диска. Подробное описание есть в + <ulink url="&url.books.handbook;/network-diskless.html"> + соответствующей главе</ulink> Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="router"> + <para>Может ли машина с &os; использоваться как + маршрутизатор?</para> + </question> + + <answer> + <para>Да. Пожалуйста, обратитесь к разделу Руководства, + посвящённому <ulink + url="&url.books.handbook;/advanced-networking.html">сложным + вопросам работы в сети</ulink>, особенно в той части, что + касается <ulink + url="&url.books.handbook;/network-routing.html">маршрутизации + и маршрутизаторов</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="win95-connection"> + <para>Можно ли подключить машину с &windows; к Internet с помощью + &os;?</para> + </question> + + <answer> + <para>Как правило, те, кто задают такие вопросы, имеют дома + два компьютера, один с &os;, а другой с какой-то версией + &windows;. Идея состоит в использовании &os; для + подключения к Internet, а затем осуществлять выход в Internet + из &windows; через &os;. На самом деле это просто частный + случай предыдущего вопроса, который хорошо отработан.</para> + + <para>Если для подключения к Internet вы используете + коммутируемое соединение, то &man.ppp.8; режима + пользователя имеет параметр <option>-nat</option>. Если вы + запустите &man.ppp.8; с параметром <option>-nat</option>, + установив в файле <filename>/etc/rc.conf</filename> переменную + <literal>gateway_enable</literal> в значение + <emphasis>YES</emphasis> и правильно настроите машину с + &windows;, то всё должно прекрасно заработать. Для получения + дополнительной информации, пожалуйста, обратитесь к страницам + справочной системы по команде &man.ppp.8; или <ulink + url="&url.books.handbook;/userppp.html"> + разделу Руководства о PPP режима пользователя</ulink>.</para> + + <para>Если вы используете PPP режима ядра, или у вас + Ethernet-подключение к Internet, то нужно использовать + &man.natd.8;. Пожалуйста, обратитесь к разделу о <ulink + url="&url.books.handbook;/network-natd.html">natd</ulink> + Руководства для получения вводной информации.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="slip-ppp-support"> + <para>Поддерживает ли &os; протоколы SLIP и PPP?</para> + </question> + + <answer> + <para>Да. Обратитесь к страницам справочника по командам + &man.slattach.8;, &man.sliplogin.8;, &man.ppp.8;, и &man.pppd.8;. + &man.ppp.8; и &man.pppd.8; могут обслуживать как входящие, так и + исходящие соединения, когда как &man.sliplogin.8; имеет дело + исключительно со входящими соединениям, а &man.slattach.8; только + с исходящими.</para> + + <para>Более подробная информация об их использовании находится в + <ulink url="&url.books.handbook;/ppp-and-slip.html">разделе + Руководства о протоколах PPP и SLIP</ulink>.</para> + + <para>Если вы имеете доступ в Internet только через командную строку + оболочки, вам может подойти пакадж <filename + role="package">net/slirp</filename>. + С его помощью можно получить (ограниченный) доступ к таким + службам, как FTP и http прямо с вашей машины.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="natd"> + <para>Поддерживает ли &os; технологию NAT или Masquerading?</para> + </question> + + <answer> + <para>Да. Если вы собираетесь использовать NAT с пользовательским + соединением PPP, пожалуйста, обратитесь к <ulink + url="&url.books.handbook;/userppp.html">разделу Руководства о + пользовательском PPP</ulink>. Если же вы хотите использовать NAT + вместе с другим типом сетевого подключения, пожалуйста, взгляните + на раздел о <ulink url="&url.books.handbook;/network-natd.html"> + natd</ulink> Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="parallel-connect"> + <para>Как я могу соединить две &os; системы с помощью + параллельного соединения, используя PLIP?</para> + </question> + + <answer> + <para>Пожалуйста, обратитесь к разделу Руководства о <ulink + url="&url.books.handbook;/network-plip.html">PLIP</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ethernet-aliases"> + <para>Как настроить алиас в сети Ethernet?</para> + </question> + + <answer> + <para>Если алиас находится в той же самой сети, что и уже + настроенный на интерфейсе адрес, то к команде для + &man.ifconfig.8; допишите <literal>netmask 0xffffffff</literal> + примерно следующим образом:</para> + + <screen>&prompt.root; <userinput>ifconfig <replaceable>ed0</replaceable> alias <replaceable>192.0.2.2</replaceable> netmask 0xffffffff</userinput></screen> + + <para>В противном случае просто задайте сетевой адрес и маску + обычным образом:</para> + + <screen>&prompt.root; <userinput>ifconfig <replaceable>ed0</replaceable> alias <replaceable>172.16.141.5</replaceable> netmask 0xffffff00</userinput></screen> + + <para>Для получения подробной информации обращайтесь к <ulink + url="&url.books.handbook;/configtuning-virtual-hosts.html">Руководству</ulink> + &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="port-3c503"> + <para>Как заставить адаптер 3C503 использовать другой тип сетевого + разъёма?</para> + </question> + + <answer> + <para>Если вы хотите задействовать другой разъём, то должны указать + дополнительный параметр при вызове команды &man.ifconfig.8;. + Разъёмом по умолчанию является <literal>link0</literal>. Чтобы + задействовать разъём AUI, а не BNC, используйте <literal>link2</literal>. + Эти флаги должны быть указаны с помощью переменных ifconfig_* + в файле <filename>/etc/rc.conf</filename> (посмотрите справку по + &man.rc.conf.5;).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="nfs"> + <para>У меня проблемы при работе NFS во &os;.</para> + </question> + + <answer> + <para>Некоторые сетевые адаптеры работают (мягко говоря) хуже, чем + другие, что может иногда вызывать проблемы при работе приложений + типа NFS, интенсивно использующих сеть.</para> + + <para>Подробности описаны в <ulink + url="&url.books.handbook;/network-nfs.html"> + соответствующей главе</ulink> Руководства, посвящённой NFS.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="nfs-linux"> + <para>Почему я не могу смонтировать диск &linux; по NFS?</para> + </question> + + <answer> + <para>Некоторые версии NFS для &linux; поддерживают запросы на + монтирование только с привилегированного порта; попробуйте + выполнить следующую команду:</para> + + <screen>&prompt.root; <userinput>mount -o -P <replaceable>linuxbox:/blah</replaceable> <replaceable>/mnt</replaceable></userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="nfs-sun"> + <para>Почему я не могу смонтировать диск &sun; по NFS?</para> + </question> + + <answer> + <para>Рабочие станции &sun; под управлением + &sunos; 4.<replaceable>X</replaceable> поддерживают + запросы на монтирование только с привилегированного порта; + попробуйте следующую команду:</para> + + <screen>&prompt.root; <userinput>mount -o -P <replaceable>sunbox:/blah</replaceable> <replaceable>/mnt</replaceable></userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="exports-errors"> + <para>Почему <command>mountd</command> продолжает выдавать сообщения + <errorname>can't change attributes</errorname> и <errorname>bad + exports list</errorname> на моём сервере NFS, работающем под + управлением &os;?</para> + </question> + + <answer> + <para>В большинстве случаев проблема заключается в недостаточном + понимании корректного формата файла + <filename>/etc/exports</filename>. Пожалуйста, просмотрите ещё раз + справочную информацию по &man.exports.5; и раздел об <ulink + url="&url.books.handbook;/network-nfs.html">NFS</ulink> в Руководстве, + особенно в части <ulink + url="&url.books.handbook;/network-nfs.html#CONFIGURING-NFS">настройки + NFS</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-nextstep"> + <para>Проблемы при связи по PPP с машинами NeXTStep.</para> + </question> + + <answer> + <para>Попробуйте отменить все расширения TCP в файле + <filename>/etc/rc.conf</filename> (посмотрите справку + по &man.rc.conf.5;), изменив значение следующей переменной + в <literal>NO</literal>:</para> + + <programlisting>tcp_extensions=NO</programlisting> + + <para>Маршрутизаторы Annex фирмы Xylogic не работают по этой же + причине, поэтому при подключении к ним вам нужно проделать то же + самое.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ip-multicast"> + <para>Как включить поддержку multicast IP?</para> + </question> + + <answer> + <para>По умолчанию &os; поддерживает работу с многоадресного + сетевого вещания. Если вы хотите использовать ваш компьютер как + маршрутизатор многоадресного трафика, вам нужно перекомпилировать + ядро с включенной опцией <literal>MROUTING</literal> и запустить + &man.mrouted.8;. Во &os; во время загрузки будет запускаться + &man.mrouted.8;, если переменная <literal>mrouted_enable</literal> + в файле <filename>/etc/rc.conf</filename> установлена в + значение <literal>YES</literal>.</para> + + <note> + <para>В последних версиях &os; даемон маршрутизации multicast + &man.mrouted.8; и утилиты &man.map-mbone.8; и &man.mrinfo.8; + удалены из состава основной системы. Эти программы теперь + доступны из Коллекции Портов &os; в виде порта <filename + role="package">net/mrouted</filename>.</para> + </note> + + <para>Приложения MBONE находятся в собственной категории портов, + <ulink url="http://www.FreeBSD.org/ports/mbone.html">mbone</ulink>. + Если вы ищете приложения для организации конференций + <command>vic</command> и <command>vat</command>, посмотрите + там!</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="dec-pci-chipset"> + <para>Какие сетевые адаптеры сделаны на наборе микросхем DEC PCI?</para> + </question> + + <answer> + <para>Вот список, составленный + Гленом Фостером (Glen Foster) <email>gfoster@driver.nsta.org</email>, + с некоторыми незначительными добавлениями:</para> + + <table> + <title>Сетевые карты созданные на основе наборе микросхем + DEC PCI</title> + + <tgroup cols="2"> + <thead> + <row> + <entry>Производитель</entry> + <entry>Модель</entry> + </row> + </thead> + + <tbody> + <row> + <entry>ASUS</entry> + <entry>PCI-L101-TB</entry> + </row> + + <row> + <entry>Accton</entry> + <entry>ENI1203</entry> + </row> + + <row> + <entry>Cogent</entry> + <entry>EM960PCI</entry> + </row> + + <row> + <entry>Compex</entry> + <entry>ENET32-PCI</entry> + </row> + + <row> + <entry>D-Link</entry> + <entry>DE-530</entry> + </row> + + <row> + <entry>Dayna</entry> + <entry>DP1203, DP2100</entry> + </row> + + <row> + <entry>DEC</entry> + <entry>DE435, DE450</entry> + </row> + + <row> + <entry>Danpex</entry> + <entry>EN-9400P3</entry> + </row> + + <row> + <entry>JCIS</entry> + <entry>Condor JC1260</entry> + </row> + + <row> + <entry>Linksys</entry> + <entry>EtherPCI</entry> + </row> + + <row> + <entry>Mylex</entry> + <entry>LNP101</entry> + </row> + + <row> + <entry>SMC</entry> + <entry>EtherPower 10/100 (Модель 9332)</entry> + </row> + + <row> + <entry>SMC</entry> + <entry>EtherPower (Модель 8432)</entry> + </row> + + <row> + <entry>TopWare</entry> + <entry>TE-3500P</entry> + </row> + + <row> + <entry>Znyx (2.2.x)</entry> + <entry>ZX312, ZX314, ZX342, ZX345, ZX346, ZX348</entry> + </row> + + <row> + <entry>Znyx (3.x)</entry> + <entry>ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444, + ZX474, ZX478, ZX212, ZX214 (10mbps/hd)</entry> + </row> + </tbody> + </tgroup> + </table> + </answer> + </qandaentry> + + <qandaentry> + <question id="fqdn-hosts"> + <para>Почему я должен использовать FQDN для хостов не в моей + сети?</para> + </question> + + <answer> + <para>За ответом на этот вопрос обращайтесь к <ulink + url="&url.books.handbook;/mail-trouble.html">Руководству</ulink> + &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="network-permission-denied"> + <para><errorname>Permission denied</errorname> для любых действий, + связанных с работой сети.</para> + </question> + + <answer> + <para>Если вы компилировали ядро с опцией + <literal>IPFIREWALL</literal>, имейте в виду, что политикой по + умолчанию является запрет прохождения + всех пакетов, которые явно не разрешены.</para> + + <para>Если вы случайно неверно отконфигурировали межсетевой экран, + то для восстановления работоспособность сети дайте такую команду, + войдя суперпользователем:</para> + + <screen>&prompt.root; <userinput>ipfw add 65534 allow all from any to any</userinput></screen> + + <para>Также вы можете задать + <literal>firewall_type='open'</literal> в + файле <filename>/etc/rc.conf</filename>.</para> + + <para>Более подробная информация о конфигурировании межсетевого + экрана в &os; находится в <ulink + url="&url.books.handbook;/firewalls.html">соответствующей + главе</ulink> Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ipfw-fwd"> + <para>Почему моё правило <quote>fwd</quote> для + <command>ipfw</command> по перенаправлению сервиса на другую + машину не работает?</para> + </question> + + <answer> + <para>Возможно, потому что вы хотите выполнять трансляцию сетевых + адресов (NAT), а не просто перенаправлять пакеты. Правило + <quote>fwd</quote> делает точно то, что означает; оно + перенаправляет пакеты. Данные внутри пакета оно не меняет. Пусть, + скажем, у нас имеется правило такого вида:</para> + + <screen>01000 fwd <replaceable>10.0.0.1</replaceable> from any to <replaceable>foo 21</replaceable></screen> + + <para>Когда пакет с адресом назначения <replaceable>foo</replaceable> + достигает машины с этим правилом, то он перенаправляется на + <replaceable>10.0.0.1</replaceable>, но в нём остаётся адрес + назначения <replaceable>foo</replaceable>! Адрес назначения + пакета <emphasis>не</emphasis> меняется на + <replaceable>10.0.0.1</replaceable>. Большинство машин, скорее + всего, отбросят полученный пакет, имеющий адрес назначения, им не + соответствующий. Таким образом, правило <quote>fwd</quote> не + часто работает так, как ожидает пользователь. Такое поведение + является особенностью, а не ошибкой.</para> + + <para>Обратитесь к <link linkend="service-redirect">FAQ о + перенаправлении сервисов</link>, руководству по &man.natd.8; или + одной из нескольких утилит для перенаправления из <ulink + url="&url.base;/ports/index.html">Коллекции Портов</ulink> для + того, чтобы сделать это правильно.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="service-redirect"> + <para>Как можно перенаправить запросы с одной машины на другую?</para> + </question> + + <answer> + <para>Вы можете перенаправить запрос на FTP (или другой сервис) с + помощью порта <filename role="package">sysutils/socket</filename>. + Просто замените командную строку запуска сервиса на вызов + <command>socket</command>:</para> + + <programlisting>ftp stream tcp nowait nobody /usr/local/bin/socket socket <replaceable>ftp.example.com</replaceable> <replaceable>ftp</replaceable></programlisting> + + <para>где <replaceable>ftp.example.com</replaceable> и + <replaceable>ftp</replaceable> являются соответственно хостом и + портом для перенаправления.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="bandwidth-mgr-tool"> + <para>Где можно найти средства управления сетевым трафиком?</para> + </question> + + <answer> + <para>Для &os; имеются три средства управления трафиком. + &man.dummynet.4; интегрирован в систему &os; как составная + часть &man.ipfw.4;. <ulink + url="http://www.sonycsl.co.jp/person/kjc/programs.html"> + ALTQ</ulink> включен во &os; как составная часть &man.pf.4;. + Bandwidth Manager компании <ulink + url="http://www.etinc.com/">Emerging Technologies</ulink> + является коммерческим продуктом.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="bpf-not-configured"> + <para>Почему появляются сообщения + <errorname>/dev/bpf0: device not configured</errorname>?</para> + </question> + + <answer> + <para>Вы запускаете программу, которой требуется Berkeley Packet + Filter (&man.bpf.4;), однако его нет в вашем ядре. + Перекомпилируйте ядро, добавив в его конфигурационный файл + следующую строку:</para> + + <programlisting>device bpf # Berkeley Packet Filter</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="mount-smb-share"> + <para>Как смонтировать диск &windows;-машины в моей локальной сети, + как это делает smbmount в &linux;?</para> + </question> + + <answer> + <para>Используйте пакет <application>SMBFS</application>. В него + включён набор изменений в ядре и пользовательские программы. + Программы и информация доступны как &man.mount.smbfs.8; и + входят в состав базовой системы.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="icmp-response-bw-limit"> + <para>Что значат эти сообщения: <errorname>Limiting icmp/open + port/closed port response</errorname> в моих журнальных + файлах?</para> + </question> + + <answer> + <para>Это ядро сообщает вам, что имела место некоторая активность, + приводящая к посылке большего количества ответных пакетов ICMP или + сбросов TCP (RST), чем, как предполагается, это следует делать. + Ответы ICMP часто генерируются в результате попыток подключения к + незанятым портам UDP. Сбросы TCP генерируются в результате попыток + подключения к закрытым портам TCP. Кроме всяких прочих, такие + сообщения могут быть вызваны следующими действиями:</para> + + <itemizedlist> + <listitem> + <para>Лобовая атака типа отказ в обслуживании DoS (в отличие от + атак в один пакет, которые используют конкретную брешь в + защите).</para> + </listitem> + + <listitem> + <para>Сканирование портов в попытке осуществить подключение к + большому количеству портов (в отличие от проб нескольких + известных портов).</para> + </listitem> + </itemizedlist> + + <para>Первое число в сообщении указывает вам, какое количество пакетов + ядро посылало бы при отсутствии ограничений, а второе число + указывает лимит. Вы можете управлять этим ограничением при помощи + системной переменной <varname>net.inet.icmp.icmplim</varname> + приводимым ниже способом, где <literal>300</literal> является + ограничением на количество посылаемых пакетов в секунду:</para> + + <screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim=300</userinput></screen> + + <para>Если вы не хотите видеть подобные сообщения в журнальных + файлах, но хотите использовать это ограничение в ядре, то можете + использовать системную переменную + <varname>net.inet.icmp.icmplim_output</varname> для подавления + вывода, как это показано здесь:</para> + + <screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim_output=0</userinput></screen> + + <para>И наконец, если вы хотите выключить это ограничение, то можете + установить значение системной переменной + <varname>net.inet.icmp.icmplim</varname> (смотрите пример выше) + равным <literal>0</literal>. Выключение этого лимита не + приветствуется по причинам, перечисленным выше.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="unknown-hw-addr-format"> + <para>Что это за сообщения <errorname>arp: unknown hardware + address format</errorname>?</para> + </question> + + <answer> + <para>Это означает, что какое-то устройство в вашей локальной сети + использует MAC-адрес в формате, не распознаваемом &os;. Скорее + всего, это происходит из-за того, что кто-то в сети + экспериментирует с сетевым адаптером. Чаще всего это происходит + в сетях с кабельными модемами. Это безобидно и не должно влиять на + производительность машины с &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="arp-wrong-iface"> + <para>Почему я постоянно вижу сообщения вида + <errorname>192.168.0.10 is on fxp1 but got reply from + 00:15:17:67:cf:82 on rl0</errorname> и как мне их + отключить?</para> + </question> + + <answer> + <para>Это так, потому что пакет приходит извне сети, чего + не должно быть. Чтобы отключить эти сообщения, установите + <varname>net.link.ether.inet.log_arp_wrong_iface</varname> + в значение <literal>0</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cvsup-missing-libs"> + <para>Я только что установил <application>CVSup</application>, + но при попытке его запустить + получил сообщения об ошибках. Что не так?</para> + </question> + + <answer> + <para>Сначала посмотрите, есть ли среди получаемых вами сообщений + то, что показано ниже.</para> + + <programlisting>/usr/libexec/ld-elf.so.1: Shared object "libXaw.so.6" not found</programlisting> + + <para>Ошибки, подобные этой, возникают при установке порта + <filename role="package">net/cvsup</filename> на машину без + пакета <application>&xorg;</application>. Если вы хотите + использовать <acronym>GUI</acronym>, имеющийся в + <application>CVSup</application>, то вам нужно теперь установить + <application>&xorg;</application>. Либо, если вы хотите + использовать <application>CVSup</application> только из командной + строки, то вы должны удалить ранее установленный пакадж. Затем + установите порт <filename + role="package">net/cvsup-without-gui</filename> или <filename + role="package">net/csup</filename>. Если у вас установлена одна + из последних версий &os;, то вы можете использовать &man.csup.1;. + Более подробно это описано в <ulink + url="&url.books.handbook;/cvsup.html">разделе о CVSup</ulink> + Руководства.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="security"> + <title>Безопасность</title> + + <qandaset> + <qandaentry> + <question id="sandbox"> + <para>Что означает термин sandbox (песочница)?</para> + </question> + + <answer> + <para><quote>Sandbox</quote> - это термин, используемый при + обеспечении безопасности. Он имеет два значения:</para> + + <itemizedlist> + <listitem> + <para>Процесс, помещённый внутрь некоторых виртуальных стен, + которые предназначены для того, чтобы предотвратить взлом всей + системы в результате взлома этого конкретного процесса.</para> + + <para>Говорится, что процесс может <quote>играть</quote> в + границах этих стен. Что бы этот процесс ни делал, он эти стены + разрушить не может, поэтому вам не нужен его особый аудит, + чтобы с уверенностью сказать, насколько его работа безопасна + для системы.</para> + + <para>Стеной может служить, например, идентификатор пользователя. + Вот определение, даваемое на страницах справочной системы + &man.security.7; и &man.named.8;.</para> + + <para>Рассмотрим, например, службу <literal>ntalk</literal> + (смотрите &man.inetd.8;). Раньше эта + служба запускалась с идентификатором пользователя + <username>root</username>, а сейчас — <username>tty</username>. + Пользователь <username>tty</username> — это та песочница, + которая осложняет взлом системы через <literal>ntalk</literal> + посредством использования этого идентификатора + пользователя.</para> + </listitem> + + <listitem> + <para>Процесс, помещённый внутрь симулируемой машины. Это даёт + больший уровень безопасности. В общем это означает, что + некто, взломавший процесс, может думать, что может сломать и + систему в целом, однако фактически может сломать только + симулятор этой машины и не может модифицировать никаких + реальных данных.</para> + + <para>Самым распространённым способом достигнуть такого + результата является построение имитирующего окружения в + каталоге и затем запуск процессов в этом каталоге через + chroot (т.е. задав этот каталог в качестве + <filename class="directory">/</filename> для этого процесса, + а не реальный <filename class="directory">/</filename> всей + системы).</para> + + <para>Другим часто используемым методом является монтирование + низлежащей файловой системы в режиме "только для чтения" и + затем создание уровня файловой системы поверх неё, что даёт + процессу видимость доступа по записи на ту файловую систему. + Процесс будет полагать, что может записывать в те файлы, но + это будет единственный процесс, который увидит результат + — другие процессы не будут этого делать ни в коем + случае.</para> + + <para>Попытка сделать такой тип песочницы настолько прозрачна, что + пользователь (или взломщик) даже не поймёт, что он в ней + находится.</para> + </listitem> + </itemizedlist> + + <para>В &unix; реализованы два типа <quote>песочниц</quote>. Один на + уровне процесса, и один на уровне идентификаторов + пользователей.</para> + + <para>Каждый процесс в &unix; полностью защищён от других процессов. + Никакой процесс не может модифицировать адресное пространство + другого процесса. Это отличается от &windows;, где процесс может + легко записать что-либо в адресное пространство другого процесса, + что приводит к аварийным ситуациям.</para> + + <para>В &unix; каждым процессом владеет некоторый идентификатор + пользователя. Если этот пользователь не + <username>root</username>, он ограждает процесс от других, + владельцами которых являются другие пользователи. Этот + идентификатор используется также для защиты данных на диске.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="securelevel"> + <para>Что такое уровень защиты (securelevel)?</para> + </question> + + <answer> + <para>Уровень защиты является механизмом обеспечения безопасности, + реализованным в ядре. В общем, когда уровень защиты больше нуля, + ядро ограничивает выполнение некоторых операций; даже + администратору (то есть пользователю <username>root</username>) + запрещается их выполнять. На момент написания этого текста + механизм уровня защиты может, кроме всего прочего, ограничивать + возможности по:</para> + + <itemizedlist> + <listitem> + <para>снятию некоторых флагов с файлов, таких, как + <literal>schg</literal> (системный флаг неизменяемости),</para> + </listitem> + + <listitem> + <para>записи в память ядра через устройства + <devicename>/dev/mem</devicename> и + <devicename>/dev/kmem</devicename>,</para> + </listitem> + + <listitem> + <para>загрузке модулей ядра и</para> + </listitem> + + <listitem> + <para>изменению правил сетевого экрана.</para> + </listitem> + </itemizedlist> + + <para>Для выяснения состояния уровня защиты в работающей системе + просто выполните следующую команду:</para> + + <screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen> + + <para>Результат будет содержать название &man.sysctl.8;-переменной (в + нашем случае это <varname>kern.securelevel</varname>) и число. + Последнее и является текущим значением уровня защиты. Если оно + положительно (то есть больше нуля), то по крайней мере некоторые + из защит этого механизма включены.</para> + + <para>Вы не можете понизить уровень защиты работающей системы; + возможность сделать это противоречит назначению этого механизма. + Если вам нужно выполнить работу, которая требует не положительный + уровень защиты (к примеру, выполнение + <maketarget>installworld</maketarget> или смена даты), + вам потребуется изменить настройки уровня защиты системы в файле + <filename>/etc/rc.conf</filename> (вам нужно обратить внимание на + переменные <varname>kern_securelevel</varname> и + <varname>kern_securelevel_enable</varname>) и перезагрузить + систему.</para> + + <para>Более подробная информация об уровнях защиты и о том, какие + специфические действия выполняют все уровни, может быть найдена на + справочных страницах о &man.init.8;.</para> + + <warning> + <para>Уровень защиты не является панацеей; в нём есть много + недостатков. Зачастую он даёт обманчивое чувство + безопасности.</para> + + <para>Одной из самых больших проблем является то, что для его + эффективной работы все файлы, используемые в процессе загрузки, + должны быть защищены. Если атакующий сможет заставить систему + выполнять свой код до установки уровня защиты (что происходит + достаточно поздно во время процесса загрузки, так как некоторые + вещи, выполняемые системой в это время, не могут быть сделаны при + повышенном уровне защиты), то эта защита может быть отключена. + Хотя такая задача по защите всех файлов, используемых в процессе + загрузки, технически вполне осуществима, если это будет сделано, + то поддержка системы станет кошмаром, так как для изменения + конфигурационного файла придётся останавливать систему, + переводя её по крайней мере в однопользовательский режим.</para> + + <para>Это обстоятельство, а также ряд других, часто обсуждаются в + списках рассылки, в частности, во &a.security;. Пожалуйста, + поищите в <ulink url="&url.base;/search/index.html"> + архивах</ulink> более подробное обсуждение. Некоторые надеются, + что механизм уровней защиты вскоре отомрёт, а на его смену придёт + более гибкий механизм, но пока всё это туманно.</para> + + <para>Считайте себя предупреждёнными.</para> + </warning> + </answer> + </qandaentry> + + <qandaentry> + <question id="extra-named-port"> + <para>BIND (<command>named</command>) работает на + одном из портов с большим номером. Что происходит?</para> + </question> + + <answer> + <para>Для исходящих запросов BIND использует случайно + выбираемый порт с большим номером. В последних версиях + при каждом запросе выбирается новый случайный порт UDP. + Это может вызвать проблемы в некоторых сетевых конфигурациях, + особенно если фаервол блокирует входящие UDP пакеты на + определенных портах. Если вы хотите обеспечить хождение + пакетов через фаервол, то вы можете попробовать параметры + <literal>avoid-v4-udp-ports</literal> и + <literal>avoid-v6-udp-ports</literal>, чтобы предотвратить + случайный выбор номеров портов, пересекающихся с блокируемым + диапазоном.</para> + + <warning> + <para>Если в <filename>/etc/namedb/named.conf</filename> + указан номер порта (такой как 53) в параметре + <literal>query-source</literal> или + <literal>query-source-v6</literal>, то случайный + выбор порта использоваться не будет. Настоятельно + рекомендуется, чтобы эти параметры не использовались для + указания фиксированных номеров порта.</para> + </warning> + + <para>Кстати, поздравляем. Прекрасно, что вы читаете вывод команды + &man.sockstat.1; и обращаете внимание на аномалии!</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="sendmail-port-587"> + <para>Даемон <application>sendmail</application> ждёт соединений как + на стандартном порту 25, так и на + порту 587! Что происходит?</para> + </question> + + <answer> + <para>Последние версии <application>sendmail</application> + поддерживают + механизм посылки почты, который работает по порту 587. Эта + возможность пока широко не используется, но ее популярность + растет.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="toor-account"> + <para>Что это за пользователь <username>toor</username> с UID 0? Я + подвергся взлому?</para> + </question> + + <answer> + <para>Не волнуйтесь, <username>toor</username> является + <quote>альтернативным</quote> административным пользователем + (toor - это root, записанный задом наперед). Раньше он создавался + при установке командного интерпретатора &man.bash.1;, однако + теперь он создается по умолчанию. Его предполагается использовать + с нестандартным командным интерпретатором, так чтобы вам не нужно + было менять используемый по умолчанию командный процессор для + пользователя <username>root</username>. Это важно, так как + оболочки, не являющиеся частью дистрибутива системы (например, + командный процессор, устанавливаемый из портов или пакаджей), + скорее всего, устанавливаются в каталог <filename + class="directory">/usr/local/bin</filename>, который по + умолчанию располагается в другой файловой системе. Если + командный процессор для пользователя <username>root</username> + располагается в <filename + class="directory">/usr/local/bin</filename>, и <filename + class="directory">/usr</filename> (или другая файловая система, + содержащая <filename class="directory">/usr/local/bin</filename>) + по какой-либо причине не + смонтирована, то <username>root</username> не сможет войти в + систему для исправления этой проблемы (хотя если вы перезагрузите + систему в однопользовательский режим, вы сможете указать командный + процессор).</para> + + <para>Некоторые используют <username>toor</username> для выполнения + повседневных административных работ с нестандартным командным + процессором, оставляя <username>root</username> со стандартной + оболочкой для работы в однопользовательском режиме или выполнения + аварийных работ. По умолчанию вы не сможете войти в систему как + пользователь <username>toor</username>, потому что у него нет + пароля, так что, если вы хотите его использовать, + зарегистрируйтесь в системе как <username>root</username> и задайте + пароль для пользователя <username>toor</username>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="suidperl"> + <para>Почему <command>suidperl</command> работает неправильно?</para> + </question> + + <answer> + <para>В целях обеспечения безопасности <command>suidperl</command> + по умолчанию не устанавливается. Если вы хотите, чтобы команда + <command>suidperl</command> была установлена во время обновления + из исходных текстов, отредактируйте + <filename>/etc/make.conf</filename>, добавив + <literal><varname>ENABLE_SUIDPERL</varname>=true</literal> перед + сборкой <command>perl</command>.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="ppp"> + <title>PPP</title> + + <qandaset> + <qandaentry> + <question id="userppp"> + <para>Не могу заставить работать ppp. Что я делаю не так?</para> + </question> + + <answer> + <para>Первым делом прочтите страницы справочника, посвящённые + &man.ppp.8;, а также соответствующий <ulink + url="&url.books.handbook;/ppp-and-slip.html#USERPPP">раздел</ulink> + Руководства. Включите протоколирование следующей командой:</para> + + <programlisting>set log Phase Chat Connect Carrier lcp ipcp ccp command</programlisting> + + <para>Эта команда может быть набрана в командной строке + &man.ppp.8; или она может находиться в конфигурационном + файле <filename>/etc/ppp/ppp.conf</filename> (начало секции + <literal>default</literal> - лучшее для неё место. + Удостоверьтесь, что файл <filename>/etc/syslog.conf</filename> + (посмотрите справку по &man.syslog.conf.5;) содержит + указанные ниже строки и существует файл + <filename>/var/log/ppp.log</filename>:</para> + + <programlisting>!ppp +*.* /var/log/ppp.log</programlisting> + + <para>Теперь вы сможете найти полную информацию о происходящем в + файле протокола. Не беспокойтесь, если не всё вам будет там + понятно. Если вы будете пользоваться чьей-то помощью, + протокол вам пригодится.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-hangs"> + <para>Ppp просто зависает, когда я его запускаю</para> + </question> + + <answer> + <para>Обычно это происходит, когда не может быть определено имя + вашего хоста. Наилучший способ исправить это - удостовериться, + что файл <filename>/etc/hosts</filename> используется вашим + резолвером. Отредактируйте файл + <filename>/etc/host.conf</filename>, поместив + на первое место строчку <literal>hosts</literal>. Затем просто + добавьте записи о вашей машине в файл + <filename>/etc/hosts</filename>. Если у вас нет локальной + сети, измените строку <hostid>localhost</hostid>:</para> + + <programlisting>127.0.0.1 foo.example.com foo localhost</programlisting> + + <para>В противном случае просто добавьте ещё одну запись о вашем + хосте. Обратитесь к соответствующим страницам справочника за + подробным описанием.</para> + + <para>Если вы выполнили эти указания, вы сможете успешно выполнить + команду <command>ping -c1 `hostname`</command>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-nodial-auto"> + <para>Ppp не звонит в режиме -auto</para> + </question> + + <answer> + <para>Во-первых, проверьте, что у вас есть маршрут по умолчанию. + Выполнив команду <command>netstat -rn</command> (посмотрите + справку по &man.netstat.1;), вы должны увидеть две строки + такого вида:</para> + + <programlisting>Destination Gateway Flags Refs Use Netif Expire +default 10.0.0.2 UGSc 0 0 tun0 +10.0.0.2 10.0.0.1 UH 0 0 tun0</programlisting> + + <para>Здесь предполагается, что вы использовали адреса, + приведённые в Руководстве, Справочнике или файле + <filename>ppp.conf.sample</filename>. Если у вас нет маршрута + по умолчанию, это может быть из-за того, что вы забыли добавить + строку <literal>HISADDR</literal> в файл ppp.conf.</para> + + <para>Другая причина отсутствия маршрута по умолчанию может + крыться в том, что вы ошибочно установили маршрут по умолчанию + в вашем файле <filename>/etc/rc.conf</filename> (посмотрите + справку по &man.rc.conf.5;), и пропустили указанную ниже + строку в <filename>ppp.conf</filename>:</para> + + <programlisting>delete ALL</programlisting> + + <para>В таком случае обратитесь к соответствующему <ulink + url="&url.books.handbook;/userppp.html#USERPPP-FINAL">разделу</ulink> + Руководства.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="no-route-to-host"> + <para>Что означает сообщение + <errorname>No route to host</errorname>?</para> + </question> + + <answer> + <para>Эта ошибка появляется из-за того, что в файле + <filename>/etc/ppp/ppp.linkup</filename> отсутствует + следующий раздел:</para> + + <programlisting>MYADDR: + delete ALL + add 0 0 HISADDR</programlisting> + + <para>Он необходим, если ваш IP адрес выделяется динамически или + адрес маршрутизатора вам не известен. Если вы используете + интерактивный режим, вы можете набрать следующие команды + после входа в <literal>пакетный режим</literal> (пакетный + режим идентифицируется заглавными буквами <acronym>PPP</acronym> + в приглашении):</para> + + <programlisting>delete ALL +add 0 0 HISADDR</programlisting> + + <para>Обратитесь к разделу <ulink + url="&url.books.handbook;/userppp.html#USERPPP-DYNAMICIP">PPP + и динамические IP адреса</ulink> Руководства за подробной + информацией.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="connection-threeminutedrop"> + <para>Соединение разрывается через 3 минуты</para> + </question> + + <answer> + <para>Таймаут для PPP по умолчанию равен 3 минутам. Это может быть + изменено такой строкой:</para> + + <programlisting>set timeout <replaceable>NNN</replaceable></programlisting> + + <para>где <replaceable>NNN</replaceable> - время неактивности в + секундах, после которого соединение закрывается. Если + <replaceable>NNN</replaceable> равно нулю, соединение никогда + не разрывается по таймауту. Эту команду можно поместить в файл + <filename>ppp.conf</filename> или набрать ее в интерактивном + режиме. Изменение этого параметра также возможно при активном + соединении, если подключиться к сокету + <application>ppp</application> сервера с помощью программ + &man.telnet.1; или &man.pppctl.8;. Обратитесь к страницам + Справочника, посвящённым &man.ppp.8;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-drop-heavy-load"> + <para>Соединение разрывается при большой нагрузке</para> + </question> + + <answer> + <para>Если у вас включен Link Quality Reporting (LQR), возможно, + что слишком много пакетов LQR теряется в канале. Программа + &man.ppp.8; делает вывод, + что канал плох, и разрывает соединение. В &os; до версии 2.2.5 + LQR было включено по умолчанию. Сейчас оно по умолчанию выключено. + LQR можно выключить такой строкой:</para> + + <programlisting>disable lqr</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-drop-random"> + <para>Соединение разрывается в случайные промежутки времени</para> + </question> + + <answer> + <para>Иногда, на шумной линии или даже на линии с включенным режимом + ожидания звонка, ваш модем может вешать трубку, думая (совершенно + напрасно), что потерял несущую.</para> + + <para>В большинстве модемов есть параметр, определяющий + чувствительность к временной потере несущей. Например, в + модеме &usrobotics; &sportster это определяется значением + регистра <literal>S10</literal> в десятых долях секунды. + Чтобы сделать связь более устойчивой, добавьте следующую + последовательность посылок-ожиданий в строку набора:</para> + + <programlisting>set dial "...... ATS10=10 OK ......"</programlisting> + + <para>Обратитесь к руководству по вашему модему.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-hangs-random"> + <para>Соединение часто рвётся в случайные промежутки времени</para> + </question> + + <answer> + <para>Многие сообщают об обрывах соединений без видимой причины. + Первым делом нужно выяснить, с какой стороны соединения рвётся + связь.</para> + + <para>Если вы используете внешний модем, можете просто попробовать + использовать утилиту &man.ping.8; и посмотреть, мигает ли + индикатор <acronym>TD</acronym> при передаче данных. Если он + мигает (а индикатор <acronym>RD</acronym> нет), проблема с той + стороны. Если индикатор <acronym>TD</acronym> не загорается, + проблема с вашей стороны. При использовании внутреннего модема + вам необходимо воспользоваться командой <literal>set + server</literal>, указав её в файле <filename>ppp.conf</filename>. + Когда произойдёт обрыв связи, подключитесь к &man.ppp.8; с + помощью &man.pppctl.8;. Если ваше сетевое подключение + неожиданно восстановится (PPP оживает при проявлении активности на + диагностическом сокете) или или если вы не сможете соединиться + (здесь мы полагаем, что команда <literal>set socket</literal> в + начальный момент была выполнена успешно), то проблема имеет + локальный характер. Если вы сможете подключиться, но связи всё + равно нет, включите вывод отладочной информации командой + <literal>set log local async</literal> и запустите + <command>ping</command> из другого окна или терминала, чтобы + проверить связь. В отладочном выводе будут показаны данные, + передаваемые и получаемые из канала связи. Если данные посылаются, + но не принимаются обратно, проблема с противоположной + стороны.</para> + + <para>Выяснив, является эта проблема локальной или удалённой системы, + вы имеете два варианта действий:</para> + + <itemizedlist> + <listitem> + <para>Если проблема на удалённой машине, то прочтите <xref + linkend="ppp-remote-not-responding"/>.</para> + </listitem> + + <listitem> + <para>Если проблема с вашей стороны, прочтите <xref + linkend="ppp-hung"/>.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-remote-not-responding"> + <para>Удалённая система не отвечает</para> + </question> + + <answer> + <para>Здесь вы мало что можете сделать. Большинство провайдеров + отказываются оказать помощь, если вы используете ОС не от µsoft;. + Вы можете добавить команду <literal>enable lqr</literal> в ваш + <filename>ppp.conf</filename>, что позволит &man.ppp.8; отследить ошибки в + удалённой системе и закрывать соединение, однако такое обнаружение + достаточно медленно и поэтому + не так уж полезно. Вы можете также просто не сообщать своему + провайдеру, что запускаете user-PPP.</para> + + <para>Первым делом попробуйте отключить всю местную компрессию, + указав в конфигурационном файле следующее:</para> + + <programlisting>disable pred1 deflate deflate24 protocomp acfcomp shortseq vj +deny pred1 deflate deflate24 protocomp acfcomp shortseq vj</programlisting> + + <para>Теперь попробуйте установить соединение ещё раз и удостовериться, + что ситуация не изменилась. Если качество соединения улучшилось + или проблема оказалась полностью решённой, выясните, настройка + чего приводила к проблемам методом проб и ошибок. Это даст вам + дополнительную защиту, когда вы будете разговаривать с вашим + провайдером (хотя при этом может обнаружиться, что вы работаете + не с продуктом µsoft;).</para> + + <para>Перед тем, как звонить провайдеру, включите вывод отладочной + информации, как вы это делали ранее и подождите, пока соединение + снова не прервётся. Правда, для этого требуется некоторое + дисковое пространство. Интерес могут представлять последние + прочитанные из порта данные. Обычно это данные в формате ASCII + и они могут даже содержать описание проблемы (<errorname>Memory + fault</errorname>, <errorname>Core dumped</errorname>).</para> + + <para>Если ваш провайдер согласен помочь вам, нужно будет включить + режим отладки с их стороны, а потом, когда связь прервётся в + следующий раз, они могут сказать вам, почему возникли проблемы + с их стороны. Будет хорошо, если вы пришлёте детальное описание + на адрес &a.brian;, или даже попросите провайдера связаться + с ним напрямую.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-hung"> + <para>Ppp зависает</para> + </question> + + <answer> + <para>Лучше всего в этом случае перекомпилировать &man.ppp.8; + с отладочной информацией, и затем использовать &man.gdb.1; + для получения стека вызовов для зависшего процесса + <application>ppp</application>. Чтобы откомпилировать + программу <application>ppp</application> с отладочной + информацией, наберите такие команды:</para> + + <screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/ppp</userinput> +&prompt.root; <userinput>env DEBUG_FLAGS='-g' make clean</userinput> +&prompt.root; <userinput>env DEBUG_FLAGS='-g' make install</userinput></screen> + + <para>Затем следует перезапустить <application>ppp</application> + и дождаться следующего зависания. Когда отладочная сборка + &man.ppp.8; зависнет, запустите <application>gdb</application> + для зависшего процесса:</para> + + <screen>&prompt.root; <userinput>gdb ppp `pgrep ppp`</userinput></screen> + + <para>В приглашении <application>gdb</application> вы можете + использовать команду <command>bt</command> или + <command>where</command> для получения стека вызовов. + Сохраните вывод вашей сессии <application>gdb</application> + и <quote>отключитесь</quote> от работающего процесса, + выполнив команду <command>quit</command> в + <application>gdb</application>.</para> + + <para>В завершение, отошлите результат сессии + <application>gdb</application> на адрес &a.brian;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-loginok-thennothing"> + <para>Ничего не происходит после сообщения Login OK!</para> + </question> + + <answer> + <para>До версии &os; 2.2.5, как только связь устанавливалась, &man.ppp.8; + ожидал начала согласования Line Control Protocol + (LCP) с противоположной стороны. Многие провайдеры Internet не + начинают согласования и предполагают, что это сделает клиент. + Чтобы заставить &man.ppp.8; инициировать согласование + параметров LCP, используйте следующую строку:</para> + + <programlisting>set openmode active</programlisting> + + <note> + <para>Ничего страшного не произойдёт, если согласование начнут обе + стороны, поэтому режим инициирования сейчас по умолчанию активный. + Однако, в следующем разделе описывается ситуация, когда это + <emphasis>приводит</emphasis> к некоторым неприятностям.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-same-magic"> + <para>В протоколе есть сообщения о том, что <quote>magic being the + same</quote>.</para> + </question> + + <answer> + <para>Иногда, сразу же после установления соединения, вы можете + увидеть в журнале сообщения <errorname>Magic is the + same</errorname>. Иногда эти сообщения проходят безболезненно, + а иногда одна из сторон прекращает работу. Большинство реализаций + PPP не может справиться с такой ситуацией, и, даже когда связь + выглядит установившейся, вы будете видеть только бесконечно + повторяющиеся конфигурационные запросы и подтверждения в файле + протокола до тех пор, пока &man.ppp.8; + окончательно не закроет соединение.</para> + + <para>Обычно это происходит на серверах с медленными дисками, на + которых порт обслуживает программа &man.getty.8;, а &man.ppp.8; + выполняется из сценария регистрации или другой программы после + регистрации пользователя. Были сообщения, что такое случается + постоянно при использовании slirp. Причина заключается в том, + что во время, проходящее между завершением работы &man.getty.8; + и запуском &man.ppp.8;, &man.ppp.8; со стороны клиента начинает + посылать пакеты Line Control Protocol (LCP). Так как режим эха + остаётся всё ещё включенным, &man.ppp.8; клиента получает + <quote>отражения</quote> своих запросов.</para> + + <para>Частью процесса согласования параметров LCP является + определение <quote>магического</quote> числа для каждой стороны + соединения для обнаружения <quote>отражений</quote>. Согласно + спецификации, когда одна сторона пытается использовать + совпадающее "магическое" число, должен быть послан ответ NAK и + должно быть выбрано новое "магическое" число. В тот момент, + когда на порту сервера включен режим эха, клиент &man.ppp.8; + посылает пакеты LCP, получает то же самое "магическое" число в + отражённом пакете и отвечает на него NAK. Он также видит + отражённый NAK (который также означает, что &man.ppp.8; должен + изменить своё "магическое" число). В потенциале это может + вызвать появление огромного количества процессов смен + "магических" чисел, и все они накапливаются в буфере терминала. + Как только запустится сервер &man.ppp.8;, он будет перегружен + запросами на смену "магических", немедленно решит, что этого + много для согласования LCP и прервёт соединение. В то же самое + время, клиент, который больше не видит отражений, останавливается + для того, чтобы увидеть, что сервер закрыл соединение.</para> + + <para>Этого можно избежать, позволив начинать согласование + противоположной стороне следующей строкой в файле + <filename>ppp.conf</filename>:</para> + + <programlisting>set openmode passive</programlisting> + + <para>Это заставит &man.ppp.8; ожидать начала согласования LCP. Некоторые + серверы, однако, могут никогда не начать согласование. Если это тот + самый случай, вы можете сделать следующее:</para> + + <programlisting>set openmode active 3</programlisting> + + <para>Это заставит &man.ppp.8; пассивно ждать 3 секунды, и только затем + посылать запросы LCP. Если противоположная сторона начнёт посылать в этот + момент запросы, &man.ppp.8; немедленно ответит, не ожидая истечения + трёхсекундного интервала.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-lcp-constant"> + <para>Согласование LCP продолжается, пока не закроется + соединение</para> + </question> + + <answer> + <para>В настоящий момент одной из неприятных особенностей + реализации &man.ppp.8; является то, что она не связывает + сообщения LCP, CCP & IPCP с запросами. Как результат, если + реализация PPP с одной стороны более чем на 6 секунд медленнее, + чем с другой, противоположная сторона будет посылать + два дополнительных запроса на согласование параметров LCP. + Это фатально.</para> + + <para>Предположим, что у нас работают две реализации, на машинах + <hostid>A</hostid> и <hostid>B</hostid>. <hostid>A</hostid> + начинает посылать запросы LCP сразу же после соединения, а + <hostid>B</hostid> требуется 7 секунд для запуска. Когда + <hostid>B</hostid> запускается, <hostid>A</hostid> послало 3 + LCP-запроса. Полагаем, что режим эха выключен, в противном + случае мы столкнулись бы с проблемами "магического" числа, + описанными в предыдущем разделе. <hostid>B</hostid> посылает + REQ, затем ACK на первый REQ от <hostid>A</hostid>. Это + приводит к тому, что <hostid>A</hostid> входит в состояние + <acronym>OPENED</acronym> и посылает (первый) ACK обратно + <hostid>B</hostid>. В то же самое время <hostid>B</hostid> + посылает обратно ещё два ACK в ответ на два дополнительных REQ, + посланные <hostid>A</hostid> до старта <hostid>B</hostid>. + <hostid>B</hostid> затем получает первый ACK от <hostid>A</hostid> + и возвращается в состояние <acronym>REQ-SENT</acronym>, послав + ещё один (четвёртый) REQ согласно RFC. Затем он получает + третий ACK и входит в состояние <acronym>OPENED</acronym>. + В это же время <hostid>B</hostid> принимает + четвёртый REQ от <hostid>A</hostid>, что возвращает + его в состояние <acronym>ACK-SENT</acronym> и посылает ещё один + (второй) REQ и (четвёртый) ACK согласно RFC. <hostid>A</hostid> + получает REQ, переходит в состояние <acronym>REQ-SENT</acronym> + и посылает ещё один REQ. Он немедленно принимает последующий + ACK и входит в состояние <acronym>OPENED</acronym>.</para> + + <para>Это будет продолжаться до тех пор, пока одна из сторон не + обнаружит, что это ни к чему не приводит и не закроет + соединение.</para> + + <para>Лучшим способом избежать этой ситуации является конфигурация + одной из сторон как <literal>passive</literal>, чтобы она ждала + другую для начала согласования. Это можно сделать следующей + командой:</para> + + <programlisting>set openmode passive</programlisting> + + <para>С этой командой нужно быть осторожным. Вы также должны будете + использовать эту команду для ограничения периода ожидания, в + течении которого &man.ppp.8; ждёт начала согласования с + противоположной стороны:</para> + + <programlisting>set stopped <replaceable>N</replaceable></programlisting> + + <para>Как вариант, может быть использована следующая команда + (где <replaceable>N</replaceable> - период ожидания в секундах + перед тем, как начать согласование):</para> + + <programlisting>set openmode active <replaceable>N</replaceable></programlisting> + + <para>За дополнительной информацией обращайтесь к странице + Справочника.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-shell-test-lockup"> + <para>Когда я выполняю команду shell для тестирования соединения, + ppp блокируется</para> + </question> + + <answer> + <para>Когда вы выполняете команду <command>shell</command> или + <command>!</command>, &man.ppp.8; запускает оболочку (если были + заданы параметры, &man.ppp.8; их + использует). Программа <application>ppp</application> будет + ждать окончания выполнения команды, прежде + чем продолжить. Если вы попытаетесь воспользоваться связью PPP + после запуска команды, связь будет выглядеть заблокированной. Это + происходит из-за того, что &man.ppp.8; ждёт завершения + выполнения запущенной команды.</para> + + <para>Если вам необходимо выполнять подобные команды, используйте + команду <command>!bg</command>. В этом случае нужная команда будет + выполняться в фоновом режиме, а &man.ppp.8; сможет продолжить обслуживание + канала связи.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-nullmodem"> + <para>Почему программа ppp, обслуживающая нуль-модем, никогда не + закрывается?</para> + </question> + + <answer> + <para>&man.ppp.8; не может определить, что соединение + было закрыто. Это происходит из-за метода использования сигнальных + линий нуль-модемного кабеля. При использовании такого типа + соединения всегда включайте LQR:</para> + + <programlisting>enable lqr</programlisting> + + <para>По умолчанию LQR включается, если это было затребовано с + противоположной стороны на этапе согласования параметров + соединения.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-auto-noreasondial"> + <para>В режиме <option>-auto</option> ppp неожиданно начинает + звонить</para> + </question> + + <answer> + <para>Если &man.ppp.8; начинает неожиданно звонить, вы + должны определить причину и задать фильтры dfilters для + предотвращения подобных звонков.</para> + + <para>Для выяснения причины такого поведения, используйте + строку:</para> + + <programlisting>set log +tcp/ip</programlisting> + + <para>Это включит протоколирование всего трафика через соединение. + В следующий раз, когда неожиданно будет установлено соединение, + вы установите причину по временным отметкам в файле + протокола.</para> + + <para>После этого вы можете запретить дозвонку при выясненных + условиях. Как правило, такие проблемы возникают из-за обращений + к DNS. Для предотвращения обращений к DNS и установления + соединения (что <emphasis>не</emphasis> запретит &man.ppp.8; + пропускать пакеты через уже + установленное соединение), используйте такую комбинацию:</para> + + <programlisting>set dfilter 1 deny udp src eq 53 +set dfilter 2 deny udp dst eq 53 +set dfilter 3 permit 0/0 0/0</programlisting> + + <para>Это может вам не подойти, так как закроет возможность дозвонки + по запросу — большинству программ нужно обратиться к DNS + до того, как начать работать.</para> + + <para>В случае DNS, вы должны попытаться определить, кто пытается + определить имя хоста. В большинстве случаев виновным оказывается + &man.sendmail.8;. Удостоверьтесь, что вы указали программе + <application>sendmail</application> + не осуществлять обращений к DNS в его конфигурационном файле. + Обратитесь к разделу об <ulink url="&url.books.handbook;/smtp-dialup.html"> + использовании электронной почты при коммутируемом соединении</ulink> в + Руководстве за подробным описанием создания конфигурационного файла и что + туда нужно поместить. Вам может понадобиться добавить в файл + <filename>.mc</filename> строку:</para> + + <programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting> + + <para>Это заставит <application>sendmail</application> ставить все + сообщения в очередь до тех пор, пока + не будет запущена её обработка (как правило, sendmail запускается с + параметрами <option>-bd -q30m</option>, указывающими, что + обрабатывать очередь нужно каждые 30 минут) или до тех пор, пока + не будет выполнена команда <command>sendmail + <option>-q</option></command> (может быть, из + файла <filename>ppp.linkup</filename>).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ccp-errors"> + <para>Что означают ошибки CCP</para> + </question> + + <answer> + <para>В файле протокола появляются такие сообщения об ошибках:</para> + + <programlisting>CCP: CcpSendConfigReq +CCP: Received Terminate Ack (1) state = Req-Sent (6)</programlisting> + + <para>Это происходит, если &man.ppp.8; пытается установить компрессию + типа Predictor1, а противоположная сторона не хочет устанавливать + никакой компрессии. Эти сообщения безобидны, но если вы хотите + от них избавиться, вы можете запретить компрессию Predictor1 и + у себя тоже:</para> + + <programlisting>disable pred1</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-connectionspeed"> + <para>Почему ppp не протоколирует скорость соединения?</para> + </question> + + <answer> + <para>Для вывода протокола взаимодействия с модемом вам нужно + включить следующее:</para> + + <programlisting>set log +connect</programlisting> + + <para>Это заставит &man.ppp.8; протоколировать всё, вплоть до последней + прочтённой через <quote>expect</quote> строки.</para> + + <para>Если вы хотите видеть скорость соединения и используете + PAP или CHAP (и поэтому вам не нужно определять никаких сценариев + входа через <literal>set login</literal> после получения строки + CONNECT сценарием дозвонки dial), вы должны указать &man.ppp.8;, + что нужно ожидать полную строку CONNECT, вроде следующего:</para> + + <programlisting>set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \ + \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"</programlisting> + + <para>Здесь мы получили строку CONNECT, ничего не посылаем, затем ожидаем + символа перевода строки, заставляя &man.ppp.8; принять + полный ответ модема.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-ignores-backslash"> + <para>Ppp игнорирует символ <literal>\</literal> + в chat-скрипте</para> + </question> + + <answer> + <para>Программа <application>ppp</application> обрабатывает + каждую строку в ваших конфигурационных файлах, + так что он может проинтерпретировать строку вида + <literal>set phone "123 456 789"</literal> правильно и + обнаружить, что номер является на самом деле + <emphasis>единственным</emphasis> аргументом. Для того, чтобы + указать символ <literal>"</literal>, вы должны экранировать + его символом обратного слэша (<literal>\</literal>).</para> + + <para>Когда интерпретатор chat обрабатывает каждую строку, он ещё + раз просматривает аргумент для того, чтобы найти какую-либо + специальную последовательность типа <literal>\P</literal> или + <literal>\T</literal> (обратитесь к Справочнику). В результате + этой двойной интерпретации вы должны всегда использовать + правильное число экранирующих символов.</para> + + <para>Если вам нужно передать символ <literal>\</literal>, например, + вашему модему, вам необходимо указать что-то типа:</para> + + <programlisting>set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"</programlisting> + + <para>Это приведёт к такой последовательности:</para> + + <programlisting>ATZ +OK +AT\X +OK</programlisting> + + <para>Или:</para> + + <programlisting>set phone 1234567 +set dial "\"\" ATZ OK ATDT\\T"</programlisting> + + <para>Это даст такую последовательность:</para> + + <programlisting>ATZ +OK +ATDT1234567</programlisting> + + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-segfault-nocore"> + <para>&man.ppp.8; получает ошибку защиты + (<errorname>Segmentation fault</errorname>), но я не вижу файла + <filename>ppp.core</filename></para> + </question> + + <answer> + <para>Программа <application>ppp</application> (или любая другая + программа такого рода) никогда не + создаёт файлов дампа памяти. Так так &man.ppp.8; запускается с + эффективным uid, равным <literal>0</literal>, то операционная + система не будет записывать дамп памяти &man.ppp.8; на диск + перед его завершением. Однако если + &man.ppp.8; всё же прекратит работу из-за нарушения защиты, + или по другому сигналу, который вызывает создание дампа памяти, + <emphasis>и</emphasis> вы уверены, что используете самую + последнюю версию (смотрите + самое начало раздела), то вы должны установить исходный код + системы и выполнить следующее:</para> + + <screen>&prompt.root; <userinput><command>cd</command> <filename class="directory">/usr/src/usr.sbin/ppp</filename></userinput> +&prompt.root; <userinput><command>echo</command> <makevar>STRIP</makevar>= >> <filename>/etc/make.conf</filename></userinput> +&prompt.root; <userinput><command>echo</command> <makevar>CFLAGS</makevar>+=<option>-g</option> >> <filename>/etc/make.conf</filename></userinput> +&prompt.root; <userinput><command>make</command> <maketarget>install</maketarget> <maketarget>clean</maketarget></userinput></screen> + + <para>Теперь у вас есть отладочная версия &man.ppp.8;. Вам + нужно стать суперпользователем для запуска &man.ppp.8;, так + как соответствующие биты прав были убраны. Когда запустите + &man.ppp.8;, обратите особое внимание на то, какой каталог + у вас был текущим на этот момент.</para> + + <para>Итак, если &man.ppp.8; получит ошибку нарушения защиты, + он сбросит дамп памяти с именем <filename>ppp.core</filename>. + Затем вам нужно сделать следующее:</para> + + <screen>&prompt.user; <userinput>su</userinput> +&prompt.root; <userinput>gdb /usr/sbin/ppp ppp.core</userinput> +<prompt>(gdb)</prompt> <userinput>bt</userinput> +..... +<prompt>(gdb)</prompt> <userinput>f 0</userinput> +.... +<prompt>(gdb)</prompt> <userinput>i args</userinput> +.... +<prompt>(gdb)</prompt> <userinput>l</userinput> +.....</screen> + + <para>Вся эта информация должна быть предоставлена вместе с вашим + вопросом, чтобы проблему можно было продиагностировать.</para> + + <para>Если вы умеете обращаться с &man.gdb.1;, вы можете + попробовать найти причины образования дампа либо адреса и + значения относящихся к этому переменных.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-autodialprocess-noconnect"> + <para>Процесс, вызвавший прозвонку в режиме <option>-auto</option>, + никогда не получает затребованного соединения</para> + </question> + + <answer> + <para>Эта проблема проявлялась, когда &man.ppp.8; в + режиме <option>-auto</option> был настроен на динамическое + согласование локального IP-адреса + с противоположной стороной. Это было давно исправлено — + поищите на странице справочника слово <literal>iface</literal>.</para> + + <para>Причиной было то, что когда эта программа использует + системный вызов &man.connect.2;, для сокета назначается IP-адрес + интерфейса &man.tun.4;. Ядро создаёт первый исходящий пакет и + записывает его в устройство &man.tun.4;. Затем &man.ppp.8; + читает пакет и устанавливает соединение. Если в результате + согласования &man.ppp.8; динамического IP-адреса + адрес интерфейса изменится, сокет будет работать некорректно. + Любые IP-пакеты, передаваемые через сокет, будут отброшены. + Если даже этого не произойдёт, ответные данные не будут + достигать отправителя, + так как этот адрес больше ему не принадлежит.</para> + + <para>Теоретически есть несколько способов решить эту проблему. + Лучше всего, если противоположная сторона назначит интерфейсу + тот же самый IP-адрес. Текущая версия + &man.ppp.8; именно так и поступает, но большинство других + реализаций этого не делают.</para> + + <para>Самым простым решением будет просто никогда не менять + IP-адрес интерфейса &man.tun.4;, а вместо этого изменять на + лету все исходящие пакеты так, чтобы IP-адрес источника менялся + с IP-адреса интерфейса на соответствующий с противоположной + стороны. Это, в сущности, то же самое, что делает опция + <literal>iface-alias</literal> в самой последней версии + &man.ppp.8; (с помощью библиотеки &man.libalias.3; и ключа + <option>-nat</option> для &man.ppp.8;) — она отслеживает + все назначенные ранее интерфейсу адреса и замещает их на + последний из назначенных.</para> + + <para>Другой возможный (и, наверное, самый надёжный) способ - это + создать системный вызов, меняющий IP-адреса всем уже связанным + сокетам. &man.ppp.8; использовал бы этот вызов для модификации + сокетов всех работающих программ после согласования нового + IP-адреса. Этот же самый системный вызов могли бы использовать + клиенты <acronym>DHCP</acronym>, когда они осуществляют повторную + привязку к сокету, вызывая для этого функцию + <function>bind()</function>.</para> + + <para>Ещё одной возможностью является разрешение интерфейсу + становиться активным без IP-адреса. Исходящим пакетам будет + даваться IP адрес <hostid role="ipaddr">255.255.255.255</hostid> + до первого вызова &man.ioctl.2; <literal>SIOCAIFADDR</literal>, + приводящего к полной привязке сокета. &man.ppp.8; нужно будет + изменять исходящий IP-адрес и контрольную сумму пакета, только + если он установлен в <hostid role="ipaddr">255.255.255.255</hostid>. + Это, однако, является некоторым хаком, так как ядро будет + посылать некорректные пакеты на не полностью + сконфигурированный интерфейс, в предположении, что существует + механизм исправления этих пакетов.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ppp-nat-games"> + <para>Почему большинство игр не работает с опцией + <option>-nat</option>?</para> + </question> + + <answer> + <para>Причиной, по которой игры и подобные программы не работают с + библиотекой &man.libalias.3; заключается в том, что внешняя + машина будет пытаться открыть соединение или посылать + (незапрошенные) UDP пакеты на машину внутренней сети. + Программное обеспечение, обеспечивающее опцию -nat, не + знает о том, что она должна пересылать эти пакеты машине во + внутренней сети.</para> + + <para>Чтобы это всё же заработало, удостоверьтесь, что единственной + запущенной программой является программное обеспечение, с которым + вы испытываете проблемы, затем запустите &man.tcpdump.1; на + интерфейсе &man.tun.4; маршрутизатора либо включите + протоколирование TCP/IP в &man.ppp.8; + (<literal>set log +tcp/ip</literal>) на маршрутизаторе.</para> + + <para>Когда вы запустите некорректно работающее программное + обеспечение, + вы должны увидеть пакеты, проходящие через маршрутизатор. Когда + что-то начнёт приходить извне, оно будет отброшено (в этом-то и + проблема). Заметьте номер порта получателя этих пакетов, затем + завершите работу вашего программного обеспечения. Выполните эту + процедуру несколько раз для того, чтобы убедиться, что номер порта + постоянен. Если это так, то следующая строчка в соответствующем + разделе <filename>/etc/ppp/ppp.conf</filename> заставит + программное обеспечение функционировать нормально:</para> + + <programlisting>nat port <replaceable>proto</replaceable> <replaceable>internalmachine</replaceable>:<replaceable>port</replaceable> <replaceable>port</replaceable></programlisting> + + <para>Здесь <replaceable>proto</replaceable> - это + <literal>tcp</literal> либо <literal>udp</literal>, + <replaceable>internalmachine</replaceable> — + это машина, которой вы хотите перенаправлять пакеты, + и <replaceable>port</replaceable> - это номер порта получателя + пакетов.</para> + + <para>Несомненно, вы не сможете использовать программное + обеспечение на других машинах, не изменяя указанную выше + команду, а также запускать программное обеспечение на двух + машинах внутри сети одновременно — в конце концов, + внешний мир видит всю вашу сеть как единственную машину.</para> + + <para>Если номера портов непостоянны, есть ещё три варианта:</para> + + <orderedlist> + <listitem> + <para>Настройте поддержку этого в &man.libalias.3;. Примеры + <quote>особых случаев</quote> можно найти в + <filename>/usr/src/sys/netinet/libalias/alias_*.c</filename> + (<filename>alias_ftp.c</filename> — хорошее начало). + Обычно это подразумевает чтение определенных распознаваемых + исходящих пакетов, выявление команд для установления + внешней машиной обратной связи на внутреннюю машину на + конкретный (случайный) порт и настройку значения + <quote>route</quote> в таблице соответствий таким образом, + чтобы последующие пакеты проходили нормально.</para> + + <para>Это самое трудоёмкое решение, но оно наилучшее и позволит + программному обеспечению работать на нескольких машинах.</para> + </listitem> + + <listitem> + <para>Используйте прокси-сервер. Например, приложение может + поддерживать <literal>socks5</literal> или (как в случае + <command>cvsup</command>) может иметь режим + <quote>passive</quote>, обходящийся без запросов к + противоположной стороне на открытие обратного + соединения.</para> + </listitem> + + <listitem> + <para>Переназначьте всё на внутреннюю + машину с помощью команды <literal>nat addr</literal>. + Это решение в лоб.</para> + </listitem> + </orderedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="useful-port-numbers"> + <para>Кто-нибудь ведёт список полезных номеров портов?</para> + </question> + + <answer> + <para>Пока нет, но ниже находится список, могущий таковым стать (если + к этому будет проявлен какой-либо интерес). В каждом примере + <replaceable>internal</replaceable> нужно заменить на IP-адрес + машины, участвующей в игре.</para> + + <itemizedlist> + <listitem> + <para><application>Asheron's Call</application></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:65000 + 65000</literal></para> + + <para>Находясь в игре, вручную смените номер порта на + <literal>65000</literal>. Если + у вас есть несколько машин, на которых вы хотите играть, + назначьте каждой машине уникальный номер порта (то есть + <literal>65001</literal>, <literal>65002</literal> и так + далее), и добавьте по строчке <literal>nat + port</literal> для каждой машины.</para> + </listitem> + + <listitem> + <para><application>Half Life</application></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:27005 + 27015</literal></para> + </listitem> + + <listitem> + <para><application>PCAnywhere 8.0</application></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:5632 + 5632</literal></para> + + <para><literal>nat port tcp + <replaceable>internal</replaceable>:5631 + 5631</literal></para> + </listitem> + + <listitem> + <para><application>Quake</application></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:6112 + 6112</literal></para> + </listitem> + + <listitem> + <para><application>Quake 2</application></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:27901 + 27910</literal></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:60021 + 60021</literal></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:60040 + 60040</literal></para> + </listitem> + + <listitem> + <para><application>Red Alert</application></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:8675 + 8675</literal></para> + + <para><literal>nat port udp + <replaceable>internal</replaceable>:5009 + 5009</literal></para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="fcs-errors"> + <para>Что такое ошибки FCS?</para> + </question> + + <answer> + <para>FCS является сокращением от <literal>F</literal>rame + <literal>C</literal>heck <literal>S</literal>equence + (контроль последовательности кадров). Каждый кадр PPP имеет + контрольную сумму для проверки того, что принятые данные совпадают + с переданными. Если FCS принятого пакета некорректна, пакет + отбрасывается и счётчик FCS для HDLC увеличивается. Значения + ошибок уровня HDLC можно вывести командой + <literal>show hdlc</literal>.</para> + + <para>Если у вас плохая линия (или драйвер коммуникационного адаптера + отбрасывает пакеты), ошибки FCS неизбежны. Это обычно не является + причиной для волнений, хотя это существенно замедляет протоколы + компрессии. Если у вас внешний модем, проверьте качество + экранирования соединительного кабеля — это может избавить от + проблемы.</para> + + <para>Если ваша связь замирает, как только вы соединились, и + наблюдается большое количество ошибок FCS, это может быть вызвано + не полной прозрачностью канала для 8-битовых данных. Проверьте, + чтобы модем не использовал программного управления потоком + (XON/XOFF). Если же оборудование <emphasis>должно</emphasis> + использовать программное управление потоком, то воспользуйтесь + командой <literal>set accmap 0x000a0000</literal> для указания + &man.ppp.8; экранировать + символы <literal>^Q</literal> и <literal>^S</literal>.</para> + + <para>Другой причиной слишком большого количества ошибок FCS + может быть прекращение противоположной стороной сеанса + <acronym>PPP</acronym>. + В этом случае Вам может понадобиться включить протоколирование + <literal>async</literal> для проверки того, не являются ли + поступаемые из линии данные на самом деле приглашениями login + или shell. Если вы получили приглашение shell с противоположной + стороны, возможно завершение &man.ppp.8; без обрыва связи + командой <command>close lcp</command> (последующая команда + <command>term</command> снова вернёт вас к приглашению + shell на удалённой машине).</para> + + <para>Если ничего в файле протокола не говорит о том, что связь + была прервана, вы должны спросить у администратора удалённой + машины (вашего провайдера), почему сеанс был закрыт.</para> + </answer> + </qandaentry> + + <qandaentry id="PPPoEwithNAT"> + <question id="macos-win98-pppoe-freeze"> + <para>Почему при использовании на маршрутизаторе PPPoE замирают + соединения в &macos; и &windows; 98?</para> + </question> + + <answer> + <para>Мы благодарим Майкла Возняка (Michael Wozniak) + <email>mwozniak@netcom.ca</email>, который сообщил следующую + информацию, и Дэна Флемминга (Dan Flemming) + <email>danflemming@mac.com</email> за решение проблемы в случае + Mac:</para> + + <para>Это происходит из-за эффекта, который можно назвать + <quote>чёрной дырой</quote> на маршрутизаторе. &macos; и + &windows; 98 (и, может быть, другие операционные системы + от µsoft;), посылают пакеты TCP с запрашиваемым размером + сегмента, который слишком велик для того, чтобы быть помещённым + в кадр PPPoE (для сети Ethernet размер MTU по умолчанию равен + <literal>1500</literal>) <emphasis>и</emphasis> с установленным + битом <quote>do not fragment</quote> (по умолчанию для TCP), а + маршрутизаторы Telco не посылает пакет ICMP <quote>must + fragment</quote> обратно на сайт WWW, который вы пытаетесь + открыть. (Либо маршрутизатор посылает пакеты ICMP правильно, а + межсетевой экран на стороне сервера WWW их сбрасывает.) Когда + Web-сервер посылает вам кадры, которые не помещаются в поток PPPoE, + то маршрутизаторы Telco их отбрасывают и странички не загружаются + (часть страниц/графики всё же видно, потому что они меньше, чем + MSS). Похоже, что такие настройки действуют по умолчанию на + большинстве конфигураций PPPoE Telco.</para> + + <para>Одним из способов устранения проблемы является использование + утилиты <application>regedit</application> на системах 95/98 для + того, чтобы добавить в реестр следующий параметр:</para> + + <programlisting>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU</programlisting> + + <para>Это должна быть строка со значением <literal>1436</literal>, + так как имеются сведения, что некоторые маршрутизаторы ADSL не + могут работать с пакетами размером, превышающим эту величину. + В &windows; 2000 этот параметр реестра переименован в + <literal>Tcpip\Parameters\Interfaces\<replaceable>ID + адаптера</replaceable>\MTU</literal> и имеет тип + <literal>DWORD</literal>.</para> + + <para>Обратитесь к документам из Microsoft Knowledge Base <ulink + url="http://support.microsoft.com/support/kb/articles/Q158/4/74.asp"> + Q158474 - Windows TCPIP Registry Entries</ulink> и <ulink + url="http://support.microsoft.com/support/kb/articles/Q120/6/42.asp"> + Q120642 - TCPIP & NBT Configuration Parameters for + &windowsnt;</ulink> для получения более полной информации по + изменению MTU в &windows; для работы с NAT-маршрутизатором.</para> + + <para>Другим вариантом с &windows; 2000 является установка в + регистре <literal>DWORD</literal>-параметра + <literal>Tcpip\Parameters\Interfaces\<replaceable>ID + адаптера</replaceable>\EnablePMTUBHDetect</literal> в + <literal>1</literal>, как это + отмечено в документе Microsoft 120642, указанном выше.</para> + + <para>К несчастью, в &macos; нет возможности изменить настройки + TCP/IP. Однако имеется множество коммерческого программного + обеспечения, позволяющего пользователям настраивать + параметры TCP/IP. Пользователям NAT в &macos; нужно поискать + у себя настройки MTU и заменить там значение <literal>1500</literal> + на <literal>1450</literal>.</para> + + <para>В &man.ppp.8; имеется команда <command>enable + tcpmssfixup</command>, которая автоматически выравнивает MSS + до подходящего значения. Эта возможность включена по умолчанию. + Если у вас возникли проблемы с более старой версией + &man.ppp.8;, то вас может заинтересовать порт + <filename role="package">net/tcpmssd</filename>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="desperation"> + <para>Ничего не помогает — я уже отчаялся!</para> + </question> + + <answer> + <para>Если всё уже перепробовано, и ничего не получается, пошлите + нам максимальное количество информации, ваш конфигурационный + файл, способ запуска &man.ppp.8;, соответствующие части файла + протокола, и вывод команды <command>netstat -rn</command> (до + и после соединения) в &a.questions; или в телеконференцию <ulink + url="news:comp.unix.bsd.freebsd.misc">comp.unix.bsd.freebsd.misc</ulink>, + и может быть, кто-нибудь укажет вам верное направление.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="serial"> + <title>Коммуникационные адаптеры</title> + + <para>В этом разделе освещены вопросы о работе последовательных + адаптеров во &os;. Протоколы PPP и SLIP рассматриваются в разделе + <link linkend="networking">Работа в сети</link>.</para> + + <qandaset> + <qandaentry> + <question id="found-serial"> + <para>Как узнать, какие последовательные порты были обнаружены + &os;?</para> + </question> + + <answer> + <para>В процессе своей загрузки ядро &os; будет пытаться + найти последовательные порты, с поддержкой которых оно было + откомпилировано. Вы можете повнимательней присмотреться к + выдаваемым сообщениям либо выполнить такую команду после того, + как система запустилась и работает:</para> + + <screen>&prompt.user; <userinput>dmesg | grep -E "^sio[0-9]"</userinput></screen> + + <para>Вот пример вывода вышеуказанной команды:</para> + + <programlisting>sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 +sio0: type 16550A +sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0 +sio1: type 16550A</programlisting> + + <para>Здесь присутствуют два последовательных порта. Первый + находится на IRQ 4, использует порт ввода/вывода + <literal>0x3f8</literal> и построен на микросхеме UART типа + 16550A. Второй использует тот же тип микросхемы, но находится + на IRQ 3 и использует адрес порта ввода/вывода + <literal>0x2f8</literal>. Внутренние модемы выглядят точно + также, как последовательные порты, за исключением того, + что модем к ним <quote>подключен</quote> всегда.</para> + + <para>В ядро <filename>GENERIC</filename> встроена поддержка двух + последовательных портов, с теми же IRQ и адресами портов + ввода/вывода, как указано в примере выше. Если эти настройки + не соответствуют вашим, или если вы добавили внутренние модемы, + или у вас больше последовательных портов, чем описано в ядре, + просто переконфигурируйте ядро. За дополнительной информацией + обратитесь к разделу <link linkend="make-kernel">о построении + ядра</link>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="found-modem"> + <para>Как узнать, какие внутренние модемы были обнаружены &os;?</para> + </question> + + <answer> + <para>Посмотрите ответ на предыдущий вопрос.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="access-serial-ports"> + <para>Как осуществляется доступ к последовательным портам во + &os;?</para> + </question> + + <answer> + <para>Третий последовательный порт, <devicename>sio2</devicename> + (посмотрите справку по &man.sio.4;), который в DOS называется + <devicename>COM3</devicename>), обозначается как + <devicename>/dev/cuad2</devicename> для устройств, выполняющих + исходящие звонки, и <devicename>/dev/ttyd2</devicename> для + устройств, принимающих входящие звонки. Какая разница между этими + двумя классами устройств?</para> + + <para>Вы должны использовать + <devicename>ttyd<replaceable>X</replaceable></devicename> для + входящих соединений. При открытии + <devicename>/dev/ttyd<replaceable>X</replaceable></devicename> в + блокирующем режиме, процесс будет ожидать неактивности + соответствующего устройства + <devicename>cuad<replaceable>X</replaceable></devicename>, а затем + появления сигнала о наличии несущей. При открытии устройства + <devicename>cuad<replaceable>X</replaceable></devicename> он + проверяет, что последовательный порт не используется уже + устройством + <devicename>ttyd<replaceable>X</replaceable></devicename>. Если + порт доступен, он <quote>похищает</quote> его у устройства + <filename>ttyd<replaceable>X</replaceable></filename>. Также + устройство + <devicename>cuad<replaceable>X</replaceable></devicename> не следит + за наличием несущей. С такой схемой работы и модемом, находящимся в + режиме автоответа, вы можете позволить пользователям входить в + систему и в то же время можете осуществлять исходящие звонки, а + система позаботится о возможных конфликтах.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="enable-multiport-serial"> + <para>Как включить поддержку многопортовых последовательных + адаптеров?</para> + </question> + + <answer> + <para>Повторим ещё раз: информация о конфигурировании ядра + содержится в разделе, посвящённом этому вопросу. Для + многопортовых последовательных адаптеров добавьте в файл + &man.device.hints.5; по строке &man.sio.4; на каждый порт. + Но IRQ должен быть указан только у одного порта. Все порты + на адаптере должны использовать одно и то же значение IRQ. + Для обеспечения согласованности используйте для указания IRQ + последний последовательный порт. Также укажите следующую + опцию в файле конфигурации ядра:</para> + + <programlisting>COM_MULTIPORT</programlisting> + + <para>В следующем примере указано содержимое + <filename>/boot/device.hints</filename> для 4-портового + последовательного адаптера AST на IRQ 12:</para> + + <programlisting>hint.sio.4.at="isa" +hint.sio.4.port="0x2a0" +hint.sio.4.flags="0x701" +hint.sio.5.at="isa" +hint.sio.5.port="0x2a8" +hint.sio.5.flags="0x701" +hint.sio.6.at="isa" +hint.sio.6.port="0x2b0" +hint.sio.6.flags="0x701" +hint.sio.7.at="isa" +hint.sio.7.port="0x2b8" +hint.sio.7.flags="0x701" +hint.sio.7.irq="12"</programlisting> + + <para>Флаги указывают, что управляющий порт имеет младший номер + устройства <literal>7</literal> (<literal>0x700</literal>), + и все порты совместно используют один и тот же номер IRQ + (<literal>0x001</literal>).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="multiport-serial-share-irq"> + <para>Может ли &os; использовать несколько многопортовых + адаптеров с одинаковым IRQ?</para> + </question> + + <answer> + <para>Пока нет. Вы должны назначить уникальный IRQ для каждого + адаптера.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="default-serial-params"> + <para>Можно ли настроить для порта режим работы по умолчанию?</para> + </question> + + <answer> + <para>Смотрите раздел Руководства &os, посвящённый <ulink + url="&url.books.handbook;/serial.html#SERIAL-HW-CONFIG">последовательным + соединениям</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="enable-dialup"> + <para>Как сделать вход через модем?</para> + </question> + + <answer> + <para>Ознакомьтесь с разделом Руководства &os;, посвящённого <ulink + url="&url.books.handbook;/dialup.html">входящим + соединениям</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="dumb-terminal"> + <para>Как подключить терминал к &os;?</para> + </question> + + <answer> + <para>Информацию по этому вопросы можно найти в разделе <ulink + url="&url.books.handbook;/term.html">Терминалы</ulink> + Руководства &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cannot-tip"> + <para>Почему не удаётся запустить <command>tip</command> или + <command>cu</command>?</para> + </question> + + <answer> + <para>Скорее всего, в вашей системе программы + &man.tip.1; и &man.cu.1; могут получить доступ к каталогу + <filename class="directory">/var/spool/lock</filename> + только из-под пользователя + <username>uucp</username> и членов группы + <groupname>dialer</groupname>. Вы можете использовать группу + <groupname>dialer</groupname> для управления доступом к вашему + модему или удалённым системам. Достаточно добавить пользователя + в группу <groupname>dialer</groupname>.</para> + + <para>Вы можете разрешить всем пользователям вашей системы запускать + &man.tip.1; и &man.cu.1;, выполнив команды:</para> + + <screen>&prompt.root; <userinput>chmod 4511 /usr/bin/cu</userinput> +&prompt.root; <userinput>chmod 4511 /usr/bin/tip</userinput></screen> + </answer> + </qandaentry> + + <qandaentry> + <question id="hayes-unsupported"> + <para>Мой модем Hayes не поддерживается — что можно сделать?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#HAYES-UNSUPPORTED">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="direct-at"> + <para>Как я должен ввести эти AT-команды?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#DIRECT-AT">этот ответ</ulink> + в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="gt-failure"> + <para>Почему не срабатывает знак <literal>@</literal> для + описания характеристики <literal>pn</literal>?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#GT-FAILURE">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="dial-command-line"> + <para>Как набрать телефонный номер из командной строки?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#DIAL-COMMAND-LINE">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="set-bps"> + <para>Нужно ли при этом каждый раз задавать скорость работы с + портом?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#SET-BPS">этот ответ</ulink> + в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="terminal-server"> + <para>Мне нужно иметь доступ к нескольких хостам через терминальный + сервер.</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#TERMINAL-SERVER">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="tip-multiline"> + <para>Может ли tip использовать несколько телефонов для одного + сайта?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#TIP-MULTILINE">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="multi-controlp"> + <para>Почему нужно нажимать <keycombo + action="simul"><keycap>Ctrl</keycap><keycap>P</keycap></keycombo> + дважды для посылки одного этого символа <keycombo + action="simul"><keycap>Ctrl</keycap> + <keycap>P</keycap></keycombo>?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#MULTI-CONTROLP">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="uppercase"> + <para>Неожиданно всё стало набираться ЗАГЛАВНЫМИ БУКВАМИ?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#UPPERCASE">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="tip-filetransfer"> + <para>Как можно передавать файлы с помощью программы + <command>tip</command>?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#TIP-FILETRANSFER">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="zmodem-tip"> + <para>Как использовать zmodem вместе с + <command>tip</command>?</para> + </question> + + <answer> + <para>Смотрите <ulink + url="&url.books.handbook;/dialout.html#ZMODEM-TIP">этот + ответ</ulink> в Руководстве &os;.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="misc"> + <title>Разное</title> + + <qandaset> + <qandaentry> + <question id="more-swap"> + <para>Почему &os; использует гораздо больше места в разделе + подкачки, чем &linux;?</para> + </question> + + <answer> + <para>Это только кажется, что для &os; требуется больше места + на разделе подкачки, чем для &linux;. На самом деле это не + так. Главное отличие &os; от &linux; в этом плане заключается + в том, что &os; активно перемещает неиспользуемые страницы + памяти, к которым не было обращений, в раздел подкачки, + чтобы увеличить объём доступной физической памяти для + активного использования. &linux; же перемещает страницы + памяти в раздел подкачки только в крайнем случае. Получаемое + во &os; увеличение нагрузки на раздел подкачки компенсируется + более эффективным использованием оперативной памяти.</para> + + <para>Заметьте, что, хотя &os; предпочитает использовать раздел + подкачки, она не может сбросить все неактивные страницы в + своп при полностью неактивной системе. Так что вряд ли может + возникнуть ситуация, когда, проснувшись рано утром, вы + обнаружите, что вся ваша система находится в разделе подкачки, + хотя она простаивала всю ночь.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="top-freemem"> + <para>Почему утилита &man.top.1; показывает очень маленький объём + свободной памяти, даже когда запущено всего лишь несколько + приложений?</para> + </question> + + <answer> + <para>Просто дело в том, что под свободной памятью + подразумевается никак не используемая память. Вся память, + которая вашей программе явно не выделялась, используется + ядром &os; для дискового кэша. Значения, показываемые + утилитой &man.top.1;, помеченные как <literal>Inact</literal>, + <literal>Cache</literal> и <literal>Buf</literal> - это + всё кэшированные данные разных степеней устаревания. То, + что данные находятся в кэше, означает, что система не будет + обращаться к медленному диску снова за теми данными, + обращение к которым было недавно, повышая таким образом + общую производительность. В общем случае маленькие значения + в пункте <literal>Free</literal>, показываемые утилитой + &man.top.1; для свободной памяти - это хорошо, если, + конечно они не <emphasis>очень</emphasis> маленькие.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="chmod-symlinks"> + <para>Почему командой <command>chmod</command> невозможно + изменить права на символические ссылки?</para> + </question> + + <answer> + <para>Символические ссылки не имеют атрибутов доступа, и по + умолчанию утилита &man.chmod.1; следует по символической + ссылке, чтобы по возможности изменить права доступа на + исходный файл. Поэтому, если + у вас есть файл, скажем, с именем <filename>foo</filename> и + символическая ссылка <filename>bar</filename> на этот файл, + то эта команда всегда будет выполняться успешно.</para> + + <screen>&prompt.user; <userinput>chmod g-w bar</userinput></screen> + + <para>Однако права на файл <filename>bar</filename> не + изменятся.</para> + + <para>Чтобы это работало, используйте опцию <option>-H</option> или + <option>-L</option> вместе с опцией <option>-R</option>. + Обратитесь к страницам Справочника по команде &man.chmod.1; и по + &man.symlink.7;.</para> + + <warning> + <para>Опция <option>-R</option> выполняет команду &man.chmod.1; + <emphasis>рекурсивно</emphasis>. Будьте осторожны, задавая + каталоги или символические ссылки на каталоги в параметрах + &man.chmod.1;. Если вы хотите изменить права на каталог, + на который указывает символическая ссылка, используйте + &man.chmod.1; без опций и следуйте символической ссылке + с помощью лидирующего слэша (<filename + class="directory">/</filename>). Например, если + <filename>foo</filename> является символической ссылкой + на каталог <filename class="directory">bar</filename>, а + вы хотите изменить права на <filename>foo</filename> (на + самом деле <filename class="directory">bar</filename>), + вы должны выполнить команду типа следующей:</para> + + <screen>&prompt.user; <userinput>chmod 555 foo/</userinput></screen> + + <para>Если задан лидирующий слэш, то &man.chmod.1; будет + следовать символической ссылке, <filename>foo</filename>, + меняя права на каталог <filename + class="directory">bar</filename>.</para> + </warning> + </answer> + </qandaentry> + + <qandaentry> + <question id="dos-binaries"> + <para>Можно ли запускать программы для DOS во &os;?</para> + </question> + + <answer> + <para>Да, вы можете использовать программу эмуляции DOS <filename + role="package">emulators/doscmd</filename>, включённую в + Коллекцию Портов &os;.</para> + + <para>Если <application>doscmd</application> вас не удовлетворит, + то дополнительная утилита <filename + role="package">emulators/pcemu</filename> эмулирует 8088 и набор + сервисов BIOS, достаточный для запуска многих приложений + текстового режима DOS. Ей требуется X Window System.</para> + + <para>Также можно попробовать <filename + role="package">emulators/dosbox</filename> из Коллекции Портов + &os;. Программа в основном предназначена для эмуляции старых + игр, написанных под DOS, для хранения файлов которых используется + локальная файловая система.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="translation"> + <para>Что мне нужно сделать, чтобы перевести документацию &os; на + родной язык?</para> + </question> + + <answer> + <para>Ознакомьтесь с <ulink + url="&url.books.fdp-primer;/translations.html"> + FAQ по Переводам</ulink> из &os; Documentation Project + Primer.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="freebsd-mail-bounces"> + <para>Почему возвращается моя электронная почта, отправленная на + любой из адресов <hostid role="domainname">FreeBSD.org</hostid>?</para> + </question> + + <answer> + <para>В почтовой системе <hostid role="domainname">FreeBSD.org</hostid> + в <application>Postfix</application> применяются некоторые + более строгие проверки входящей почты, и отвергаются сообщения, + которые сформированы неправильно либо потенциально являются спамом. + Ваша почта может не приниматься по одной из следующих + причин:</para> + + <itemizedlist> + <listitem> + <para>Электронная почта была послана с домена или блока + IP-адресов, которые известны нам как спамеры.</para> + + <para>Почтовые серверы &os; отвергают электронную почту от + известных источников спама. Если вы пользуетесь услугами + компании или домена, рассылающего или пересылающего спам, + пожалуйста, переключитесь на другого поставщика услуг, который + этого не делает.</para> + </listitem> + + <listitem> + <para>Тело сообщения электронной почты содержит только + HTML.</para> + + <para>Почта должна посылать только как обычный текст. + Пожалуйста, настройте ваш почтовый агент на отправку только + текста.</para> + </listitem> + + <listitem> + <para>Почтовая программа <hostid role="domainname">FreeBSD.org</hostid> + не может преобразовать + адрес IP подключающегося хоста в символическое имя.</para> + + <para>Работа обратного DNS является стандартным требованием для + принятия почты от хоста. Настройте обратный DNS для IP-адреса + вашего почтового сервера. Многие способы домашнего подключения + (DSL, кабель, коммутируемое соединение и тому подобное) не + предоставляют такой возможности. В таком случае пересылайте + свою электронную почту через почтовый сервер вашего поставщика + услуг.</para> + </listitem> + + <listitem> + <para>Имя хоста, указанное на этапе EHLO/HELO процесса обмена + сообщениями SMTP не может быть преобразовано в IP-адрес.</para> + + <para>На этом этапе диалога SMTP, перед принятием почты, + необходим полное и преобразуемое имя хоста. Если у вас нет + имени хоста, который зарегистрирован в DNS, то для пересылки + своей почты вы должны использовать почтовый сервер вашего + поставщика услуг.</para> + </listitem> + + <listitem> + <para>Ваше сообщение имеет идентификатор, оканчивающийся + строчкой <quote>localhost</quote>.</para> + + <para>Некоторые почтовые программы генерируют неправильные + идентификаторы сообщений, которые не могут быть приняты. Вам + нужно заставить почтовую программу пользователя генерировать + правильный идентификатор сообщения либо настроить ваш агент + передачи почты на замену этих идентификаторов.</para> + </listitem> + </itemizedlist> + </answer> + </qandaentry> + + <qandaentry> + <question id="free-account"> + <para>Где можно получить бесплатный доступ к &os;?</para> + </question> + + <answer> + <para>Хотя &os; не предоставляет бесплатный доступ ни к одному из + своих серверов, другие компании предоставляют &unix;-системы с + открытым доступом. Стоимость этой услуги различна, также как и + ограниченный набор услуг.</para> + + <para><ulink url="http://www.arbornet.org/">Arbornet, Inc</ulink>, + также известный как <emphasis>M-Net</emphasis>, предоставляет + свободный доступ к + &unix;-системам с 1983 года. Начиная на платформе Altos с + работающей System III, сайт перешёл на BSD/OS в 1991. + В июне 2000 сайт сменил систему снова, теперь на &os;. + <emphasis>M-Net</emphasis> может быть доступна через протоколы + <application>telnet</application> и <application>SSH</application> + и предоставляет доступ к полному набору программного обеспечения + &os;. Однако доступ к сети ограничен для членов и спонсоров, + которые поддерживают систему, которая работает как неприбыльная + организация. <emphasis>M-Net</emphasis> предоставляет также + услуги электронной доски объявлений (BBS) и интерактивного + чата.</para> + + <para><ulink url="http://www.grex.org/">Grex</ulink> представляет + собой сайт, очень похожий на <emphasis>M-Net</emphasis>, + включая то же самое + программное обеспечение для электронной доски объявлений (BBS) и + интерактивного чата. Однако платформой является &sun; 4M под + управлением &sunos;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="sup-define"> + <para>Что такое <command>sup</command> и как это можно + использовать?</para> + </question> + + <answer> + <para>Сокращение <ulink + url="http://www.FreeBSD.org/cgi/ports.cgi?^sup">SUP</ulink> + означает Software Update Protocol, который был разработан в + CMU для синхронизации исходных текстов. Он использовался для + синхронизации исходных текстов на удалённых сайтах с основным + сервером разработки Проекта.</para> + + <para>Протокол SUP использует пропускную способность канала + неэффективно, и был отвергнут. В настоящее время рекомендуемым + методом для синхронизации исходных текстов является протокол <ulink + url="&url.books.handbook;/synching.html#CVSUP"> + CVSup</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="daemon-name"> + <para>Как зовут этого маленького симпатичного красного парня?</para> + </question> + + <answer> + <para>У него нет определённого имени, он называется просто + <quote>даемон BSD</quote>. Если вам непременно нужно имя, + называйте его <quote>beastie</quote>. Заметьте, что + <quote>beastie</quote> произносится как <quote>BSD</quote>.</para> + + <para>Больше о даемоне BSD вы можете узнать из его <ulink + url="http://www.mckusick.com/beastie/index.html">домашней + страницы</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="use-beastie"> + <para>Могу ли я использовать изображение даемона BSD?</para> + </question> + + <answer> + <para>Вполне. Права на даемона BSD имеет Marshall + Kirk McKusick. Для выяснения подробностей относительно правил + его использования вы можете обратиться к странице автора <ulink + url="http://www.mckusick.com/beastie/mainpage/copyright.html"> + Statement on the Use of the BSD Daemon Figure</ulink>.</para> + + <para>В общем, вы можете свободно использовать изображение в + высокохудожественном стиле и в личных целях, если даются + соответствующие отсылки. Если вы хотите использовать его в + коммерческих целях, вы должны обратиться к &a.mckusick;. + Дополнительная информация находится на <ulink + url="http://www.mckusick.com/beastie/index.html">домашней странице + Даемона BSD</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="daemon-images"> + <para>Не найдется ли у вас изображений даемона BSD, которые можно + использовать?</para> + </question> + + <answer> + <para>В каталоге <filename + class="directory">/usr/share/examples/BSD_daemon/</filename> + есть рисунки в форматах eps и Xfig.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="glossary"> + <para>При просмотре списков рассылки, я встретил акроним или + другой термин, который мне не понятен. Где я должен посмотреть, + что он значит?</para> + </question> + + <answer> + <para>Пожалуйста, обращайтесь к <ulink + url="&url.books.handbook;/freebsd-glossary.html"> + Глоссарию &os;</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="bikeshed-painting"> + <para>Почему я должен беспокоиться о цвете велосипедных навесов + (bikeshed)?</para> + </question> + + <answer> + <para>На самом деле, очень краткий ответ на этот вопрос заключается в том, + что вы этого делать не должны. Если давать более подробный ответ, то ваше + умение делать навесы не должно означать, что вы должны препятствовать + другим делать их просто потому, что вам не нравится цвет, в который + они собираются их окрашивать. Эта метафора означает, что вам не нужно + обсуждать каждую мелочь просто потому, что вы знаете о ней + достаточно много. Некоторые люди отмечают, что объём шума, генерируемый + при появлении некоторого изменения, находится в обратной зависимости от + сложности самого изменения.</para> + + <para>Более пространный и полный ответ заключается в том, что после очень + долгого обсуждения того, должна ли утилита &man.sleep.1; обрабатывать + дробное число, заданное в качестве второго аргумента, &a.phk; + опубликовал большое сообщение, озаглавленное <quote><ulink + url="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers"> + Велосипедный навес (подставьте здесь цвет) на зелёной траве...</ulink></quote>. + Соответствующие части этого сообщения цитируются ниже.</para> + + <blockquote> + <attribution>&a.phk; on freebsd-hackers, + October 2, 1999</attribution> + + <para><quote>Что это за история с навесом для велосипеда?</quote> Кто-то + из вас задавал такой вопрос.</para> + + <para>Это долгая история, или же это старая история, но на самом деле + она коротка. В начале 1960-х годов Паркинсон (C. Northcote Parkinson) + написал книгу <quote>Закон Паркинсона</quote>, которая содержит много + интересных взглядов на процесс управления.</para> + + <para><emphasis>[немного выдержек из краткого содержания книги]</emphasis></para> + + <para>В конкретном примере велосипедный навес сопоставляется с + другим важным объектом - атомной электростанцией. + Я полагаю, что это иллюстрирует древность книги.</para> + + <para>Паркинсон показывает, что вы можете прийти на совещание + руководителей и получить добро на строительство многомиллионной + или даже многомиллиардной атомной электростанции, но если вы + хотите построить навес для велосипеда, то погрязнете в бесконечных + обсуждениях.</para> + + <para>Паркинсон объясняет это тем, что атомная станция настолько большой, + дорогой и сложный объект, что люди не могут его осознать и вместо того, + чтобы попробовать это сделать, они полагаются на то, что кто-то уже + проверил все мелочи до того, как всё зашло так далеко. В своей книге + Ричард П. Фейнманн (Richard P. Feynmann) даёт несколько интересных и + очень поучительных примеров, связанных с Лос Аламос.</para> + + <para>Велосипедный навес - это противоположный случай. Любой может + построить навес за один уикэнд, и у него ещё останется время посмотреть + футбол по телевизору. Так что не важно, насколько хорошо вы готовились + к обсуждению, насколько убедительны будут ваши аргументы, кто-нибудь + воспользуется шансом показать, что он не зря ест свой хлеб, что он + обращает внимание, что он <emphasis>здесь</emphasis>.</para> + + <para>В Дании это называется <quote>оставить отпечаток своего + пальца</quote>. Это касается личной гордости и престижа, это похоже + на возможность указать куда-то и сказать: <quote> Вон там! Это сделал + <emphasis>я</emphasis>.</quote> Это сильно выражено в политиках, но + присутствует во многих людях, которые получают возможность сделать + это. Просто вспомните об отпечатках ног во влажном цементе.</para> + </blockquote> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="funnies"> + <title>Юмор от &os;</title> + + <qandaset> + <qandaentry> + <question id="very-very-cool"> + <para>Насколько греется процессор при работе &os;?</para> + </question> + + <answer> + <para>В. Кто-нибудь делал замеры температуры при работе &os;? Я + знаю, что &linux; греется меньше, чем DOS, но никогда не видел + упоминания &os;. Наверное, он сильно греется.</para> + + <para>О. Нет, но мы сделали различные вкусовые тесты у добровольцев с + завязанными глазами, которые до этого приняли по 250 микрограмм + LSD-25. 35% добровольцев заявило, что &os; имеет вкус апельсина, + тогда как вкус &linux; расценивался как фиолетовый туман. Ни одна + из групп не отметила значительной разницы в температуре. Мы + хотели опубликовать полные результаты этого опроса, когда + обнаружили, что слишком много добровольцев покинули помещение во + время тестов, что несколько смазало результаты. Думаем, что + большинство из них работают сейчас в Apple над их новым GUI + <quote>чеши и нюхай</quote>. Это старый добрый бизнес!</para> + + <para>Серьёзно, и &os;, и &linux; используют инструкцию + <acronym>HLT</acronym> (halt), когда система простаивает, что + уменьшает потребление энергии и в свою очередь, выделение тепла. + Вдобавок, если у вас настроен APM (комплексное управление + энергопотреблением), то &os; может переводить процессор в режим + пониженного энергопотребления.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="letmeoutofhere"> + <para>Кто там скребётся в микросхемах памяти??</para> + </question> + + <answer> + <para>В. Делает ли &os; что-нибудь <quote>эдакое</quote> при + компиляции ядра, что вызывает поскрипывание микросхем памяти? При + компиляции (и в короткий промежуток времени после обнаружения + дисковода при старте системы) от микросхем памяти исходит странный + царапающий звук.</para> + + <para>О. Да! Вы, наверное, видели частое упоминание + <quote>даемонов</quote> в документации по BSD, но не многие знают, + что это настоящие нематериальные существа, которые теперь + завладели вашим компьютером. Царапающий звук, издаваемый + микросхемами памяти - это на самом деле высокочастотное + перешёптывание между даемонами, когда они решают, как лучше + справиться с различными задачами по администрированию + системы.</para> + + <para>Если шум достиг ваших ушей, команда DOS <command>fdisk + /mbr</command> их спугнёт, но не удивляйтесь, если они отреагируют + соответствующим образом и попытаются вас остановить. Фактически, + если во время выполнения этой команды вы услышите сатанинский + голос Билла Гейтса из встроенного динамика, бегите и даже не + оглядывайтесь! Избавленные от противостояния с даемонами BSD, + близнецы-демоны DOS и &windows; часто могут захватить полный + контроль не только над вашей машиной и навлечь вечное проклятие на + вашу душу. Теперь, когда вы это знаете, если бы у вас был выбор, + думаем, что вы бы предпочли слышать царапающий звук, не так + ли?</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="changing-lightbulbs"> + <para>Сколько требуется разработчиков &os;, чтобы сменить + электрическую лампочку?</para> + </question> + + <answer> + <para>Необходимо иметь ровно одну тысячу сто шестьдесят девять + разработчиков:</para> + + <para>Двадцать три сообщат в -CURRENT о том, что не горит свет;</para> + + <para>Четыре начнут утверждать, что это проблема конфигурации и такие + сообщения нужно посылать в -questions;</para> + + <para>Трое оформят PR по этому поводу, причём одно их них будет + направлено в doc и будет содержать только строчку + <quote>здесь темно</quote>;</para> + + <para>Один закоммитит неоттестированную лампочку, что сломает + построение системы, а затем через пять минут вернёт всё + назад;</para> + + <para>Восемь поругаются с авторами PR по поводу включения патчей в + PR;</para> + + <para>Пять сообщат о том, что не проходит компиляция системы;</para> + + <para>Тридцать один человек ответит, что у них всё работает и + наверное, те выполняли cvsup в неподходящее время;</para> + + <para>Один пошлёт патч для новой лампочки в -hackers;</para> + + <para>Один пожалуется, что у него имелись патчики ещё три года назад, + но когда он послал их в -CURRENT, они были проигнорированы и он имел + неудачный опыт работы с системой PR; кроме того предлагаемая + лампочка не имеет отражателя.</para> + + <para>Тридцать семь начнут кричать, что лампочки не относятся к + базовой системе, что коммиттеры не имеют права делать такие вещи + без опроса общественности и ЧТО ВООБЩЕ -CORE ДЕЛАЕТ ПО ЭТОМУ + ПОВОДУ?</para> + + <para>Две сотни напишут о цвете велосипедного навеса;</para> + + <para>Трое скажут, что этот патч не соответствует &man.style.9;</para> + + <para>Семнадцать возразят, что предлагаемая новая лампа подпадает под + лицензию GPL;</para> + + <para>Пятьсот восемьдесят шесть раздуют флейм по поводу сравнения + лицензий GPL, BSD, MIT, NPL и личных мнений о неизвестных + основателей FSF;</para> + + <para>Семеро пошлют различные части этих обсуждений в -chat и + -advocacy;</para> + + <para>Один закоммитит предлагаемую лампу, хотя она светит хуже, чем + старая;</para> + + <para>Двое откатят эти изменения с ужасной руганью в журнале коммитта + о том, что лучше &os; будет сидеть в темноте, чем с тусклой + лампой.</para> + + <para>Сорок шесть громко воспротивятся этому изменению и потребуют + объяснений от -core;</para> + + <para>Одиннадцать попросят уменьшить размер лампочки, чтобы она + подошла к их Тамагочи на случай, если мы когда-нибудь соберёмся + переносить &os; на эту платформу;</para> + + <para>Семьдесят три заявят о SNR в -hackers и -chat и в знак протеста + отпишутся;</para> + + <para>Тринадцать пошлют письма <quote>unsubscribe</quote>, <quote>How + do I unsubscribe?</quote> или <quote>Please remove me from the + list</quote> с обычной подписью;</para> + + <para>Один закоммитит работающую лампочку в то время, как все будут + слишком заняты руганью, чтобы это заметить;</para> + + <para>Тридцать один человек напишет, что новая лампочка будет светить + на 0.364% ярче, если её откомпилировать с помощью TenDRA (хотя при + этом она приобретёт форму куба) и что &os; должна перейти на + компилятор TenDRA, а не на GCC;</para> + + <para>Один заметит, что у лампочки отсутствует цоколь;</para> + + <para>Девять (включая авторов PR) спросят <quote>что такое + MFC?</quote>;</para> + + <para>Спустя две недели после смены лампочки пятьдесят семь человек + сообщат о том, что света всё равно нет.</para> + + <para><emphasis>&a.nik; добавил:</emphasis></para> + + <para><emphasis>Я сильно смеялся над всем этим.</emphasis></para> + + <para><emphasis>И тогда я подумал, <quote>Постойте-ка, найдётся ли + кто-нибудь, чтобы задокументировать это?</quote></emphasis></para> + + <para><emphasis>И на меня снизошло озарение :-)</emphasis></para> + + <para><emphasis>&a.tabthorpe;</emphasis> говорит: <quote>Нет, + <emphasis>настоящие</emphasis> хакеры &os; не боятся + темноты!</quote></para> + </answer> + </qandaentry> + + <qandaentry> + <question id="dev-null"> + <para>Куда направляются данные, записываемые в + <filename>/dev/null</filename>?</para> + </question> + + <answer> + <para>Они отправляются в специальную сточную трубу для данных + в CPU, где преобразуются в тепло, выдуваемое через охлаждающие + вентиляторы. Вот почему охлаждение ЦП становится все более + важным; так как люди используют все более быстрые процессоры, + они все менее заботятся о данных, все большее их количество + оканчивает свой путь в <filename>/dev/null</filename>, + перегревая ЦП. Если вы удалите <filename>/dev/null</filename> + (что соответственно отключит трубу данных в ЦП), то ваш + процессор может охладиться, но система начнет переполняться + излишними данными и начнет работать с ошибками. Если у вас + быстрое сетевое подключение, вы можете охладить CPU, читая + данные из <filename>/dev/random</filename> и посылая их + куда-нибудь; однако вы рискуете перегреть ваше сетевое + соединение и <filename class="directory">/</filename> или + разозлить вашего провайдера, так как большинство данных + преобразуется в тепло на его оборудовании, но, как правило, + у него хорошее охлаждение, так что если вы не перестараетесь, + все должно быть в порядке.</para> + + <para><emphasis>Пол Робинсон (Paul Robinson) + добавляет:</emphasis></para> + + <para>Есть и другие методы. Как знает каждый хороший системный + администратор, частью хорошей практики является посылка данных на + экран интересным образом, чтобы феи, которые образуют картинку, + были счастливы. Экранные феи (часто неправильно называемые + <quote>пикселами</quote>) различаются по цвету головных уборов, + которые они носят + (красные, зеленые или синие), и прячутся или появляются (показывая, + таким образом, цвет своих шляп), когда получают немного пищи. + Видеоадаптеры преобразуют данные в еду для фей, а затем посылают + ее феям — чем дороже адаптер, тем лучше еда, тем лучше + ведут себя феи. Они также нуждаются в постоянной стимуляции + — вот зачем нужны хранители экранов.</para> + + <para>Продолжив наше предположение, вы можете просто выдавать + случайные данные на консоль, таким образом позволяя феям их + потреблять. Это вовсе приводит к прекращению выделения тепла, + феи постоянно счастливы, а данные быстро исчезают, даже если + на вашем экране все выглядит несколько хаотично.</para> + + <para>Как бывший администратор крупного провайдера, который имел + много проблем при попытке поддерживать постоянную температуру в + серверной комнате, я выступаю против того, чтобы люди посылали + ненужные им данные в сеть. Волшебников, которые выполняют + коммутацию пакетов и маршрутизацию, это также затрудняет.</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="advanced"> + <title>Сложные темы</title> + + <qandaset> + <qandaentry> + <question id="learn-advanced"> + <para>Как можно узнать больше о внутреннем устройстве &os;?</para> + </question> + + <answer> + <para>В настоящее время существует только одна книга по внутреннему + устройству ОС, посвящённая &os;, а именно <quote>The Design and + Implementation of the &os; Operating System</quote> Маршалла + Кёрка МакКузика (Marshall Kirk McKusick) и Джорджа В. Невилле-Нейла + (George V. Neville-Neil), ISBN 0-201-70245-2. В ней + рассматривается &os; версии 5.<replaceable>X</replaceable>.</para> + + <para>Кроме того, большинство общих знаний о &unix; непосредственно + применимо к &os;.</para> + + <para>Список относящихся к делу книг можно найти в разделе + Руководства <ulink + url="&url.books.handbook;/bibliography-osinternals.html"> + Библиография по внутреннему устройству операционной + системы</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="how-to-contribute"> + <para>Как можно оказать помощь проекту &os;?</para> + </question> + + <answer> + <para>Пожалуйста, обратитесь к соответствующей <ulink + url="&url.articles.contributing;/article.html">статье</ulink>, + в которой вы получите советы относительно того, как это сделать. + Ваша помощь более чем приветствуется!</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="define-snap-release"> + <para>Что такое снапшоты и релизы?</para> + </question> + + <answer> + <para>В <ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi">Хранилище + CVS</ulink> сейчас находятся четыре активно/полуактивно + развивающихся ветки &os;. (Более ранние ветки изменяются + очень редко, именно поэтому в разработке только четыре + активных ветки):</para> + + <itemizedlist> + <listitem> + <para>&rel3.releng;, также известная как + &rel3.stable;</para> + </listitem> + + <listitem> + <para>&rel2.releng;, также известная как + &rel2.stable;</para> + </listitem> + + <listitem> + <para>&rel.releng;, также известная как + &rel.stable;</para> + </listitem> + + <listitem> + <para>&rel.head.releng;, также известная как + <emphasis>-CURRENT</emphasis> и &rel.head;</para> + </listitem> + </itemizedlist> + + <para><literal>HEAD</literal> - это не реальный тэг ветки, + в отличие от остальных; это просто символьная константа + для обозначения + <quote><emphasis>текущего, не ветвящегося, находящегося в + разработке дерева</emphasis></quote>, то есть + <emphasis>-CURRENT</emphasis>.</para> + + <para>На данный момент <emphasis>-CURRENT</emphasis> является + находящимся в разработке деревом &rel.head.relx;; + ветка &rel.stable;, &rel.releng;, + отделилась от <emphasis>-CURRENT</emphasis> &rel.relengdate; + года, а ветка &rel2.stable;, + &rel2.releng;, отделилась от + <emphasis>-CURRENT</emphasis> &rel2.relengdate;.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="custrel"> + <para>Как самому сделать релиз?</para> + </question> + + <answer> + <para>Пожалуйста, обратитесь к статье о <ulink + url="&url.articles.releng;/article.html">процессе выпуска + релизов</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="makeworld-clobbers"> + <para>По команде <command>make <maketarget>world</maketarget></command> + были переустановлены все программы.</para> + </question> + + <answer> + <para>Да, так и должно быть; как говорит название этой команды, + <command>make <maketarget>world</maketarget></command> выполняет + построение всех системных + файлов с нуля, так что в итоге можете быть уверены, что получите + чистую рабочую систему (вот почему это занимает столько + времени).</para> + + <para>Если в момент запуска команд <command>make + <maketarget>world</maketarget></command> или <command>make + <maketarget>install</maketarget></command> определена переменная + окружения + <envar>DESTDIR</envar>, то вновь создаваемые файлы будут + помещены в дерево каталогов. идентичное существующему, с корнем, + располагающимся в <literal>${DESTDIR}</literal>. Однако некоторые + случайные комбинации модификаций совместно используемых библиотек + и версий компилируемых программ при исполнении команды + <command>make <maketarget>world</maketarget></command>, могут + этому помешать.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="cvsup-round-robin"> + <para>Почему <hostid role="fqdn">cvsup.FreeBSD.org</hostid> не + является одной DNS-записью + для нескольких машин для распределения нагрузки между + несколькими <application>CVSup</application>-серверами?</para> + </question> + + <answer> + <para>Хотя зеркала <application>CVSup</application> обновляются + с основного <application>CVSup</application>-сервера каждый + час, это обновление может происходить в любой момент в течение + часа. Это значит, что некоторые серверы будут иметь более новый + код, чем остальные, хотя разница между версиями кода не превышает + часа. Если бы для серверов <hostid + role="fqdn">cvsup.FreeBSD.org</hostid> использовалась одна + DNS-запись, то простое перенаправление пользователей на случайно + выбранный сервер <application>CVSup</application>, при условии, + что <application>CVSup</application> будет запускаться + два раза подряд, может привести к сгрузке кода, более старого, чем + тот, что присутствует в системе.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="ctm"> + <para>Можно ли работать с <emphasis>-CURRENT</emphasis> при + ограниченном доступе в Internet?</para> + </question> + + <answer> + <para>Да, это можно делать <emphasis>без</emphasis> скачивания + полного дерева исходных текстов с помощью <ulink + url="&url.books.handbook;/synching.html#CTM">системы + CTM</ulink>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="split-1392k"> + <para>Как вы разделяете дистрибутив на файлы по 1392 Кбайт?</para> + </question> + + <answer> + <para>Команда &man.split.1; в современных BSD-системах имеет опцию + <option>-b</option>, позволяющую разрезать файлы на части с точностью до + байта.</para> + + <para>Вот пример из файла + <filename>/usr/src/release/Makefile</filename>.</para> + + <programlisting>ZIPNSPLIT= gzip --no-name -9 -c | split -b 1392k -</programlisting> + </answer> + </qandaentry> + + <qandaentry> + <question id="submitting-kernel-extensions"> + <para>Я написал некоторое добавление к ядру, кому его послать?</para> + </question> + + <answer> + <para>Обратитесь к статье о том, как <ulink + url="&url.articles.contributing;/article.html">помочь проекту + &os;</ulink>, чтобы выяснить, как это сделать.</para> + + <para>И спасибо Вам за Ваши усилия!</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="pnp-initialize"> + <para>Как распознаются и инициализируются адаптеры ISA + Plug N Play?</para> + </question> + + <answer> + <para>От: Фрэнка Дурды IV (Frank Durda IV) + <email>uhclem@nemesis.lonestar.org</email></para> + + <para>Если рассматривать на самом низком уровне, то существует + несколько портов ввода/вывода, в которые должны выводить + информацию все адаптеры PnP, когда компьютер пытается + выполнить запрос о наличии установленных адаптеров. Так что, + когда запускается процедура определения адаптеров PnP, она + выполняет запрос о наличии каких-либо адаптеров PnP, а все + такие адаптеры выдают свой номер модели при чтении того же + порта ввода/вывода, поэтому процедура определения получит + ответ на свой запрос, состоящий из логически наложенных + номеров моделей, интерпретируемый как <quote>да</quote>. + В этом ответе по крайней мере один бит будет установлен в + единицу. Затем код определения адаптеров может + <quote>выключать</quote> адаптеры с ID (назначаемыми + µsoft;/&intel;), большими, чем <literal>X</literal>. + Потом следует попытка определить, остались ли ещё адаптеры, + отвечающие на запрос. Если ответ <literal>0</literal>, то + адаптеров с ID, большими чем <literal>X</literal>, нет. + После этого делается попытка определить наличие адаптеров с + номерами, меньшими чем <literal>X</literal>. В заключение + происходит запрос на выключение адаптерам, большим чем + <literal>X - (limit / 4)</literal>. + Запрос повторяется. Применив этот метод полудвоичного поиска + границ расположения ID достаточное количество раз, код + идентификации найдёт все адаптеры PnP, установленные в данной + машине за число итераций, гораздо меньшее, чем может занять + перебор 2<superscript>64</superscript> возможных вариантов + ID.</para> + + <para>ID представляет собой два 32-разрядные числа (отсюда число + 2<superscript>64</superscript>) + 8 бит контрольной суммы. + Первые 32 бита являются идентификатором производителя. + Они никогда не сообщаются, однако часто бывает, что различные + типы адаптеров от одного и того же производителя имеют + различные 32-битные значения идентификатора производителя. + Необходимость в 32 разрядах только для задания + производителя адаптера выглядит несколько излишним.</para> + + <para>Оставшиеся 32 бита являются серийным номером или + чем-либо, делающим этот адаптер уникальным. Производитель + не должен выпускать других адаптеров, имеющих то же самое + значение этих битов, если, конечно, у них не различаются при + этом старшие биты идентификатора производителя. Так что + вы можете иметь несколько адаптеров одинакового типа; при + этом, 64-разрядные номера будут разными.</para> + + <para>Группы по 32 бита не могут быть нулевыми. Это + позволяет при логическом объединении OR их номеров получать + ненулевое значение во время начального поиска адаптеров.</para> + + <para>Как только система определила ID всех адаптеров, она + активизирует каждый адаптер, по одному за раз (через те же + порты ввода/вывода), и определяет, какие ресурсы требуются + данному адаптеру, какие возможные прерывания доступны и т.д. + Сканирование и сбор информации происходит по всем адаптерам.</para> + + <para>Эта информация соотносится с содержащейся в файлах ECU + на диске или в MLB BIOS. Поддержка PnP из ECU и BIOS для + аппаратуры на MLB обычно имеет синтетический характер, и + периферия не выполняет полностью процедуру настоящего PnP. + Однако, используя BIOS и информацию из ECU, процедура + инициализации может обнаружить устройства PnP, которые не + могут быть найдены другим способом.</para> + + <para>Затем устройства PnP опрашиваются ещё раз для назначения + им портов ввода/вывода, DMA, IRQ и адресов отображаемой памяти. + Теперь устройства должны иметь именно такие настройки и они + должны оставаться такими до следующей перезагрузки, хотя нигде + не сказано, что вы не можете их менять, когда захотите.</para> + + <para>Здесь сделано много упрощений, однако общую идею вы должны + уловить.</para> + + <para>µsoft; использовала для PnP некоторые порты статуса + первого принтера, по их логике, не существует адаптеров, + использующих эти адреса для ввода/вывода. Я обнаружил один + такой адаптер принтера от IBM, который декодирует запись в + порт статуса в момент начального опроса устройств PnP, на + что µsoft; ответила <quote>хулиган</quote>. Так что они + выполняют запись в порт статуса принтера для установки адресов, + вдобавок используют этот адрес + <literal>0x800</literal>, и + ещё один порт ввода/вывода используют для чтения, который + может располагаться где угодно в диапазоне между + <literal>0x200</literal> и <literal>0x3ff</literal>.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="major-numbers"> + <para>Мне нужно старшее число для написанного мною драйвера + устройства.</para> + </question> + + <answer> + <para>В версиях &os;, вышедших после февраля 2003 года, есть + механизм динамического и автоматического выделения старших + номеров для драйверов устройств во время выполнения (смотрите + &man.devfs.5;), поэтому в этом нет необходимости.</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="alternate-directory-layout"> + <para>Альтернативный метод размещения каталогов</para> + </question> + + <answer> + <para>В ответ на вопрос о других методах размещения каталогов + могу сказать, что используемая в настоящее схема не претерпела + изменений с того момента, как я реализовал её в 1983 году. + Эти соглашения были разработаны для оригинальной файловой + системы FFS, и я никогда их не пересматривал. Эта схема хорошо + работает, позволяя избежать переполнения групп дорожек. Как + некоторые из вас заметили, она работает плохо при поиске. + Большинство файловых систем создаются из архивов, которые были + созданы с глубиной первого поиска (aka ftw). Это приводит к + тому, что их каталоги размещаются на нескольких группах дорожек, + создавая наихудший случай для последующего поиска глубиной один. + Если бы было известно общее количество каталогов, которые должны + быть созданы, выходом было бы создание каталогов в количестве + <literal>(total / fs_ncg)</literal> на каждую группу + дорожек. Очевидно, что пришлось бы придумать некоторую эвристику + для определения этого числа. Даже при использовании небольшого + фиксированного количества, скажем 10, ситуация улучшилась бы на + порядок. Чтобы различать операции восстановления от обычных + операций (для которых текущий алгоритм, вероятно, является + более разумным), вы могли бы использовать объединение в кластеры + объёмом до 10, если они помещаются в 10-секундном окне. + Как бы то ни было, я думаю, что это большое поле для + экспериментов.</para> + + <para>&a.mckusick;, сентябрь 1998 года</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="kernel-panic-troubleshooting"> + <para>Что делать при аварийном останове системы?</para> + </question> + + <answer> + <para>Вот типичная паника ядра:</para> + + <programlisting>Fatal trap 12: page fault while in kernel mode +fault virtual address = 0x40 +fault code = supervisor read, page not present +instruction pointer = 0x8:0xf014a7e5 +stack pointer = 0x10:0xf4ed6f24 +frame pointer = 0x10:0xf4ed6f28 +code segment = base 0x0, limit 0xfffff, type 0x1b + = DPL 0, pres 1, def32 1, gran 1 +processor eflags = interrupt enabled, resume, IOPL = 0 +current process = 80 (mount) +interrupt mask = +trap number = 12 +panic: page fault</programlisting> + + <para>Если вы видите такое сообщение, просто его воспроизвести + и послать нам не достаточно. Здесь важно значение указателя + инструкций; к сожалению, его значение зависит + от конфигурации ядра. Другими словами, его значение меняется + в зависимости от конкретного ядра, которое вы используете. + Если вы используете ядро <filename>GENERIC</filename> одного + из снэпшотов, то кто-то ещё может отследить функцию, вызвавшую + ошибку, но если вы работаете со специально отконфигурированным + ядром, то только <emphasis>вы</emphasis> можете сказать нам, + где случилась ошибка.</para> + + <para>Вот что вы должны сделать:</para> + + <procedure> + <step> + <para>Запишите значение указателя инструкций. Заметьте, + что часть <literal>0x8:</literal> в этом случае не + важна: нам нужна часть <literal>0xf0xxxxxx</literal>.</para> + </step> + + <step> + <para>Когда система перезагрузится, сделайте следующее:</para> + + <screen>&prompt.user; <userinput><command>nm</command> <option>-n</option> <replaceable>kernel.that.caused.the.panic</replaceable> | <command>grep</command> f0xxxxxx</userinput></screen> + + <para>где <literal>f0xxxxxx</literal> — это значение + указателя инструкций. Однако неприятность заключается в + том, что вы не получите точного соответствия, так как в + таблице имен ядра для точек входа в функции даны адреса + на начало функций, а указатель инструкций будет указывать + куда-то внутрь её тела. Если вы не получили точного + соответствия, опустите последнюю цифру в значении + указателя инструкций и попробуйте снова, то есть:</para> + + <screen>&prompt.user; <userinput><command>nm</command> <option>-n</option> <replaceable>kernel.that.caused.the.panic</replaceable> | <command>grep</command> f0xxxxx</userinput></screen> + + <para>Если и это не привело ни к каким результатам, отрежьте + следующую цифру. Повторяйте, пока не получите хоть что-то. + Результатом будет список функций, которые, возможно, + привели к аварийному останову. Этот механизм обнаружения + ошибочного места довольно неточен, но это всё же лучше, + чем ничего.</para> + </step> + </procedure> + + <para>Тем не менее, лучшим способом выяснить причину, вызвавшую + аварийный останов, является получение аварийного дампа системы, + а затем использование &man.kgdb.1; для получения трассировки + вызовов в этом дампе.</para> + + <para>В любом случае, метод таков:</para> + + <procedure> + <step> + <para>Убедитесь в том, что в файле конфигурации ядра имеется + следующая строка + (<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf/<replaceable>MYKERNEL</replaceable></filename>):</para> + + <programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting> + </step> + + <step> + <para>Перейдите в каталог <filename + class="directory">/usr/src</filename>:</para> + + <screen>&prompt.root; <userinput><command>cd</command> <filename class="directory">/usr/src</filename></userinput></screen> + </step> + + <step> + <para>Скомпилируйте ядро:</para> + + <screen>&prompt.root; <userinput><command>make</command> <maketarget>buildkernel</maketarget> <makevar>KERNCONF</makevar>=<replaceable>MYKERNEL</replaceable></userinput></screen> + </step> + + <step> + <para>Дождитесь завершения компиляции.</para> + </step> + + <step> + <screen>&prompt.root; <userinput><command>make</command> <maketarget>installkernel</maketarget> <makevar>KERNCONF</makevar>=<replaceable>MYKERNEL</replaceable></userinput></screen> + </step> + + <step> + <para>Выполните перезагрузку.</para> + </step> + </procedure> + + <note> + <para>Если вы не используете переменную make + <makevar>KERNCONF</makevar>, то будет собрано и + установлено ядро <filename>GENERIC</filename>.</para> + </note> + + <para>В процессе выполнения команды &man.make.1; будут + построены два ядра, + <filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel</filename> + и + <filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel.debug</filename>. + <filename>kernel</filename> будет установлен как + <filename>/boot/kernel/kernel</filename>, тогда как + <filename>kernel.debug</filename> может быть использован в + качестве источника отладочных символов для &man.kgdb.1;.</para> + + <para>Чтобы включить сброс аварийного дампа, вам нужно + отредактировать файл <filename>/etc/rc.conf</filename> так, + чтобы устройство <literal>dumpdev</literal> указывало на + раздел подкачки (или имело значение <literal>AUTO</literal>). + В этом случае скрипты &man.rc.8; будут вызывать команду + &man.dumpon.8; для создания аварийных дампов. Также вы + можете запустить команду &man.dumpon.8; вручную. После + аварийной остановки аварийный дамп может быть получен с + помощью программы &man.savecore.8; если значение переменной + <literal>dumpdev</literal> было установлено в + <filename>/etc/rc.conf</filename>, скрипты &man.rc.8; запустят + &man.savecore.8; автоматически и поместят аварийный дамп в + каталог <filename class="directory">/var/crash</filename>.</para> + + <note> + <para>Аварийные дампы &os; обычно имеют размер, равный + физическому объёму оперативной памяти вашей машины. Так + что если у вас установлено 512 Мбайт ОЗУ, вы получите + дамп размером 512 Мбайт. Поэтому вы должны + удостовериться, что в каталоге <filename + class="directory">/var/crash</filename> + достаточно места для хранения дампа. Либо вы можете вручную + запустить &man.savecore.8; и создать аварийный дамп в другом + каталоге, где достаточно места. Размер аварийного дампа + можно уменьшить, указав в конфигурации ядра + <literal>options MAXMEM=<replaceable>N</replaceable></literal>, + где <replaceable>N</replaceable> — значение в Кбайт + для объёма памяти, которое будет использоваться ядром. + Например, если у вас 1 Гбайт ОЗУ, вы можете ограничить + использование памяти ядром 128 Мбайтами, так что + размер аварийного дампа будет равен 128 Мбайт, а не + 1 Гбайт.</para> + </note> + + <para>Как только вы получили аварийный дамп, вы можете выполнить + трассировку вызовов с помощью &man.kgdb.1; таким образом:</para> + + <screen>&prompt.user; <userinput><command>kgdb</command> <filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel.debug</filename> <filename class="directory">/var/crash/<replaceable>vmcore.0</replaceable></filename></userinput> +<prompt>(kgdb)</prompt> <userinput>backtrace</userinput></screen> + + <para>Заметьте, что при этом может быть выведено несколько экранов + информации; в идеале вы должны использовать &man.script.1; для их + перехвата. При использовании необработанного образа ядра со всей + отладочной информацией может быть найдена конкретная строка исходного + текста ядра, при достижении которой случилась аварийная остановка. + Для выяснения последовательности событий, приведших к аварийному + останову, обычно читается трассировка стека снизу вверх. Вы можете + также использовать &man.kgdb.1; для вывода значений различных + переменных или структур, чтобы выяснить состояние системы во время + аварии.</para> + + <tip> + <para>Теперь, если вы в самом деле душевнобольной и у вас есть + второй компьютер, то вы можете настроить &man.kgdb.1; для + удалённой отладки, так, что сможете использовать &man.kgdb.1; + на одном компьютере, чтобы отладить ядро на другом, включая + использование точек останова, пошагового прохода по коду + ядра, всё как с обычной прикладной программой.</para> + </tip> + + <note> + <para>Если у вас включена поддержка <literal>DDB</literal> и + ядро переходит в режим отладки, вы можете намеренно вызвать + аварийный останов (и создание аварийного дампа), набрав + <literal>panic</literal> в командной строке + <literal>ddb</literal>. Этот процесс может снова вызвать + отладчик. В этом случае наберите <literal>continue</literal> + и процесс будет завершён созданием аварийного дампа.</para> + </note> + </answer> + </qandaentry> + + <qandaentry> + <question id="dlsym-failure"> + <para>Перестала работать функция <function>dlsym()</function> + для исполняемых файлов ELF!</para> + </question> + + <answer> + <para>По умолчанию при работе с форматом ELF символы, + определённые в исполняемом файле, не доступны динамическому + загрузчику. Поэтому при вызове функции + <function>dlsym()</function>, которая осуществляет поиск по + дескриптору, полученному после вызова <function>dlopen(NULL, + flags)</function>, желаемый результат достигнут не будет.</para> + + <para>Если вы хотите осуществить поиск в выполнимом файле + процесса с помощью функции <function>dlsym()</function>, + вам нужно скомпоновать выполнимый файл с опцией + <option>--export-dynamic</option> компоновщика ELF + (&man.ld.1;).</para> + </answer> + </qandaentry> + + <qandaentry> + <question id="change-kernel-address-space"> + <para>Как я могу увеличить или уменьшить адресное пространство + ядра в архитектуре i386?</para> + </question> + + <answer> + <para>По умолчанию размер адресного пространства ядра для i386 + равен 1 Гбайт (2 Гбайт для PAE). Если вы используете + &os; в качестве сервера с интенсивной сетевой нагрузкой (скажем, + большой FTP или HTTP сервер) или хотите использовать ZFS, то + вы можете обнаружить, что этого недостаточно.</para> + + <para>Чтобы увеличить доступное пространство, добавьте следующую + строку в файл конфигурации ядра и пересоберите его:</para> + + <programlisting>options KVA_PAGES=<replaceable>N</replaceable></programlisting> + + <para>Чтобы получить нужное значение для + <replaceable>N</replaceable>, разделите желаемый размер + адресного пространства (в мегабайтах) на четыре. (Например, + для 2 Гбайт это будет <literal>512</literal>.)</para> + </answer> + </qandaentry> + </qandaset> + </chapter> + + <chapter id="acknowledgments"> + <title>Наши благодарности</title> + + <para>Этот небольшой скромный документ с ответами на часто задаваемые + вопросы создавался, переписывался, редактировался, сокращался, + растягивался, уродовался, потрошился, пристально разглядывался, + полностью перетряхивался, обдумывался, отвергался, перестраивался, + критиковался и снова укреплялся в течение последнего десятилетия силами + сотен, если не тысяч, людей. Постоянно.</para> + + <para>Мы хотим поблагодарить всех их и приглашаем вас <ulink + url="&url.articles.contributing;/article.html">присоединиться</ulink>, + чтобы сделать этот FAQ ещё лучше.</para> + </chapter> + + &bibliography; +</book> |