diff options
author | Sergio Carlavilla Delgado <carlavilla@FreeBSD.org> | 2021-01-25 23:31:29 +0000 |
---|---|---|
committer | Sergio Carlavilla Delgado <carlavilla@FreeBSD.org> | 2021-01-25 23:31:29 +0000 |
commit | 989d921f5d4ac8d8b7c831c13b8954ad1901be24 (patch) | |
tree | a5d768f9af4b55422fdf5b17064879ae1c7ce032 /ru_RU.KOI8-R/books/faq | |
parent | 0cff342f42461c5081b98bce7581f43df319e4f4 (diff) | |
download | doc-989d921f5d4ac8d8b7c831c13b8954ad1901be24.tar.gz doc-989d921f5d4ac8d8b7c831c13b8954ad1901be24.zip |
Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.
To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].
Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation
[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/
Approved by: doceng, core
Diffstat (limited to 'ru_RU.KOI8-R/books/faq')
-rw-r--r-- | ru_RU.KOI8-R/books/faq/Makefile | 34 | ||||
-rw-r--r-- | ru_RU.KOI8-R/books/faq/book.xml | 7543 |
2 files changed, 0 insertions, 7577 deletions
diff --git a/ru_RU.KOI8-R/books/faq/Makefile b/ru_RU.KOI8-R/books/faq/Makefile deleted file mode 100644 index b53ad64917..0000000000 --- a/ru_RU.KOI8-R/books/faq/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# The FreeBSD Russian Documentation Project -# -# $FreeBSD$ -# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/Makefile,v 1.11 2005/04/12 17:25:03 andy Exp $ -# -# Original revision: r21373 -# -# Build the FreeBSD FAQ -# - -MAINTAINER=andy@FreeBSD.org phantom@FreeBSD.org - -DOC?= book - -FORMATS?= html-split html - -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -WITH_BIBLIOXREF_TITLE?=YES - -# -# SRCS lists the individual XML files that make up the document. Changes -# to any of these files will force a rebuild -# - -# XML content -SRCS= book.xml - -URL_RELPREFIX?= ../../../.. -DOC_PREFIX?= ${.CURDIR}/../../.. - -.include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/ru_RU.KOI8-R/books/faq/book.xml b/ru_RU.KOI8-R/books/faq/book.xml deleted file mode 100644 index 61d2001340..0000000000 --- a/ru_RU.KOI8-R/books/faq/book.xml +++ /dev/null @@ -1,7543 +0,0 @@ -<?xml version="1.0" encoding="koi8-r"?> -<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" - "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [ -<!ENTITY bibliography SYSTEM "../../../share/xml/bibliography.xml"> -<!ENTITY rel.numbranch "4"> <!-- number of branches that follow in this list --> -<!ENTITY rel.head "<emphasis xmlns='http://docbook.org/ns/docbook'>11-CURRENT</emphasis>"> -<!ENTITY rel.head.relx "11.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>"> -<!ENTITY rel.head.releng "<symbol xmlns='http://docbook.org/ns/docbook'>head/</symbol>"> -<!ENTITY rel.relx "10.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>"> -<!ENTITY rel.stable "<emphasis xmlns='http://docbook.org/ns/docbook'>10-STABLE</emphasis>"> -<!ENTITY rel.releng "<symbol xmlns='http://docbook.org/ns/docbook'>stable/10/</symbol>"> -<!ENTITY rel.relengdate "в январе 2014 года"> -<!ENTITY rel2.relx "9.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>"> -<!ENTITY rel2.stable "<emphasis xmlns='http://docbook.org/ns/docbook'>9-STABLE</emphasis>"> -<!ENTITY rel2.releng "<symbol xmlns='http://docbook.org/ns/docbook'>stable/9/</symbol>"> -<!ENTITY rel2.relengdate "в сентябре 2011 года"> -<!ENTITY rel3.relx "8.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>"> -<!ENTITY rel3.stable "<emphasis xmlns='http://docbook.org/ns/docbook'>8-STABLE</emphasis>"> -<!ENTITY rel3.releng "<symbol xmlns='http://docbook.org/ns/docbook'>stable/8/</symbol>"> -<!ENTITY rel3.relengdate "в августе 2009 года"> -]> -<!-- - 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: r46459 ---> -<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru"> - <info><title>Часто задаваемые вопросы по &os; - &rel3.relx;, &rel2.relx; и &rel.relx;</title> - - - <author><orgname>Проект документации &os;</orgname></author> - - <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> - <year>2013</year> - <year>2014</year> - <year>2015</year> - <holder>The &os; Documentation Project</holder> - </copyright> - - &legalnotice; - - <legalnotice xml:id="trademarks" role="trademarks"> - &tm-attrib.freebsd; - &tm-attrib.adobe; - &tm-attrib.ibm; - &tm-attrib.ieee; - &tm-attrib.intel; - &tm-attrib.linux; - &tm-attrib.microsoft; - &tm-attrib.netbsd; - &tm-attrib.opengroup; - &tm-attrib.sgi; - &tm-attrib.sun; - &tm-attrib.general; - </legalnotice> - - <releaseinfo>$FreeBSD$</releaseinfo> - - <abstract> - <para>Этот документ является так называемым - <acronym>FAQ</acronym> (Frequently Asked Questions), - то есть списком Часто Задаваемых Вопросов по &os; версий - &rel3.relx;, &rel2.relx; и &rel.relx;. - Мы прилагаем все усилия, чтобы сделать этот - <acronym>FAQ</acronym> максимально - информативным; если у вас есть идеи по его усовершенствованию, - шлите их на адрес &a.doc;.</para> - - <para>Последняя редакция этого документа всегда доступна с <link - xlink:href="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/faq/index.html"> - Web-сервера &os;</link>. Его также - можно получить в виде одного большого <link xlink:href="book.html"> - HTML-файла</link> по HTTP или в ряде других форматов с <link - xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">FTP-сервера</link>.</para> - </abstract> - </info> - - <chapter xml:id="introduction"> - <title>Вступление</title> - - <qandaset> - <qandaentry> - <question xml:id="what-is-FreeBSD"> - <para>&os; - что это такое?</para> - </question> - - <answer> - <para>&os; - это современная операционная система для настольных - компьютеров, ноутбуков, серверов и встраиваемых систем - с поддержкой большого количества <link - xlink:href="http://www.FreeBSD.org/ru/platforms/">платформ</link>.</para> - - <para>В основе &os; лежит операционная система - <quote>4.4BSD-Lite</quote> Калифорнийского Университета (Беркли) - с некоторыми усовершенствованиями из <quote>4.4BSD-Lite2</quote>. - Также она косвенно - базируется на 386BSD (BSD Net/2, перенесённой на платформу &i386; - Уильямом Джолитцем (William Jolitz)), хотя от того первоначального - кода осталось очень мало.</para> - - <para>&os; используется компаниями, Интернет-провайдерами, - научными работниками, профессионалами в вычислительной технике, - студентами и рядовыми пользователями по всему миру для работы, - образования и отдыха.</para> - - <para>Для более детального знакомства с &os; обратитесь к - <link xlink:href="&url.books.handbook;/index.html">Руководству - по &os;</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="FreeBSD-goals"> - <para>Какова цель &os;?</para> - </question> - - <answer> - <para>Цель проекта &os; - предоставить быструю и стабильную - операционную систему общего назначения, которую можно - использовать в любых целях без каких-либо ограничений.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="bsd-license-restrictions"> - <para>Есть ли в лицензии &os; какие-то ограничения?</para> - </question> - - <answer> - <para>Да. Эти ограничения не касаются аспектов использования - кода, но главным образом описывают отношение к Проекту &os;. - Текст лицензионного соглашения доступен <link - xlink:href="http://www.FreeBSD.org/ru/copyright/freebsd-license.html">здесь</link>, - и вкратце он может быть изложен следующим образом:</para> - - <itemizedlist> - <listitem> - <para>Не говорите, что это написано вами.</para> - </listitem> - - <listitem> - <para>Не судитесь с нами, если что-то не работает.</para> - </listitem> - - <listitem> - <para>Не удаляйте и не изменяйте лицензию.</para> - </listitem> - </itemizedlist> - - <para>Многие из нас вкладывают в проект значительные усилия и - определённо были бы не против получения финансовой поддержки, но - требовать её мы не будем. Мы надеемся, что наша основная и самая - значительная <quote>миссия</quote> - предоставить код всем - желающим, для любых целей, так чтобы он нашел самое широкое - применение и принёс наибольшую пользу. Это, на наш взгляд, одна - из самых фундаментальных целей Free Software, которую мы с - энтузиазмом поддерживаем.</para> - - <para>Часть исходного кода нашей системы, подпадающая под действие - <link xlink:href="http://www.FreeBSD.org/copyright/COPYING">GNU General - Public License (GPL)</link> или <link xlink:href="http://www.FreeBSD.org/copyright/COPYING.LIB">GNU Library - General Public License (LGPL)</link>, имеет несколько - больше ограничений, хотя и представляет собой навязывание доступа к - исходным текстам, а не наоборот, как обычно. Из-за дополнительных - сложностей, которые могут возникнуть в случае коммерческого - использования программного обеспечения GPL, мы стараемся, где - только это возможно, заменить подобное программное обеспечение - аналогичным, но подпадающим под менее строгую <link xlink:href="http://www.FreeBSD.org/copyright/freebsd-license.html"> - лицензию &os;</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="replace-current-OS"> - <para>Может ли &os; заменить операционную систему, используемую - мною сейчас?</para> - </question> - - <answer> - <para>Для большинства людей, да. Но этот ответ не так уж - однозначен.</para> - - <para>Большинство пользователей на самом деле не используют - операционную систему. Они работают с приложениями. Именно - прикладные программы и используют операционную систему. &os; - разработана для того, чтобы дать надежное и полнофункциональное - окружение для приложений. Она поддерживает широкий спектр - Web-браузеров, офисных пакетов, программ для работы с электронной - почтой, графических пакетов, программных сред, сетевых серверов и - многое другое. Большинство этих - приложений могут быть получено из <link xlink:href="http://www.FreeBSD.org/ports/">Коллекции - Портов</link>.</para> - - <para>Если приложение доступно только для одной операционной - системы, то нельзя всего лишь заменить эту операционную - систему. Однако есть вероятность, что похожая - программа существует для &os;. В качестве сервера для офиса, - или сервера Интернет, или надежной рабочей станции &os; - практически всегда справится со всем, что вам нужно. Многие - пользователи по всему миру, включая как новичков, так и опытных - администраторов &unix;, используют &os; в качестве своей - единственной настольной операционной системы.</para> - - <para>Пользователи при переходе на &os; с другого варианта - &unix; найдут для себя &os; очень похожей. Пользователей - &windows; и &macos;, напротив, может заинтересовать <link - xlink:href="http://www.pcbsd.org/">PC-BSD</link>, - дистрибутив на основе &os;. Пользователям, которые не - использовали до этого &unix;, понадобится затратить - дополнительное время на изучение подхода &unix; к работе. - Этот <acronym>FAQ</acronym> и <link - xlink:href="&url.books.handbook;/index.html">Руководство по - &os;</link> являются прекрасным способом начать это - изучение.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="differences-to-other-bsds"> - <para>В чём заключается разница между &os; и NetBSD, OpenBSD - и другими операционными системами с открытыми кодами - семейства BSD?</para> - </question> - - <answer> - <para>Джеймс Ховард (James Howard) создал хорошее описание - истории и различий между различными проектами под - названием <link - xlink:href="http://www.freebsdworld.gr/freebsd/bsd-family-tree.html">Семейное - древо BSD</link>, в котором даётся подробный ответ на - этот вопрос. Некоторая информация там устарела, но - историческая часть остаётся точной.</para> - - <para>Многие из проектов семейства BSD обмениваются - изменениями и готовым кодом даже сегодня. Все они - происходят от общего предка.</para> - - <para>Цели проекта &os; описаны выше в <xref - linkend="FreeBSD-goals"/>. Цели других наиболее - известных проектов семейства BSD можно кратко описать - так:</para> - - <itemizedlist> - <listitem> - <para>OpenBSD в первую очередь ориентируется на - безопасность операционной системы. Команда OpenBSD - написала &man.ssh.1; и &man.pf.4;, которые затем были - портированы во &os;.</para> - </listitem> - - <listitem> - <para>NetBSD ориентируется на простое портирование на - другие аппаратные платформы.</para> - </listitem> - - <listitem> - <para>DragonFly BSD отделилась от &os; 4.8, - и с тех пор в ней были разработаны многие интересные - собственные функциональные возможности, включая - файловую систему HAMMER и поддержку <quote>vkernels</quote> - — запуска ядра в пользовательском режиме.</para> - </listitem> - </itemizedlist> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="latest-version"> - <para>Какова последняя версия &os;?</para> - </question> - - <answer> - <para>На любом этапе разработки &os; может существовать - несколько параллельных веток. Релизы &rel.relx; выполняются - из ветки &rel.stable;, а релизы &rel2.relx; выполняются из - &rel2.stable;.</para> - - <para>До выпуска 9.0 линейка &rel2.relx; была - известна как <emphasis>-STABLE</emphasis>. - Однако к моменту выхода &rel.head.relx; линейка &rel2.relx; - получит статус <quote>extended support</quote> (расширенная - поддержка), и исправления будут вноситься только для серьезных - проблем, к примеру исправления, связанные с безопасностью. - <!--Из - ветки &rel2.stable; новые релизы выпускаться не будут, ветка - считается <quote>legacy</quote> (устаревшая), и большинство - текущих изменений будет уже частью только &rel.stable; и - &rel2.stable;.--></para> - - <para>Версия <link - xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;</link>, - дата выхода &rel.current.date;, является последним релизом - в ветке &rel.stable;. Версия <link - xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;</link>, - дата выхода &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; можно получить - на странице <link - xlink:href="http://www.FreeBSD.org/ru/releng/index.html">Информации - о подготовке релизов</link> и на странице Справочника - &man.release.7;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="current"> - <para>Что такое <emphasis>&os;-CURRENT</emphasis>?</para> - </question> - - <answer> - <para><link - xlink:href="&url.books.handbook;/current-stable.html#current"> - &os.current;</link> - это версия операционной системы, - находящаяся в стадии разработки, которая должна потом стать - новой веткой &os.stable;. Таким образом, она представляет - реальный интерес только для разработчиков системы и её фанатов. - Обратитесь к <link - xlink:href="&url.books.handbook;/current-stable.html#current"> - соответствующему - разделу</link> <link xlink:href="&url.books.handbook;/index.html"> - Руководства</link> для прояснения деталей работы с - <emphasis>-CURRENT</emphasis>.</para> - - <para>Пользователям, не знакомым с &os;, не - следует использовать &os.current;. Эта ветвь зачастую меняется - очень быстро и иногда из-за ошибок может быть не работоспособна. - Те, кто используют &os.current;, должны быть в состоянии - изучить проблему, найти причину и сообщить о этом.</para> - - <para>Из веток <emphasis>-CURRENT</emphasis> и - <emphasis>-STABLE</emphasis> выпускаются <link - xlink:href="&url.base;/snapshots/">снэпшоты</link> &os;. - Их предназначение:</para> - - <itemizedlist> - <listitem> - <para>Тестирование самой последней версии программы установки - системы.</para> - </listitem> - - <listitem> - <para>Дать людям, которые хотят работать с - <emphasis>-CURRENT</emphasis> или <emphasis>-STABLE</emphasis>, - но не имеют времени или возможности (пропускной способности) - для отслеживания ежедневных изменений, простой способ её - установки.</para> - </listitem> - - <listitem> - <para>Фиксация точки для последующих ссылок в случае, - если позже мы что-нибудь очень сильно сломаем. (Хотя - Subversion, как - правило, не позволяет случиться ничему такому ужасному.)</para> - </listitem> - - <listitem> - <para>Все новые возможности, которым требуется тестирование, - должны иметь как можно больше потенциальных тестеров.</para> - </listitem> - </itemizedlist> - - <para>Не утверждается, что всякий снэпшот - <emphasis>-CURRENT</emphasis> имеет качество - <quote>готового продукта</quote>. Если нужна стабильно - работающая и полностью оттестированная система, то - придерживайтесь использования полных релизов или - используйте снэпшоты <emphasis>-STABLE</emphasis>.</para> - - <para>Снэпшот-релизы доступны непосредственно <link xlink:href="&url.base;/snapshots/">отсюда</link>.</para> - - <para>Официальные снэпшоты постоянно генерируются - для всех активно разрабатываемых веток.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="stable"> - <para>В чём смысл <emphasis>&os;-STABLE</emphasis>?</para> - </question> - - <answer> - <para>После того, как была выпущена &os; 2.0.5, разработка &os; - разделилась на две части. Одна ветка получила название <link - xlink:href="&url.books.handbook;/current-stable.html#stable">-STABLE</link>, - а другая <link - xlink:href="&url.books.handbook;/current-stable.html#current">-CURRENT</link>. - <emphasis>&os;-STABLE</emphasis> предназначена для - провайдеров услуг Интернет и - других коммерческих пользователей, для которых неожиданные - изменения или экспериментальные возможности - весьма нежелательны. В неё вносятся только хорошо оттестированные - исправления и другие небольшие последовательные усовершенствования. - С другой стороны, <emphasis>&os;-CURRENT</emphasis> являлась - единой веткой, не - разрываемой с момента выхода версии 2.0 и ведущей к - &rel.current;-RELEASE и последующим релизам. Для получения - более подробной информации по веткам обратитесь к - разделу статьи <quote><link - xlink:href="&url.articles.releng;/release-proc.html#rel-branch"> - Подготовка релизов &os;: Создание ветки - релиза</link></quote>. Статус веток и расписание - предстоящих релизов можно получить на странице <link xlink:href="http://www.FreeBSD.org/releng">Информация о подготовке - релизов</link>.</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 xml:id="release-freq"> - <para>В какой момент выпускаются новые версии &os;?</para> - </question> - - <answer> - <para>&a.re; выпускает новую старшую версию &os; в среднем - каждые 18 месяцев и младшие версии каждые 8 месяцев. Даты - релизов обычно объявляются заранее, так что те, кто - работает над системой, знают, когда их проекты должны быть - закончены и протестированы. Период тестирования предшествует - выходу каждого релиза, для того, чтобы удостовериться в том, что - добавление новых возможностей не повлияло на стабильность работы - релиза. Многие пользователи расценивают такую осторожность - как одну из приятнейших черт &os;, хотя необходимость дожидаться - <emphasis>-STABLE</emphasis> для получения всех этих новых - возможностей может несколько разочаровывать.</para> - - <para>Дополнительная информация о процессе подготовки релиза (в том - числе планы выпуска последующих релизов) может быть найдена на - страницах Web-сайта &os;, посвящённых <link xlink:href="http://www.FreeBSD.org/releng/index.html">выпуску - релизов</link>.</para> - - <para>Для тех, кому нужно или хочется, еженедельно выпускаются - бинарные снапшоты, как описано выше.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="responsible"> - <para>Кто разрабатывает &os;?</para> - </question> - - <answer> - <para>Решения, которые касаются ключевых моментов в проекте &os;, - такие, как общее направление развития проекта или кто - может добавлять код к дереву исходных текстов, принимаются <link xlink:href="&url.base;/administration.html#t-core">основной - командой</link> разработчиков (Core Team), состоящей из 9 человек. - Также существует многочисленная группа, состоящая из более чем 350 - так называемых <link - xlink:href="&url.articles.contributors;/article.html#staff-committers"> - коммиттеров</link> (committers), которые могут вносить изменения - прямо в дерево исходных текстов &os;.</para> - - <para>Однако большинство нетривиальных изменений широко обсуждается - в <link linkend="mailing">списках рассылки</link>, и не существует - никаких ограничений на участие в подобных дискуссиях.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="where-get"> - <para>Где можно найти &os;?</para> - </question> - - <answer> - <para>Все основные релизы &os; доступны по FTP с <link xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/">FTP-сервера - &os;</link>:</para> - - <itemizedlist> - <listitem> - <para>Последний релиз &rel.stable;, - &rel.current;-RELEASE, можно найти в <link - xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE">каталоге - &rel.current;-RELEASE</link>.</para> - </listitem> - - <listitem> - <para><link - xlink:href="&url.base;/snapshots/">Снэпшот-релизы</link> - для веток <link linkend="current">-CURRENT</link> и - <link linkend="stable">-STABLE</link> выпускаются - ежемесячно, но они нужны исключительно для - разработчиков и тех, кто тестирует самые последние - наработки.</para> - </listitem> - - <listitem> - <para>Последний релиз &rel2.stable;, - &rel2.current;-RELEASE, можно найти в <link - xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">каталоге - &rel2.current;-RELEASE</link>.</para> - </listitem> - </itemizedlist> - - <para>Информация о получении/приобретении &os; на CD, DVD и - других носителях доступна в <link xlink:href="&url.books.handbook;/mirrors.html">Руководстве</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="access-pr"> - <para>Как можно получить доступ к базе сообщений о проблемах (Problem - Report)?</para> - </question> - - <answer> - <para>База данных всех сообщений пользователей о проблемах - может быть запрошена с помощью нашего <link - xlink:href="https://bugs.FreeBSD.org/search/">Web-интерфейса</link>.</para> - - <para>Можно использовать <link - xlink:href="&url.base;/support/bugreports.html">Web-интерфейс</link> - для отсылки сообщений об ошибках через браузер.</para> - - <para>Перед тем, как посылать сообщение об ошибке, - прочтите статью <link xlink:href="&url.articles.problem-reports;/article.html">Составление - сообщений о проблеме во &os;</link> о том, как писать хорошие - сообщения об ошибках.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="support"> - <title>Документация и поддержка</title> - - <qandaset> - <qandaentry> - <question xml:id="books"> - <para>Есть ли хорошие книги по &os;?</para> - </question> - - <answer> - <para>В рамках проекта создан широкий спектр документации, - которая доступна on-line по следующей ссылке: <uri - xlink:href="http://www.FreeBSD.org/docs.html">http://www.FreeBSD.org/docs.html</uri>. - Кроме того, в <link - linkend="bibliography">Библиографии</link> в конце этого - <acronym>FAQ</acronym> и в <link - xlink:href="&url.books.handbook;/bibliography.html">Руководстве</link> - имеются ссылки на другие рекомендуемые для чтения - книги.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="doc-formats"> - <para>Есть ли версии документации в другом формате, например, - в виде обычного текста ASCII или &postscript;?</para> - </question> - - <answer> - <para>Да. Документация имеется в нескольких различных форматах и - упакованная разными способами на FTP-сервере &os;, и находится - она в каталоге <link xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/"> - /pub/FreeBSD/doc/</link>.</para> - - <para>Документация подразделяется на категории различными способами. - Это включает:</para> - - <itemizedlist> - <listitem> - <para>Имя документа, например, <literal>faq</literal> или - <literal>handbook</literal>.</para> - </listitem> - - <listitem> - <para>Язык и кодировка документа. Они опираются на имена - локализаций, которые находятся в каталоге - <filename>/usr/share/locale</filename> в системе &os;. - На данный момент поддерживаются следующие - языки и кодировки:</para> - - <informaltable frame="none" pgwide="1"> - <tgroup cols="2"> - <thead> - <row> - <entry>Кодировка</entry> - - <entry>Язык</entry> - </row> - </thead> - - <tbody> - <row> - <entry><literal>en_US.ISO8859-1</literal></entry> - - <entry>Английский (США)</entry> - </row> - - <row> - <entry><literal>bn_BD.ISO10646-1</literal></entry> - - <entry>Бенгальский или Бангла (Бангладеш)</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.UTF-8</literal></entry> - - <entry>Упрощённый китайский (Китай, кодировка - UTF-8)</entry> - </row> - - <row> - <entry><literal>zh_TW.UTF-8</literal></entry> - - <entry>Традиционный китайский (Тайвань, кодировка - UTF-8)</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 от µsoft;</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>article.pdf</filename>, - <filename>book.html</filename>, и так далее.</para> - - <para>Эти файлы затем сжимаются по двум схемам сжатия, - <literal>zip</literal> или <literal>bz2</literal>. - Для работы с этими файлами можно использовать - &man.tar.1;.</para> - - <para>Таким образом, сжатая в <literal>bzip2</literal> - версия Руководства в формате &postscript;, будет - находиться в файле - с именем <filename>book.ps.bz2</filename> в каталоге - <filename>handbook/</filename>.</para> - </listitem> - </orderedlist> - </listitem> - </itemizedlist> - - <para>После выбора формата и способа компрессии, сгрузите - упакованные файлы, распакуйте их, а затем скопируйте - документацию в соответствующие места.</para> - - <para>Например, версия <acronym>FAQ</acronym> в виде - отдельных 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>tar xvf book.html-split.tar.bz2</userinput></screen> - - <para>Если файл сжат, <application>tar</application> - автоматически определит подходящий формат и корректно - распакует файл в набор файлов <filename>.html</filename>. - Главным является <filename>index.html</filename>, и в нём - находится оглавление, вводный материал и ссылки на - остальные части документа.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="mailing"> - <para>Где найти информацию по спискам рассылки &os;? - Какие существуют телеконференции по &os;?</para> - </question> - - <answer> - <para>Исчерпывающая информация содержится в <link - xlink:href="&url.books.handbook;/eresources.html#eresources-mail">разделе</link> - Руководства, который посвящён спискам рассылки, и в <link - xlink:href="&url.books.handbook;/eresources-news.html">разделе</link> - Руководства, касающемся телеконференций.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="irc"> - <para>Существуют ли каналы IRC (Internet Relay Chat) по - &os;?</para> - </question> - - <answer> - <para>Да, большинство сетей IRC имеют канал &os;:</para> - - <itemizedlist> - <listitem> - <para>Канал <literal>#FreeBSDhelp</literal> в сети <link - xlink:href="http://www.efnet.org/index.php">EFNet</link> - предназначен для помощи пользователям &os;.</para> - </listitem> - - <listitem> - <para>Канал <literal>#FreeBSD</literal> в сети - <link xlink:href="http://freenode.net/">Freenode</link> - предназначен для помощи общего характера, на нём - в любое время присутствует много посетителей. - Общение в течение уже некоторого времени известно своей - тенденцией сводиться к разговорам не по теме, но приоритет - отдается пользователям с вопросами по &os;. Другие - пользователи помогут разобраться в основах, - отсылая к Руководству по мере возможности и предлагая - ссылки для более глубокого изучения интересующих тем. - Это преимущественно англоговорящий канал, но туда - приходят пользователи со всего мира. Тем, для кого - английский не является родным, следует сперва задать - вопрос на английском и затем перейти на подходящий - канал <literal>##freebsd-lang</literal>.</para> - </listitem> - - <listitem> - <para>Канал <literal>#FreeBSD</literal> в сети <link xlink:href="http://www.dal.net/">DALNET</link> - доступен на сервере <systemitem>irc.dal.net</systemitem> в США и на - <systemitem>irc.eu.dal.net</systemitem> в Европе.</para> - </listitem> - - <listitem> - <para>Канал <literal>#FreeBSD</literal> в сети <link xlink:href="http://www.undernet.org/">UNDERNET</link> - доступен на серверах <systemitem>us.undernet.org</systemitem> в США и - <systemitem>eu.undernet.org</systemitem> в Европе. Так как это канал - взаимопомощи, приготовьтесь к чтению документации, к которой - вас отошлют.</para> - </listitem> - - <listitem> - <para>Канал <literal>#FreeBSD</literal> в сети - <link xlink:href="http://www.rusnet.org.ru/">RUSNET</link> - это канал для русскоговорящих посетителей, посвящённый - помощи пользователям &os;. Также это хорошее место - для нетехнических дискуссий.</para> - </listitem> - - <listitem> - <para>Канал <literal>#bsdchat</literal> в сети - <link xlink:href="http://freenode.net/">Freenode</link> - это канал для посетителей, говорящих на китайском - традиционном языке (кодировка UTF-8), посвящённый - помощи пользователям &os;. Также это хорошее место - для нетехнических дискуссий.</para> - </listitem> - </itemizedlist> - - <para>На &os; wiki имеется <link - xlink:href="http://wiki.freebsd.org/IrcChannels">хороший список</link> - каналов IRC.</para> - - <para>Все каналы разные и не имеют отношения друг к другу. - Поскольку их стили общения отличаются, попробуйте каждый, - пока не найдёте подходящий вашему стилю общения.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="forums"> - <para>Есть ли какие-нибудь web-форумы для обсуждения &os;?</para> - </question> - - <answer> - <para>Официальные форумы &os; расположены по адресу <link xlink:href="https://forums.FreeBSD.org/">https://forums.FreeBSD.org/</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="training"> - <para>Где можно пройти платные курсы по &os; и получить - поддержку?</para> - </question> - - <answer> - <para><link xlink:href="http://www.ixsystems.com">iXsystems, Inc.</link>, - дочерней компанией которой является <link xlink:href="http://www.freebsdmall.com/">&os; Mall</link>, - предоставляет <link xlink:href="http://www.ixsystems.com/bsdsupport">поддержку</link> - &os; и программного обеспечения PC-BSD на коммерческой - основе, в дополнение к разработке &os; и решениям, требующим - тонкой настройки.</para> - - <para>BSD Certification Group, Inc. предоставляет сертификацию - системного администрирования DragonFly BSD, &os;, - NetBSD и OpenBSD. Для получения дополнительной информации - посетите <link - xlink:href="http://www.BSDCertification.org">их - сайт</link>.</para> - - <para>Чтобы попасть в этот список, другие организации, - осуществляющие обучение и поддержку, должны обратиться к - нам в Проект.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="install"> - <info><title>Установка</title> - <author><personname><firstname>Nik</firstname><surname>Clayton</surname></personname><affiliation> - <address><email>nik@FreeBSD.org</email></address> - </affiliation></author> - </info> - - <qandaset> - <qandaentry> - <question xml:id="which-architecture"> - <para>Какую архитектуру нужно загрузить? У меня есть - 64-разрядный процессор &intel;, но я вижу только - <literal>amd64</literal>.</para> - </question> - - <answer> - <para>&arch.amd64; — это термин, применяемый во &os; - для обозначения 64-разрядной архитектуры x86 (также - известна как "x86-64" или "x64"). На большинстве - современных компьютеров следует использовать &arch.amd64;. - Для более старых подойдёт &arch.i386;. При установке - системы на отличную от x86 архитектуру, выберите платформу, - наиболее подходящую для оборудования.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="floppy-download"> - <para>Какой файл нужно скачать для установки &os;?</para> - </question> - - <answer> - <para>На странице <link - xlink:href="http://www.freebsd.org/ru/where.html">Получение - &os;</link> выберите <literal>[iso]</literal> с - соответствующей оборудованию архитектурой.</para> - - <para>Можно использовать любой из:</para> - - <informaltable frame="none" pgwide="1"> - <tgroup cols="2"> - <thead> - <row> - <entry>файл</entry> - <entry>описание</entry> - </row> - </thead> - - <tbody> - <row> - <entry><filename>disc1.iso</filename></entry> - <entry>Содержит достаточно для установки &os; и - минимальный набор пакетов.</entry> - </row> - - <row> - <entry><filename>dvd1.iso</filename></entry> - <entry>Наподобие <filename>disc1.iso</filename>, - но с дополнительными пакетами.</entry> - </row> - - <row> - <entry><filename>memstick.img</filename></entry> - <entry>Образ с автозагрузкой для записи - на USB флешку.</entry> - </row> - - <row> - <entry><filename>bootonly.iso</filename></entry> - <entry>Минимальный образ, требующий сетевое - подключение для завершения установки &os;.</entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>Пользователям &arch.pc98; нужны образы дискет: - <filename>floppies/boot.flp</filename>, - <filename>floppies/kern1.flp</filename>, - <filename>floppies/kern2.flp</filename> и - <filename>floppies/mfsroot1.flp</filename>. Эти образы - нужно перенести на дискеты с помощью таких утилит, как - &man.dd.1;.</para> - - <para>Полные инструкции по этой процедуре и об установке вообще можно - найти в <link xlink:href="&url.books.handbook;/install.html"> - разделе</link> Руководства, посвящённом установке &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="floppy-image-too-large"> - <para>Помогите! Установочный образ не загружается!</para> - </question> - - <answer> - <para>Это может быть вызвано тем, что образ был загружен по - FTP не в режиме <emphasis>binary</emphasis>.</para> - - <para>В некоторых клиентских программах FTP по умолчанию - используется текстовый (<emphasis>ascii</emphasis>) режим - передачи, в котором любые последовательности символов - "конец строки" заменяются на используемые в системе - клиента. В таком случае образ загрузочного диска будет - неизбежно испорчен. Проверьте контрольную сумму SHA-256 - полученного файла: если он не <emphasis>точно</emphasis> - такой же как на FTP-сервере, то ошибка произошла, скорее - всего, в процессе передачи.</para> - - <para>В случае использования командной строки FTP-клиента - введите команду <emphasis>binary</emphasis> в командной - строке FTP после подключения к серверу, но перед началом - передачи файла.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="install-instructions-location"> - <para>Где инструкции по установке &os;?</para> - </question> - - <answer> - <para>Инструкции по установке &os; 9.0 - и более поздних версий могут быть найдены в <link - xlink:href="&url.books.handbook;/bsdinstall.html">главе</link> - Руководства, посвящённой установке &os;. - Также имеются инструкции по установке <link - xlink:href="&url.books.handbook;/install.html">предыдущих</link> - версий &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="need-to-run"> - <para>Какие минимальные требования для запуска &os;?</para> - </question> - - <answer> - <para>Для работы &os; необходим ПК класса 486 и выше с - оперативной памятью объёмом не менее 64 Мбайт и - дисковым пространством не менее 1.1 Гбайт.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="custom-boot-floppy"> - <para>Как сделать собственный установочный диск?</para> - </question> - - <answer> - <para>Индивидуальный установочный носитель &os; можно - создать, запустив процедуру построения индивидуального - релиза. Следуйте инструкциям в статье о <link - xlink:href="&url.articles.releng;/article.html">подготовке - релизов &os;</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="windows-coexist"> - <para>Может ли &windows; сосуществовать с &os;?</para> - </question> - - <answer> - <para>Да, если &windows; установлена первой. Загрузчик - &os; будет управлять процессом выбора загрузки &windows; - или &os;. Если &windows; устанавливается следом, то это - приведёт к перезаписи загрузчика. Если такое случится, - обратитесь к следующему разделу.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="bootmanager-restore"> - <para>Другая операционная система уничтожила мой загрузчик - операционной системы! Как мне его вернуть?</para> - </question> - - <answer> - <para>Способ восстановления зависит от используемого - загрузчика. Меню выбора загрузки, используемое во &os;, - можно переустановить с помощью &man.boot0cfg.8;. - Пример для восстановления меню загрузки на диске - <replaceable>ada0</replaceable>:</para> - - <screen>&prompt.root; <userinput>boot0cfg -B ada0</userinput></screen> - - <para>Неинтерактивный загрузчик MBR можно установить - с помощью &man.gpart.8;:</para> - - <screen>&prompt.root; <userinput>gpart bootcode -b /boot/mbr ada0</userinput></screen> - - <para>Более сложные ситуации, включая использование дисков - GPT, рассматриваются в &man.gpart.8;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="no-install-cdrom"> - <para>Я загрузился с компакт-диска, однако программа установки - сообщила, что 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 xml:id="need-complete-sources"> - <para>Нужно ли устанавливать исходные тексты системы?</para> - </question> - - <answer> - <para>В общем случае, нет. Для работы основной системы - присутствие исходных текстов не требуется. Некоторые порты - наподобие <filename role="package">sysutils/lsof</filename> - не будут собираться без установленных исходных текстов системы. - В частности, если порт собирает модуль ядра или напрямую - обращается к структурам ядра, в этом случае исходные тексты - должны быть установлены.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="need-kernel"> - <para>Нужно ли перекомпилировать ядро?</para> - </question> - - <answer> - <para>Обычно нет. Поставляемое ядро <literal>GENERIC</literal> - содержит драйвера, необходимые для типичного компьютера. - Инструмент &man.freebsd-update.8; не может использоваться - для обновления &os; с собственным ядром. Поэтому по - возможности стоит придерживаться использования ядра - <literal>GENERIC</literal>. Для компьютеров с очень - небольшим объёмом ОЗУ, таких как встраиваемые системы, - может потребоваться собственное небольшое ядро, содержащее - только необходимые драйверы.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="password-encryption"> - <para>Какой из паролей DES, Blowfish или MD5 я должен использовать, - и как указать, какого типа пароли используются - пользователями?</para> - </question> - - <answer> - <para>Во &os; 9 и выше по умолчанию используется - <emphasis>SHA512</emphasis>. Пароли DES остаются доступны - для обратной совместимости с более старыми операционными - системами, в которых используется менее защищённый формат - паролей. &os; также поддерживает пароли в форматах - Blowfish и MD5. Управление выбором используемого формата - для новых паролей осуществляется через параметр входа - <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 xml:id="ffs-limits"> - <para>Какие существуют ограничения для файловой системы FFS?</para> - </question> - - <answer> - <para>Наибольший размер файловой системы FFS ограничен - практически количеством памяти, которая требуется для - работы &man.fsck.8;. &man.fsck.8; использует 1 бит на - фрагмент, и для стандартного размера фрагмента 4 Кбайт это - эквивалентно использованию 32 Мбайт памяти на терабайт - дискового пространства. Это означает, что на архитектурах - с ограничением размера пользовательского процесса в 2 Гбайт - (например, &i386;) максимальный размер файловой системы, - доступный для &man.fsck.8;, составляет ~60 Тбайт.</para> - - <para>Без ограничения на память для &man.fsck.8; максимальный - размер файловой системы составляет 2 ^ 64 - (блоков) * 32 Кбайт => 16 экса * 32 Кбайт - => 512 зеттабайт.</para> - - <para>Максимальный размер файла на FFS приблизительно равен - 2 петабайт со стандартным размером блока 32 Кбайт. - Каждый 32 Кбайтный блок может адресовать до 4096 блоков. - С использованием тройной косвенной адресации это составляет - 32 Кбайт * 12 + 32 Кбайт * 4096 + 32 Кбайт * - 4096^2 + 32 Кбайт * 4096^3. Увеличение размера блока - до 64 Кбайт увеличит максимальный размер файла в 16 - раз.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="archsw-readin-failed-error"> - <para>Я скомпилировал новое ядро и при загрузке получил - сообщение об ошибке <errorname>readin - failed</errorname>.</para> - </question> - - <answer> - <para>Ядро и компоненты системы не синхронизированы. Такая - конфигурация не поддерживается. Обязательно используйте - команды <command>make buildworld</command> и <command>make - buildkernel</command> для обновления ядра.</para> - - <para>Загрузите систему, непосредственно указав ядро на - втором этапе загрузки, нажав любую клавишу до запуска - загрузчика при появлении символов - <literal>|</literal>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="general-configuration-tool"> - <para>Существует ли инструмент для настройки системы после - её установки?</para> - </question> - - <answer> - <para>Да, <application>bsdconfig</application> предоставляет - замечательный интерфейс для пост-установочной настройки - &os;.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="hardware"> - <title>Аппаратная совместимость</title> - - <sect1 xml:id="compatibility-general"> - <title>Вопросы общего характера</title> - - <qandaset> - <qandaentry> - <question xml:id="which-hardware-to-get"> - <para>Я хочу приобрести аппаратуру для моей системы &os;. Какая - модель/производитель/тип лучше всего?</para> - </question> - - <answer> - <para>Это постоянно обсуждается в списках рассылки &os; и - является ожидаемым вопросом, так как аппаратура меняется - очень быстро. - Обратитесь к Hardware Notes для &os; <link - xlink:href="&rel.current.hardware;">&rel.current;</link> - или <link - xlink:href="&rel2.current.hardware;">&rel2.current;</link>, - а также <link - xlink:href="http://www.FreeBSD.org/search/#mailinglists">архивам</link> - списков рассылки перед тем, как задавать вопросы о самом - последнем и лучшем оборудовании. Весьма вероятно, что - обсуждение касаемо этого типа оборудования велось как - раз на прошлой неделе.</para> - - <para>Перед приобретением лэптопа посмотрите архивы - &a.mobile; и &a.questions; или, по возможности, более - специфичные списки рассылки по данному типу - оборудования.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="memory-upper-limitation"> - <para>Какие существуют ограничения по памяти? - Поддерживает ли &os; больше 4 Гбайт памяти (ОЗУ)? - Больше 16 Гбайт? Больше 48 Гбайт?</para> - </question> - - <answer> - <para>&os; как операционная система в целом поддерживает - столько же физической памяти (ОЗУ), сколько аппаратная - платформа, на которой она работает. Имейте в виду, что - различные платформы имеют различные ограничения на память; - например, &i386; без <acronym>PAE</acronym> поддерживает - максимум 4 Гбайт памяти (и обычно еще меньше из-за - адресного пространства PCI), а &i386; с PAE поддерживает - максимум 64 Гбайт. Для &os; 10 платформы AMD64 - поддерживают до 4 Тбайт физической памяти.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="compatibility-processors"> - <title>Аппаратные платформы и процессоры</title> - - <qandaset> - <qandaentry> - <question xml:id="architectures"> - <para>Поддерживает ли &os; аппаратные платформы, отличные от - x86?</para> - </question> - - <answer> - <para>Да. Поддержка &os; подразделяется на множество классов. - Архитектуры первого класса, такие как i386 или amd64, - полностью поддерживаются. Архитектуры 2 и 3 класса - поддерживаются по мере возможности. Полное описание - классов доступно в <link - xlink:href="&url.articles.committers-guide;/archs.html">справочнике - коммиттера</link>.</para> - - <para>Полный список поддерживаемых архитектур находится - на <link - xlink:href="http://www.FreeBSD.org/ru/platforms/">странице</link>, - посвящённой платформам.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="smp-support"> - <para>Поддерживает ли &os; многопроцессорные системы - (SMP)?</para> - </question> - - <answer> - <para>&os; поддерживает симметричное мультипроцессирование - (SMP) на всех невстраиваемых платформах (например, - &arch.i386;, &arch.amd64; и так далее). SMP - также поддерживается для arm и MIPS, хотя некоторые - процессоры могут это не поддерживать. В реализации SMP - во &os; используется мелкодисперсная синхронизация, и - производительность масштабируется почти линейно с ростом - количества процессоров.</para> - - <para>За подробной информацией обращайтесь к странице - Справочника &man.smp.4;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="microcode"> - <para>Что такое микрокод? Как установить обновления - микрокода для процессоров &intel;?</para> - </question> - - <answer> - <para>Микрокод - это программа, реализующая набор инструкций - процессора на аппаратном уровне. Она позволяет исправлять - ошибки процессора без замены микросхемы.</para> - - <para>Установите <filename - role="package">sysutils/devcpu-data</filename>, - а затем добавьте:</para> - <programlisting>microcode_update_enable="YES"</programlisting> - <para>в <filename>/etc/rc.conf</filename></para> - </answer> - </qandaentry> - - </qandaset> - </sect1> - - <sect1 xml:id="compatibility-drives"> - <title>Жёсткие диски, ленточные устройства и приводы CD и DVD</title> - - <qandaset> - <qandaentry> - <question xml: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 xml:id="supported-scsi-controllers"> - <para>Какие поддерживаются контроллеры SCSI или SAS?</para> - </question> - - <answer> - <para>Полный список приведён в Hardware Notes для &os; - <link - xlink:href="&rel.current.hardware;">&rel.current;</link> - или <link - xlink:href="&rel2.current.hardware;">&rel2.current;</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="tape-support"> - <para>Какие типы стримеров поддерживаются?</para> - </question> - - <answer> - <para>&os; поддерживает все стандартные интерфейсы - стримеров SCSI.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="supported-cdrom-drives"> - <para>Какие приводы CD-ROM и CD-RW поддерживаются во - &os;?</para> - </question> - - <answer> - <para>Поддерживаются любые SCSI-устройства чтения компакт дисков, - подключенные к поддерживаемому контроллеру. Поддерживается - большинство ATAPI-совместимых IDE CD-ROM.</para> - - <para>&os; поддерживает все ATAPI-совместимые IDE-приводы CD-R - или CD-RW. Более полная информация находится на странице - Справочника &man.burncd.8;.</para> - - <para>&os; поддерживает также все SCSI-приводы CD-R и CD-RW. - Используйте команду <command>cdrecord</command> из - пакета <package>sysutils/cdrtools</package>.</para> - </answer> - </qandaentry> - </qandaset> - </sect1> - - <sect1 xml:id="compatibility-kbd-mice"> - <title>Клавиатуры и мыши</title> - - <qandaset> - <qandaentry> - <question xml:id="moused"> - <para>Можно ли использовать мышь вне X Window?</para> - </question> - - <answer> - <para>Стандартный драйвер консоли &man.syscons.4; - предоставляет возможность использования указателя мыши - в текстовых консолях для выделения и переноса текста. - Запустите демон мыши &man.moused.8; и включите - отображение указателя мыши в виртуальной консоли:</para> - - <screen>&prompt.root; <userinput>moused -p /dev/xxxx -t yyyy</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. Обратитесь к вопросу из <acronym>FAQ</acronym> - <link linkend="x-and-moused"> - Почему моя мышь не работает с X?</link> для получения более полной - информации по этому вопросу.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml: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 xml: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>За дополнительной информацией обращайтесь к <link xlink:href="http://www.ibb.net/~anne/keyboard.html">этой - странице</link>.</para> - </answer> - </qandaentry> - </qandaset> - </sect1> - - <sect1 xml:id="compatibility-other"> - <title>Другое оборудование</title> - - <qandaset> - <qandaentry> - <question xml: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> - - <qandaentry> - <question xml:id="power-management-support"> - <para>Поддерживает ли &os; управление энергосбережением на - лэптопах?</para> - </question> - - <answer> - <para>&os; поддерживает функции <acronym>ACPI</acronym>, - реализованные в современном оборудовании. - Дополнительная информация находится - на странице Справочника &man.acpi.4;.</para> - </answer> - </qandaentry> - </qandaset> - </sect1> - </chapter> - - <chapter xml:id="troubleshoot"> - <title>Устранение некоторых проблем</title> - - <qandaset> - <qandaentry> - <question xml: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. - За дополнительной информацией обращайтесь к статье об - ограничениях памяти.</para> - - <para>На 64nbsp;битной версии &os; или в случае использования ядра с - включённым PAE &os; корректно определит и перераспределит память, - так, что она станет годной к использованию. Тем не менее, во - время загрузки может показаться, что &os; определяет больше - памяти, чем реально имеется в системе из-за описанного - перераспределения. Это нормально, и информация - о доступной памяти будет скорректирована по окончанию процесса - загрузки.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="signal11"> - <para>Программы аварийно завершают работу с ошибкой <errorname>Signal - 11</errorname>.</para> - </question> - - <answer> - <para>Ошибки выполнения, связанные с сигналом 11, происходят, - когда процесс пытается обратиться к области памяти, доступ к - которой ему не был дан операционной системой. Если что-то подобное - происходит в случайные, казалось бы, промежутки времени, - следует начать поиск причины.</para> - - <para>Эти проблемы могут быть классифицированы следующим - образом:</para> - - <orderedlist> - <listitem> - <para>Если проблема возникает только в определённом - самостоятельно разработанном приложении, то скорее - всего это ошибка в коде.</para> - </listitem> - - <listitem> - <para>Если это проблема в части базового комплекта системы - &os;, то это тоже может быть ошибка в программном коде, хотя - в большинстве случаев такие проблемы обнаруживаются и ошибки - исправляются задолго до того, как обычным читателям - <acronym>FAQ</acronym> - доводится использовать этот код (именно для этого предназначена - версия -CURRENT).</para> - </listitem> - </orderedlist> - - <para>Вероятно, это не связано с ошибкой во &os;, - если проблема проявляется при компиляции программы, и при - этом ошибка компилятора каждый раз разная.</para> - - <para>Например, если запуск <command>make - buildworld</command> завершился неудачей при попытке - компиляции <filename>ls.c</filename> в - <filename>ls.o</filename> и при повторном запуске - компиляция снова прервалась на том же месте, то это ошибка - процесса построения. Обновите исходные тексты и попробуйте - снова. Если же компиляция прерывается в каком-то другом - месте, то причина наиболее вероятно кроется в - оборудовании.</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, вытащите их все и попробуйте - по одной до локализации проблемы в проблематичной - микросхеме DIMM/SIMM, либо их комбинации.</para> - </listitem> - - <listitem> - <para>Чересчур оптимистичные настройки материнской платы. - Настройки BIOS и перемычки на материнской плате - предоставляют возможность задавать различные частоты и - задержки. Часто бывает достаточно настроек по - умолчанию, но иногда установка слишком малых периодов - ожидания для ОЗУ или установка параметра <quote>RAM - Speed: Turbo</quote> вызывает странное поведение. - Возможным решением может стать установка параметров - BIOS по умолчанию с предварительной записью текущих - значений.</para> - </listitem> - - <listitem> - <para>Неустойчивое или недостаточное электропитание - материнской платы. Уберите неиспользуемые адаптеры - ввода/вывода, винчестеры и приводы компакт-дисков или - отключите их от кабеля электропитания для проверки, - что блок питания может работать с меньшей нагрузкой. - Или попробуйте воспользоваться другим блоком - питания, желательно большей мощности. Например, если - имеющийся блок питания рассчитан на 250 Ватт, - попробуйте другой мощностью 300 Ватт).</para> - </listitem> - </orderedlist> - - <para>Прочитайте раздел про <link - linkend="signal11">Signal 11</link> для дальнейшего - объяснения и обсуждения, как аппаратура или программное - обеспечение для тестирования памяти могут пропускать - сбойную память. Подробная информация по этому вопросу - содержится в <link - xlink:href="http://www.bitwizard.nl/sig11/"><acronym>FAQ</acronym> - по проблеме SIG11</link>.</para> - - <para>Наконец, если ничего не помогает, то, возможно, это - из-за ошибки во &os;. Следуйте <link linkend="access-pr">этим - инструкциям</link> для отправки сообщения о проблеме.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="trap-12-panic"> - <para>Моя система аварийно завершает работу с сообщениями - <errorname>Fatal trap 12: page fault in kernel mode</errorname> - либо <errorname>panic:</errorname>, и выдаёт много дополнительной - информации. Что мне делать?</para> - </question> - - <answer> - <para>Разработчики &os; интересуются такими ошибками, но - им нужно больше информации, чем просто текст ошибки. - Скопируйте весь текст сообщения. - Затем обратитесь к разделу <acronym>FAQ</acronym> об - <link linkend="kernel-panic-troubleshooting">аварийных завершениях - работы ядра</link>, постройте отладочное ядро и получите - трассу вызовов. Это может звучать трудной задачей, зато не - требует навыков программирования. Просто следуйте - указаниям.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="proc-table-full"> - <para>Что означает сообщение об ошибке <errorname>maxproc - limit exceeded by uid %i, please see tuning(7) and - login.conf(5)</errorname>?</para> - </question> - - <answer> - <para>Ядро &os; позволяет одновременно существовать - ограниченному числу процессов. Это зависит от значения - переменной &man.sysctl.8; <varname>kern.maxusers</varname>. - <varname>kern.maxusers</varname> также влияет на другие - ограничения ядра, такие как буферы работы с сетью. - Если система сильно загружена, поднимите - <varname>kern.maxusers</varname>. Кроме максимального - числа процессов это также увеличит значения других - параметров, ограничивающих систему.</para> - - <para>Для корректировки значения - <varname>kern.maxusers</varname> обратитесь к разделу <link - xlink:href="&url.books.handbook;/configtuning-kernel-limits.html#kern-maxfiles"> - Ограничения файлов/процессов</link> Руководства. В нём - говорится об открытых файлах, но те же ограничения касаются - процессов.</para> - - <para>Если система загружена слабо, но в ней запущено - слишком много процессов, поправьте параметр - <varname>kern.maxproc</varname>, определив его значение в - <filename>/boot/loader.conf</filename>. Изменение не вступит - в силу до перезагрузки системы. За дополнительной информацией, - касающейся настройки параметров, обращайтесь к странице - Справочника &man.loader.conf.5;. Если эти процессы запущены - одним и тем же пользователем, поправьте - значение <varname>kern.maxprocperuid</varname>, чтобы оно - было на единицу меньше, чем новое значение - <varname>kern.maxproc</varname>. Оно должно быть меньше по - крайней мере на единицу, потому что системная программа - &man.init.8; должна работать всегда.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="remote-fullscreen"> - <para>Полноэкранные приложения на удалённой машине работают - неправильно!</para> - </question> - - <answer> - <para>На удалённой машине тип терминала может отличаться - от <literal>xterm</literal>, который требуется для - использования консоли &os;. Либо же ядро может иметь - неправильные значения ширины и высоты терминала.</para> - - <para>Проверьте, чтобы переменная окружения - <envar>TERM</envar> имела значение - <literal>xterm</literal>. Если удалённая машина его не - поддерживает, попробуйте <literal>vt100</literal>.</para> - - <para>Запустите <command>stty -a</command>, чтобы узнать, - какие размеры терминала заданы в ядре. Если значения - неправильные, их можно поменять командой - <command>stty rows <replaceable>RR</replaceable> cols - <replaceable>CC</replaceable></command>.</para> - - <para>Либо же, если на клиентской машине установлен - <package>x11/xterm</package>, запуск - <command>resize</command> позволит узнать у терминала - правильные размеры и применить эти значения.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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; для получения более подробной информации. - Если это происходит в сети Интернет, то проблема - может заключаться в некорректной работе ресолвера локального сервера. - Для проверки попробуйте получить адрес другого хоста, такого как - <systemitem>www.yahoo.com</systemitem>. Если это не работает, то - в этом и состоит проблема.</para> - - <para>Из-за свежей установки &os;, также возможно, что - информация о домене и сервере имён отсутствует в - <filename>/etc/resolv.conf</filename>. Это часто будет - вызывать задержку в работе <application>SSH</application>, - так как опция <literal>UseDNS</literal> по умолчанию - установлена в значение <literal>yes</literal> в - <filename>/etc/ssh/sshd_config</filename>. Если именно это является - причиной проблемы, то добавьте недостающую - информацию в <filename>/etc/resolv.conf</filename>, либо в - качестве временной меры установите <literal>UseDNS</literal> - в <literal>no</literal> в файле - <filename>sshd_config</filename>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="file-table-full"> - <para>Почему в &man.dmesg.8; регулярно выводятся сообщения - <errorname>file: table is full</errorname>?</para> - </question> - - <answer> - <para>Такое сообщение об ошибке сигнализирует о том, что в - системе закончились доступные файловые дескрипторы. - Обратитесь к разделу <link - xlink:href="&url.books.handbook;/configtuning-kernel-limits.html#kern-maxfiles"> - kern.maxfiles</link> главы о <link xlink:href="&url.books.handbook;/configtuning-kernel-limits.html"> - Настройке ограничений ядра</link> Руководства для выяснения всех - подробностей и устранения этой проблемы.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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>/boot/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 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 xml: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 xml:id="lock-order-reversal"> - <para>Что означают сообщения <errorname>lock order - reversal</errorname>?</para> - </question> - - <answer> - <para>Ядро &os; использует несколько блокировок для арбитража - доступа к соответствующим ресурсам. Когда несколько - потоков в ядре пытаются захватить несколько блокировок - подряд, всегда существует возможность появления мёртвой - блокировки (deadlock), где два потока захватили по одной - блокировке и заблокированы в ожидании освобождения другим - потоком второй блокировки. Такой проблемы синхронизации - можно избежать, если все потоки захватывают блокировки в - одинаковом порядке.</para> - - <para>Система диагностирования блокировок &man.witness.4;, - которая по умолчанию включена во &os.current; и выключена - для стабильных веток и релизов, определяет возможность - появления мёртвых блокировок из-за ошибок их использования, - включая захват нескольких блокировок в различном порядке - в разных частях ядра. Инфраструктура &man.witness.4; - пытается обнаруживать эту проблему по мере её появления - и сообщает о ней на системную консоль в сообщении - <errorname>lock order reversal</errorname> (которое также - часто называют <acronym>LOR</acronym>).</para> - - <para>В силу консервативности &man.witness.4; возможны ложные - срабатывания. При правильном срабатывании такое сообщение - <emphasis>не</emphasis> означает, что система находится в - состоянии мёртвой блокировки; его следует рассматривать - как предупреждение о том, что в этом месте могла бы - произойти мёртвая блокировка.</para> - - <note> - <para>Плохие <acronym>LOR</acronym> обычно быстро - исправляют, поэтому перед написанием сообщения в списки - рассылки следует проверить архивы &a.current.url;.</para> - </note> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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> - - <para>Дополнительная информация о синхронизации во &os; - находится на странице Справочника &man.locking.9;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="touch-not-found"> - <para>Почему процесс - <buildtarget>buildworld</buildtarget>/<buildtarget>installworld</buildtarget> - завершается с сообщением - <errorname>touch: not found</errorname>?</para> - </question> - - <answer> - <para>Эта ошибка не означает, что не найдена утилита &man.touch.1;. - Ошибка наверняка появляется из-за того, что даты модификации файлов - установлены в будущем. Если CMOS часы установлены на локальное - время, отрегулируйте часовой механизм ядра, запустив - команду <command>adjkerntz -i</command> в - однопользовательском режиме.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="applications"> - <title>Прикладные программы</title> - - <qandaset> - <qandaentry> - <question xml:id="user-apps"> - <para>Где находятся все прикладные программы?</para> - </question> - - <answer> - <para>Обратитесь на <link - xlink:href="&url.base;/ports/index.html">страницу портов</link>, - содержащую информацию о программных продуктах, перенесённых - во &os;. На данный момент в этом списке находится более - &os.numports; приложений и он ежедневно увеличивается, так - что почаще туда заглядывайте или подпишитесь на &a.announce;, - в котором публикуется информация о появлении новых - приложений.</para> - - <para>Большинство портов должно нормально работать во всех - поддерживаемых версиях &os;. Неработающие порты - специально помечаются соответствующим образом. - При выходе нового релиза &os; в него в каталог - <filename>ports/</filename> включается актуальная на - момент выхода Коллекция Портов.</para> - - <para>&os; умеет работать со сжатыми двоичными пакетами для - упрощения установки и удаления портов. Используйте - &man.pkg.7; для управления процессом установки - пакетов.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="how-do-download-ports-tree"> - <para>Как загрузить дерево Портов? Следует ли использовать - SVN?</para> - </question> - - <answer> - <para>Любым из указанных способов:</para> - - <itemizedlist> - <listitem> - <para>Используйте portsnap в большинстве случаев. - Обратитесь к разделу <link - xlink:href="&url.books.handbook;/ports-using.html">Использование - Коллекции Портов</link> для получения инструкций по - использованию этого инструмента.</para> - </listitem> - <listitem> - <para>Используйте SVN, если нужны собственные патчи для - дерева портов. Обратитесь к разделу <link - xlink:href="&url.books.handbook;/svn.html">Использование - Subversion</link> для получения дополнительной - информации.</para> - </listitem> - <listitem> - <para>Используйте <acronym>CTM</acronym> как это описано - в разделе <link - xlink:href="&url.books.handbook;/ctm.html">Использование - <acronym>CTM</acronym></link> для получения - изменений по почте при нестабильном соединении.</para> - </listitem> - </itemizedlist> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="java"> - <para>Поддерживает ли &os; среду &java;?</para> - </question> - - <answer> - <para>Да. Для получения дополнительной информации посетите - страницу <link - xlink:href="&url.base;/java/index.html">http://www.FreeBSD.org/java/</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ports-4x"> - <para>Почему этот порт не компилируется на моей машине с - &rel2.relx; - или &rel.relx; -STABLE?</para> - </question> - - <answer> - <para>Если установленная версия &os;, значительно отстаёт от - <emphasis>-CURRENT</emphasis> или <emphasis>-STABLE</emphasis>, - обновите Коллекцию Портов с использованием указаний в - разделе <link - xlink:href="&url.books.handbook;/ports-using.html">Использование - Коллекции Портов</link>. Если система в актуальном - состоянии, значит кто-то мог внести изменение в - порт, с которым он работает в <emphasis>-CURRENT</emphasis>, - но не работает в <emphasis>-STABLE</emphasis>. <link - xlink:href="https://bugs.FreeBSD.org/submit/">Пошлите</link> - сообщение об ошибке, так как Коллекция Портов должна - работать как в <emphasis>-CURRENT</emphasis>, так и в - ветках <emphasis>-STABLE</emphasis>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="make-index"> - <para>Я попытался сформировать файл <filename>INDEX</filename> - командой <command>make index</command>, - однако попытка окончилась неудачей. Почему?</para> - </question> - - <answer> - <para>Первым делом убедитесь, что Коллекция Портов - находится в актуальном состоянии. Ошибки, которые отражаются на - построении файла <filename>INDEX</filename> из актуальной копии - Коллекции Портов, бросаются в глаза и поэтому практически всегда - исправляются немедленно.</para> - - <para>В редких случаях <filename>INDEX</filename> не перестраивается - из-за странных комбинаций значений переменных - <varname>WITH_<replaceable>*</replaceable></varname> или - <varname>WITHOUT_<replaceable>*</replaceable></varname>, заданных в - файле <filename>make.conf</filename>. Если вы думаете, что это ваш - случай, прежде чем сообщать об этом в &a.ports;, попытайтесь - сформировать <filename>INDEX</filename> с - отключенными значениями этих переменных.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ports-update"> - <para>Я обновил исходные тексты. Как теперь обновить - установленные порты?</para> - </question> - - <answer> - <para>С &os; не поставляется инструмент обновления портов, - но есть несколько инструментов, немного облегчающих этот - процесс. Кроме того, для упрощения работы с портами - доступны дополнительные инструменты; смотрите раздел - Руководства &os; <link - xlink:href="&url.books.handbook;/ports-using.html">Использование - Коллекции Портов</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ports-major-upgrade"> - <para>Нужно ли мне перекомпилировать все порты каждый раз, - когда я выполняю мажорное обновление (со сменой старшей - версии &os;)?</para> - </question> - - <answer> - <para>Да! На свежеобновленной системе программное - обеспечение, скомпилированное под более старый релиз, будет - по прежнему работать, но только до тех пор, пока вы не начнете - устанавливать другие порты или обновлять существующие.</para> - - <para>Когда система обновлена, различные совместно используемые - библиотеки, загружаемые модули и другие части системы замещаются - более новыми версиями. Приложения, скомпонованные с более - старыми версиями, могут перестать запускаться либо начнут - функционировать неправильно.</para> - - <para>Для получения дополнительной информации обращайтесь к <link - xlink:href="&url.books.handbook.en;/updating-upgrading-freebsdupdate.html#freebsdupdate-upgrade">разделу, - посвящённому обновлениям,</link> руководства &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ports-minor-upgrade"> - <para>Нужно ли мне перекомпилировать все порты каждый раз, - когда я выполняю минорное обновление (без изменения старшей - версии &os;)?</para> - </question> - - <answer> - <para>В общем случае, нет. Разработчики &os; делают всё - возможное для сохранения двоичной совместимости между всеми - релизами в пределах одной старшей версии. Любые исключения - из этого правила документируются в "Примечаниях к релизу", и - там же даются советы, которых следует придерживаться.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="minimal-sh"> - <para>Почему возможности <command>/bin/sh</command> так малы? - Почему бы во &os; не использовать <command>bash</command> или - какой-либо другой командный процессор?</para> - </question> - - <answer> - <para>Многим - требуется, чтобы разрабатываемые скрипты для командного процессора - были переносимы между многими системами. Именно поэтому в &posix; - очень подробно описан командный процессор и набор утилит. - Большинство скриптов пишутся на языке процессора Bourne shell - (&man.sh.1;), к - тому же некоторые важные программные вызовы (&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>, - &man.tcsh.1; и <command>zsh</command>. Сравните - использование памяти этими оболочками, посмотрев в колонки - <quote>VSZ</quote> и <quote>RSS</quote> вывода команды - <command>ps -u</command>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="midi-sound-files"> - <para>Как создать аудио-CD из файлов MIDI?</para> - </question> - - <answer> - <para>Для создания аудио-CD из MIDI-файлов сначала установите из - портов программу <package>audio/timidity++</package>, затем установите набор - патчей GUS от Эрика Уэлша (Eric A. Welsh), доступный по адресу - <uri xlink:href="http://alleg.sourceforge.net/digmid.html">http://alleg.sourceforge.net/digmid.html</uri>. После корректной установки - <application>TiMidity++</application> MIDI-файлы могут - быть преобразованы в WAV-файлы следующей командой:</para> - - <screen>&prompt.user; <userinput>timidity -Ow -s 44100 -o /tmp/juke/01.wav 01.mid</userinput></screen> - - <para>WAV-файлы затем могут быть преобразованы в другие форматы или - записаны как аудио-CD, что описано в <link xlink:href="&url.books.handbook;/creating-cds.html">Руководстве - &os;</link>.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="kernelconfig"> - <title>Конфигурирование ядра</title> - - <qandaset> - <qandaentry> - <question xml:id="make-kernel"> - <para>Я хочу изменить настройки ядра. Это сложно?</para> - </question> - - <answer> - <para>Вовсе нет! Обратитесь к <link xlink:href="&url.books.handbook;/kernelconfig.html">соответствующему - разделу</link> Руководства, который посвящён этому вопросу.</para> - - <note> - <para>Новый файл <filename>kernel</filename> будет установлен - в каталог <filename>/boot/kernel</filename> - вместе со своими - модулями, а старое ядро и его модули будут сдвинуты в каталог - <filename>/boot/kernel.old</filename>. Если сделана - ошибка в конфигурации, просто загрузите предыдущую - версию ядра.</para> - </note> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="why-kernel-big"> - <para>Почему моё ядро такое большое?</para> - </question> - - <answer> - <para>Конфигурация ядра <literal>GENERIC</literal>, которая - содержится в дистрибутиве &os;, компилируется в - <emphasis>отладочном режиме</emphasis>. В таком режиме - ядра содержат много символьной информации в разных файлах, - которая используется для отладки и сильно увеличивает размер - <filename class="directory">/boot/kernel/</filename>. - Заметьте, что уменьшения - производительности при использовании отладочного ядра нет или - оно незначительно, однако отладочное ядро полезно иметь под - рукой на случай аварийного завершения работы системы.</para> - - <para>Однако при нехватке дискового пространства существует - несколько вариантов уменьшения размера <filename - class="directory">>/boot/kernel/</filename>.</para> - - <para>Чтобы не устанавливать файлы с символьной - информацией, убедитесь в наличии следующей строки в - <filename>/etc/src.conf</filename>:</para> - - <programlisting>WITHOUT_KERNEL_SYMBOLS=yes</programlisting> - - <para>Для получения дополнительной информации смотрите страницу - Справочника &man.src.conf.5;.</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>В любой из вышеописанных ситуаций ядро будет построено с - отладочным режимом.</para> - - <para>Чтобы скомпилировать и установить только нужные модули, - укажите их в <filename>/etc/make.conf</filename>:</para> - - <programlisting>MODULES_OVERRIDE= <replaceable>accf_http ipfw</replaceable></programlisting> - - <para>Замените <emphasis>accf_httpd ipfw</emphasis> на нужный - список модулей. Это уменьшит размер каталога с ядром, а - также время сборки. Для получения дополнительной информации - почитайте <filename>/usr/share/examples/etc/make.conf</filename>. - </para> - - <para>Для дальнейшего уменьшения размера также можно удалить - ненужные устройства из ядра. Для получения дополнительной - информации смотрите <xref linkend="make-kernel"/>.</para> - - <para>Для вступления любого из этих действий в силу следуйте - указаниям по <link - xlink:href="&url.books.handbook;/kernelconfig-building.html">сборке - и установке</link> нового ядра.</para> - - <para>Большинство ядер (<filename>/boot/kernel/kernel</filename>), - как правило, занимают от 12 до 16 Мбайт.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="generic-kernel-build-failure"> - <para>Почему мне не удаётся откомпилировать ни один вариант ядра, - даже <filename>GENERIC</filename>?</para> - </question> - - <answer> - <para>Есть несколько причин, приводящих к возникновению этой - проблемы:</para> - - <itemizedlist> - <listitem> - <para>Дерево исходных текстов отличается от того, что - использовалось для построения работающей в данный - момент системы. Перед обновлением прочитайте - файл <filename>/usr/src/UPDATING</filename>, - обращая особое внимание на раздел - <quote>COMMON ITEMS</quote> в его конце.</para> - </listitem> - - <listitem> - <para>Команда <command>make buildkernel</command> - не завершилась успешно. - Корректное выполнение цели - <command>make buildkernel</command> - зависит от файлов, полученных после выполнения - <command>make buildworld</command>.</para> - </listitem> - - <listitem> - <para>Даже при построении <link - linkend="stable">&os;-STABLE</link> возможно, что - дерево исходных текстов было загружено в тот момент, - когда оно модифицировалось или было неработоспособно. - Построение гарантируется только для релизов, хотя в - большинстве случаев <link linkend="stable">&os;-STABLE</link> - строится без проблем. Попробуйте сгрузить дерево - исходных текстов повторно и посмотрите, разрешилась - ли проблема. Если с сервером есть проблемы, - попробуйте другое зеркало.</para> - </listitem> - </itemizedlist> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="scheduler-in-use"> - <para>Какой планировщик используется - в работающей системе?</para> - </question> - - <answer> - <para>Название используемого планировщика доступно напрямую - в виде значения sysctl-параметра - <varname>kern.sched.name</varname>:</para> - - <screen>&prompt.user; sysctl <replaceable>kern.sched.name</replaceable> -kern.sched.name: ULE</screen> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="scheduler-kern-quantum"> - <para>Что такое <varname>kern.sched.quantum</varname>?</para> - </question> - - <answer> - <para><varname>kern.sched.quantum</varname> определяет максимальное - количество тактов, которое процесс может выполняться, не будучи - прерванным.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="disks"> - <title>Диски, файловые системы и начальные загрузчики</title> - - <qandaset> - <qandaentry> - <question xml:id="adding-disks"> - <para>Как добавить в систему новый диск?</para> - </question> - - <answer> - <para>Обратитесь к разделу <link xlink:href="&url.books.handbook;/disks-adding.html">Добавление - дисков</link> Руководства &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="new-huge-disk"> - <para>Как перенести систему на большой новый диск?</para> - </question> - - <answer> - <para>Самый лучший способ заключается в переустановке - операционной системы на новый диск с последующим переносом - пользовательских данных. Это настоятельно рекомендуется - при отслеживании ветки <emphasis>-STABLE</emphasis> в - течение более одного релиза или при обновлении релиза - вместо установки нового. Установите booteasy на оба диска - с помощью &man.boot0cfg.8; и выполняйте загрузку с любого - из них, пока не будете довольны новой конфигурацией. - Пропустите следующий абзац, чтобы перейти к вопросу - переноса данных после этой операции.</para> - - <para>Либо разбейте на разделы и разметьте новый диск с - помощью &man.sade.8; или &man.gpart.8;. Если диски - отформатированы в MBR, то booteasy можно установить на оба - диска с помощью &man.boot0cfg.8; для того, чтобы иметь - возможность выполнять загрузку как старой, так и новой - системы после выполнения копирования.</para> - - <para>После подготовки диска данные нельзя просто так взять - и перенести. Используйте для этого инструменты, - которые учитывают файлы устройств и системные флаги, - например, &man.dump.8;. И хотя рекомендуется выполнять - перенос данных в однопользовательском режиме, это не - является обязательным условием.</para> - - <para>Если на дисках стоит <acronym>UFS</acronym>, никогда - не используйте ничего, кроме &man.dump.8; и &man.restore.8; - для переноса корневой файловой системы. Эти команды - также следует использовать при переносе отдельного раздела - на другой пустой раздел. Последовательность шагов при - использовании <command>dump</command> для переноса данных - с раздела <acronym>UFS</acronym> на новый раздел:</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>Например, чтобы перенести корневую файловую - систему на устройство <filename>/dev/ada1s1a</filename> - с использованием каталога <filename>/mnt</filename> - в качестве временной точки монтирования, наберите:</para> - - <screen>&prompt.root; <userinput>newfs /dev/ad1as1a</userinput> -&prompt.root; <userinput>mount /dev/ad1as1a /mnt</userinput> -&prompt.root; <userinput>cd /mnt</userinput> -&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen> - - <para>Переразбиение разделов с использованием - <command>dump</command> требует несколько - больше усилий. Для объединения раздела типа - <filename>/var</filename> с его вышестоящим - разделом, создайте новый - раздел, достаточно большой для размещения их обоих, переместите - вышестоящий раздел так, как это описано выше, а затем переместите - нижестоящий раздел в пустой каталог, созданный при первом - перемещении:</para> - - <screen>&prompt.root; <userinput>newfs /dev/ada1s1a</userinput> -&prompt.root; <userinput>mount /dev/ad1as1a /mnt</userinput> -&prompt.root; <userinput>cd /mnt</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>/var</filename> в - собственном разделе, которого не было, - создайте оба раздела, затем смонтируйте нижестоящий раздел в - подходящий каталог во временную точку монтирования, а затем - переместите старый единый раздел:</para> - - <screen>&prompt.root; <userinput>newfs /dev/ada1s1a</userinput> -&prompt.root; <userinput>newfs /dev/ada1s1d</userinput> -&prompt.root; <userinput>mount /dev/ada1s1a /mnt</userinput> -&prompt.root; <userinput>mkdir /mnt/var</userinput> -&prompt.root; <userinput>mount /dev/ada1s1d /mnt/var</userinput> -&prompt.root; <userinput>cd /mnt</userinput> -&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen> - - <para>Для перемещения пользовательских данных также имеются - программы &man.cpio.1; и &man.pax.1;. Известно, что они - теряют информацию о флагах файлов, так что используйте их - с осторожностью.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="safe-softupdates"> - <para>На каких разделах можно без опаски использовать механизм - Soft Updates? Я слышал, что использование Soft Updates на - <filename>/</filename> могут приводить к - проблемам. Что насчёт журналируемых Soft Updates?</para> - </question> - - <answer> - <para>Краткий ответ: обычно Soft Updates можно использовать - без опаски на всех разделах.</para> - - <para>Подробный ответ: Soft Updates имеют две характеристики, - которые могут быть нежелательны на некоторых разделах. Во-первых, - раздел с Soft Updates имеет небольшой шанс потери данных по время - аварийного останова системы. Раздел не будет попорчен, - поскольку данные будет просто потеряны. Во-вторых, Soft Updates могут приводить к - временной нехватке дискового пространства.</para> - - <para>При использовании Soft Updates ядро может задерживать - до тридцати секунд запись изменений на физический диск. - При удалении большого файла он остается на диске, пока - ядро не выполнит фактическое удаление. Это может привести - к очень простой гонке. Предположим, удаляется один - большой файл и тут же создаётся другой большой файл. - Первый файл на самом деле ещё не удалён с диска, поэтому - для второго файла на диске может не хватить места. Это - приведёт к ошибке о том, что на разделе нет достаточного - пространства, несмотря на то, что только что освободилось - много места. Через пару секунд создание файла сработает, - как и ожидалось.</para> - - <para>Если система может аварийно остановиться после того, как ядро - примет набор данных для записи на диск, но перед тем, как данные - реально запишутся, то данные могут потеряться. - Такой риск чрезвычайно мал, но в целом управляем.</para> - - <para>Эти проблемы влияют на все разделы, использующие Soft Updates. - Итак, что это означает для корневого раздела?</para> - - <para>Жизненно важная информация на корневом разделе меняется очень - редко. Если в системе - произойдет сбой в период тридцатисекундного окна после выполнения - такого изменения, возможно, что данные окажутся потерянными. Этот - риск незначителен для большинства применений, но его нужно - учитывать. Если система не может принять такой риск, - не используйте Soft Updates с корневой файловой системой!</para> - - <para><filename>/</filename> традиционно - является одним из самых маленьких разделов. Если каталог - <filename>/tmp</filename> размещён в <filename>/</filename> и у - вас заполнен <filename>/tmp</filename>, то могут - периодически возникать проблемы с дисковым пространством. - Создание символической ссылки <filename>/tmp</filename>, - указывающей на <filename>/var/tmp</filename> решит эту проблему.</para> - - <para>В заключение, &man.dump.8; не работает в режиме реального - времени (-L) с файловой системой, для которой включены - журналируемые Soft Updates (<acronym>SU+J</acronym>).</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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.ext2fs.5;.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>NTFS</term> - - <listitem> - <para>Поддержка NTFS через FUSE доступна через порт - <package>sysutils/fusefs-ntfs</package>. - Для получения более полной информации смотрите - документацию к <link - xlink:href="http://www.tuxera.com/community/ntfs-3g-manual/"><application>ntfs-3g</application></link>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>FAT</term> - - <listitem> - <para>Во &os; имеется драйвер для работы с FAT в режиме - чтения-записи. Для получения дополнительной информации - обратитесь к странице справочника &man.mount.msdosfs.8;.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>ZFS</term> - - <listitem> - <para>&os; включает в себя портированную из &sun; - реализацию файловой системы ZFS. В настоящее время - рекомендуется использовать её только на платформе - &arch.amd64; с достаточным объемом памяти. Для получения - более полной информации обратитесь к странице Справочника - &man.zfs.8;.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>&os; включает сетевую файловую систему - <acronym>NFS</acronym>. В Коллекции портов &os; имеется - несколько приложений FUSE для поддержки многих других - файловых систем.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="mount-dos"> - <para>Как смонтировать вторичный раздел DOS?</para> - </question> - - <answer> - <para>Вторичные разделы DOS находятся после <emphasis>всех</emphasis> - первичных разделов. - Например, если <quote>E</quote> является вторым разделом - DOS на втором диске SCSI, то здесь будет файл устройства для - пятого <quote>слайса</quote> в каталоге <filename>/dev</filename>. - Чтобы смонтировать:</para> - - <screen>&prompt.root; <userinput>mount -t msdosfs /dev/da1s5 /dos/e</userinput></screen> - - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="crypto-filesystem"> - <para>Существует ли криптографическая файловая система для - &os;?</para> - </question> - - <answer> - <para>Да, &man.gbde.8; и &man.geli.8;. - Смотрите раздел <link xlink:href="&url.books.handbook;/disks-encrypting.html">Шифрование - дисковых разделов</link> Руководства &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="grub-loader"> - <para>Как загрузить &os; и &linux; с помощью - <application>GRUB</application>?</para> - </question> - - <answer> - <para>Для загрузки &os; с использованием - <application>GRUB</application> добавьте следующие строки - в <filename>/boot/grub/menu.lst</filename> или - <filename>/boot/grub/grub.conf</filename>, в зависимости - от используемого дистрибутива &linux;.</para> - - <programlisting>title &os; 9.1 -root <replaceable>(hd0,a)</replaceable> -kernel /boot/loader</programlisting> - - <para>Где <replaceable>hd0,a</replaceable> указывает на - корневой раздел на первом диске. Чтобы указать номер - слайса, напишите что-то вроде - <replaceable>(hd0,2,a)</replaceable>. По умолчанию, если - номер слайса не указан, <application>GRUB</application> - ищет первый слайс c разделом <literal>a</literal>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="booteasy-loader"> - <para>Как загрузить &os; и &linux; с помощью - <application>BootEasy</application>?</para> - </question> - - <answer> - <para>Установите LILO в начало загрузочного раздела &linux;, - а не в Master Boot Record. После этого LILO можно будет - запустить LILO из <application>BootEasy</application>.</para> - - <para>Это рекомендуется делать при одновременном - использовании &windows; и &linux;, чтобы упростить - восстановление работоспособности &linux; в случае - переустановки &windows;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="changing-bootprompt"> - <para>Как сменить приглашение загрузчика с <literal>???</literal> на - что-нибудь более значащее?</para> - </question> - - <answer> - <para>Этого нельзя сделать со стандартным загрузчиком, не - переписав его. В категории <filename>sysutils</filename> - Коллекции Портов есть ряд других менеджеров - загрузки.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="removable-drives"> - <para>Как использовать устройство для чтения сменных дисков?</para> - </question> - - <answer> - <para>Если у вас уже есть файловая система на устройстве, - то используйте такую команду:</para> - - <screen>&prompt.root; <userinput>mount -t msdosfs /dev/da0s1 /mnt</userinput></screen> - - <para>Если это устройство будет использоваться только на - системах &os;, то разбейте его на разделы - <acronym>UFS</acronym> или <acronym>ZFS</acronym>. Это - обеспечит поддержку длинных имён файлов, увеличение - производительности и надёжность. Если устройство будет - использоваться с другими операционными системами, то лучше - сделать более совместимый выбор, например, msdosfs.</para> - - <screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/da0 count=2</userinput> -&prompt.root; <userinput>gpart create -s GPT /dev/da0</userinput> -&prompt.root; <userinput>gpart add -t freebsd-ufs /dev/da0</userinput></screen> - - <para>Наконец, остаётся создать новую файловую систему:</para> - - <screen>&prompt.root; <userinput>newfs /dev/da0p1</userinput></screen> - - <para>и смонтировать её:</para> - - <screen>&prompt.root; <userinput>mount /dev/da0s1 /mnt</userinput></screen> - - <para>Хорошо ещё добавить строку в файл - <filename>/etc/fstab</filename> (прочтите справку по &man.fstab.5;), - чтобы в будущем можно было просто давать команду - <command>mount /mnt</command>:</para> - - <programlisting>/dev/da0p1 /mnt ufs rw,noauto 0 0</programlisting> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="mount-cd-superblock"> - <para>При монтировании компакт-диска выдаётся сообщение - <errorname>Incorrect super block</errorname>.</para> - </question> - - <answer> - <para>Необходимо указать тип монтируемого устройства. - Это описано в в разделе Руководства <link - xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd">Использование - CD с данными</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="cdrom-not-configured"> - <para>При монтировании компакт-диска выдаётся сообщение - <literal>Device not configured</literal>.</para> - </question> - - <answer> - <para>Обычно это означает, что в приводе нет компакт-диска либо - устройство не обнаружено на шине. Обратитесь к разделу - <link xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd"> - Использование CD с данными</link> в Руководстве, где подробно - обсуждается этот вопрос.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="cdrom-unicode-filenames"> - <para>Когда я монтирую CD-ROM, все неанглийские символы в именах - файлов выводятся как <quote>?</quote>.</para> - </question> - - <answer> - <para>Скорее всего, на компакт-диске для хранения информации о - файлах и каталогах используется расширение <quote>Joliet</quote>. - Это описано в разделе Руководства об <link - xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd">использовании - CD с данными</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="burncd-isofs"> - <para>Записанный во &os; CD не читается ни в какой - другой операционной системой. Почему?</para> - </question> - - <answer> - <para>Это означает, что на CD был записан непосредственно - необработанный файл без создания файловой системы - ISO 9660. Прочтите раздел Руководства о <link - xlink:href="&url.books.handbook;/creating-cds.html#rawdata-cd">записи - данных непосредственно на компакт-диски</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="copy-cd"> - <para>Как создать образ CD с данными?</para> - </question> - - <answer> - <para>Это описано в разделе Руководства о <link - xlink:href="&url.books.handbook;/creating-cds.html#imaging-cd">копировании - CD с данными</link>. Более полную информацию о работе с - компакт-дисками можно найти в разделе о <link - xlink:href="&url.books.handbook;/creating-cds.html">создании - компакт-дисков</link> - в главе Руководства об устройствах хранения данных.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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, например, порт - <package>audio/xmcd</package>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="user-floppymount"> - <para>Как разрешить обычным пользователям монтировать - компакт-диски, DVD, USB-диски и другие сменные носители?</para> - </question> - - <answer> - <para>Как пользователь <systemitem - class="username">root</systemitem>, установите - системную переменную <varname>vfs.usermount</varname> в - значение <literal>1</literal>.</para> - - <screen>&prompt.root; <userinput>sysctl vfs.usermount=1</userinput></screen> - - <para>Чтобы это срабатывало во время загрузки системы, - добавьте строчку <literal>vfs.usermount=1</literal> в файл - <filename>/etc/sysctl.conf</filename>.</para> - - <para>Пользователи могут монтировать только те устройства, - к которым у них имеется доступ на чтение. Чтобы разрешить - пользователям монтировать устройство, должны быть заданы - разрешения в <filename>/etc/devfs.conf</filename>.</para> - - <para>Например, чтобы разрешить пользователям монтировать - первое устройство USB, добавьте такую строчку:</para> - - <programlisting># Allow all users to mount a USB drive. - own /dev/da0 root:operator - perm /dev/da0 0666</programlisting> - - <para>Теперь все пользователи могут монтировать устройства - с правами доступа на чтение в собственные каталоги:</para> - - <screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput> -&prompt.user; <userinput>mount -t msdosfs /dev/da0 ~/my-mount-point</userinput></screen> - - <para>Размонтирование устройства осуществляется просто:</para> - - <screen>&prompt.user; <userinput>umount ~/my-mount-point</userinput></screen> - - <para>Использование <varname>vfs.usermount</varname>, однако, имеет - некоторые негативные стороны, связанные с вопросами безопасности. - Более правильным способом работы с носителями в формате &ms-dos; - является использование пакета <package>emulators/mtools</package> - из Коллекции Портов.</para> - - <note> - <para>Имя устройства, использованное в предыдущих - примерах, должно быть изменено в соответствии с - конфигурацией.</para> - </note> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="du-vs-df"> - <para>Команды <command>du</command> и <command>df</command> - показывают разный объем доступного дискового пространства. - Что происходит?</para> - </question> - - <answer> - <para>Это связано с тем, как эти команды на самом деле - работают. <command>du</command> проходит по дереву - каталогов, замеряя, насколько большой объем занимает - каждый файл, и выдает общий объем. <command>df</command> - просто запрашивает файловую систему об оставшемся объеме. - Это выглядит как одно и то же, однако файл без записи в - каталоге затронет <command>df</command>, но не повлияет на - <command>du</command>.</para> - - <para>Когда программа использует файл и этот файл удаляется, - то на самом деле он не удаляется из файловой системы, пока - программа не прекратит его использовать. Однако файл тут - же удаляется из списка каталога. Представим себе файл - достаточно большого размера, чтобы его присутствие влияло - на вывод <command>du</command> и <command>df</command>. - Если файл удаляется в процессе работы с ним команды - <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>Такая ситуация часта на Web-серверах. Многие устанавливают - Web-сервер на &os; и забывают обновлять файлы протоколов. - Журнал доступа заполняет <filename>/var</filename>. Новый - администратор удаляет файл, но система все еще сообщает о том, что - раздел заполнен. Остановка и перезапуск программы Web-сервера - освободит файл, позволяя системе освободить дисковое пространство. - Для предотвращения этого настройте &man.newsyslog.8;.</para> - - <para>Заметьте, что подсистема отложенных обновлений - (Soft Updates) может задерживать освобождение дискового - пространства, и может потребоваться до 30 секунд, чтобы - изменения стали заметны.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="add-swap-space"> - <para>Как добавить дополнительную виртуальную память?</para> - </question> - - <answer> - <para>В этом разделе <link - xlink:href="&url.books.handbook;/adding-swap-space.html">Руководства</link> - описывается, как это сделать.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="disk-more-than-full"> - <para>Почему возможно заполнение раздела больше чем на 100%?</para> - </question> - - <answer> - <para>Часть каждого раздела UFS (по умолчанию 8%) зарезервировано для - использования операционной системой и пользователем - <systemitem class="username">root</systemitem>. Утилита &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> - - <qandaentry> - <question xml:id="slow-boot-memtest"> - <para>Почему загрузка &os; задерживается на длительное время - на системах с большим объёмом ОЗУ?</para> - </question> - - <answer> - <para>&os; выполняет короткую проверку памяти на раннем - этапе загрузки. Обычно эта проверка занимает всего - несколько секунд, но если система имеет много десятков - или сотен Гбайт памяти, это можно занять до нескольких - минут. Эту проверку можно отключить, установив - <literal>hw.memtest.tests</literal> в значение - <literal>0</literal> в - <filename>/boot/loader.conf</filename>.</para> - - <para>Для получения дополнительной информации смотрите - страницу Справочника &man.loader.conf.5;.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="all-about-zfs"> - <title>ZFS</title> - - <qandaset> - <qandaentry> - <question xml:id="how-much-ram-for-zfs"> - <para>Какой минимальный объём ОЗУ нужно иметь для ZFS?</para> - </question> - - <answer> - <para>Для комфортного использования требуется 4 Гбайт - ОЗУ, но конкретная нагрузка может сильно различаться.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="what-is-zil"> - <para>Что такое ZIL и когда оно используется?</para> - </question> - - <answer> - <para><acronym>ZIL</acronym> ((<acronym>ZFS</acronym> - intent log) — это журнал записи, используемый для - фиксации операций записи. Обычно операции собираются - в группу транзакций и при заполнении группы пишутся на - диск (<quote>Transaction Group Commit</quote>). Однако - системные вызовы типа &man.fsync.2; требуют фиксацию - записи данных на устройстве перед возвратом управления. - ZIL нужен для подтверждения такой записи, но когда данные - ещё не находятся на диске. Группа транзакций помечается - временной меткой. В случае системного сбоя ищется - последняя неповреждённая метка и из ZIL извлекаются - недостающие данные.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="need-ssd-for-zil"> - <para>Нужен ли мне SSD для ZIL?</para> - </question> - - <answer> - <para>По умолчанию ZFS хранит ZIL в пуле со всеми данными. - Если приложение имеет большой процент записи, вынос ZIL - на отдельное устройство с очень быстрой синхронной - последовательной записью может улучшить общую - производительность. В остальных случаях SSD вряд ли - сможет что-то сильно улучшить.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="what-is-l2arc"> - <para>Что такое L2ARC?</para> - </question> - - <answer> - <para><acronym>L2ARC</acronym> — это кеш на чтение, - хранимый на быстром устройстве, таком как - <acronym>SSD</acronym>. Этот кеш не сохраняется между - перезагрузками. Следует заметить, что ОЗУ выступает - как кеш первого уровня, а L2ARC задействуется только - при нехватке ОЗУ.</para> - - <para>Для L2ARC нужно пространство в ARC для его индексации. - Таким образом, рабочий набор, который идеально помещается - в ARC, не будет помещаться при использовании L2ARC, потому - что часть ARC будет отведена под индекс L2ARC с - вытеснением части рабочего набора в L2ARC, более - медленный, чем ОЗУ.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="should-enable-dedup"> - <para>Целесообразно ли включение дедупликации?</para> - </question> - - <answer> - <para>В общем случае нет.</para> - - <para>Дедупликация занимает значительный объём ОЗУ и может - увеличить задержки операций ввода/вывода. Если данные - не являются сильно дублированными (образы виртуальных - машин или пользовательские бекапы), то, возможно, - дедупликация даст больше вреда. Другое соображение - касается невозможности отменить статус дедупликации. - Если данные записаны при включённой дедупликации, её - выключение не приведёт к обратной репликации объединённых - блоков до момента следующей перезаписи.</para> - - <para>Дедупликация также может приводить к некоторым - неожиданным ситуациям. В частности, удаление файлов - может сильно замедлиться.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="zpool-fully-full"> - <para>Я не могу создать или удалить файлы на пуле ZFS. - Как я могу это исправить?</para> - </question> - - <answer> - <para>Такое может произойти при 100% заполненности пула. - ZFS требуется свободное место на диске для записи - метаданных транзакций. Для восстановления - работоспособного состояния пула обрежьте файл перед его - удалением.</para> - - <screen>&prompt.user; <userinput>truncate -s 0 <replaceable>unimportant-file</replaceable></userinput></screen> - - <para>Обрезание файла работает по той причине, что новая - транзакция при этом не запускается; вместо этого создаются - новые свободные блоки.</para> - - <note> - <para>На системах с дополнительной настройкой ZFS dataset, - такой как дедупликация, свободное место может не быть - доступно сразу.</para> - </note> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="zfs-ssd-trim"> - <para>Поддерживается ли TRIM в ZFS для твердотельных - накопителей?</para> - </question> - - <answer> - <para>Поддержка ZFS TRIM была добавлена во - &os; 10-CURRENT в ревизии - r<revnumber>240868</revnumber> и стала доступна - в ветках -STABLE в r<revnumber>252162</revnumber> и - r<revnumber>251419</revnumber>.</para> - - <para>ZFS TRIM включена по умолчанию и может быть отключена - посредством добавления такой строки в - <filename>/etc/sysctl.conf</filename>:</para> - - <programlisting>vfs.zfs.trim_disable=1</programlisting> - - <note> - <para>ZFS TRIM может не работать на всех конфигурациях, - в частности для файловой системы ZFS на устройствах с - использованием GELI.</para> - </note> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="admin"> - <title>Системное администрирование</title> - - <qandaset> - <qandaentry> - <question xml:id="startup-config-files"> - <para>Где расположены файлы конфигурации системы?</para> - </question> - - <answer> - <para>Основным конфигурационным файлом является - <filename>/etc/defaults/rc.conf</filename>, который описан - в &man.rc.conf.5;). Этот файл подключают системные - скрипты запуска, такие как <filename>/etc/rc</filename> и - <filename>/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>/usr/local/etc/rc.d</filename>. - У этих скриптов - должен быть выставлен бит выполнимости, по умолчанию - используются права доступа <literal>555</literal>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="root-not-found-cron-errors"> - <para>Почему после редактирования моего файла - <filename>crontab</filename> я получаю сообщения вида - <errorname>root: not found</errorname>?</para> - </question> - - <answer> - <para>Обычно это случается при редактировании системного - файла crontab.</para> - - <para>Это неправильный подход, потому что системный crontab - имеет формат, отличный от пользовательских crontab. - Системный crontab имеет дополнительное поле, указывающее, - под каким пользователем запускать команду. &man.cron.8; - полагает, что имя пользователя является первым словом в - команде на выполнение. Поскольку такой команды не - существует, отображается это сообщение об ошибке.</para> - - <para>Чтобы удалить лишний неправильный crontab:</para> - - <screen>&prompt.root; <userinput>crontab -r</userinput></screen> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="su-wheel-group"> - <para>Команда <command>su</command> выдает ошибку - <errorname>you are not in the correct group to su - root</errorname>, когда я пытаюсь сменить привилегии на - <systemitem class="username">root</systemitem>.</para> - </question> - - <answer> - <para>Это особенность работы системы защиты. Для того, - чтобы сменить пользовательский идентификатор с помощью - <command>su</command> на пользователя <systemitem - class="username">root</systemitem> или любого другого - с привилегиями суперпользователя, учётная запись должна - являться членом группы <systemitem - class="groupname">wheel</systemitem>. Если бы этого не - было, то любой, имеющий доступ к системе и узнавший пароль - пользователя <systemitem - class="username">root</systemitem>, смог бы получить в - системе уровень доступа суперпользователя.</para> - - <para>Чтобы разрешить кому-либо менять привилегии на - <systemitem class="username">root</systemitem>, включите - его в группу <systemitem - class="groupname">wheel</systemitem> с помощью - <command>pw</command>.</para> - - <screen>&prompt.root; <userinput>pw groupmod wheel -m lisa</userinput></screen> - - <para>В примере выше пользователь <systemitem - class="username">lisa</systemitem> будет добавлен в группу - <systemitem class="groupname">wheel</systemitem>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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=xterm</command> во &os; 9.0+ или - <command>export TERM=cons25</command> во &os; 8.X, чтобы - такие редакторы смогли корректно взять данные из базы - данных &man.termcap.5;.</para> - - <para>После выполнения этих шагов отредактируйте файл - <filename>/etc/rc.conf</filename> для исправления ошибки. - Сообщение об ошибке, выводимое сразу же после сообщений - при загрузке ядра, должно указать на номер строки в файле, - которая содержит ошибку.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="printer-setup"> - <para>У меня проблемы с установкой принтера.</para> - </question> - - <answer> - <para>Обратитесь к соответствующему <link - xlink:href="&url.books.handbook;/printing.html">разделу</link> - Руководства, посвящённому печати, за советами по - разрешению проблем.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="keyboard-mappings"> - <para>Раскладка клавиатуры неверна.</para> - </question> - - <answer> - <para>Обратитесь к разделу Руководства, посвящённому - <link xlink:href="&url.books.handbook;/using-localization.html"> - использованию локализации</link>, а именно к части, описывающей - <link xlink:href="&url.books.handbook;/using-localization.html#setting-console"> - настройку консоли</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="user-quotas"> - <para>Почему не получается заставить работать дисковые квоты?</para> - </question> - - <answer> - <orderedlist> - <listitem> - <para>Возможно, что ядро не сконфигурировано должным - образом для работы с квотами. В этом случае добавьте - следующую строчку в конфигурационный файл ядра и - пересоберите ядро:</para> - - <programlisting>options QUOTA</programlisting> - - <para>Прочтите <link - xlink:href="&url.books.handbook;/quotas.html">главу - руководства по квотам</link> для полной - информации.</para> - </listitem> - - <listitem> - <para>Не включайте квотирование на разделе - <filename>/</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>/usr</filename></entry> - - <entry><filename>/usr/admin/quotas</filename></entry> - </row> - - <row> - <entry><filename>/home</filename></entry> - - <entry><filename>/home/admin/quotas</filename></entry> - </row> - - <row> - <entry>…</entry> - - <entry>…</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </listitem> - </orderedlist> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="sysv-ipc"> - <para>Поддерживает ли &os; вызовы IPC из System V?</para> - </question> - - <answer> - <para>Да, во &os; в ядро <filename>GENERIC</filename> - включена поддержка IPC в стиле System V, в том числе - совместно используемой памяти, сообщений и семафоров. - В вашем собственном ядре поддержка может быть включена - посредством загрузки модулей ядра - <filename>sysvshm.ko</filename>, - <filename>sysvsem.ko</filename> и - <filename>sysvmsg.ko</filename> или добавлением в - конфигурационный файл ядра следующих строк:</para> - - <programlisting>options SYSVSHM # enable shared memory -options SYSVSEM # enable for semaphores -options SYSVMSG # enable for messaging</programlisting> - - <para>Перекомпилируйте и переустановите ядро.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="sendmail-alternative"> - <para>Какое другое программное обеспечение для почтового - сервера можно использовать вместо - <application>Sendmail</application>?</para> - </question> - - <answer> - <para>Сервер <link - xlink:href="http://www.sendmail.org/"><application>Sendmail</application></link> - является программным обеспечением для работы почтового - сервера во &os;, используемым по умолчанию, но его можно - заменить другим MTA, установленным из Коллекции Портов. - В дереве портов имеется <package>mail/exim</package>, - <package>mail/postfix</package> и - <package>mail/qmail</package>. Проверьте архивы списков - рассылки на предмет обсуждения достоинств и недостатков - имеющихся MTA.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="forgot-root-pw"> - <para>Я забыл пароль пользователя <systemitem - class="username">root</systemitem>! Что - делать?</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>, чтобы - сменить пароль пользователя <systemitem - class="username">root</systemitem>, а затем &man.exit.1; - для продолжения процесса загрузки.</para> - - <note> - <para>Если при входе в однопользовательский режим - предлагается ввести пароль пользователя <systemitem - class="username">root</systemitem>, это означает, что - консоль была помечена как <literal>insecure</literal> в - <filename>/etc/ttys</filename>. В этом случае - потребуется загрузиться с установочного диска &os;, - выбрать <guimenuitem>Live CD</guimenuitem> или - <guimenuitem>Shell</guimenuitem> в начале процесса - установки и выполнить указанные выше команды. В этом - случае смонтируйте нужный раздел и выполните туда - chroot. Например, замените команду <command>mount - -urw /</command> на <command>mount /dev/ada0p1 /mnt; - chroot /mnt</command> для системы, расположенной на - <replaceable>ada0p1</replaceable>.</para> - </note> - - <note> - <para>Если корневой раздел не получается смонтировать в - однопользовательском режиме, то возможно, что разделы - являются зашифрованными, и смонтировать их без ключей - доступа не представляется возможным. За дополнительной - информацией обращайтесь к разделу <link - xlink:href="&url.books.handbook;/disks-encrypting.html">Руководства</link>, - посвященному шифрованию дисков во &os;.</para> - </note> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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' file(s)</userinput></screen> - - <para>где <replaceable>file(s)</replaceable> - это один или - несколько файлов для обработки. - Преобразование делается в том же самом файле, оригинальные файлы - сохраняются с расширением <filename>.bak</filename>.</para> - - <para>Либо используйте &man.tr.1;:</para> - - <screen>&prompt.user; <userinput>tr -d '\r' < dos-text-file > unix-file</userinput></screen> - - <para>где <replaceable>dos-text-file</replaceable> - это имя файла, - содержащего текст DOS, а в файл - <replaceable>unix-file</replaceable> будет помещён уже - преобразованный текст. Этот способ может работать гораздо - быстрее, чем при использовании <command>perl</command>.</para> - - <para>Еще один способ отформатировать тестовые файлы DOS - состоит в использовании <package>converters/dosunix</package> из Коллекции - Портов. Для получения дополнительной информации ознакомьтесь - с документацией порта.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="reread-rc"> - <para>Как перечитать содержимое <filename>/etc/rc.conf</filename> - и перестартовать <filename>/etc/rc</filename> без перезагрузки - системы?</para> - </question> - - <answer> - <para>Перейдите в однопользовательский режим, а затем возвратитесь обратно - в многопользовательский.</para> - - <screen>&prompt.root; <userinput>shutdown now</userinput> -&prompt.root; <userinput>return</userinput> -&prompt.root; <userinput>exit</userinput></screen> - - </answer> - </qandaentry> - - <qandaentry> - <question xml: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; релизы выпускаются из одного из - двух мест. Крупные релизы, точка-ноль, такие, как - 9.0-RELEASE и 10.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>Для получения дополнительной информации о номерах версий и - различных ветках Subversion обратитесь к статье о <link xlink:href="&url.articles.releng;/article.html">выпуске - релизов</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="kernel-chflag-failure"> - <para>Я попытался установить новое ядро, однако утилита - &man.chflags.1; не сработала. Как это обойти?</para> - </question> - - <answer> - <para>Краткий ответ: Режим безопасности имеет значение - больше нуля. Для установки ядра перезагрузите машину и - войдите в однопользовательский режим.</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 xml: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 xml: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>/var</filename>) - в свое адресное - пространство. Для того, чтобы постоянно не беспокоиться о будущих - переотражениях, когда файл вырастет в размерах, он просто - отображает его с огромным размером заранее. Это просто заметить - в исходных текстах, где как вы можете увидеть параметр длина - к функции &man.mmap.2; имеет значение - <literal>0x10000000</literal>, или одна шестнадцатая адресного - пространства для IA32, то есть 256 Мбайт.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="unsetting-schg"> - <para>Почему я не могу снять с файла флаг <literal>schg</literal>?</para> - </question> - - <answer> - <para>Система работает с уровнем защиты выше нуля. Понизьте - уровень защиты и попробуйте еще раз. Для получения более - подробной информации обратитесь к <link - linkend="securelevel">разделу <acronym>FAQ</acronym> - об уровне защиты</link> и - справочной странице &man.init.8;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="vnlru"> - <para>Что такое <literal>vnlru</literal>?</para> - </question> - - <answer> - <para><literal>vnlru</literal> сбрасывает и освобождает - vnode, когда система достигает ограничения по параметру - <varname>kern.maxvnodes</varname>. Этот поток ядра в - основном работает вхолостую и активируется только при - наличии огромного объема ОЗУ и обращении к десяткам тысяч - файлов небольшого размера.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml: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 xml:id="var-empty"> - <para>Что такое <filename>/var/empty</filename>?</para> - </question> - - <answer> - <para><filename>/var/empty</filename> представляет собой - каталог, который используется в программе &man.sshd.8; - при выполнении разделения полномочий. Каталог - <filename>/var/empty</filename> пуст, его владельцем - является <systemitem class="username">root</systemitem>, - и на нём установлен флаг <literal>schg</literal>. - Этот каталог не должен удаляться.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="newsyslog-expectations"> - <para>Я поменял <filename>/etc/newsyslog.conf</filename>. - Как проверить правильность изменений?</para> - </question> - - <answer> - <para>Чтобы посмотреть, что будет делать &man.newsyslog.8;, - используйте следующую команду:</para> - - <screen>&prompt.user; <userinput>newsyslog -nrvv</userinput></screen> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="timezone"> - <para>Как поправить часовой пояс?</para> - </question> - - <answer> - <para>Используйте &man.tzsetup.8;.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="x"> - <title>X Window System и виртуальные консоли</title> - - <qandaset> - <qandaentry> - <question xml:id="whatis-X"> - <para>Что такое X Window System?</para> - </question> - - <answer> - <para>X Window System (обычно <literal>X11</literal>) - является наиболее общедоступной оконной системой, которая - может работать на &unix; и &unix;-подобных системах, в том - числе и во &os;. Разработкой стандартов на используемый - <link - xlink:href="http://en.wikipedia.org/wiki/X_Window_System_core_protocol">X-протокол</link> - занимается организация <link - xlink:href="http://www.x.org/wiki/">The X.Org Foundation</link>, - с текущей эталонной реализацией version 11 release - &xorg.version;, поэтому название часто сокращается до - <literal>X11</literal>.</para> - - <para>Для разных архитектур и операционных систем существует - множество реализаций этой системы. Реализацию кода для - серверной части называют <literal>X-сервером</literal>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="running-X"> - <para>Я хочу запустить &xorg;, как это сделать?</para> - </question> - - <answer> - <para>Для установки &xorg; выполните одно из действий:</para> - - <para>Используйте мета-порт <filename - role="package">x11/xorg</filename>, который выполняет - построение и установку всех компонентов &xorg;.</para> - - <para>Используйте <filename - role="package">x11/xorg-minimal</filename>, который - выполняет построение и установку только необходимых - компонентов &xorg;.</para> - - <para>Установите &xorg; из пакетов &os;.</para> - - <screen><userinput>&prompt.root; pkg install xorg</userinput></screen> - - <para>После установки &xorg; следуйте указаниям в разделе <link - xlink:href="&url.books.handbook;/x-config.html">Конфигурация - X11</link> Руководства &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="running-X-securelevels"> - <para>Я <emphasis>попытался</emphasis> запустить X, но получил - сообщение <errorname>No devices detected.</errorname> после - ввода команды - <command>startx</command>. Что мне теперь делать?</para> - </question> - - <answer> - <para>Вероятно, в системе установлен повышенный уровень - безопасности (<literal>securelevel</literal>). При - повышенном уровне защиты систему X запустить невозможно, - потому что X требуются права на операции записи в - устройство &man.io.4;. Дополнительная информация - находится на странице Справочника &man.init.8;.</para> - - <para>Существует два решения проблемы: установить значение - <literal>securelevel</literal> обратно в ноль или - запускать &man.xdm.1; (или любой другой оконный менеджер) - во время загрузки, до того как повышается значение - <literal>securelevel</literal>.</para> - - <para>Обратитесь к <xref linkend="xdm-boot"/> для получения более - полной информации о запуске &man.xdm.1; во время загрузки.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="x-and-moused"> - <para>Почему моя мышь не работает с X?</para> - </question> - - <answer> - <para>При использовании стандартного драйвера консоли - &man.syscons.4; во &os; можно включить поддержку указателя - мыши во всех виртуальных экранах. Во избежание конфликтов - с X, драйвер &man.syscons.4; поддерживает виртуальное - устройство <filename>/dev/sysmouse</filename>. Все события - от реального устройства мыши пишутся в устройство - &man.sysmouse.4; через &man.moused.8;. Чтобы использовать - мышь на одной и более виртуальных консолях, и при этом - продолжать использовать 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 устройство - <filename>/dev/mouse</filename>. Чтобы оно работало, файл - устройства <filename>/dev/mouse</filename> должен являться - ссылкой на <filename>/dev/sysmouse</filename> (посмотрите - справку по &man.sysmouse.4;). Это можно сделать, добавив - следующую строку в <filename>/etc/devfs.conf</filename> - (посмотрите справку по &man.devfs.conf.5;):</para> - - <programlisting>link sysmouse mouse</programlisting> - - <para>Ссылка может быть создана путем перезапуска &man.devfs.5; - с использованием следующей команды (из под пользователя - <systemitem class="username">root</systemitem>):</para> - - <screen>&prompt.root; <userinput>service devfs restart</userinput></screen> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="x-and-wheel"> - <para>У моей мыши есть колёсико. Могу ли я его использовать - при работе в X?</para> - </question> - - <answer> - <para>Да, если X настроена для использования 5-кнопочной - мыши. Для этого добавьте строчки <literal>Buttons - 5</literal> и <literal>ZAxisMapping 4 5</literal> в - раздел <quote>InputDevice</quote> файла - <filename>/etc/X11/xorg.conf</filename> как показано - в этом примере:</para> - - <programlisting>Section "InputDevice" - Identifier "Mouse1" - Driver "mouse" - Option "Protocol" "auto" - Option "Device" "/dev/sysmouse" - Option "Buttons" "5" - Option "ZAxisMapping" "4 5" -EndSection</programlisting> - - <para>Для использования мыши в - <application>Emacs</application> также добавьте в - <filename>~/.emacs</filename> следующие строки:</para> - - <programlisting>;; wheel mouse -(global-set-key [mouse-4] 'scroll-down) -(global-set-key [mouse-5] 'scroll-up)</programlisting> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="x-and-synaptic"> - <para>Как заставить работать тачпад Synaptics в X?</para> - </question> - - <answer> - <para>Для его работы понадобится настроить некоторые вещи.</para> - - <para>Чтобы использовать драйвер synaptics из Xorg, для - начала удалите строку moused_enable из - <filename>rc.conf</filename>.</para> - - <para>Для включения synaptics добавьте следующую строку в - <filename>/boot/loader.conf</filename>:</para> - - <programlisting>hw.psm.synaptics_support="1"</programlisting> - - <para>Добавьте следующее в - <filename>/etc/X11/xorg.conf</filename>:</para> - - <programlisting>Section "InputDevice" -Identifier "Touchpad0" -Driver "synaptics" -Option "Protocol" "psm" -Option "Device" "/dev/psm0" -EndSection</programlisting> - - <para>И не забыть добавить следующее в раздел - <quote>ServerLayout</quote>:</para> - - <programlisting>InputDevice "Touchpad0" "SendCoreEvents"</programlisting> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="virtual-console"> - <para>Что такое виртуальные консоли и как изменить их - количество?</para> - </question> - - <answer> - <para>Виртуальные консоли предоставляют несколько - одновременных сеансов работы с той же самой машиной без - установки какой бы то ни было сети или запуска X.</para> - - <para>При запуске системы после вывода сообщений этапа - загрузки на консоль выдаётся приглашение для входа в - систему. Введите своё имя и пароль, чтобы начать работу - на первой виртуальной консоли.</para> - - <para>Чтобы запустить ещё один сеанс, скажем, чтобы - заглянуть в документацию по программе или для чтения - электронной почты во время ожидания завершения передачи - данных по FTP, нажмите <keycap>F2</keycap>, удерживая - <keycap>Alt</keycap>. Это отобразит приглашение на - второй виртуальной консоли. Чтобы вернуться к - первоначальному сеансу, нажмите <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;), добавив туда записи - для терминалов с именами от <filename>ttyv8</filename> до - <filename>ttyvc</filename> после комментария про - <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" xterm on secure -ttyv9 "/usr/libexec/getty Pc" xterm on secure -ttyva "/usr/libexec/getty Pc" xterm on secure -ttyvb "/usr/libexec/getty Pc" xterm on secure</programlisting> - - <para>Чем больше виртуальных терминалов, тем больше ресурсов - используется. Это может привести к проблемам на системах - с 8 Мбайт ОЗУ или меньше. Подумайте о смене статуса - консолей с <literal>secure</literal> на - <literal>insecure</literal>.</para> - - <note> - <para>Во &os; до версии 9.0 использовался тип терминала - <quote>cons25</quote> вместо <quote>xterm</quote>. - При добавлении в <filename>/etc/ttys</filename> новых - записей используйте существующий формат.</para> - </note> - - <important> - <para>Чтобы запустить сервер X, нужно зарезервировать под - него хотя бы один виртуальный терминал со значением - <literal>off</literal>. Это означает, что под - виртуальные консоли можно отвести только одиннадцать - функциональных клавиш, и ещё одна остаётся за - X-сервером.</para> - </important> - - <para>Например, чтобы запустить X и 11 виртуальных консолей, - нужно настроить двенадцатый виртуальный терминал:</para> - - <programlisting>ttyvb "/usr/libexec/getty Pc" xterm off secure</programlisting> - - <para>Самым простым способом активировать виртуальные - консоли является перезагрузка.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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>/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-серверу указывается работать на - <filename>/dev/ttyv3</filename>. Заметьте, что номера - отличаются на единицу. Дело в том, что X-сервер считает vty - от единицы, когда как отсчёт vty в ядре &os; ведётся с нуля.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="xconsole-failure"> - <para>При запуске <command>xconsole</command> выдаётся сообщение - <errorname>Couldn't open console</errorname>.</para> - </question> - - <answer> - <para>Если <application>X</application> запускается с - помощью <application>startx</application>, права на - устройство <filename>/dev/console</filename> - <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>Этого будет достаточно для того, чтобы всякий, кто вошёл - в систему с терминала <filename>/dev/ttyv0</filename>, имел доступ к - консоли.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ps2-x"> - <para>Моя мышь PS/2 в X работает неправильно.</para> - </question> - - <answer> - <para>Мышь и драйвер могли рассинхронизироваться. В редких - случаях драйвер может ошибочно сообщать о проблемах - синхронизации:</para> - - <programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting> - - <para>Если это случилось, отмените проверку согласования, - установив значение флага для драйвера мыши PS/2 в - <literal>0x100</literal>. Проще всего это сделать - добавлением <literal>hint.psm.0.flags="0x100"</literal> в - <filename>/boot/loader.conf</filename> с перезагрузкой.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="install-splash"> - <para>Как установить экранную заставку и где такие заставки можно - найти?</para> - </question> - - <answer> - <para>Подробный ответ находится в разделе <link - xlink:href="&url.books.handbook;/boot-blocks.html#boot-splash">Загрузочные - экранные заставки</link> Руководства &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="windows-keys"> - <para>Можно ли в X использовать клавишу - <keycap>Windows</keycap>?</para> - </question> - - <answer> - <para>Да. Используйте &man.xmodmap.1; для привязки функций - к этим клавишам.</para> - - <para>Если все клавиатуры Windows стандартны, то - эти три клавиши имеют следующие клавиатурные коды:</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>Для того, чтобы переопределения клавиш - <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>При использовании оконного менеджера - <package>x11-wm/fvwm2</package> клавиши можно - переопределить так, чтобы <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 xml:id="x-3d-acceleration"> - <para>Как заставить работать аппаратное ускорение 3D-графики для - &opengl;?</para> - </question> - - <answer> - <para>Наличие 3D-ускорения зависит от версии сервера &xorg; - и типа графического адаптера. Для адаптера nVidia - используйте двоичный драйвер для &os;, установив один из - нижеследующих портов:</para> - - <para>Последние версии адаптеров nVidia поддерживаются - портом <package>x11/nvidia-driver</package>.</para> - - <para>Более старые драйверы доступны как - <package>x11/nvidia-driver-<replaceable>###</replaceable></package>.</para> - - <para>nVidia предоставляет подробную информацию о том, какие - адаптеры поддерживаются тем или иным драйвером, - на своём сайте: <uri - xlink:href="http://www.nvidia.com/object/IO_32667.html">http://www.nvidia.com/object/IO_32667.html</uri>.</para> - - <para>Для адаптеров Matrox G200/G400 следует - попробовать порт <package>x11-servers/mga_hal</package>.</para> - - <para>Для ATI Rage 128 и Radeon посмотрите страницы - Справочника &man.ati.4x;, &man.r128.4x; и &man.radeon.4x;.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="networking"> - <title>Работа в сети</title> - - <qandaset> - <qandaentry> - <question xml:id="diskless-booting"> - <para>Где можно найти информацию о <quote>бездисковой - загрузке</quote>?</para> - </question> - - <answer> - <para><quote>Бездисковая загрузка</quote> означает, что машина - с &os; загружается по сети и читает необходимые файлы с - сервера, а не со своего диска. Подробное описание есть в - <link xlink:href="&url.books.handbook;/network-diskless.html"> - соответствующей главе</link> Руководства.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="router"> - <para>Может ли машина с &os; использоваться как - маршрутизатор?</para> - </question> - - <answer> - <para>Да. Обратитесь к разделу Руководства, - посвящённому <link xlink:href="&url.books.handbook;/advanced-networking.html">сложным - вопросам работы в сети</link>, особенно в той части, что - касается <link xlink:href="&url.books.handbook;/network-routing.html">маршрутизации - и маршрутизаторов</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="win95-connection"> - <para>Можно ли подключить машину с &windows; к Internet с помощью - &os;?</para> - </question> - - <answer> - <para>Как правило, те, кто задают такие вопросы, имеют дома - два компьютера, один с &os;, а другой с какой-то версией - &windows;. Идея состоит в использовании &os; для - подключения к Internet, а затем осуществлять выход в Internet - из &windows; через &os;. На самом деле это просто частный - случай предыдущего вопроса, который хорошо отработан.</para> - - <para>Для подключения к Internet с использованием - коммутируемого соединения нужно указать параметр - <option>-nat</option> и установить в файле - <filename>/etc/rc.conf</filename> переменную - <literal>gateway_enable</literal> в значение - <emphasis>YES</emphasis>. Для получения - дополнительной информации обратитесь к страницам - справочной системы по команде &man.ppp.8; или <link xlink:href="&url.books.handbook;/userppp.html"> - разделу Руководства о PPP режима пользователя</link>.</para> - - <para>Если подключение к Internet выполняется через - Ethernet, используйте &man.natd.8;. Вводная информация - находится в разделе Руководства <link - xlink:href="&url.books.handbook;/network-natd.html">natd</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="slip-ppp-support"> - <para>Поддерживает ли &os; протокол PPP?</para> - </question> - - <answer> - <para>Да. &man.ppp.8; может обслуживать как входящие, так и - исходящие соединения.</para> - - <para>Более подробная информация об их использовании находится в - <link xlink:href="&url.books.handbook;/ppp-and-slip.html">разделе - Руководства о протоколе PPP</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="natd"> - <para>Поддерживает ли &os; технологию NAT или Masquerading?</para> - </question> - - <answer> - <para>Да. Для получения указаний по использованию NAT через - подключение PPP обратитесь к <link - xlink:href="&url.books.handbook;/userppp.html">разделу - Руководства о PPP</link>. Чтобы использовать NAT вместе - с другим типом сетевого подключения, взгляните на раздел - Руководства <link - xlink:href="&url.books.handbook;/network-natd.html">natd</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ethernet-aliases"> - <para>Как настроить алиас в сети Ethernet?</para> - </question> - - <answer> - <para>Если алиас находится в той же самой сети, что и уже - настроенный на интерфейсе адрес, допишите к этой команде - <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>Дополнительная информация находится в <link - xlink:href="&url.books.handbook;/configtuning-virtual-hosts.html">Руководстве</link> - &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="nfs-linux"> - <para>Почему я не могу смонтировать диск &linux; по NFS?</para> - </question> - - <answer> - <para>Некоторые версии NFS для &linux; поддерживают запросы на - монтирование только с привилегированного порта; попробуйте - выполнить следующую команду:</para> - - <screen>&prompt.root; <userinput>mount -o -P linuxbox:/blah /mnt</userinput></screen> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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; и раздел об <link xlink:href="&url.books.handbook;/network-nfs.html">NFS</link> в Руководстве, - особенно в части <link - xlink:href="&url.books.handbook;/network-nfs.html#configuring-nfs">настройки - NFS</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ip-multicast"> - <para>Как включить поддержку multicast IP?</para> - </question> - - <answer> - <para>Установите пакет <package>net/mrouted</package> и - добавьте <literal>mrouted_enable="YES"</literal> в - <filename>/etc/rc.conf</filename> для запуска этого - сервиса во время загрузки.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="fqdn-hosts"> - <para>Почему я должен использовать FQDN для хостов не в моей - сети?</para> - </question> - - <answer> - <para>За ответом на этот вопрос обращайтесь к <link - xlink:href="&url.books.handbook;/mail-trouble.html">Руководству</link> - &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="network-permission-denied"> - <para><errorname>Permission denied</errorname> для любых действий, - связанных с работой сети.</para> - </question> - - <answer> - <para>Если ядро скомпилировано с параметром - <literal>IPFIREWALL</literal>, имейте в виду, что - политикой по умолчанию является запрет прохождения - всех пакетов, которые явно не разрешены.</para> - - <para>Если межсетевой экран был случайно сконфигурирован - неверным образом, то для восстановления работоспособности - сети наберите такую команду из-под пользователя - <systemitem class="username">root</systemitem>:</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>Дополнительная информация о настройке данного - межсетевого экрана находится в <link - xlink:href="&url.books.handbook;/firewalls-ipfw.html">соответствующей - главе</link> Руководства.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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>. Адрес - назначения пакета не меняется на - <replaceable>10.0.0.1</replaceable>. Большинство машин, - скорее всего, отбросят полученный пакет, имеющий адрес - назначения, им не соответствующий. Таким образом, правило - <quote>fwd</quote> не часто работает так, как ожидает - пользователь. Такое поведение является особенностью, а не - ошибкой.</para> - - <para>Обратитесь к <link - linkend="service-redirect"><acronym>FAQ</acronym> о - перенаправлении сервисов</link>, руководству по &man.natd.8; или - одной из нескольких утилит для перенаправления из <link xlink:href="&url.base;/ports/index.html">Коллекции Портов</link> для - того, чтобы сделать это правильно.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="service-redirect"> - <para>Как можно перенаправить запросы с одной машины на другую?</para> - </question> - - <answer> - <para>Запросы FTP и других сервисов можно перенаправить с - помощью порта <package>sysutils/socket</package>. - Замените запись для этого сервиса в - <filename>/etc/inetd.conf</filename> на вызов - <command>socket</command>, как показано в этом примере для - <application>ftpd</application>:</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 xml:id="bandwidth-mgr-tool"> - <para>Где можно найти средства управления сетевым трафиком?</para> - </question> - - <answer> - <para>Для &os; имеются три средства управления трафиком. - &man.dummynet.4; интегрирован в систему &os; как составная - часть &man.ipfw.4;. <link xlink:href="http://www.sonycsl.co.jp/person/kjc/programs.html"> - ALTQ</link> включен во &os; как составная часть &man.pf.4;. - Bandwidth Manager компании <link xlink:href="http://www.etinc.com/">Emerging Technologies</link> - является коммерческим продуктом.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="mount-smb-share"> - <para>Как смонтировать диск &windows;-машины в моей локальной сети, - как это делает smbmount в &linux;?</para> - </question> - - <answer> - <para>Используйте пакет <application>SMBFS</application>. В него - включён набор изменений в ядре и пользовательские программы. - Программы и информация доступны как &man.mount.smbfs.8; и - входят в состав базовой системы.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 net.inet.icmp.icmplim=300</userinput></screen> - - <para>Для выключения подобных сообщений без отключения - самого ограничения используйте - <varname>net.inet.icmp.icmplim_output</varname>, чтобы - подавить вывода:</para> - - <screen>&prompt.root; <userinput>sysctl net.inet.icmp.icmplim_output=0</userinput></screen> - - <para>И наконец, чтобы полностью выключить это ограничение, - сделайте <varname>net.inet.icmp.icmplim</varname> равным - <literal>0</literal>. Выключение этого лимита не - приветствуется по причинам, изложенным выше.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="unknown-hw-addr-format"> - <para>Что это за сообщения <errorname>arp: unknown hardware - address format</errorname>?</para> - </question> - - <answer> - <para>Это означает, что какое-то устройство в локальной сети - Ethernet использует MAC-адрес в формате, неизвестном &os;. - Вероятно, это происходит из-за того, что кто-то в сети - экспериментирует с сетевым адаптером. Чаще всего это - происходит в сетях с кабельными модемами. Это безобидно и - не должно влиять на производительность системы &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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> - </qandaset> - </chapter> - - <chapter xml:id="security"> - <title>Безопасность</title> - - <qandaset> - <qandaentry> - <question xml:id="sandbox"> - <para>Что означает термин sandbox (песочница)?</para> - </question> - - <answer> - <para><quote>Sandbox</quote> - это термин, используемый при - обеспечении безопасности. Он имеет два значения:</para> - - <itemizedlist> - <listitem> - <para>Процесс, помещённый внутрь некоторых виртуальных - стен, которые предназначены для предотвращения взлома - всей системы в результате взлома этого конкретного - процесса.</para> - - <para>Процесс может работать в границах этих стен. - Поскольку, что бы этот процесс ни делал, он эти стены - разрушить не может, особый аудит его кода не нужен для - того, чтобы с уверенностью сказать, насколько его - работа безопасна для системы.</para> - - <para>Стеной может служить, например, идентификатор - пользователя. Вот определение, даваемое на страницах - Справочника &man.security.7; и &man.named.8;.</para> - - <para>Рассмотрим, например, службу <literal>ntalk</literal> - (смотрите &man.inetd.8;). Раньше эта - служба запускалась с идентификатором пользователя - <systemitem class="username">root</systemitem>, а сейчас — <systemitem class="username">tty</systemitem>. - Пользователь <systemitem class="username">tty</systemitem> — это та песочница, - которая осложняет взлом системы через <literal>ntalk</literal> - посредством использования этого идентификатора - пользователя.</para> - </listitem> - - <listitem> - <para>Процесс, помещённый внутрь симулируемой машины. Это - даёт больший уровень безопасности. Это означает, что - некто, взломавший процесс, может думать, что может сломать и - систему в целом, однако фактически может сломать только - симулятор этой машины и не может модифицировать никаких - реальных данных.</para> - - <para>Самым распространённым способом достигнуть такого - результата является построение имитирующего окружения в - каталоге и затем запуск процессов в этом каталоге через - chroot (т.е. задав этот каталог в качестве - <filename>/</filename> для этого процесса, - а не реальный <filename>/</filename> всей - системы).</para> - - <para>Другим часто используемым методом является монтирование - низлежащей файловой системы в режиме "только для чтения" и - затем создание уровня файловой системы поверх неё, что даёт - процессу видимость доступа по записи на ту файловую систему. - Процесс будет полагать, что может записывать в те файлы, но - это будет единственный процесс, который увидит результат - — другие процессы не будут этого делать ни в коем - случае.</para> - - <para>Попытка сделать такой тип песочницы настолько прозрачна, что - пользователь (или взломщик) даже не поймёт, что он в ней - находится.</para> - </listitem> - </itemizedlist> - - <para>В &unix; реализованы два типа <quote>песочниц</quote>. Один на - уровне процесса, и один на уровне идентификаторов - пользователей.</para> - - <para>Каждый процесс в &unix; полностью защищён от других процессов. - Никакой процесс не может модифицировать адресное пространство - другого процесса.</para> - - <para>В &unix; каждым процессом владеет некоторый идентификатор - пользователя. Если этот пользователь не - <systemitem class="username">root</systemitem>, он ограждает процесс от других, - владельцами которых являются другие пользователи. Этот - идентификатор используется также для защиты данных на диске.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="securelevel"> - <para>Что такое уровень защиты (securelevel)?</para> - </question> - - <answer> - <para><literal>securelevel</literal> является механизмом - обеспечения безопасности, который реализован в ядре. Когда - уровень защиты больше нуля, - ядро ограничивает выполнение некоторых операций; даже - суперпользователю <systemitem class="username">root</systemitem> - запрещается их выполнять. Механизм уровня защиты ограничивает - возможности по:</para> - - <itemizedlist> - <listitem> - <para>снятию некоторых флагов с файлов, таких, как - <literal>schg</literal> (системный флаг неизменяемости),</para> - </listitem> - - <listitem> - <para>записи в память ядра через устройства - <filename>/dev/mem</filename> и - <filename>/dev/kmem</filename>,</para> - </listitem> - - <listitem> - <para>загрузке модулей ядра и</para> - </listitem> - - <listitem> - <para>изменению правил сетевого экрана.</para> - </listitem> - </itemizedlist> - - <para>Для выяснения состояния уровня защиты в работающей - системе:</para> - - <screen>&prompt.root; <userinput>sysctl -n kern.securelevel</userinput></screen> - - <para>Результат содержит текущее значение уровня защиты. - Если оно больше нуля, то по крайней мере некоторые - из защит этого механизма включены.</para> - - <para>Уровень защиты работающей системы не может быть понижен, - поскольку это противоречит назначению этого механизма. - Если для задачи требуется неположительный - уровень защиты, измените значения переменных - <varname>kern_securelevel</varname> и - <varname>kern_securelevel_enable</varname> в файле - <filename>/etc/rc.conf</filename> и перезагрузите - систему.</para> - - <para>Более подробная информация об уровнях защиты и о том, какие - специфические действия выполняют все уровни, может быть найдена на - справочных страницах о &man.init.8;.</para> - - <warning> - <para>Уровень защиты не является панацеей; в нём есть много - недостатков. Зачастую он даёт обманчивое чувство - безопасности.</para> - - <para>Одной из самых больших проблем является то, что для его - эффективной работы все файлы, используемые в процессе загрузки, - должны быть защищены. Если атакующий сможет заставить систему - выполнять свой код до установки уровня защиты (что происходит - достаточно поздно во время процесса загрузки, так как некоторые - вещи, выполняемые системой в это время, не могут быть сделаны при - повышенном уровне защиты), то эта защита может быть отключена. - Хотя такая задача по защите всех файлов, используемых в процессе - загрузки, технически вполне осуществима, если это будет сделано, - то поддержка системы станет кошмаром, так как для изменения - конфигурационного файла придётся останавливать систему, - переводя её по крайней мере в однопользовательский режим.</para> - - <para>Это обстоятельство, а также ряд других, часто обсуждаются в - списках рассылки, в частности, во &a.security;. - Поищите в <link xlink:href="&url.base;/search/index.html"> - архивах</link> более подробное обсуждение. Предпочтителен - более гибкий механизм.</para> - </warning> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="sendmail-port-587"> - <para>Даемон <application>Sendmail</application> ждёт - соединений как на стандартном порту 25, так и на - порту 587! Что происходит?</para> - </question> - - <answer> - <para>Последние версии <application>Sendmail</application> - поддерживают механизм посылки почты, который работает по - порту 587. Эта возможность пока широко не используется, - но её популярность растёт.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="toor-account"> - <para>Что это за пользователь <systemitem - class="username">toor</systemitem> с UID 0? Я - подвергся взлому?</para> - </question> - - <answer> - <para>Не волнуйтесь, <systemitem - class="username">toor</systemitem> является - <quote>альтернативной</quote> учётной записью - суперпользователя (toor - это root, записанный задом - наперёд). Его предлагается использовать с нестандартным - командным интерпретатором, так чтобы не нужно было менять - используемый по умолчанию командный процессор для - <systemitem class="username">root</systemitem>. Это - важно, так как оболочки, не являющиеся частью дистрибутива - системы, устанавливаются в каталог - <filename>/usr/local/bin</filename>, который по - умолчанию располагается в другой файловой системе. Если - командный процессор для пользователя <systemitem - class="username">root</systemitem> располагается в - <filename>/usr/local/bin</filename> и файловая система, - содержащая <filename>/usr/local/bin</filename>, не - смонтирована, то <systemitem - class="username">root</systemitem> не сможет войти в - систему для исправления проблемы и понадобится - перезагрузиться в однопользовательском режиме, чтобы - указать командный процессор.</para> - - <para>Некоторые используют <systemitem - class="username">toor</systemitem> для выполнения - повседневных административных работ с нестандартным - командным процессором, оставляя <systemitem - class="username">root</systemitem> со стандартной - оболочкой для работы в однопользовательском режиме или - выполнения аварийных работ. По умолчанию пользователь не - сможет войти в систему как <systemitem - class="username">toor</systemitem>, потому что для него - не указан пароль, поэтому войдите из-под <systemitem - class="username">root</systemitem> и установите пароль - для <systemitem class="username">toor</systemitem> до того - как использовать его для входа в систему.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="ppp"> - <title>PPP</title> - - <qandaset> - <qandaentry> - <question xml:id="userppp"> - <para>Не могу заставить работать ppp. Что я делаю не так?</para> - </question> - - <answer> - <para>Первым делом прочтите страницу Справочника &man.ppp.8; - и <link - xlink:href="&url.books.handbook;/ppp-and-slip.html#userppp">раздел - PPP</link> Руководства. Для помощи с устранением - неполадок включите протоколирование следующей командой:</para> - - <programlisting>set log Phase Chat Connect Carrier lcp ipcp ccp command</programlisting> - - <para>Эту команду можно набрать в командной строке - &man.ppp.8; или ввести в начале раздела - <literal>default</literal> в - <filename>/etc/ppp/ppp.conf</filename>. Проверьте, что - файл <filename>/etc/syslog.conf</filename> содержит - указанные ниже строки и существует файл - <filename>/var/log/ppp.log</filename>:</para> - - <programlisting>!ppp -*.* /var/log/ppp.log</programlisting> - - <para>Полную информацию о происходящем можно найти в файле - протокола. Не беспокойтесь, если не всё будет понятно, - ведь это может быть понятно кому-то ещё.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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> запись о локальной машине. - Если локальная сеть отсутствует, измените строку для - <systemitem>localhost</systemitem>:</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 xml:id="ppp-nodial-auto"> - <para>Ppp не звонит в режиме -auto</para> - </question> - - <answer> - <para>Сначала проверьте наличие маршрута по умолчанию. - Команда <command>netstat -rn</command> должна показать - две строки:</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>Если нет маршрута по умолчанию, убедитесь, что строка - <literal>HISADDR</literal> была добавлена в - <filename>/etc/ppp/ppp.conf</filename>.</para> - - <para>Другая причина отсутствия строки с маршрутом по - умолчанию может крыться в том, что маршрут по умолчанию - был добавлен в <filename>/etc/rc.conf</filename>, и эта - строка отсутствует в - <filename>/etc/ppp/ppp.conf</filename>:</para> - - <programlisting>delete ALL</programlisting> - - <para>В таком случае обратитесь к соответствующему <link - xlink:href="&url.books.handbook;/userppp.html#userppp-final">разделу</link> - Руководства.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 адреса или - когда адрес маршрутизатора не известен. При использовании - интерактивного режима можно набрать следующие команды - после входа в пакетный режим. Пакетный режим обозначается - заглавными буквами <acronym>PPP</acronym> - в приглашении:</para> - - <programlisting>delete ALL -add 0 0 HISADDR</programlisting> - - <para>Обратитесь к разделу <link - xlink:href="&url.books.handbook;/userppp.html#userppp-dynamicip">PPP - и динамические IP адреса</link> Руководства за подробной - информацией.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="ppp-drop-heavy-load"> - <para>Соединение разрывается при большой нагрузке</para> - </question> - - <answer> - <para>Если включен Link Quality Reporting - (<acronym>LQR</acronym>), то возможно слишком много - пакетов <acronym>LQR</acronym> теряется в канале. - &man.ppp.8; делает вывод, что канал плох, и разрывает - соединение. <acronym>LQR</acronym> по умолчанию выключен. - Включить <acronym>LQR</acronym> можно так:</para> - - <programlisting>enable lqr</programlisting> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ppp-drop-random"> - <para>Соединение разрывается в случайные промежутки времени</para> - </question> - - <answer> - <para>Иногда на шумной линии или даже на линии с включенным - режимом ожидания звонка модем может вешать трубку, - ошибочно полагая, что потеряна несущая.</para> - - <para>В большинстве модемов есть параметр, определяющий - чувствительность к временной потере несущей. - Обратитесь к документации модема.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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;. Если сетевое подключение неожиданно - восстанавливается при проявлении активности на - диагностическом сокете или нет соединения, но команда - <literal>set socket</literal> в начальный момент была - выполнена успешно, то проблема имеет локальный характер. - Если получается подключиться, но связи всё равно нет, - включите вывод локальной отладочной информации командой - <literal>set log local async</literal> и используйте - &man.ping.8; в другом окне или терминале, чтобы проверить - связь. В отладочном выводе будут показаны данные, - передаваемые и получаемые из канала связи. Если данные - посылаются, но не принимаются обратно, то проблема с той - стороны.</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 xml:id="ppp-remote-not-responding"> - <para>Удалённая система не отвечает</para> - </question> - - <answer> - <para>Здесь мало что можно сделать. Большинство провайдеров - отказываются помогать пользователям, которые не используют - ОС от µsoft;. Добавьте <literal>enable lqr</literal> - в <filename>/etc/ppp/ppp.conf</filename>, чтобы позволить - &man.ppp.8; отследить ошибки в удалённой системе и закрыть - соединение. Такое обнаружение достаточно медленно и - поэтому не так уж полезно.</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>Если провайдер согласен помочь, нужно будет включить - режим отладки с их стороны, и затем, когда связь прервётся - в следующий раз, они смогут сказать, почему с их стороны - возникли проблемы.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ppp-same-magic"> - <para>В протоколе есть сообщения о том, что <quote>magic being the - same</quote>.</para> - </question> - - <answer> - <para>Иногда, сразу после установления соединения, в журнале - могут возникать сообщения <errorname>Magic is the - same</errorname>. Иногда эти сообщения проходят - безболезненно, а иногда одна из сторон прекращает работу. - Большинство реализаций PPP не может справиться с такой - ситуацией, и даже когда связь выглядит установившейся, вы - будeт только бесконечно повторяющиеся конфигурационные - запросы и подтверждения в файле протокола до тех пор, пока - &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 xml:id="ppp-lcp-constant"> - <para>Согласование LCP продолжается, пока не закроется - соединение</para> - </question> - - <answer> - <para>В настоящий момент одной из неприятных особенностей - реализации &man.ppp.8; является то, что она не связывает - сообщения LCP, CCP & IPCP с запросами. Как результат, если - реализация PPP с одной стороны более чем на 6 секунд медленнее, - чем с другой, противоположная сторона будет посылать - два дополнительных запроса на согласование параметров LCP. - Это фатально.</para> - - <para>Предположим, что у нас работают две реализации, на машинах - <systemitem>A</systemitem> и <systemitem>B</systemitem>. <systemitem>A</systemitem> - начинает посылать запросы LCP сразу же после соединения, а - <systemitem>B</systemitem> требуется 7 секунд для запуска. Когда - <systemitem>B</systemitem> запускается, <systemitem>A</systemitem> послало 3 - LCP-запроса. Полагаем, что режим эха выключен, в противном - случае мы столкнулись бы с проблемами "магического" числа, - описанными в предыдущем разделе. <systemitem>B</systemitem> посылает - REQ, затем ACK на первый REQ от <systemitem>A</systemitem>. Это - приводит к тому, что <systemitem>A</systemitem> входит в состояние - <acronym>OPENED</acronym> и посылает (первый) ACK обратно - <systemitem>B</systemitem>. В то же самое время <systemitem>B</systemitem> - посылает обратно ещё два ACK в ответ на два дополнительных REQ, - посланные <systemitem>A</systemitem> до старта <systemitem>B</systemitem>. - <systemitem>B</systemitem> затем получает первый ACK от <systemitem>A</systemitem> - и возвращается в состояние <acronym>REQ-SENT</acronym>, послав - ещё один (четвёртый) REQ согласно RFC. Затем он получает - третий ACK и входит в состояние <acronym>OPENED</acronym>. - В это же время <systemitem>B</systemitem> принимает - четвёртый REQ от <systemitem>A</systemitem>, что возвращает - его в состояние <acronym>ACK-SENT</acronym> и посылает ещё один - (второй) REQ и (четвёртый) ACK согласно RFC. <systemitem>A</systemitem> - получает 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 xml:id="ppp-shell-test-lockup"> - <para>Когда я выполняю команду shell для тестирования соединения, - ppp блокируется</para> - </question> - - <answer> - <para>При использовании <command>shell</command> или - <command>!</command> &man.ppp.8; запускает оболочку или - переданные параметры. Программа - <application>ppp</application> будет ждать окончания - выполнения команды, прежде чем продолжить. При любой - попытке воспользоваться связью PPP во время выполнения - команды связь будет выглядеть заблокированной. Это - происходит из-за того, что &man.ppp.8; ждёт завершения - команды.</para> - - <para>Для выполнения подобных команд используйте вместо этого - <command>!bg</command>. В этом случае нужная команда будет - выполняться в фоновом режиме, а &man.ppp.8; сможет продолжить обслуживание - канала связи.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="ppp-auto-noreasondial"> - <para>В режиме <option>-auto</option> ppp неожиданно начинает - звонить</para> - </question> - - <answer> - <para>Если &man.ppp.8; начинает неожиданно звонить, - определите причину и настройте фильтры дозвона для - предотвращения подобных звонков.</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 попытайтесь установить, что именно - пытается определить имя хоста. В большинстве случаев - виновным оказывается <application>Sendmail</application>. - Проверьте, чтобы в конфигурационном файле программы - <application>Sendmail</application> не было указано - обращаться к DNS. Обратитесь к разделу об <link - xlink:href="&url.books.handbook;/smtp-dialup.html">использовании - электронной почты при коммутируемом соединении</link> в - Руководстве &os; за подробным описанием. Вам может - понадобиться добавить в файл - <filename>.mc</filename> строку:</para> - - <programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting> - - <para>Это заставит <application>Sendmail</application> - добавлять все сообщения в очередь до тех пор, пока не - будет запущена её обработка, как правило, каждые 30 минут, - или пока не будет выполнена команда - <command>sendmail -q</command>, возможно, из файла - <filename>/etc/ppp/ppp.linkup</filename>).</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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, а противоположная сторона не хочет - устанавливать никакого сжатия. Эти сообщения безобидны, - но их можно заглушить отключением сжатия:</para> - - <programlisting>disable pred1</programlisting> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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, укажите &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; читать целиком содержимое ответа CONNECT.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="ppp-ignores-backslash"> - <para>Ppp игнорирует символ <literal>\</literal> - в chat-скрипте</para> - </question> - - <answer> - <para>Программа <application>ppp</application> разбирает - каждую строку в конфигурационных файлах и поэтому может - правильно интерпретировать строки вида - <literal>set phone "123 456 789"</literal> и обнаруживать, - что на самом деле номер является единственным аргументом. - Для того, чтобы указать символ <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 xml: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 адрес <systemitem class="ipaddress">255.255.255.255</systemitem> - до первого вызова &man.ioctl.2; <literal>SIOCAIFADDR</literal>, - приводящего к полной привязке сокета. &man.ppp.8; нужно будет - изменять исходящий IP-адрес и контрольную сумму пакета, только - если он установлен в <systemitem class="ipaddress">255.255.255.255</systemitem>. - Это, однако, является некоторым хаком, так как ядро будет - посылать некорректные пакеты на не полностью - сконфигурированный интерфейс, в предположении, что существует - механизм исправления этих пакетов.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="fcs-errors"> - <para>Что такое ошибки FCS?</para> - </question> - - <answer> - <para>FCS является сокращением от Frame Check Sequence - (контроль последовательности кадров). Каждый кадр PPP имеет - контрольную сумму для проверки того, что принятые данные совпадают - с переданными. Если FCS принятого пакета некорректна, пакет - отбрасывается и счётчик FCS для HDLC увеличивается. Значения - ошибок уровня HDLC можно вывести командой - <literal>show hdlc</literal>.</para> - - <para>Если линия плохого качества или драйвер - коммуникационного адаптера отбрасывает пакеты, будут - появляться случайные ошибки FCS. Это обычно не является - причиной для волнений, хотя это существенно замедляет - протоколы компрессии.</para> - - <para>Если связь замирает сразу при установлении соединения - и наблюдается большое количество ошибок FCS, убедитесь, - чтобы модем не использовал программное управление потоком - (XON/XOFF). Если же для соединения должно использоваться - программное управление потоком, то воспользуйтесь командой - <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> - <question xml:id="desperation"> - <para>Ничего не помогает — я уже отчаялся!</para> - </question> - - <answer> - <para>Если всё уже перепробовано, и ничего не получается, - пошлите подробности об ошибке, конфигурационные файлы, - способ запуска &man.ppp.8;, соответствующие части файла - протокола, и вывод команды <command>netstat -rn</command> - до и после соединения в &a.questions;.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="serial"> - <title>Коммуникационные адаптеры</title> - - <para>В этом разделе освещены вопросы о работе последовательных - адаптеров во &os;. Протокол PPP рассматривается в разделе - <link linkend="networking">Работа в сети</link>.</para> - - <qandaset> - <qandaentry> - <question xml:id="multiport-serial-support"> - <para>Какие многопортовые последовательные адаптеры поддерживаются во - &os;?</para> - </question> - - <answer> - <para>Список таких устройств находится в главе Руководства - <link xlink:href="&url.books.handbook;/serial.html">Последовательные - соединения</link>.</para> - - <para>Большинство многопортовых PCI адаптеров на базе 16550 и их - клоны поддерживаются без дополнительных усилий.</para> - - <para>Некоторые безымянные клоны таких адаптеров тоже работают - нормально, особенно те, которые заявляют о своей совместимости - с AST.</para> - - <para>Прочтите страницы Справочника &man.uart.4; и &man.sio.4; для получения - подробной информации о конфигурировании таких адаптеров.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="serial-console-prompt"> - <para>Как сделать, чтобы приглашение boot: выводилось на консоль на - последовательном порту?</para> - </question> - - <answer> - <para>Подробная информация находится в <link xlink:href="&url.books.handbook;/serialconsole-setup.html">этом - разделе Руководства</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="found-serial"> - <para>Как узнать, обнаружила ли &os; последовательные порты - или внутренние модемы?</para> - </question> - - <answer> - <para>В процессе своей загрузки ядро &os; будет пытаться - найти последовательные порты, с поддержкой которых ядро - сконфигурировано. Внимательно просмотрите сообщения - загрузки либо выполните такую команду после того, - как система запустилась и работает:</para> - - <screen>&prompt.user; <userinput>dmesg | grep -E "^sio[0-9]"</userinput> -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</screen> - - <para>Здесь присутствуют два последовательных порта. Первый - находится на IRQ4, порт ввода/вывода - <literal>0x3f8</literal>, и построен на микросхеме UART - типа 16550A. Второй использует тот же тип микросхемы, но - находится на IRQ3 и использует адрес порта ввода/вывода - <literal>0x2f8</literal>. Внутренние модемы выглядят - точно также, как последовательные порты, за исключением - того, что модем к ним подключен всегда.</para> - - <para>В ядро <filename>GENERIC</filename> встроена поддержка - двух последовательных портов, с теми же IRQ и адресами - портов ввода/вывода, как указано в примере выше. Если эти - настройки не соответствуют системе или имеется больше - внутренних модемов или последовательных портов, чем - описано в ядре, переконфигурируйте его, следуя инструкциям - в разделе <link linkend="make-kernel">о построении - ядра</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="access-serial-ports"> - <para>Как осуществляется доступ к последовательным портам во - &os;?</para> - </question> - - <answer> - <para>Третий последовательный порт, <filename>sio2</filename> - или <filename>COM3</filename>, обозначается как - <filename>/dev/cuad2</filename> для устройств, выполняющих - исходящие звонки, и <filename>/dev/ttyd2</filename> для - устройств, принимающих входящие звонки. Какая разница - между этими двумя классами устройств?</para> - - <para>При открытии <filename>/dev/ttydX</filename> в - блокирующем режиме процесс будет ожидать неактивности - соответствующего устройства <filename>cuadX</filename>, а - затем появления сигнала о наличии несущей. При открытии - устройства <filename>cuadX</filename> он проверяет, что - последовательный порт не занят устройством - <filename>ttydX</filename>. Если порт доступен, он - похищает его у устройства <filename>ttydX</filename>. - Также устройство <filename>cuadX</filename> не следит за - наличием несущей. С такой схемой работы и модемом - в режиме автоответа удалённые пользователи могут входить - в систему, а локальные пользователи через тот же модем - могут по прежнему осуществлять исходящие звонки, а система - позаботится о возможных конфликтах.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml:id="default-serial-params"> - <para>Можно ли настроить для порта режим работы по умолчанию?</para> - </question> - - <answer> - <para>Смотрите раздел Руководства &os;, посвящённый <link - xlink:href="&url.books.handbook;/serial.html#serial-hw-config">последовательным - соединениям</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="enable-dialup"> - <para>Как сделать вход через модем?</para> - </question> - - <answer> - <para>Ознакомьтесь с разделом Руководства &os;, посвящённым - <link - xlink:href="&url.books.handbook;/dialup.html">входящим - соединениям</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="dumb-terminal"> - <para>Как подключить терминал к &os;?</para> - </question> - - <answer> - <para>Информация по этому вопросу находится в разделе <link - xlink:href="&url.books.handbook;/term.html">Терминалы</link> - Руководства &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="cannot-tip"> - <para>Почему не удаётся запустить <command>tip</command> или - <command>cu</command>?</para> - </question> - - <answer> - <para>Встроенные утилиты &man.tip.1; и &man.cu.1; могут - получить доступ к каталогу - <filename>/var/spool/lock</filename> - только из-под пользователя - <systemitem class="username">uucp</systemitem> и членов - группы <systemitem class="groupname">dialer</systemitem>. - Используйте группу <systemitem - class="groupname">dialer</systemitem> для управления - доступом к модему или удалённым системам посредством - добавления в неё пользовательских учётных записей.</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> - </qandaset> - </chapter> - - <chapter xml:id="misc"> - <title>Разное</title> - - <qandaset> - <qandaentry> - <question xml:id="more-swap"> - <para>Почему &os; использует много места в разделе подкачки - даже при большом объёме свободной памяти?</para> - </question> - - <answer> - <para>&os; активно перемещает неиспользуемые страницы - памяти, к которым не было обращений, в раздел подкачки, - чтобы увеличить объём доступной физической памяти для - активного использования. Такое активное использование - раздела подкачки компенсируется использованием дополнительной - свободной оперативной памяти для кеширования.</para> - - <para>Заметьте, что хотя &os; предпочитает использовать - раздел подкачки, страницы не перемещаются произвольно - при полностью неактивной системе. По этой причине - система не будет находиться целиком в разделе подкачки - после ночного простаивания.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml: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>/</filename>). Например, если - <filename>foo</filename> является символической ссылкой - на каталог <filename>bar</filename>, то чтобы изменить - права на <filename>foo</filename> (на самом деле на - <filename>bar</filename>), выполните такую команду:</para> - - <screen>&prompt.user; <userinput>chmod 555 foo/</userinput></screen> - - <para>Если задан ведущий слэш, то &man.chmod.1; будет - следовать символической ссылке <filename>foo</filename>, - меняя права на каталог <filename>bar</filename>.</para> - </warning> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="dos-binaries"> - <para>Можно ли запускать программы для DOS во &os;?</para> - </question> - - <answer> - <para>Да. Программа эмуляции DOS - <package>emulators/doscmd</package> включена в - Коллекцию Портов &os;.</para> - - <para>Если <application>doscmd</application> не достаточно, - <package>emulators/pcemu</package> эмулирует 8088 и набор - сервисов BIOS, достаточный для запуска многих приложений - текстового режима DOS. Требуется X Window System.</para> - - <para>В Коллекции Портов &os; также имеется - <package>emulators/dosbox</package>. Программа в основном - предназначена для эмуляции старых игр, написанных под DOS, - для хранения файлов которых используется - локальная файловая система.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="translation"> - <para>Что мне нужно сделать, чтобы перевести документацию &os; на - родной язык?</para> - </question> - - <answer> - <para>Ознакомьтесь с <link - xlink:href="&url.books.fdp-primer;/translations.html"><acronym>FAQ</acronym> - по Переводам</link> из &os; Documentation Project - Primer.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="freebsd-mail-bounces"> - <para>Почему возвращается моя электронная почта, отправленная на - любой из адресов <systemitem class="fqdomainname">FreeBSD.org</systemitem>?</para> - </question> - - <answer> - <para>В почтовой системе <systemitem class="fqdomainname">FreeBSD.org</systemitem> - в <application>Postfix</application> применяются некоторые - проверки входящей почты, и отвергаются сообщения, - которые были неправильно сформированы при пересылке либо - как-то иначе похожи на спам. - Некоторые из требований:</para> - - <itemizedlist> - <listitem> - <para>IP-адрес клиента SMTP должен иметь обратное - преобразование в символическое имя.</para> - </listitem> - - <listitem> - <para>Полное имя хоста, указанное на этапе EHLO/HELO - в процессе обмена сообщениями SMTP, должно разрешаться - в IP-адрес клиента.</para> - </listitem> - </itemizedlist> - - <para>Дополнительные советы по доставке письма:</para> - - <itemizedlist> - <listitem> - <para>Письмо должно быть отправлено в текстовом формате. - Сообщение в почтовый список рассылки, как правило, не - должно иметь размер больше 200 Кбайт.</para> - </listitem> - - <listitem> - <para>Избегайте избыточного кросспостинга. Выберите - <emphasis>один</emphasis> список рассылки, который - кажется наиболее подходящим.</para> - </listitem> - </itemizedlist> - - <para>Если у вас всё ещё остались трудности при работе - с почтовой инфраструктурой - <systemitem class="fqdomainname">FreeBSD.org</systemitem>, - отправьте сообщение с подробным описанием на адрес - <email>postmaster@freebsd.org</email>. Укажите в нём - временной интервал для проверки логов — - и обратите внимание, что мы держим журнал почтовых логов - всего за неделю. - (Обязательно укажите часовой пояс или разницу в UTC.)</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="free-account"> - <para>Где можно получить бесплатный доступ к &os;?</para> - </question> - - <answer> - <para>Хотя &os; не предоставляет бесплатный доступ ни к одному из - своих серверов, другие компании предоставляют &unix;-системы с - открытым доступом. Стоимость этой услуги различна, также как и - ограниченный набор услуг.</para> - - <para><link xlink:href="http://www.arbornet.org/">Arbornet, Inc</link>, - также известный как <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> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="daemon-name"> - <para>Как зовут этого маленького симпатичного красного парня?</para> - </question> - - <answer> - <para>У него нет определённого имени, он называется просто - <quote>даемон BSD</quote>. Если вам непременно нужно имя, - называйте его <quote>beastie</quote>. Заметьте, что - <quote>beastie</quote> произносится как <quote>BSD</quote>.</para> - - <para>Больше о даемоне BSD можно узнать из его <link - xlink:href="http://www.mckusick.com/beastie/index.html">домашней - страницы</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="use-beastie"> - <para>Могу ли я использовать изображение даемона BSD?</para> - </question> - - <answer> - <para>Вполне. Права на даемона BSD имеет Marshall Kirk - McKusick. Для выяснения подробностей относительно правил - его использования обратитесь к странице автора <link - xlink:href="http://www.mckusick.com/beastie/mainpage/copyright.html">Statement - on the Use of the BSD Daemon Figure</link>.</para> - - <para>В общем, использовать изображение можно в - высокохудожественном стиле и в личных целях, если даются - соответствующие отсылки. Перед использованием знака в - коммерческих целях обратитесь за разрешением к - &a.mckusick.email;. Дополнительная информация находится - на <link - xlink:href="http://www.mckusick.com/beastie/index.html">домашней - странице Даемона BSD</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="daemon-images"> - <para>Не найдется ли у вас изображений даемона BSD, которые можно - использовать?</para> - </question> - - <answer> - <para>В каталоге <filename>/usr/share/examples/BSD_daemon/</filename> - есть рисунки в форматах eps и Xfig.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="glossary"> - <para>При просмотре списков рассылки, я встретил акроним или - другой термин, который мне не понятен. Где я должен посмотреть, - что он значит?</para> - </question> - - <answer> - <para>Пожалуйста, обращайтесь к <link - xlink:href="&url.books.handbook;/freebsd-glossary.html">Глоссарию - &os;</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="bikeshed-painting"> - <para>Почему я должен беспокоиться о цвете велосипедных навесов - (bikeshed)?</para> - </question> - - <answer> - <para>На самом деле, очень краткий ответ на этот вопрос заключается в том, - что вы этого делать не должны. Если давать более подробный ответ, то ваше - умение делать навесы не должно означать, что вы должны препятствовать - другим делать их просто потому, что вам не нравится цвет, в который - они собираются их окрашивать. Эта метафора означает, что вам не нужно - обсуждать каждую мелочь просто потому, что вы знаете о ней - достаточно много. Некоторые люди отмечают, что объём шума, генерируемый - при появлении некоторого изменения, находится в обратной зависимости от - сложности самого изменения.</para> - - <para>Более пространный и полный ответ заключается в том, что после очень - долгого обсуждения того, должна ли утилита &man.sleep.1; обрабатывать - дробное число, заданное в качестве второго аргумента, &a.phk.email; - опубликовал большое сообщение, озаглавленное <quote><link xlink:href="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers"> - Велосипедный навес (подставьте здесь цвет) на зелёной траве...</link></quote>. - Соответствующие части этого сообщения цитируются ниже.</para> - - <blockquote> - <attribution>&a.phk.email; 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 xml:id="funnies"> - <title>Юмор от &os;</title> - - <qandaset> - <qandaentry> - <question xml: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; использует инструкцию - <acronym>HLT</acronym> (halt), когда система простаивает, что - уменьшает потребление энергии и, в свою очередь, выделение тепла. - Вдобавок, если у вас настроен - <acronym>ACPI</acronym> (усовершенствованный интерфейс - управления конфигурацией и питанием), то &os; может переводить - процессор в режим пониженного энергопотребления.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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 xml: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>Тридцать один человек ответит, что у них всё работает и - наверное, те обновились в неподходящее время;</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.email; добавил:</emphasis></para> - - <para><emphasis>Я сильно смеялся над всем этим.</emphasis></para> - - <para><emphasis>И тогда я подумал, <quote>Постойте-ка, найдётся ли - кто-нибудь, чтобы задокументировать это?</quote></emphasis></para> - - <para><emphasis>И на меня снизошло озарение :-)</emphasis></para> - - <para><emphasis>&a.tabthorpe.email;</emphasis> говорит: <quote>Нет, - <emphasis>настоящие</emphasis> хакеры &os; не боятся - темноты!</quote></para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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>/</filename> или - разозлить вашего провайдера, так как большинство данных - преобразуется в тепло на его оборудовании, но, как правило, - у него хорошее охлаждение, так что если вы не перестараетесь, - все должно быть в порядке.</para> - - <para><emphasis>Пол Робинсон (Paul Robinson) - добавляет:</emphasis></para> - - <para>Есть и другие методы. Как знает каждый хороший системный - администратор, частью хорошей практики является посылка данных на - экран интересным образом, чтобы феи, которые образуют картинку, - были счастливы. Экранные феи (часто неправильно называемые - <quote>пикселами</quote>) различаются по цвету головных уборов, - которые они носят - (красные, зеленые или синие), и прячутся или появляются (показывая, - таким образом, цвет своих шляп), когда получают немного пищи. - Видеоадаптеры преобразуют данные в еду для фей, а затем посылают - ее феям — чем дороже адаптер, тем лучше еда, тем лучше - ведут себя феи. Они также нуждаются в постоянной стимуляции - — вот зачем нужны хранители экранов.</para> - - <para>Продолжив наше предположение, вы можете просто выдавать - случайные данные на консоль, таким образом позволяя феям их - потреблять. Это вовсе приводит к прекращению выделения тепла, - феи постоянно счастливы, а данные быстро исчезают, даже если - на вашем экране все выглядит несколько хаотично.</para> - - <para>Как бывший администратор крупного провайдера, который имел - много проблем при попытке поддерживать постоянную температуру в - серверной комнате, я выступаю против того, чтобы люди посылали - ненужные им данные в сеть. Волшебников, которые выполняют - коммутацию пакетов и маршрутизацию, это также затрудняет.</para> - </answer> - </qandaentry> - </qandaset> - </chapter> - - <chapter xml:id="advanced"> - <title>Сложные темы</title> - - <qandaset> - <qandaentry> - <question xml:id="learn-advanced"> - <para>Как можно узнать больше о внутреннем устройстве &os;?</para> - </question> - - <answer> - <para>Список относящихся к делу книг можно найти в разделе - Руководства <link xlink:href="&url.books.handbook;/bibliography-osinternals.html"> - Библиография по внутреннему устройству операционной - системы</link>.</para> - - <para>Кроме того, большинство общих знаний о &unix; непосредственно - применимо к &os;.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="how-to-contribute"> - <para>Как можно оказать помощь проекту &os;?</para> - </question> - - <answer> - <para>Пожалуйста, обратитесь к соответствующей <link xlink:href="&url.articles.contributing;/article.html">статье</link>, - в которой вы получите советы относительно того, как это сделать. - Ваша помощь более чем приветствуется!</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="define-snap-release"> - <para>Что такое снапшоты и релизы?</para> - </question> - - <answer> - <para>В <link - xlink:href="http://svnweb.FreeBSD.org/base/">Хранилище - Subversion</link> сейчас находятся &rel.numbranch; - активно/полуактивно развивающихся ветки &os;. (Более - ранние ветки изменяются очень редко, именно поэтому в - разработке только &rel.numbranch; активные ветки):</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> - это не настоящий тэг ветки. - Это символьная константа для обозначения текущего, - не ветвящегося, находящегося в разработке дерева, то есть - <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 xml:id="ctm"> - <para>Можно ли работать с <emphasis>-CURRENT</emphasis> при - ограниченном доступе в Internet?</para> - </question> - - <answer> - <para>Да, это можно делать <emphasis>без</emphasis> скачивания - полного дерева исходных текстов с помощью <link xlink:href="&url.books.handbook;/synching.html#ctx">системы - CTM</link>.</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml:id="submitting-kernel-extensions"> - <para>Я написал некоторое добавление к ядру, кому его послать?</para> - </question> - - <answer> - <para>Обратитесь к статье о том, как <link xlink:href="&url.articles.contributing;/article.html">помочь проекту - &os;</link>, чтобы выяснить, как это сделать.</para> - - <para>И спасибо Вам за Ваши усилия!</para> - </answer> - </qandaentry> - - <qandaentry> - <question xml: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> из - одного из снэпшотов, то кто-то ещё может отследить - функцию, вызвавшую ошибку, но в случае со специально - сконфигурированным ядром только вы можете сказать нам, - где случилась ошибка.</para> - - <para>Чтобы продолжить:</para> - - <procedure> - <step> - <para>Запишите значение указателя инструкций. Заметьте, - что часть <literal>0x8:</literal> в этом случае не - важна: нам нужна часть <literal>0xf0xxxxxx</literal>.</para> - </step> - - <step> - <para>Когда система перезагрузится, сделайте следующее:</para> - - <screen>&prompt.user; <userinput>nm -n kernel.that.caused.the.panic | grep f0xxxxxx</userinput></screen> - - <para>где <literal>f0xxxxxx</literal> — это значение - указателя инструкций. Однако неприятность заключается в - том, что вы не получите точного соответствия, так как в - таблице имен ядра для точек входа в функции даны адреса - на начало функций, а указатель инструкций будет указывать - куда-то внутрь её тела. Если вы не получили точного - соответствия, опустите последнюю цифру в значении - указателя инструкций и попробуйте снова:</para> - - <screen>&prompt.user; <userinput>nm -n kernel.that.caused.the.panic | grep f0xxxxx</userinput></screen> - - <para>Если и это не привело ни к каким результатам, отрежьте - следующую цифру. Повторяйте, пока не получите хоть что-то. - Результатом будет список функций, которые, возможно, - привели к аварийному останову. Этот механизм обнаружения - ошибочного места довольно неточен, но это всё же лучше, - чем ничего.</para> - </step> - </procedure> - - <para>Тем не менее, лучшим способом выяснить причину, вызвавшую - аварийный останов, является получение аварийного дампа системы, - а затем использование &man.kgdb.1; для получения трассировки - вызовов в этом дампе.</para> - - <para>В любом случае, метод таков:</para> - - <procedure> - <step> - <para>Убедитесь в том, что в файле конфигурации ядра имеется - следующая строка:</para> - - <programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting> - </step> - - <step> - <para>Перейдите в каталог <filename>/usr/src</filename>:</para> - - <screen>&prompt.root; <userinput>cd /usr/src</userinput></screen> - </step> - - <step> - <para>Скомпилируйте ядро:</para> - - <screen>&prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen> - </step> - - <step> - <para>Дождитесь завершения компиляции.</para> - </step> - - <step> - <screen>&prompt.root; <userinput>make installkernel KERNCONF=MYKERNEL</userinput></screen> - </step> - - <step> - <para>Выполните перезагрузку.</para> - </step> - </procedure> - - <note> - <para>Если не указать <varname>KERNCONF</varname>, то - будет собрано и - установлено ядро <filename>GENERIC</filename>.</para> - </note> - - <para>В процессе выполнения команды &man.make.1; будут - построены два ядра, - <filename>/usr/obj/usr/src/sys/MYKERNEL/kernel</filename> - и - <filename>/usr/obj/usr/src/sys/MYKERNEL/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.savecore.8; если значение переменной - <literal>dumpdev</literal> было установлено в - <filename>/etc/rc.conf</filename>, скрипты &man.rc.8; запустят - &man.savecore.8; автоматически и поместят аварийный дамп в - каталог <filename>/var/crash</filename>.</para> - - <note> - <para>Аварийные дампы &os; обычно имеют размер, равный - объёму оперативной памяти. Поэтому убедитесь в наличии - достаточного места для хранения дампа в каталоге - <filename>/var/crash</filename>. Либо запустите вручную - &man.savecore.8;, чтобы создать аварийный дамп в другом - каталоге, где достаточно места. Размер аварийного дампа - можно уменьшить, указав в конфигурации ядра - <literal>options MAXMEM=N</literal>, где - <replaceable>N</replaceable> — значение в Кбайт - для объёма памяти, которое будет использоваться ядром. - Например, для 1 Гбайт ОЗУ установите ограничение на - использование памяти ядром в 128 Мбайт, так чтобы - размер аварийного дампа был равен 128 Мбайт, а не - 1 Гбайт.</para> - </note> - - <para>Как только аварийный дамп получен, трассировку вызовов - можно получить таким образом:</para> - - <screen>&prompt.user; <userinput>kgdb /usr/obj/usr/src/sys/MYKERNEL/kernel.debug /var/crash/vmcore.0</userinput> -<prompt>(kgdb)</prompt> <userinput>backtrace</userinput></screen> - - <para>Заметьте, что это может дать несколько экранов - полезной информации. Лучше всего использовать - &man.script.1; для перехвата всего вывода. При - использовании необработанного файла ядра со всей - отладочной информацией может быть найдена конкретная - строка исходного текста ядра, при достижении которой - случилась аварийная остановка. Для выяснения - последовательности событий, приведших к аварийному - останову, трассировка стека обычно читается снизу вверх. - Также можно использовать &man.kgdb.1; для вывода значений - различных переменных или структур, чтобы выяснить - состояние системы во время аварии.</para> - - <tip> - <para>Если есть второй компьютер, то можно настроить - &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 xml: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 xml:id="change-kernel-address-space"> - <para>Как я могу увеличить или уменьшить адресное пространство - ядра в архитектуре i386?</para> - </question> - - <answer> - <para>По умолчанию размер адресного пространства ядра для - i386 равен 1 Гбайт (2 Гбайт для PAE). Для - работы сервера с интенсивной сетевой нагрузкой или при - использовании 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 xml:id="acknowledgments"> - <title>Наши благодарности</title> - - <para>Этот небольшой скромный документ с ответами на часто задаваемые - вопросы создавался, переписывался, редактировался, сокращался, - растягивался, уродовался, потрошился, пристально разглядывался, - полностью перетряхивался, обдумывался, отвергался, перестраивался, - критиковался и снова укреплялся в течение последнего десятилетия силами - сотен, если не тысяч, людей. Постоянно.</para> - - <para>Мы хотим поблагодарить всех их и приглашаем вас <link xlink:href="&url.articles.contributing;/article.html">присоединиться</link>, - чтобы сделать этот <acronym>FAQ</acronym> ещё лучше.</para> - </chapter> - - &bibliography; -</book> |