diff --git a/ru_RU.KOI8-R/books/faq/Makefile b/ru_RU.KOI8-R/books/faq/Makefile
index 70560a00bf..7b783be2f0 100644
--- a/ru_RU.KOI8-R/books/faq/Makefile
+++ b/ru_RU.KOI8-R/books/faq/Makefile
@@ -1,30 +1,30 @@
#
# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/Makefile,v 1.3 2000/10/17 16:55:05 phantom Exp $
+# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/faq/Makefile,v 1.4 2000/11/15 17:21:30 phantom Exp $
#
# Build the Russian FreeBSD FAQ
#
MAINTAINER=andy@FreeBSD.org phantom@FreeBSD.org
DOC?= book
FORMATS?= html-split html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
SRCS = book.sgml
# entities
SRCS+= ../../../en_US.ISO_8859-1/books/handbook/authors.ent
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/books/faq/book.sgml b/ru_RU.KOI8-R/books/faq/book.sgml
index a0dfc57460..61114ed629 100644
--- a/ru_RU.KOI8-R/books/faq/book.sgml
+++ b/ru_RU.KOI8-R/books/faq/book.sgml
@@ -1,11976 +1,12013 @@
%man;
%authors;
]>
Часто Задаваемые Вопросы по FreeBSD 2.X, 3.X и 4.XThe FreeBSD Russian Documentation Project$FreeBSD$Этот документ является так называемым FAQ (Frequently Asked
Questions), то есть списком Часто Задаваемых Вопросов по FreeBSD версий
2.X, 3.X и 4.X. Если не оговорено обратное, предполагается, что все
замечания справедливы для версий FreeBSD 2.0.5 и выше. Пункты с
пометкой <XXX> находятся в стадии разработки. Если вы хотите
помочь в составлении этого документа, пошлите письмо в список рассылки
проекта по адресу freebsd-doc@FreeBSD.org.
Последняя редакция этого документа всегда доступна с WWW-сервера FreeBSD. Его также
можно получить в виде одного большого HTML-файла по HTTP или в виде обычного текстового
файла, файла формата postscript, PDF или другого формата с FTP-сервера.
Вы также можете осуществить
поиск в
FAQ.ПредисловиеДобро пожаловать в FAQ по FreeBSD 2.X-4.X!Как и обычный FAQ конференций Usenet, этот документ содержит
большинство из часто задаваемых вопросов, касающихся операционной системы
FreeBSD (и, конечно же, ответы на них). Первоначально предназначенный для
уменьшения потока сообщений и избежания повторения одних и тех же вопросов,
постепенно FAQ превратился в ценный источник информации.Мы прилагаем все усилия, чтобы сделать этот FAQ максимально
информативным; если у вас есть идеи по его усовершенствованию, пожалуйста,
напишите составителям по адресу &a.faq;.FreeBSD - что это такое?В двух словах, FreeBSD - это UN*X-подобная операционная система для
платформ i386 и Alpha/AXP, разработанная на основе операционной системы
4.4BSD-Lite с некоторыми усовершенствованиями, взятыми из 4.4BSD-Lite2
Калифорнийского Университета (Беркли). Также она косвенно
базируется на 386BSD (BSD Net/2, перенесённой на платформу i386 Вильямом
Джолитцем (William Jolitz)), хотя от того первоначального кода осталось
очень мало. Более подробные объяснения того, что представляет из себя
FreeBSD и для чего она может вам пригодиться, можно найти на домашней странице FreeBSD.FreeBSD используется компаниями, Интернет-провайдерами, научными
работниками, профессионалами в вычислительной технике, студентами и
рядовыми пользователями по всему миру для работы, образования и отдыха. Вы
можете увидеть некоторых из них в нашей галерее.Для более детального ознакомления с FreeBSD, пожалуйста, обратитесь к
Руководству по
FreeBSD.Каковы цели FreeBSD?Цели, преследуемые проектом FreeBSD - это предоставление программного
обеспечения, которое может быть использовано в любых целях без всяческих
ограничений. Многие из нас вкладывают значительные усилия в её разработку
(и проектирование) и определённо были бы не против получения финансовой
поддержки, но мы не собираемся её требовать. Мы надеемся, что наша основная
и самая значительная миссия - предоставить код всем
желающим, для любых целей, так чтобы он нашел самое широкое применение и
принес наибольшую пользу. Это, на наш взгляд, одна из самых
фундаментальных целей Free Software, которую мы с энтузиазмом
поддерживаем.Исходный код, подпадающий под действие GNU General
Public License (GPL) или GNU Library General Public License (LGPL),
имеет несколько больше ограничений, хотя и представляет собой
навязывание доступа к исходным текстам, а не наоборот, как обычно. Из-за
дополнительных сложностей, которые могут возникнуть в случае
коммерческого использования программного обеспечения GPL, мы стараемся,
где только это возможно, заменить подобное программное обеспечение
аналогичным, но подпадающим под более свободную лицензию BSD.Почему система называется именно FreeBSD?Она может использоваться безо всяческих выплат, даже
для извлечения выгоды.Все исходные тексты операционной системы свободно доступны,
на её использование в других разработках (как коммерческих, так и
некоммерческих) и дальнейшее распространение наложены минимальные
ограничения.Любой, у кого есть усовершенствования и/или исправления,
может предоставить свой код и он будет (правда, с парой
оговорок) добавлен в исходные тексты системы.Для тех наших читателей, для которых английский не является родным
языком, можно добавить, что слово free используется здесь в
двух смыслах, один означает бесплатно, а другой вы
можете делать всё, что хотите. За исключением пары вещей, которые
вы не можете делать с FreeBSD, например, претендовать
на то, что являетесь её разработчиком, на самом деле можно делать с ней
всё, что вам заблагорассудится.Какова последняя версия FreeBSD?Версия
4.1.1, выпущенная в сентябре 2000 года, является самой последней
версией ветки STABLE. Она также является самым
последним РЕЛИЗОМ.Если говорить кратко, то ветка -STABLE
предназначена поставщикам услуг Internet или другим корпоративным
пользователям, которым в первую очередь нужна надёжность и не слишком
большое количество отличий от последнего релиза по сравнению с
возможностями последнего снэпшота -CURRENT. Релизы
можно делать из любой ветки, но -CURRENT вы должны
использовать только в случае, если уверены, что готовы к постоянным (по
сравнению со -STABLE) изменениям в работе
системы.Релизы делаются только раз в несколько
месяцев. Хотя многие стараются отслеживать актуальное состояние
исходных текстов FreeBSD (обратите внимание на вопросы о FreeBSD-CURRENT и FreeBSD-STABLE), делать это не обязательно, так как
исходные тексты постоянно меняются.Что такое FreeBSD-CURRENT?FreeBSD-CURRENT -
это версия операционной системы, находящаяся в стадии разработки до момента
выпуска 5.0-RELEASE. Таким образом, она представляет реальный интерес только
для разработчиков системы и её фанатов. Обратитесь к соответствующему
разделуРуководства
для прояснения деталей работы с -CURRENT.Если вы не специалист по операционным системам или не в состоянии
отличить реальную проблему от временных явлений, вы не должны использовать
FreeBSD-CURRENT. Эта ветвь зачастую меняется очень быстро и вполне может
быть просто не работоспособна некоторое время. Те, кто используют
FreeBSD-CURRENT, должны быть в состоянии анализировать любые проблемы и
сообщать о них, если это действительно ошибки, а не глюки.
Сообщения типа make world produces some error about groups
в списке рассылки -CURRENT иногда воспринимаются пренебрежительно.Ежедневно из веток -CURRENT и -STABLE делаются снэпшоты.
В настоящее время имеются в наличии дистрибутивы некоторых снэпшотов. Их
предназначение:Тестирование самой последней версии инсталлятора.Дать людям, которые хотят работать с -CURRENT или -STABLE, но не
имеют времени и/или возможности (пропускной способности) для
отслеживания ежедневных измененений, простой способ её
установки.Фиксация точки для последующих ссылок в случае,
если позже мы что-нибудь очень сильно сломаем. (Хотя CVS, как
правило, не позволяет случиться ничему такому ужасному :)Любые новые возможности, которым требуется тестирование,
должны иметь как можно больше потенциальных тестеров.Не утверждается, что всякий снэпшот -CURRENT имеет качество
готового продукта. Если вам нужна стабильно работающая и
полностью оттестированная система, то необходимо дождаться выхода полного
релиза или воспользоваться снэпшотами -STABLE.Снэпшоты доступны непосредственно с
ftp://current.FreeBSD.org/pub/FreeBSD/
для 5.0-CURRENT и
releng4.FreeBSD.org для снэпшотов 4-STABLE. На момент написания
этого документа (май 2000) снэпшоты 3-STABLE больше не выпускаются.Снэпшоты, как правило, генерируются ежедневно для всех активно
разрабатываемых веток.В чём смысл FreeBSD-STABLE?После того, как была выпущена FreeBSD 2.0.5, мы решили разделить
разработку FreeBSD на две части. Одна ветка, названная -STABLE, предназначена для внесения
только хорошо оттестированных исправлений и маленьких последовательных
усовершенствований (для провайдеров услуг Интернет и других коммерческих
пользователей, для которых неожиданные изменения или экспериментальные
возможности весьма нежелательны). Другой ветвью является -CURRENT, и она по
существу является прямой линией, ведущей к 5.0-RELEASE (и последующим) с тех
пор, как была выпущена 2.0. Если вам поможет картинка, то вот как это
выглядит:
2.0
|
|
| [2.1-STABLE]
*ВЕТВЬ* 2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [конец 2.1-STABLE]
| (Мар 1997)
|
|
| [2.2-STABLE]
*ВЕТВЬ* 2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [конец]
| (Мар 1997) (Окт 97) (Апр 98) (Июл 98) (Дек 98)
|
|
3.0-SNAPs (начало в I квартале 1997)
|
|
3.0-RELEASE (Окт 1998)
|
| [3.0-STABLE]
*ВЕТВЬ* 3.1-RELEASE (Фев 1999) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1
| (Май 1999) (Сен 1999) (Дек 1999) (Июнь 2000) (Июль 2000)
|
| [4.0-STABLE]
*ВЕТВЬ* 4.0 (Март 2000) -> 4.1 -> 4.1.1 -> ... будущие релизы 4.x ...
|
| (Июль 2000) (Сентябрь 2000)
\|/
+
[продолжение 5.0-CURRENT]
Ветвь -CURRENT постепенно переходит в 5.0 и выше, тогда как предыдущая
ветвь, 2.2-STABLE, была вытеснена релизом 2.2.8. Её заменила ветвь
3-STABLE, финальный релиз которой, 3.5.1-RELEASE, вышел в июле 2000 года.
В мае 2000 года (хотя релиз 3.5 вышел после этой даты) ветвь 3-STABLE была
более или менее полностью вытеснена ветвью 4-STABLE. В сентябре 2000 года
была выпущена 4.1.1-RELEASE. Активно разрабатываемой веткой -STABLE
является 4-STABLE, хотя исправления ошибок (в основном касающиеся вопросов
безопасности) всё ещё вносятся и в 3-STABLE. Предполагается, что ветвь 3.X
будет официально признана устаревшей летом 2000 года. Текущей
веткой сейчас является 5.0-CURRENT, хотя выход её релиза ещё не
запланирован.В какой момент выпускаются новые версии FreeBSD?Как правило, основная группа разработчиков выпускает новую версию,
только когда они уверены, что добавленных новых возможностей и/или
внесённых исправлений уже достаточно и новый релиз не потеряет
стабильности. Многие пользователи оценивают эту осторожность как одну из
лучших сторон FreeBSD, хотя она несколько разочаровывает, если вам не
терпится попробовать новые возможности..В среднем новые версии выпускаются примерно раз в четыре месяца.Для тех, кому не терпится, ежедневно выпускаются бинарные релизы..
смотрите выше.FreeBSD разрабатывается только для персональных компьютеров?Начиная с версии 3.x, FreeBSD работает как на архитектуре x86, так и на
платформе
DEC Alpha. Некоторый интерес был проявлен к переносу на
SPARC, однако подробности этого проекта ещё не ясны.Если ваш компьютер имеет другую архитектуру и вам нужно что-то прямо
сейчас, советуем попробовать
NetBSD или
OpenBSD.Кто разрабатывает FreeBSD?Решения, которые касаются ключевых моментов в проекте FreeBSD,
такие, как общее направление развития проекта или кто
может добавлять код к дереву исходных текстов, принимаются
основной командой
разработчиков (core team), состоящей из 9 человек. Также существует
гораздо большая группа из более чем 200
коммиттеров
(committers), которые могут делать изменения прямо в дереве исходных
текстов FreeBSD.Однако, большинство нетривиальных изменений широко обсуждается
в списках рассылки, и не существует
никаких ограничений на участие в подобных дискуссиях.Где можно найти FreeBSD?Все основные релизы FreeBSD доступны по ftp с FTP-сервера
FreeBSD:Текущий релиз 3.X-STABLE, 3.5.1-RELEASE, находится в
каталоге с 3.5.1-RELEASE.Текущий релиз ветки 4-STABLE, 4.1.1-RELEASE, находится в
каталоге с 4.1.1-RELEASE.Снэпшоты
4.X обычно делаются ежедневно.Выпуски 5.0 Snapshot,
которые делаются ежедневно из ветви -CURRENT, предназначены для тестеров и
разработчиков.FreeBSD также доступна через компанию CDROM, по такому адресу:
BSDi
4041 Pike Lane, Suite F Concord, CA94520USAЗаказы: +1 800 786-9907Вопросы: +1 925 674-0783FAX: +1 925 674-0821email: Адрес для заказов в BSDiWWW: Web-страница компании BSDiВ Австралии вы сможете найти её по адресу:
Advanced Multimedia Distributors
Factory 1/1 Ovata DriveTullamarine, MelbourneVictoriaAustraliaVoice: +61 3 9338 6777CDROM Support BBS17 Irvine StPeppermint GroveWA6011Voice: +61 9 385-3793Fax: +61 9 385-2360И в Великобритании:
The Public Domain & Shareware Library
Winscombe House, Beacon RdCrowboroughSussex. TN6 1ULVoice: +44 1892 663-298Fax: +44 1892 667-473Где найти информацию по спискам рассылки FreeBSD?Исчерпывающая информация содержится в разделе
Руководства, который посвящен спискам рассылки.Где можно найти информацию о проблеме 2000 года во FreeBSD?Полная информация находится на странице Готовности к 2000
году.Какие существуют телеконференции по FreeBSD?Полная информация о группах новостей есть в разделе Руководства,
касающемся телеконференций.Существуют ли каналы IRC (Internet Relay Chat) по FreeBSD?Да, большинство сетей IRC имеют канал FreeBSD:Канал #FreeBSD в сети EFNet
посвящён FreeBSD, но не обращайтесь туда за технической поддержкой и
даже не пытайтесь найти человека, который поможет вам обойтись без
чтения страниц Справочника или собственных изысканий. Этот канал
предназначен в первую и основную очередь для общения, и в круг
обсуждаемых тем входит секс, спорт, ядерное оружие, как будто это и
есть FreeBSD. В общем, вас предупредили! Канал доступен на сервере
irc.chat.org.Канал #FreeBSDhelp в сети EFNet предназначен
для помощи пользователям FreeBSD. Здесь гораздо более благосклонно
относятся к вопросам, чем на
канале #FreeBSD.Канал #FreeBSD в сети DALNET
доступен на сервере irc.dal.net в США и на
irc.eu.dal.net в Европе.Канал #FreeBSD в сети UNDERNET
доступен на серверах us.undernet.org в США и
eu.undernet.org в Европе. Так как это канал
взаимопомощи, приготовьтесь к чтению документации, к которой вас
отошлют.Канал #FreeBSD в сети HybNet доступен на сервере
irc.FreeBSD.org. Этот канал
на самом деле является каналом
взаимопомощи.Все эти каналы разные и не имеют отношения друг к другу. Их стили
общения также отличаются, так что вам, может быть, придётся попробовать
все, чтобы найти тот, который соответствует вашему стилю. Как и обычно с
*любым* каналом IRC, если вы легко раздражаетесь или не можете иметь дела
с большим количеством лиц школьного (и младшего школьного) возраста,
пытающихся озвучить свои попытки самоутверждения, не обращайте на это
внимания.Книги по FreeBSDВы можете обратиться в FreeBSD Documentation Project (а ещё лучше к
нему присоединиться) через список рассылки
freebsd-doc: freebsd-doc@FreeBSD.org.
Этот список рассылки предназначен для обсуждения документации
FreeBSD. Для вопросов по системе предназначен список рассылки
freebsd-questions:
freebsd-questions@FreeBSD.org.Имеется Руководство по FreeBSD, и оно может быть найдено
на веб-сервере.
Заметьте, что этот проект находится в процессе разработки;
некоторые части могут отсутствовать или быть устаревшими.Прекрасным печатным руководством по FreeBSD является книга
The Complete FreeBSD, написанная Грегом Лиэем (Greg Lehay) и
изданная BSDi (бывшая Walnut Creek CDROM) Books. В настоящее время вышло
второе издание, содержащее 1750 страниц руководств по установке и
администрированию системы и прикладных программ, а также страницы
Справочника. Книга (и последний релиз FreeBSD) может быть заказана в
компаниях BSDi и
CheapBytes или в
вашем любимом книжном магазине. Индекс ISBN 1-57176-227-2.Так как FreeBSD основана на выпуске Berkeley 4.4BSD-Lite,
большинство руководств по 4.4BSD подходят к FreeBSD.
O'Reilly and Associates издают следующие руководства:4.4BSD System Manager's Manual
By Computer Systems Research Group, UC Berkeley
1st Edition June 1994, 804 pages
ISBN: 1-56592-080-5 4.4BSD User's Reference Manual
By Computer Systems Research Group, UC Berkeley
1st Edition June 1994, 905 pages
ISBN: 1-56592-075-9 4.4BSD User's Supplementary Documents
By Computer Systems Research Group, UC Berkeley
1st Edition July 1994, 712 pages
ISBN: 1-56592-076-7 4.4BSD Programmer's Reference Manual
By Computer Systems Research Group, UC Berkeley
1st Edition June 1994, 886 pages
ISBN: 1-56592-078-3 4.4BSD Programmer's Supplementary Documents
By Computer Systems Research Group, UC Berkeley
1st Edition July 1994, 596 pages
ISBN: 1-56592-079-1 Описание этих книг может быть найдено через WWW как ссылка на
описание книг
из набора 4.4BSD. Из-за малых объёмов продаж, эти книги найти
труднее.Вы не ошибётесь, если для подробного ознакомления с устройством
ядра 4.4BSD kernel обратитесь к следующей литературе:McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
and John Quarterman.The Design and Implementation of the 4.4BSD Operating
System. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-54979-4Хорошей книгой по системному администрированию является:Evi Nemeth, Garth Snyder, Scott Seebass &
Trent R. Hein,
Unix System Administration Handbook, Prentice-Hall,
1995
ISBN: 0-13-151051-7Удостоверьтесь, что вы получили второе издание, с красной
обложкой, а не первое.Эта книга касается основ администрирования, в том числе протоколов
- TCP/IP, DNS, NFS, SLIP/PPP, sendmail, INN/NNTP, системы печати ит д..
- Она сравнительно дорогая (примерно US$45-$55), но
- стоит того. К ней прилагается также компакт-диск с исходными
+ TCP/IP, DNS, NFS, SLIP/PPP, sendmail, INN/NNTP, системы печати и так
+ далее.. Она сравнительно дорогая (примерно US$45-$55), но
+ того стоит. К ней прилагается также компакт-диск с исходными
текстами различных утилит; большинство их них, однако, также
присутствуют на диске FreeBSD 2.2.6R (на котором к тому же
часто находятся более свежие версии).Как можно получить доступ к вашей базе сообщений о проблемах (Problem
Report)?Сообщения пользователей обо всех проблемах могут быть запрошены (или
добавлены) с помощью нашего веб-интерфейса и запроса.
Команда send-pr(1) также может быть использована для
передачи и изменения сообщений о проблемах через электронную почту.Есть ли версии документации в другом формате, например,
в виде обычного текста ASCII или PostScript?Да. Документация имеется в нескольких различных форматах и
упакованная разными способами на FTP-сервере FreeBSD, и находится она
в каталоге
/pub/FreeBSD/doc/.Документация подразделяется на категории различными способами. Это
включает:Имя документа, например, faq или
handbook.Язык и кодировка документа. Они опираются на имена локализаций,
которые вы найдёте в каталоге /usr/share/locale
вашей системы FreeBSD. На данный момент для документации поддерживаются
следующие языки и кодировки:ИмяЗначениеen_US.ISO_8859-1US Englishes_ES.ISO_8859-1Испанскийfr_FR.ISO_8859-1Французскийja_JP.eucJPЯпонский (кодировка EUC)ru_RU.KOI8-RРусский (кодировка KOI8-R)zh_TW.Big5Китайский (кодировка Big5)Некоторые документы могут иметься не на всех языках.Формат документа. Мы формируем документацию в нескольких различных
форматах, пытаясь сделать её максимально гибкой. Имеющиеся
форматы;ФорматЗначениеhtml-splitНабор маленьких связанных друг с другом
HTML-файлов.htmlОдин большой HTML-файл, полностью содержащий
документ pdbФормат баз данных Palm Pilot, для использования с
утилитой iSilo.
pdfAdobe's Portable Document FormatpsPostscriptrtfMicrosoft's Rich Text Format
Номера страниц при загрузке в Word автоматически
не обновляются. Нажмите
CTRL+A,
CTRL+END,
F9 после загрузки документа для
обновления номеров страниц.txtОбычный текстСпособ компрессии и создания архива. Сейчас используется
три.В случае формата html-split, файлы
архивируются с помощью &man.tar.1;. Получающийся файл
.tar затем подвергается сжатию по
схемам, подробно описываемым далее.Все другие форматы генерируют один файл с именем
book.format
(то есть book.pdb,
book.html, и так далее).Эти файлы затем сжимаются по трём схемам сжатия.СхемаОписаниеzipФормат Zip. Если вам нужно будет развернуть это
во FreeBSD, то потребуется установить сначала порт
archivers/unzip.
gzФормат GNU Zip. Для распаковки таких файлов
используется &man.gunzip.1;, которая является частью
FreeBSD.
bz2Формат BZip2. Используется реже, чем другие, но,
как правило, даёт файлы меньшего размера. Чтобы
работать с такими файлами, установите порт
archivers/bzip2.
Таким образом, версия Руководства в формате Postscript,
упакованная с помощью BZip2, будет находиться в файле с именем
book.sgml.bz2 в каталоге
handbook/.Отформатированная документация также доступна в виде пакаджей
FreeBSD, о чём пойдёт речь несколько позже.После выбора формата и способа компрессии, в котором вы хотите получить
файл, вы должны определиться, должен ли он быть в виде
пакаджа FreeBSD.Плюсом сгрузки и установки в виде пакаджа является то, что документация
затем может управляться обычными средствами для работы с пакаджами, такими,
как &man.pkg.add.1; и &man.pkg.delete.1;.Если вы решили сгрузить и установить пакадж, то вы должны знать имя
файла. Файлы, содержащие документацию в виде пакаджей, находятся в
каталоге packages. Каждый такой файл имеет вид
document-name.lang.encoding.format.tgz.Например, FAQ на английском языке в формате PDF находится в пакадже
faq.en_US.ISO_8859-1.pdf.tgz.Зная это, для установки пакаджа с англоязычным FAQ в формате PDF вы
можете воспользоваться следующей командой.
&prompt.root; pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO_8859-1.pdf.tgzСделав это, можно использовать утилиту &man.pkg.info.1; для определения
того, куда файл был установлен.
&prompt.root; pkg_info -f faq.en_US.ISO_8859-1.pdf
Information for faq.en_US.ISO_8859-1.pdf:
Packing list:
Package name: faq.en_US.ISO_8859-1.pdf
CWD to /usr/share/doc/en_US.ISO_8859-1/books/faq
File: book.pdf
CWD to .
File: +COMMENT (ignored)
File: +DESC (ignored)
Как видите, book.pdf будет установлен в
/usr/share/doc/en_US.ISO_8859-1/books/faq.Если же вы не хотите использовать пакаджи, то вам нужно самим сгрузить
упакованные файлы, распаковать их, а затем скопировать документацию в
соответствующие места.Например, версия FAQ в виде отдельных HTML-файлов, упакованная при
помощи &man.gzip.1;, находится в файле
en_US.ISO_8859-1/books/faq/book.html-split.tar.gz.
Для сгрузки и распаковки этого файла вам нужно сделать вот что.
&prompt.root; fetch ftp://ftp.freebsd.org/pub/FreeBSD/doc/en_US.ISO_8859-1/books/faq/book.html-split.tar.gz
&prompt.root; gzip -d book.html-split.tar.gz
&prompt.root; tar xvf book.html-split.tarУ вас получится набор файлов .html. Главным
является index.html, и в нём находится оглавление,
вводный материал и ссылки на остальные части документа. После этого вы
их можете копировать и перемещать при необходимости на окончательное
местоположение.Могу ли я зазеркалировать веб-сервер FreeBSD?Несомненно! Есть несколько способов это сделать.С помошью CVSup:
Вы можете запрашивать отформатированные файлы с помощью
CVSup и подключаться к серверу
CVSup.Для получения страниц веб-сервера посмотрите на пример, находящийся
в файле
/usr/share/examples/cvsup/www-supfile.С помощью зеркалирования ftp: Вы можете скачать оригинальную
копию информации на веб-сервере, находящуюся на ftp, используя ваше
любимое средство зеркалирования ftp. Имейте в виду, что вам нужно
будет ещё преобразовать эту информацию перед тем, как помещать её на
вашем сервере. Просто начните с каталога
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-CURRENT/www.Я могу перевести документацию на язык племени мумбо-юмбо.Хорошо. Хотя мы не сможем заплатить, в наших силах подарить вам
бесплатный CD или футболку и внести вас в список составителей
Руководства, если вы предоставите перевод. Перед тем, как начать перевод,
обратитесь в список рассылки freebsd-doc по адресу
freebsd-doc@FreeBSD.org; здесь можно найти тех, кто способен
помочь в переводе. Может также оказаться, что группа, занимающаяся
переводом документации на выбранный вами язык, уже существует, и она не
откажется от вашей помощи.Другие источники информации.Следующие телеконференции содержат информацию о FreeBSD, которая
будет полезна её пользователям:
comp.unix.bsd.freebsd.announce (модерируемая)
comp.unix.bsd.freebsd.misccomp.unix.bsd.miscWeb-ресурсы:Веб-сервер FreeBSD.Если у вас лаптоп, взгляните на страницу
Tatsumi
Hosokawa's Mobile Computing в Японии.Информация о SMP (Symmetric MultiProcessing)
находится на странице поддержки
SMP.Информация о мультимедийных приложениях
для FreeBSD находится на
мультимедийной странице. Если вы интересуетесь адаптерами
захвата изображения Bt848,
перейдите по ссылке.В Руководстве по FreeBSD имеется достаточно полный библиографический раздел,
который стоит посмотреть, если вы хотите подыскать книгу по системе.УстановкаКакой файл нужно скачать для установки FreeBSD?До выхода в свет релиза FreeBSD 3.1 для установки вам был нужен только
один файл с образом дискеты, floppies/boot.flp.
Однако, начиная с версии 3.1, во FreeBSD была добавлена базовая поддержка
для очень широкого спектра оборудования, что требует значительно большего
дискового пространства, поэтому для установки FreeBSD версий 3.x и 4.x
используются два образа дискет, находящиеся в файлах
floppies/kernel.flp и
floppies/mfsroot.flp. Эти образы нужно перенести на
дискеты с помощью таких утилит, как fdimage или
&man.dd.1;.Если вы хотите скачать дистрибутив самостоятельно (например, для
установки с раздела DOS), вот список рекомендованных частей
дистрибутива: bin/ manpages/ compat*/ doc/ src/ssys.* Полные инструкции по этой процедуре и об установке вообще можно
найти в разделе
Руководства, посвящённом инсталляции FreeBSD.Помогите! Загрузочный файл не помещается на дискету!На дискету размером 3.5 дюйма (1.44Мб) может поместиться
1474560 байт данных. Образ дискеты имеет размер ровно 1474560 байт.Типичные ошибки при подготовке загрузочной дискеты:Образ дискеты был загружен по FTP не в режиме
binary.Некоторые клиентские программы FTP используют по умолчанию
текстовый (ascii) режим передачи и пытаются
поменять все принятые последовательности символов "конец строки" на
соответствующие им в вашей системе. В таком случае образ
загрузочного диска будет неизбежно испорчен. Проверьте размер
полученного файла: если он не точно такой же,
как на FTP-сервере, то ошибка произошла, скорее всего, в процессе
передачи.Во избежание этого введите команду binary в
командной строке FTP после того, как вы подключитесь к серверу, но до
того, как начали скачивать файл.Для переноса образа на дискету была использована команда DOS
copy (или её аналог с графическим
интерфейсом).Программы типа copy не работают с образами
дискет, предназначенными для загрузки. Образ содержит полное содержимое
дискеты, дорожка за дорожкой, и не предназначен для помещения на
дискету в качестве обычного файла. Вам необходимо перенести его
на дискету непосредственно, используя низкоуровневые
средства (такие, как fdimage или
rawrite), описанные в Руководстве.Где инструкции по установке FreeBSD?Инструкции по установке могут быть найдены в
главе
Руководства, посвящённом установке FreeBSD.Что мне нужно иметь для запуска FreeBSD?Вам нужен персональный компьютер не ниже 386, с 5 или более
мегабайтами ОЗУ и по крайней мере 60Мб свободного пространства на
- винчестере. Система может работать с дешёвым графическим адаптером MDA,
- но для того, чтобы запустить X11R6, требуется видеокарта стандарта VGA
+ винчестере. Система может работать с дешёвым графическим адаптером MDA,
+ но для того, чтобы запустить X11R6, требуется адаптер стандарта VGA
или лучше.Посмотрите также раздел
.У меня только 4Мб ОЗУ. Смогу ли я установить FreeBSD?FreeBSD 2.1.7 была последней версией, которую можно было
проинсталлировать на системе с 4Мб ОЗУ. Более новые версии FreeBSD,
типа 2.2, требуют по крайней мере 5Мб ОЗУ для установки.Все версии FreeBSD, включая 3.0, будут работать на
4Мб ОЗУ, просто на 4Мб нельзя запустить инсталляционную программу. Вы
можете добавить дополнительную память для инсталляции, если вам
это нужно, а после того, как система будет установлена и запущена,
вернуться к конфигурации с 4Мб. Или вы можете подключить ваш диск
к компьютеру с ОЗУ, большим чем 4Мб, проинсталлировать систему и
переставить диск обратно.Есть ещё несколько причин, по которым FreeBSD 2.1.7 не будет
устанавливаться с 4Мб. А именно: она не будет устанавливаться
на системе с 640Кб основной и 3Мб дополнительной памяти. Если ваша
материнская плата может перемещать некоторую потерянную
память из области 640Кб в область 1Мб, тогда может быть, вы
сможете запустить FreeBSD 2.1.7.Попробуйте войти в настройку вашего BIOS и посмотреть параметры
перемещения (remap). Включите его. Может быть, ещё
понадобится выключить теневое ПЗУ (ROM shadowing).Может быть, самое простое решение - найти еще 4Мб на время
инсталляции. Откомпилируйте ядро только с теми параметрами, которые
нужны и затем уберите 4Мб.Вы можете также проинсталлировать версию 2.0.5, а затем
обновить вашу систему до 2.1.7 с помощью пункта upgrade
программы инсталляции 2.1.7.После установки вы можете построить ядро, которое будет работать
на 4Мб. Кто-то даже умудрялся загружаться с 2Мб (хотя система
в основном была неработоспособна :-))Как сделать оригинальную загрузочную дискету?В настоящий момент нет простого способа сделать
оригинальную загрузочную дискету. Вам придётся делать новый релиз
полностью, включая загрузочную дискету.Чтобы сделать оригинальный релиз, следуйте инструкциям здесь.Могу ли я иметь более чем одну операционную систему на моём PC?Взгляните на это руководство.Может ли Windows 95/98 сосуществовать с FreeBSD?Сначала установите Windows 95/98, а затем FreeBSD. Менеджер загрузки
FreeBSD будет управлять процессом загрузки Win95/98 или FreeBSD. Если
после этого вы ещё раз выполните процедуру установки Windows 95/98, то при
этом менеджер загрузки будет грубо удалён. Если такое случится, обратитесь
к следующему разделу.Windows 95/98 уничтожила мой менеджер загрузки! Как мне его
вернуть?Вы можете переустановить менеджер загрузки FreeBSD тремя
способами:Запустите DOS, перейдите в каталог tools/ вашего дистрибутива
FreeBSD и найдите программу bootinst.exe.
Запустите её следующим образом:...\TOOLS>bootinst.exe boot.binи менеджер загрузки будет переустановлен.Загрузитесь с установочной дискеты FreeBSD и перейдите в меню
установки Custom install. Выберите пункт Partition. Выберите
устройство, на котором будет располагаться для ваш менеджера загрузки
(это будет самый первый диск) и когда вы перейдете к редактированию
разделов, первым делом (то есть ещё не делая никаких изменений)
выберите (W)rite. Последует запрос на подтверждение, ответьте yes,
и когда вы попадёте в меню выбора менеджера загрузки, выберите
пункт Boot Manager. Менеджер загрузки будет
переписан на диск. Теперь нужно выйти из меню установки и загрузиться
с винчестера как обычно.Загрузитесь с установочной дискеты (или компакт-диска) FreeBSD и
найдите пункт меню Fixit. Выберите Fixit floppy или
CD-ROM #2 (живая файловая система) соответственно
вашему случаю и вы окажетесь в приглашении командного процессора.
Теперь выполните следующую команду:Fixit#fdisk -B -b /boot/boot0 bootdeviceподставив вместо bootdevice название
реально используемого для загрузки устройства, например,
ad0 (первый диск IDE),
ad4 (первый диск IDE на дополнительном
контроллере), da0 (первый диск SCSI) и
тому подобное.Можно ли производить установку на диск с повреждёнными
блоками?До версии 3.0 в поставку FreeBSD включалась утилита, известная под
именем bad144, которая автоматически переносила
повреждённые блоки. Так как современные диски с интерфейсом IDE выполняют
эту функцию самостоятельно, то утилита bad144 была
удалена из дерева исходных текстов FreeBSD. Если вы собираетесь
устанавливать FreeBSD 3.0 и выше, то мы настоятельно рекомендуем приобрести
новый диск. Если вы этого делать не собираетесь, то устанавливайте
FreeBSD 2.x.Если вы обнаружите испорченные блоки на современном диске IDE, то
весьма вероятно, что он скоро выйдет из строя совсем (собственная
способность переносить испорченные блоки исчерпана, что означает очень
большую порчу поверхности); мы рекомендуем приобрести новый диск.Если повреждённые блоки находятся на SCSI диске, взгляните на такое решение.Странные вещи происходят при загрузке с инсталляционного
диска!
- Если вы видите, что как машина зависает или неожиданно
+ Если вы видите, что машина зависает или неожиданно
перезагружается, когда вы пытаетесь загрузиться с установочной
дискеты, вы должны задать себе три вопроса:-Вы используете новую, только что отформатированную дискету
(предпочтительно неиспользованную прямо из коробки, а не ту, что
пришла с популярным журналом и последние три года провалялась под
диваном)?Вы скачали образ дискеты в двоичном режиме?
(не смущайтесь, даже лучшие из нас время от времени скачивают
двоичный файл в режиме ASCII!)Если вы используете Windows95 или Win98, удостоверьтесь, что вы
запускаете fdimage или rawrite
в режиме чистого DOS? Эти операционные системы могут влиять на
программы, работающие непосредственно с оборудованием, что и делает
программа создания установочного диска; даже запуск из DOS в
графической оболочке может вызвать проблемы.Есть сведения, что Netscape вызывает проблемы при скачивании
загрузочного диска, так что лучше всего использовать специальную
программу FTP, если она у вас есть.Я загрузился с ATAPI CD-ROM, однако программа установки сообщила, что
CD-ROM не найден. Куда он подевался?Обычной причиной возникновения такой проблемы является неправильно
сконфигурированный привод CD-ROM. Теперь зачастую ПК продаются с CD-ROM,
установленным как ведомое устройство на втором контроллере IDE, но без
ведущего устройства на этом контроллере. Согласно спецификации ATAPI,
такая конфигурация неверна, однако Windows в таком случае всё же работает,
и BIOS игнорирует это при загрузке. Вот почему BIOS может видеть CD-ROM
при загрузке, а FreeBSD для завершения установки - нет.Переконфигурируйте вашу систему так, чтобы CD-ROM оказался либо
основным устройством на том IDE-контроллере, на котором он установлен,
либо ведомым устройством на контроллере IDE, который имеет ведущее
устройство.Помогите! Не могу установить систему с ленты!Если вы инсталлируете 2.1.7R с ленты, вы должны создать
ленту с размером блока tar, равным 10 (5120 байт). Размер
блока tar по умолчанию равен 20 (10240 байт), поэтому ленты,
созданные со стандартным размером блока, не могут быть использованы
для установки 2.1.7R; вы получите сообщение об ошибке, говорящее,
что размер записи слишком большой.Соединение двух машин с FreeBSD через параллельные
порты (PLIP)Для этого нужен соединительный шнур типа laplink и на обеих машинах
должна быть включена поддержка драйвера lpt.
&prompt.root; dmesg | grep lp
lpt0 at 0x378-0x37f irq 7 on isa
lpt0: Interrupt-driven
lp0: TCP/IP capable interface
Подключите кабель laplink к параллельным портам компьютеров.Настройте параметры сетевого интерфейса lp0 на обеих машинах, войдя
администратором. Например, если вы хотите соединить хосты с именами
max и moritz
max <-----> moritz
IP Address 10.0.0.1 10.0.0.2
на машине max дайте команду
&prompt.root; ifconfig lp0 10.0.0.1 10.0.0.2на машине moritz запустите
&prompt.root; ifconfig lp0 10.0.0.2 10.0.0.1Это всё! Пожалуйста, прочтите ещё страницы Справочника &man.lp.4;
и &man.lpt.4;.Вы также должны добавить эти хосты в файл
/etc/hosts.
127.0.0.1 localhost.my.domain localhost
10.0.0.1 max.my.domain max
10.0.0.2 moritz.my.domain
Для проверки работоспособности связи выполните следующие
действия:на машине max:
&prompt.root; ifconfig lp0
lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
&prompt.root; netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
moritz max UH 4 127592 lp0
&prompt.root; ping -c 4 moritz
PING moritz (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
--- moritz ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms
Можно ли я установить систему на лэптоп через PLIP (Parallel
Line IP)?Для этого нужно соединить два компьютера параллельным кабелем
Laplink особым образом.
Соединение параллельного кабеля для работы с сетьюA-nameA-EndB-EndDescr.Post/BitDATA0
-ERROR2
1515
2Data0/0x01
1/0x08DATA1
+SLCT3
1313
3Data0/0x02
1/0x10DATA2
+PE4
1212
4Data0/0x04
1/0x20DATA3
-ACK5
1010
5Strobe0/0x08
1/0x40DATA4
BUSY6
1111
6Data0/0x10
1/0x80GND18-2518-25GND-
Посмотрите также это замечание на странице,
посвящённой мобильным вычислениям.Какие параметры диска я должен использовать?(Под параметрами диска мы понимаем число дорожек,
головок и секторов на дорожку на диске, что для простоты обозначается как
C/H/S. Именно так работает BIOS персональных компьютеров при чтении
или записи диска).Похоже, что по каким-то причинам это вызывает много недоразумений.
Прежде всего, физические параметры диска SCSI не
имеют никакого значения, так как FreeBSD работает в терминах дисковых
блоков. Фактически нет такого показателя, как физические
параметры, так как плотность размещения секторов различна по
всему диску; то, что производители называют реальными
физическими параметрами, есть не
что иное, как свободное пространство. Для дисков IDE,
FreeBSD работает в терминах C/H/S, но во всех современных дисках они
преобразовываются во внутреннее представление.Имеют значение только логические параметры - это
те, что получает BIOS, когда спрашивает какие у тебя
параметры?, а затем
использует для обращения к диску. Так как FreeBSD использует BIOS
при загрузке, очень важно получить верные параметры. В частности,
если у вас на диске находятся несколько операционных систем, они обе
должны иметь одинаковое представление о параметрах диска, иначе
серьёзные проблемы при загрузке неизбежны!В случае дисков SCSI, параметры используются в зависимости от того,
включена ли поддержка расширенной трансляции на вашем контроллере
(что часто обозначается как поддержка дисков DOS >1GB или
что-то похожее). Если эта возможность выключена, то используйте
N дорожек, 64 головки и 32 сектора на дорожку,
где N - это ёмкость
диска в мегабайтах. Например, 2Гбайтный диск должен иметь 2048
- дорожек, 64 головки и 32 сектора а дорожку.
+ дорожек, 64 головки и 32 сектора на дорожку.
Если трансляция включена (что обычно используется
для преодоления некоторых ограничений MSDOS) и ёмкость диска превышает
1ГБ, используется M дорожек, 63 сектора на дорожку (*не* 64) и 255
головок, где 'M' - это объём диска в мегабайтах, поделённый на
7.844238 (!). Таким образом, наш диск объёмом 2ГБ будет иметь
261 дорожку, 63 сектора на дорожку и 255 головок.Если вы не уверены, или FreeBSD ошибается при определении
параметров диска во время установки, самый простой способ решить эту
проблему - создать на диске маленький раздел DOS. После этого
параметры диска должны определиться правильно (и вы всегда можете
удалить раздел DOS в редакторе разделов, если вы не хотите его
сохранить, или оставить его для настройки сетевых адаптеров и подобных
вещей).Кроме того, существует свободно доступная утилита, распространяемая
вместе с FreeBSD, которая называется pfdisk.exe
(можно найти в каталоге tools компакт-диска с FreeBSD
или на различных ftp-серверах), которую можно использовать для определения
параметров, которые используются другими операционными системами,
расположенными на вашем диске. Затем вы можете использовать эти
параметры в редакторе разделов.Есть ли ограничения на разбиение диска?Да. Вы должны убедиться, что корневой раздел находится до
1024 дорожки, так чтобы BIOS могла загрузить с него ядро. (Заметьте,
что это ограничение BIOS компьютера, а не FreeBSD).Для диска SCSI, это, как правило, будет означать, что
корневой раздел располагается в первых 1024Мб (или в первых 4096Мб,
если включен режим расширенной трансляции - посмотрите предыдущий
вопрос). Для дисков IDE соответствующее значение равно 504Мб.Как насчёт менеджеров диска? У меня большой диск!FreeBSD распознаёт Ontrack Disk Manager и допускает его
использование. Другие менеджеры дисков не поддерживаются.Если вы хотите использовать диск с FreeBSD, вам не нужен
менеджер диска. Отконфигурируйте диск на столько пространства,
сколько сможет обработать BIOS (обычно 504 мегабайта). и
FreeBSD распознает, сколько места у вас есть на самом деле.
Если вы используете старый диск с контроллером MFM, вам может
потребоваться точно указать FreeBSD количество используемых
дорожек.Если вы хотите использовать FreeBSD совместно с другой
операционной системой, это можно сделать и без менеджера диска:
удостоверьтесь, что загрузочный раздел FreeBSD и раздел для другой
операционной системы не выходят за пределы 1024 дорожки. Если вы
будете осторожны, 20 мегабайтного раздела для загрузки будет
достаточно.При загрузке FreeBSD выдаётся сообщение Missing Operating
SystemЭто классический случай, когда FreeBSD и DOS или другая операционная
система конфликтуют по поводу параметров
диска. Вам нужно будет переустановить FreeBSD, но имейте в виду, что
инструкции, данные выше, помогают всегда.После приглашения менеджера загрузки F? ничего не
происходит.Это ещё один признак проблемы, описанной в предыдущем разделе.
Параметры диска в BIOS и параметры, используемые FreeBSD, не
совпадают. Если ваш контроллер или BIOS поддерживают трансляцию
дорожек (часто обозначаемую как >1GB drive support),
попробуйте включить эту возможность и переустановить FreeBSD.Нужно ли устанавливать все исходные тексты системы?В общем случае, нет. Однако мы настоятельно рекомендуем установить, как
минимум, исходные тексты набора base,
включающий некоторые файлы, здесь упоминаемые,
и sys, в который включены исходные тексты
ядра. Для работы системы присутствия исходных текстов не требуется, разве
что для программы конфигурирования ядра &man.config.8;. За исключением
исходных текстов ядра, структура исходных текстов системы
позволяет монтировать их в режиме "только для чтения" через NFS и
компилировать программы. (Из-за ограничения на исходные тексты ядра мы
рекомендуем монтировать их не прямо в /usr/src, а в
какой-нибудь другой каталог с символическими ссылками для дублирования
структуры каталогов.Наличие исходных текстов системы значительно облегчает процесс
перехода на новые версии FreeBSD.Для выбора подмножества исходных текстов, которое вы хотите
установить, используйте пункт меню Custom, когда находитесь в меню
Distributions программы установки.Нужно ли перекомпилировать ядро?Построение нового ядра всегда было необходимым шагом при
установке FreeBSD, однако последние релизы предоставляют более
дружественный инструмент конфигурации ядра. В командной строке
на приглашение загрузчика FreeBSD (boot:) введите и вы
попадёте в экран визуальной настройки, которая позволяет
конфигурировать настройки ядра для большинства адаптеров ISA.Однако рекомендуется, что потом вы всё же построите новое ядро,
- содержащее только те драйвера, которые вам нужны, для того,
+ содержащее только те драйверы, которые вам нужны, для того,
чтобы сэкономить немного ОЗУ, хотя для большинства систем это
больше не является большой необходимостью.Какой из паролей - DES или MD5, я должен использовать и как указать,
какого типа пароли используются пользователями?По умолчанию во FreeBSD используется формат паролей на основе
MD5. Это делается в предположении, что он более
защищён, чем традиционный формат паролей UNIX, в котором используется схема
на основе алгоритма DES. Пароли DES остаются
применимыми, если вам нужно использовать файл паролей совместно с более
старыми операционными системами, в которых используется менее защищённый
формат паролей (их можно использовать, если в программе sysinstall вы
выберите установку дистрибутива crypto или установите
исходные тексты пакета crypto в случае построения из исходных текстов).
Управление выбором используемого формата паролей осуществляется через
параметр входа passwd_format в файле
/etc/login.conf, принимающий значения
des (если он есть) или md5. Более подробная
информация о параметрах входа находится на странице Справочника
login.conf(5).Загрузка с установочной дискеты прерывается на сообщении
Probing Devices....Если у вас установлены устройства IDE Zip или Jaz, уберите их
и попробуйте снова. Они могут мешать инсталляционной программе. После
того, как система будет установлена, вы можете снова подключить
устройства. Надеемся, что это будет исправлено в более поздних
релизах.Сообщение panic: cant mount root после перезагрузки
только что установленной системы.Эта ошибка проявляется, когда есть несогласование между представлениями
загрузочного блока и ядра о дисковых устройствах. Эта ошибка обычно
проявляется на системах с двумя дисками IDE, с винчестерами, установленными
как ведущий или единственный на отдельных контроллерах IDE, с FreeBSD,
инсталлированной на втором контроллере IDE. Программа в загрузочных блоках
полагает, что система установлена на wd1 (второй диск BIOS), тогда как ядро
даёт первому диску на втором контроллере название wd2. После обнаружения
устройства ядро пытается смонтировать то, что загрузочные блоки выдают за
загрузочный диск, wd1, тогда как он на самом деле wd2, и ошибается.Для разрешения этой проблемы сделайте одно из следующих действий:Для FreeBSD 3.3 и выше, перегрузите систему и нажмите
Enter при появлении приглашения Booting
kernel in 10 seconds; hit [Enter] to interrupt. Вы
окажетесь в загрузчике.После этого наберите set
root_disk_unit="disk_number".
Здесь в качестве disk_number должен быть
указан 0, если FreeBSD установлена на ведущем диске
первого контроллера IDE, 1 если она установлена
на ведомом диске первого контроллера IDE, 2, если
система находится на ведущем диске второго IDE-контроллера и
3, если она установлена на ведомом диске второго
контроллера IDE.Затем введите команду boot, и ваша система
должна нормально загрузиться.Чтобы сделать эти изменения постоянными (то есть чтобы вам не
было нужды выполнять эти действия каждый раз при перезагрузке или
включении вашей машины с FreeBSD), поместите строчку
root_disk_unit="disk_number"
в файл /boot/loader.conf.local.При использовании FreeBSD 3.2 и более ранних версий в приглашении
Boot: наберите 1:wd(2,a)kernel и
нажмите клавишу Enter. Если система запустилась, выполните команду
echo "1:wd(2,a)kernel" > /boot.config
чтобы сделать это строкой загрузки по умолчанию.Поместите диск с FreeBSD на первичный контроллер IDE, так чтобы
именования диском пришли в соответствие.Перестройте ядро,
изменив конфигурацию контроллера wd на следующее:
controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
disk wd0 at wdc0 drive 0
# disk wd1 at wdc0 drive 1 # comment out this line
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
disk wd1 at wdc1 drive 0 # change from wd2 to wd1
disk wd2 at wdc1 drive 1 # change from wd3 to wd2
Проинсталлируйте новое ядро. Если вы переместили ваши диски и
хотите восстановить предыдущую настройку, замените диски в нужной
конфигурации и перезагрузитесь. Ваша система должна нормально
запуститься.Какие имеются ограничения на объём оперативной памяти?Размер оперативной памяти ограничен объёмом в 4 гигабайта. Такая
конфигурация реально тестировалась, подробности есть в конфигурации
wcarchive. Если вы собираетесь устанавливать столько оперативной
памяти в компьютер, будьте внимательны. Скорее всего, вам придётся
использовать память ECC и для уменьшения нагрузки также взять 9-чиповые
модули памяти вместо 18-чиповых.Какие существуют ограничения для файловой системы ffs?Для файловой системы ffs максимальный теоретический размер равен
8 терабайтам (2Г блоков) или 16ТБ при стандартном размере блока 8К.
На практике есть программное ограничение в 1 терабайт, но с
некоторыми модификациями достижимы 4 гигабайта (и такие системы
существуют).Максимальный размер одного файла ffs равен примерно 1Г блоков
(4ТБ) при размере блока 4К.
Maximum file sizesfs block size2.2.7-stable3.0-currentworksshould work4K4T-14T-14T-14+t8K32+G8T-132+G32T-116K128+G16T-1128+G32T-132K512+G32T-1512+G64T-164K2048+G64T-12048+G128T-1
При размере блока файловой системы 4К, тройная адресация
блоков работает и всё должно быть ограничено максимальным количеством
блоков, которое задаётся в виде тройной переадресации
блока (примерно 1K^3 + 1K^2 + 1K), однако всё ограничивается
(ошибочным) лимитом 1Г-1 на количество блоков файловой системы.
Это ограничение должно быть равным 2Г-1. При количестве блоков,
приближающемся к 2Г-1, появляются некоторые ошибки, но этот предел
недостижим при размере блока 4К.При размере блока 8К и больше, всё должно быть ограничено
лимитом 2Г-1 на количество блоков файловой системы, но реально
ограничено пределом в 1Г-1 на число блоков файловой системы, кроме
случая -STABLE, недостижимый при тройной переадресации, так что предел
равен максимальному числу блоков файловой системы, который может
быть представлен через двойную переадресацию (примерно
(размер блока/4)^2 + (размер блока/4)), и под -CURRENT превышение
этого ограничения может вызвать проблемы. Использование верного
ограничения в 2Г-1 блоков вызывает проблемы.Как можно поместить файлы размером 1ТБ на дискету?Я храню парочку таких на дискете :-) Максимальный размер
файла не связан непосредственно с максимальным размером диска.
Максимальный размер диска равен 1ТБ. Особенностью является
то, что размер файла может превышать размер диска.В следующем примере создаётся файл размером 8Т-1 с помощью всего
32К дискового пространства (3 блока адреса и 1 блок данных) на
маленьком корневом разделе. Команда dd должна уметь работать с
большими файлами.
&prompt.user; cat foo
df .
dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1
ls -l z
du z
df .
&prompt.user; sh foo
Filesystem 1024-blocks Used Avail Capacity Mounted on
/dev/da0a 64479 27702 31619 47% /
1+0 records in
1+0 records out
1 bytes transferred in 0.000187 secs (5346 bytes/sec)
-rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z
32 z
Filesystem 1024-blocks Used Avail Capacity Mounted on
/dev/da0a 64479 27734 31587 47% /
Bruce Evans, September 1998Я скомпилировал новое ядро и при загрузке получил сообщение об ошибке
archsw.readin.failed.Вы можете осуществить загрузку системы, явно указав ядро во время
второго этапа загрузочного процесса, нажав любую клавишу после
появления символа | до запуска загрузчика. Более точно, вы обновили
исходные тексты ядра, откомпилировали и установили новое ядро без
выполнения make world . Такое не поддерживается. Выполните
make world.Как произвести обновление 3.X -> 4.X?Мы настоятельно рекомендуем воспользоваться
для этой цели бинарными снэпшотами. Снэпшоты ветки 4.STABLE находятся на
сервере releng4.FreeBSD.org.Если вы хотите произвести обновление с помощью исходных текстов,
то за дополнительной пожалуйста, обратитесь к Руководству по
FreeBSD.Обновление через исходные тексты, а тем более 3.X -> 4.X,
никогда не рекомендуется делать начинающим пользователям; прочтите
внимательно инструкции перед тем, как сделать это!Аппаратная совместимостьКакие типы винчестеров поддерживает FreeBSD?FreeBSD работает с дисками стандартов EIDE и SCSI (с
соответствующими контроллерами; обратитесь к следующему разделу), и
всеми дисками, использующими оригинальный интерфейс Western
Digital (MFM, RLL, ESDI и, конечно же, IDE). Некоторые
контроллеры ESDI, использующие собственные интерфейсы, могут и не
работать: к таким относятся WD1002/3/6/7 и их клоны.Какие поддерживаются контроллеры SCSI?Полный список приведён в Руководстве.Какие приводы CD-ROM поддерживаются во FreeBSD?Поддерживаются любые SCSI-устройства чтения компакт дисков,
подключенные к поддерживаемому контроллеру.Кроме того, поддерживаются следующие оригинальные интерфейсы:Mitsumi LU002 (8bit), LU005 (16bit) и FX001D (16bit 2x
Speed).Sony CDU 31/33ASound Blaster не-SCSI CD-ROMMatsushita/Panasonic CD-ROMATAPI-совместимые IDE CD-ROMВсе не-SCSI адаптеры ставятся своей медлительностью по сравнению
со SCSI, а некоторые CDROM стандарта ATAPI могут и не работать.С версии 2.2 компакт-диск с FreeBSD от BSDi является загрузочным.Поддерживает ли FreeBSD устройства ZIP?Несомненно, FreeBSD поддерживает ZIP-устройства SCSI. Устройству
ZIP могут быть назначены SCSI ID только 5 или 6, и если BIOS вашего
SCSI-адаптера поддерживает такую возможность, вы можете с него даже
загрузиться. Мне не известны адаптеры, позволяющие загрузиться с
устройств, номера которых отличны от 0 или 1... посмотрите в
вашей документации (и сообщите мне, если у вас это работает).Устройства ZIP стандарта ATAPI (IDE) поддерживаются FreeBSD начиная
с версии 2.2.6.FreeBSD поддерживает устройства Zip, работающие через параллельный
порт, начиная с версии 3.0. Если вы используете более новую версию,
проверьте, содержит ли ваше ядро драйверы для
scbus0, da0,
ppbus0 и vp0 (ядро
GENERIC содержит всё это, кроме vp0). Если эти
драйверы имеются, то устройство должно быть доступно как
/dev/da0s4. Диски могут быть смонтированы
командами mount /dev/da0s4 /mnt или (для дисков dos)
mount_msdos /dev/da0s4 /mnt соответственно.Также посмотрите следующее замечание
о съёмных носителях, и это замечание
о форматировании.Поддерживает ли FreeBSD съёмные диски типа JAZ или EZ?Кроме IDE-варианта устройства EZ, это всё устройства SCSI, так что
для FreeBSD все они должны выглядеть как диски SCSI, а IDE EZ должен
выглядеть как диск IDE.Я не знаю, насколько хорошо FreeBSD поддерживает
смену носителя во время работы. Конечно, чтобы сменить диск, вам
сначала нужно его размонтировать, и обратите внимание на то, что при
загрузке все внешние устройства должны быть включены, чтобы FreeBSD
могла их распознать.Посмотрите это замечание о
форматировании.Какие многопортовые последовательные адаптеры поддерживаются во
FreeBSD?Список таких устройств находится в разделе о различных
устройствах Руководства.Некоторые безымянные клоны таких адаптеров тоже работают нормально,
особенно те, которые заявляют о своей совместимости с AST.Прочтите страницы Справочника о sio
для получения подробной информации о конфигурировании таких
адаптеров.У меня клавиатура USB. Поддерживает ли её FreeBSD?Поддержка устройств USB была добавлена во FreeBSD 3.1. Однако там
она ещё находилась в стадии разработки и не всегда работает так же, как
в версии 3.2. Если вы хотите поэкспериментировать с поддержкой
клавиатуры USB, следуйте нижеприводимым указаниям.Используйте FreeBSD 3.2 и выше.В конфигурационный файл ядра добавьте следующие строки и
перестройте ядро.
device uhci
device ohci
device usb
device ukbd
options KBD_INSTALL_CDEV
При использовании FreeBSD версий, предшествующих 4.0, добавьте
вместо этого такие строки:
controller uhci0
controller ohci0
controller usb0
controller ukbd0
options KBD_INSTALL_CDEV
Перейдите в каталог /dev и создайте
специальные файлы устройств следующим образом:
&prompt.root; cd /dev
&prompt.root; ./MAKEDEV kbd0 kbd1Отредактируйте файл /etc/rc.conf, добавив
следующие строки:
usbd_enable="YES"
usbd_flags=""
После перезагрузки системы AT-клавиатуре будет соответствовать
/dev/kbd0, а клавиатуре USB -
/dev/kbd1, если они обе подключены к системе.
Если присутствует только клавиатура USB, ей будет соответствовать
/dev/ukbd0.Если вы хотите использовать клавиатуру USB на консоли, вы должны
явно указать драйверу консоли на использование имеющейся клавиатуры
USB. Это может быть сделано в процессе инициализации системы следующей
командой.
&prompt.root; kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/nullЗаметьте, что, если клавиатура USB является единственной
присутствующей, она доступна как /dev/kbd0,
и поэтому команда должна выглядеть примерно так:
&prompt.root; kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/nullВышеуказанную команду хорошо бы добавить в
/etc/rc.i386.Как только вы всё это сделаете, клавиатура USB будет работать и в
X-окружении без каких-либо особых настроек.Выключение и включение USB-клавиатуры на ходу может ещё не работать
совершенно корректно. Во избежание неприятностей было бы правильно
подключить клавиатуру перед запуском системы и не отключать её до
закрытия системы.За дополнительной информацией обратитесь к странице Справочника
&man.ukbd.4;.У меня необычная мышь типа bus mouse. Как её настроить?FreeBSD поддерживает мыши типов bus mouse и InPort bus mouse от таких
производителей, как Microsoft, Logitech и ATI. Драйвер устройства bus mouse
включен по умолчанию в ядро GENERIC во FreeBSD версий 2.X, но не включён в
версию 3.0 и выше. Если вы строите собственное ядро с этим драйвером,
добавьте следующую строку в конфигурационный файл ядраВо FreeBSD 3.0 и ранее, добавьте:
device mse0 at isa? port 0x23c tty irq5 vector mseintr
Во FreeBSD 3.X строчка должна иметь вид:
device mse0 at isa? port 0x23c tty irq5
А во FreeBSD 4.X и выше строчка должна быть такой:
device mse0 at isa? port 0x23c irq5
Мышь типа bus mouse обычно поставляется с отдельными интерфейсными
адаптерами. Они позволяют установить адрес порта ввода/вывода и номер IRQ,
отличающиеся от приведённых выше. Для получения дополнительной информации
обратитесь к документации по вашей мыши и странице Справочника
&man.mse.4;.Как использовать мышь PS/2 (типа mouse port или
keyboard)?Если вы используете FreeBSD версии выше, чем 2.2.5, то необходимый
драйвер, psm, включён в ядро и активизирован.
Ядро должно обнаружить мышь PS/2 во время загрузки.Если вы работаете с предыдущей, но сравнительно свежей версией FreeBSD
(2.1.x и выше), то вы можете просто включить её поддержку в меню
конфигурации ядра во время инсталляции, либо позже, указав
в приглашении boot:. По умолчанию
она отключена, так что вы должны включить её явно.Если вы используете более старую версию FreeBSD, то вам нужно добавить
следующие строки в файл конфигурации ядра и построить новое ядро.Во FreeBSD 3.0 и ранее, строчка должна иметь вид:
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
Во FreeBSD 3.1 и выше, строчка должна быть такой:
device psm0 at isa? tty irq 12
Во FreeBSD 4.0 и выше строчка должна иметь вид:
device psm0 at atkbdc? irq 12
Обратитесь к главе Руководства о конфигурировании ядра, если
вы не имели опыта такой работы.После того, как ядро правильно обнаружило psm0
во время загрузки, проверьте существование файла устройства для
psm0 в каталоге /dev. Это
можно сделать, набрав:
&prompt.root; cd /dev; sh MAKEDEV psm0войдя в систему администратором.Можно ли каким-либо образом использовать мышь, кроме X Window?Если вы используете стандартный драйвер консоли, syscons, то можете
использовать указатель мыши в текстовых консолях для выделения и
переноса текста. Запустите демон мыши, moused, и включите отображение
указателя мыши на консоли:
&prompt.root; moused -p /dev/xxxx -t yyyy
&prompt.root; vidcontrol -m onЗдесь xxxx - это имя устройства мыши,
а yyyy - тип протокола, используемого мышью.
Страница Справочника по &man.moused.8; содержит информацию о поддерживаемых
типах протоколов.Вы можете запускать демон мыши автоматически во время старта
системы. В версии 2.2.1, установите значение следующей переменной в
/etc/sysconfig.
mousedtype="yyyy"
mousedport="xxxx"
mousedflags=""
В версиях от 2.2.2 и до 3.0, установите значения следующих переменных
в файле /etc/rc.conf.
moused_type="yyyy"
moused_port="xxxx"
moused_flags=""
В версиях 3.1 и выше, если предположить, что у вас мышь типа PS/2, то
достаточно добавить строчку moused_enable="YES" в файл
/etc/rc.conf.Кроме того, если вы хотите использовать даемон мыши на всех виртуальных
терминалах, а не только на консоли во время загрузки, добавьте следующую
строку в файл /etc/rc.conf.
allscreens_flags="-m on"
Начиная с FreeBSD 2.2.6, даемон мыши в состоянии определять тип
протокола автоматически, если, конечно, мышь не достаточно древней
модели. Укажите auto для автоматического
определения типа протокола.После запуска даемона мыши, доступ к мыши должен согласовываться
между даемоном мыши и другими программами типа X Window. Этот вопрос
рассмотрен в другом разделе.Как можно вырезать и копировать текст с помощью мыши в
текстовой консоли?После того, как вы запустили даемон мыши (посмотрите предыдущий раздел), нажмите кнопку 1 (левую) и
двигайте мышь для выбора области выделения. Затем нажмите кнопку 2
(среднюю) или кнопку 3 (правую) для вставки текста из буфера, начиная
с текущей позиции курсора.В версиях 2.2.6 и выше, нажатие на кнопку 2 вызовет вставку текста.
Нажатие на кнопку 3 расширит выбранный область текста. Если
у вашей мыши отсутствует средняя кнопка, вы можете её сэмулировать или
переназначить кнопки опциями программы moused. Обратитесь к странице
Справочника по
moused(8).У меня мышь USB. Поддерживает ли FreeBSD мышь USB?Поддержка устройств USB была добавлена во FreeBSD 3.1. Однако там
она ещё находилась в стадии разработки и не всегда работает так, как
в версии 3.2. Если вы хотите поэкспериментировать с поддержкой мыши USB,
следуйте нижеприводимым указаниям.Используйте FreeBSD 3.2 и выше.В конфигурационный файл ядра добавьте следующие строки и
перестройте ядро.
device uhci
device ohci
device usb
device ums
Во FreeBSD версий, предшествующих 4.0, вместо этого добавьте
такие строчки:
controller uhci0
controller ohci0
controller usb0
device ums0
Перейдите в каталог /dev и создайте
специальный файл устройства такой командой:
&prompt.root; cd /dev
&prompt.root; ./MAKEDEV ums0Отредактируйте файл /etc/rc.conf, добавив
такие строчки:
moused_enable="YES"
moused_type="auto"
moused_port="/dev/ums0"
moused_flags=""
usbd_enable="YES"
usbd_flags=""
Подробное обсуждение moused может быть найдено в предыдущем разделе.Чтобы использовать мышь USB при работе в X, отредактируйте
файл XF86Config. Если вы используете
XFree86 3.3.2 и выше, то в разделе Pointer
должны присутствовать такие строки:
Device "/dev/sysmouse"
Protocol "Auto"
Если у вас более старая версия XFree86, то в разделе
Pointer должны присутствовать строки:
Device "/dev/sysmouse"
Protocol "SysMouse"
Поддержке мыши при работе в X посвящен другой раздел.Выключение и включение мыши USB на ходу может ещё не работать
совершенно корректно. Во избежание неприятностей было бы правильно
подключить мышь перед запуском системы и не отключать её до закрытия
системы.У моей мыши есть дополнительные колёсико и кнопочки. Можно ли их
использовать во FreeBSD?Ответ, к сожалению, в зависимости от обстоятельств.
Эти мышки с дополнительными возможностями, как правило, требуют наличия
специальных драйверов. До тех пор, пока драйвер мыши или прикладная
программа не будут иметь отдельную поддержку такой мыши, она будет
работать как стандартная двух- или трёхкнопочная мышь.Возможные способы использования колёсиков мыши при работе в X Window
описаны в другом разделе.Похоже, что моя мышь не работает. Её курсор прыгает по экрану. Мышь
имеет колёсико и подключено к порту мыши PS/2.В драйвере psm для мыши PS/2 во FreeBSD версий 3.2 и ранее имеются
проблемы при работе с некоторыми мышками, у которых есть колёсико, в том
числе с мышками Logitech модель M-S48 и их OEM-разновидностями.
Исправьте файл /sys/i386/isa/psm.c с помощью
следующего патча и перестройте ядро.
Index: psm.c
===================================================================
RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v
retrieving revision 1.60.2.1
retrieving revision 1.60.2.2
diff -u -r1.60.2.1 -r1.60.2.2
--- psm.c 1999/06/03 12:41:13 1.60.2.1
+++ psm.c 1999/07/12 13:40:52 1.60.2.2
@@ -959,14 +959,28 @@
sc->mode.packetsize = vendortype[i].packetsize;
/* set mouse parameters */
+#if 0
+ /*
+ * A version of Logitech FirstMouse+ won't report wheel movement,
+ * if SET_DEFAULTS is sent... Don't use this command.
+ * This fix was found by Takashi Nishida.
+ */
i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS);
if (verbose >= 2)
printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i);
+#endif
if (sc->config & PSM_CONFIG_RESOLUTION) {
sc->mode.resolution
= set_mouse_resolution(sc->kbdc,
- (sc->config & PSM_CONFIG_RESOLUTION) - 1);
+ (sc->config & PSM_CONFIG_RESOLUTION) - 1);
+ } else if (sc->mode.resolution >= 0) {
+ sc->mode.resolution
+ = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution);
+ }
+ if (sc->mode.rate > 0) {
+ sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate);
}
+ set_mouse_scaling(sc->kbdc, 1);
/* request a data packet and extract sync. bits */
if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) {Версии FreeBSD выше чем 3.2 должны работать нормально.Как использовать мышь/трэкболл/сенсорную панель на лэптопе?Посмотрите один из предыдущих разделов.
И посмотрите это замечание на странице о
мобильных вычислениях.Какие типы стримеров поддерживаются?FreeBSD поддерживает стримеры с интерфейсами SCSI, QIC-36 (с
интерфейсом QIC-02) и QIC-40/80 (на основе НГМД), включая 8-мм
(Exabyte) и DAT. Стримеры QIC-40/80 сравнительно медленны.Некоторые ранние модели 8-мм стримеров не совсем соответствуют
стандарту SCSI-2 и могут работать не совсем хорошо.Поддерживает ли FreeBSD роботов для смены лент?FreeBSD 2.2 поддерживает SCSI-чейнджеры через устройство ch(4)
и команду
chio(1). Подробная информация об управлении чейнджерами может
быть найдена на странице Справочника по команде chio(1).Если вы не используете систему
AMANDA
или другое программное обеспечение, умеющее работать с роботами, имейте в
виду, что они могут только переносить ленты с одного места на другое,
так что вам нужно самим отслеживать, в каком слоте находится нужная
лента, и в какой слот нужно вернуть ленту, находящуюся в стримере.Какие звуковые адаптеры поддерживаются во FreeBSD?FreeBSD поддерживает звуковые адаптеры SoundBlaster, SoundBlaster Pro,
SoundBlaster 16, Pro Audio Spectrum 16, AdLib и Gravis UltraSound.
Имеется ограниченная поддержка MPU-401 и совместимых с ним адаптеров.
Адаптеры, удовлетворяющие спецификации Microsoft Sound System, также
поддерживаются драйвером pcm.Это касается только звука! Этот драйвер не поддерживает CDROM,
SCSI или джойстики ни на каких подобных адаптерах, кроме SoundBlaster.
Поддерживаются устройства на SCSI-интерфейсе SoundBlaster и не-SCSI
CDROM, но загрузиться с них невозможно.Есть ли решение проблемы отсутствия звука при использовании
драйвера pcm с адаптером es1370?При каждой перезагрузке вам нужно запускать следующую команду:
&prompt.root; mixer pcm 100 vol 100 cd 100Какие сетевые адаптеры поддерживает FreeBSD?Более полный список содержится в разделе Руководства об
адаптерах
Ethernet.На моей машине отсутствует математический сопроцессор - это
плохо?Это касается только владельцев компьютеров 386/486SX/486SLC - во
всех остальных машинах модуль вычислений с плавающей точкой объединён
с центральным процессором.В общем случае это не проблема, но в отсутствии сопроцессора вы
можете столкнуться со снижением производительность и точности при
использовании программной эмуляции сопроцессора (обратитесь к разделу
об эмуляции вычислений с плавающей точкой).
В частности, прорисовка дуг в X будет ОЧЕНЬ медленной. Приобретение
математического сопроцессора настоятельно рекомендуется, он того
стоит.Некоторые математические сопроцессоры работают лучше, чем другие.
Нам неприятно это признавать, но Intel пока никого не подводил. Если
вы не уверены, что сопроцессор будет работать с FreeBSD, избегайте
клонов.Какие ещё устройства поддерживаются во FreeBSD?В Руководстве
приведён список остальных устройств, которые поддерживаются во
FreeBSD.Поддерживает ли FreeBSD управление энергосбережением на
лаптопах?FreeBSD поддерживает APM на некоторых машинах. Поищите в файле
конфигурации ядра LINT слово APM.Решение специфичных проблем с аппаратным обеспечениемЭтот раздел содержит решения специфичных проблем с аппаратным
обеспечением, с которыми сталкиваются наши пользователи.Компьютеры Micron зависают при загрузкеНекоторые материнские платы Micron имеют BIOS, не удовлетворяющую
стандарту PCI BIOS, что приводит к печальным последствиям при
загрузке FreeBSD, потому что имеет место несоответствие устройств
PCI занимаемым ими адресам.Для решения этой проблемы отключите в BIOS опцию Plug and Play
Operating System.Более подробная информация об этой проблеме находится по следующему
адресу:
http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micronFreeBSD не распознаёт мой новейший контроллер от Adaptec.Новый набор микросхем AIC789x от Adaptec поддерживается подсистемой CAM
SCSI, впервые появившейся в 3.0. Патчи для 2.2-STABLE находятся по адресу
ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/.
Загрузочный диск с поддержкой CAM доступен по адресу
http://people.FreeBSD.org/~abial/cam-boot/.
В обоих случаях прежде чем начать, прочтите файл README. FreeBSD не находит внутренний модем Plug & Play.Вам нужно добавить PnP ID вашего модема в список PnP ID драйвера
последовательного порта. Для включения поддержки Plug & Play,
откомпилируйте новое ядро с опцией controller pnp0
в конфигурационном файле, и перезагрузите машину. Ядро
выведет список ID всех найденных PnP-устройств. Добавьте PnP ID модема в
таблицу в файле /sys/i386/isa/sio.c, где-то в районе
2777 строки. Чтобы найти таблицу, поищите слово SUP1310
в структуре siopnp_ids[]. Снова постройте ядро,
проинсталлируйте его и перезагрузитесь. Теперь ваш модем должен быть
опознан.Вам может понадобиться отконфигурировать PnP-устройства командой
pnp в конфигураторе во время загрузки следующим
образом:
pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8
чтобы модем был распознан.Как сделать, чтобы приглашение boot: выводилось на консоль на
последовательном порту?Постройте ядро с параметром
options COMCONSOLE.Создайте файл /boot.config, поместив туда только текст
.Отключите клавиатуру.Подробная информация находится в файле
/usr/src/sys/i386/boot/biosboot/README.serial.Почему сетевой адаптер 3Com PCI не работает с компьютерами
Micron?Некоторые материнские платы Micron имеют BIOS, не удовлетворяющую
стандарту PCI BIOS, что приводит к несоответствию устройств PCI
занимаемым ими адресам. Это приводит к печальным последствиям при
загрузке FreeBSD.Для решения этой проблемы отключите в BIOS опцию Plug and Play
Operating System.Более подробная информация об этой проблеме находится по следующему
адресу:
http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micronПоддерживает ли FreeBSD многопроцессорные системы (SMP)?Поддержка SMP (Symmetric Multiprocessing) имеется только в 3.0-STABLE и
последующих релизах. По умолчанию поддержка SMP в ядре
GENERIC не включена, так что для её включения вам
нужно будет перекомпилировать ядро. Посмотрите в файл
/sys/i386/conf/LINT, чтобы определить, какие параметры
нужно поместить в конфигурационный файл вашего ядра.При загрузке с установочной дискеты машины с материнской платой
ASUS K7V зависают. Как это исправить?Войдите в настройку BIOS и выключите защиту от загрузочных
вирусов.Устранение некоторых проблемНа моём винчестеры есть запорченные блоки!Если это SCSI-устройство, то винчестер должен иметь возможность
автоматической переадресации таких блоков. Однако по непонятным
причинам во многих поставляемых дисках эта возможность отключена...Чтобы её включить, вам нужно изменить режим работы устройства, что
во FreeBSD может быть выполнено администратором посредством команды
&prompt.root; scsi -f /dev/rsd0c -m 1 -e -P 3и изменить значения параметров AWRE и ARRE с 0 на 1:-
AWRE (Auto Write Reallocation Enbld): 1
ARRE (Auto Read Reallocation Enbld): 1
Последующие параграфы были предоставлены Тэдом Миттельштадтом
(Ted Mittelstaedt):Для дисков IDE появление запорченных блоков является признаком
возможных неприятностей. Все современные IDE-диски поставляются с
включенной возможностью переадресации испорченных блоков. Все
производители винчестеров в настоящее время предоставляют расширенные
гарантии и заменяют диски с запорченными блоками.Если вы всё же хотите спасти ваш диск IDE с запорченными блоками,
вы можете попытаться найти программу диагностики винчестеров от
производителя и протестировать ею диск. Иногда эти программы могут
заставить электронику винчестера пересканировать диск в поисках
испорченных блоков и заблокировать их.В случае дисков стандартов ESDI, RLL и MFM, наличие испорченных блоков
является обычным явлением и не является большой проблемой. В ПК
контроллер винчестера и BIOS берут на себя работу по блокировке
испорченных блоков. Это прекрасно работает в случае операционных систем
типа DOS, которые используют вызовы BIOS для доступа к диску. Однако
драйвер диска во FreeBSD не обращается к BIOS, поэтому для обеспечения
подобной функциональности существует bad144. bad144 работает только с
драйвером wd (что означает, что эта утилита не поддерживается во FreeBSD
4.0), её НЕВОЗМОЖНО использовать со SCSI. bad144 помещает все
найденные испорченные сектора в специальный файл.У bad144 имеется особенность - специальный файл с испорченными
блоками помещается на последнюю дорожку диска. Так как этот файл
может содержать список испорченных секторов, находящихся в начале
диска, где может располагаться файл ядра /kernel, он должен быть
доступен загрузчику, использующему вызовы BIOS для чтения файла ядра.
Это значит, что диск, который использует bad144, не должен иметь
размеры, превышающие 1024 дорожки, 16 головок и 63 сектора. Это
ограничивает размер диска, обрабатываемого bad144, 500 мегабайтами.Для использования bad144, просто установите Bad Block
в положение ON на экране программы fdisk во время начальной установки.
Это работает начиная с FreeBSD 2.2.7. Диск должен иметь размер,
не превышающий 1024 дорожки. Рекомендуется, чтобы до этого диск
проработал не менее 4 часов для перехода в рабочий тепловой режим и
стабильный режим работы головок.Если диск имеет размер, превышающий 1024 головки (как, например,
большой диск ESDI), контроллер ESDI использует особый режим
трансляции, чтобы это работало в DOS. Драйвер wd будет знать об этих
режимах трансляции, ЕСЛИ вы укажете на использование
преобразованных параметров в команде set
geometry программы fdisk. Вы также НЕ должны использовать режим
dangerously dedicated при выделении раздела для
FreeBSD, так как при этом параметры диска не принимаются во внимание.
Также, хотя fdisk будет использовать изменённые параметры, он всё же
помнит настоящий размер диска, и попытается создать слишком большой
раздел FreeBSD. Если параметры диска изменились на транслированные,
раздел ДОЛЖЕН быть создан вручную с указанием количества блоков.Самым быстрым способом является установка большого диска ESDI с
контроллером ESDI, загрузка DOS и выделение на нём раздела DOS. Затем
запустите инсталляционную программу FreeBSD и в экране программы
fdisk найдите и запишите размер блока и их количество раздела DOS.
Затем установите параметры в те же значения, которые использует DOS,
удалите раздел DOS и создайте совмещённый раздел FreeBSD с
ранее записанным размером блока. Затем установите загрузку с этого раздела
и включите сканирование испорченных блоков. Во время установки сначала,
ещё до создания файловых систем, запустится bad144 (вы можете это
увидеть по Alt-F2). Если возникнут проблемы при создании файла с
запорченными секторами, вы установили слишком большие параметры диска
- перезагрузитесь и начните всё сначала (включая повторные разбиение
на разделы и форматирование винчестера в DOS).Если переадресация включена и всё равно на диске присутствуют
запорченные блоки, то, по-видимому, остаётся только заменить винчестер.
Количество испорченных блоков с течением времени имеет тенденцию только
увеличиваться.FreeBSD не распознаёт мой EISA SCSI контроллер Bustek 742a!Нижеследующая информация специфична для 742a, но может касаться и
других адаптеров от Buslogic (Bustek = Buslogic).Существуют две основных версии адаптеров 742a. Это
аппаратные модификации A-G и модификации H и выше. Буква, обозначающая
модификацию, расположена после номера сборки на кромке адаптера. На
адаптере 742a установлены две микросхемы ПЗУ, одна содержит BIOS, а
другая - микрокод (так называемое firmware). Для FreeBSD не имеет
значения используемая версия BIOS, но имеет значение версия микрокода.
Buslogic высылает обновления для ПЗУ, если вы позвоните в их отдел
технической поддержки. Микросхемы с BIOS и микрокодом поставляются
соответствующими парами. В ПЗУ адаптера вы должны иметь самую
последнюю версии микрокода для вашей аппаратной модификации.Адаптерам модификаций A-G может только подойти BIOS/Firmware версий
вплоть до 2.41/2.21. Адаптерам модификаций H и старше подходят самые
последние версии BIOS/Firmware 4.70/3.37. Отличие между версиями
микрокода заключается в том, что версия микрокода 3.37 поддерживает
механизм round robin.На адаптерах Buslogic проставлен серийный номер. Если у вас
адаптер старой модификации, вы можете позвонить в подразделение RMA
фирмы Buslogic, сказать им серийный номер адаптера и попытаться
обменять его на более новую модификацию. Если адаптер достаточно нов,
то они его поменяют.FreeBSD 2.1 поддерживает микрокод модификаций только 2.21 и выше.
Если у вас версия микрокода старее, чем эта, то адаптер не будет
распознаваться как адаптер Buslogic. Однако он может быть опознан
как Adaptec 1540. Ранние версии микрокода от Buslogic содержат режим
эмуляции AHA1540. Однако для EISA-адаптера всё это выглядит
как-то неприлично.Если у вас адаптер старой модификации и вы получили микрокод 2.21
для него, установите перемычку W1 в положение B-C, по умолчанию она
находится в положении A-B.Не распознаётся SCSI-контроллер на HP Netserver!В общем-то это известная проблема. EISA-контроллеры SCSI,
расположенные на материнской плате машин HP Netserver, занимают
EISA-слот номер 11, так что все настоящие слоты EISA будут
ему предшествовать. Так как адресное пространство для слотов EISA выше 10
пересекается с адресным пространством, предназначенным для PCI, то
автоконфигуратор FreeBSD в настоящее время не может эту проблему
нормально обойти.Так что пока лучшее, что вы можете предпринять, это попытаться
указать, что пересечения диапазонов адресов нет :), установив опцию
ядра EISA_SLOTS в значение 12. Отконфигурируйте и
откомпилируйте ядро так, как это описано в разделе Руководства о
конфигурировании ядра.Конечно, это даст вам типичную ситуации "курица или яйцо"
при установке системы на такой машине. Для обхода этой проблемы
внутри UserConfig есть специальный хак. Не используя
визуального интерфейса, а только интерфейс командной строки,
просто наберите
eisa 12
quit
в приглашении, и проинсталлируйте систему как обычно. В любом случае
рекомендуется, что вы отконфигурируете и проинсталлируете собственное
ядро.Надеемся, что будущие версии будут содержать полное решение этой
проблемы.Вы не сможете использовать режим dangerously
dedicated на машинах HP Netserver. Полное описание причин
содержится в этом замечании.Что не так с IDE-контроллером CMD640?Этот контроллер не рабочий. Он не может отрабатывать команды на
обоих каналах одновременно.Решение этой проблемы существует и включается автоматически, если
в вашей системе используется этот контроллер. Подробная информация
находится на страницах Справочника по дисковому драйверу (man 4 wd).Если вы уже работаете с FreeBSD 2.2.1 или 2.2.2 с IDE-контроллером
CMD640 и хотите использовать второй канал, постройте новое ядро с
включенной опцией options "CMD640". В версии 2.2.6 и
выше это включено по умолчанию.Выдаются сообщения типа ed1: timeout.Обычно это вызвано конфликтом прерываний (например, двух адаптеров,
использующих один и тот же IRQ). FreeBSD до версии 2.0.5R была
нечувствительна к таким конфликтам, и драйвер сетевого адаптера
оставался работоспособен даже при конфликтах IRQ. Однако с версии
2.0.5R и выше, конфликты IRQ больше не считаются безобидными.
Загрузитесь с опцией -c и смените строку, описывающую ed0/de0/...
на соответствующую вашей системе..Если вы используете разъём BNC сетевого адаптера, таймауты
устройства могут быть вызваны плохим терминированием. Чтобы это
проверить, подключите терминатор к адаптеру (без кабеля) и
посмотрите, не исчезли ли сообщения об ошибках.Некоторые NE2000-совместимые адаптеры выдают такую ошибку, если нет
связи по UTP-порту или отключен кабель.При монтировании компакт-диска, выдаётся сообщение Incorrect
super block.В параметрах команды mount вам нужно
указать тип устройства, который вы собираетесь смонтировать. По
умолчанию
mount(8) полагает, что монтируемая файловая система имеет тип
ufs. При монтировании файловой системы
CDROM нужно указать опцию в команде mount(8). При
этом, конечно же, предполагается, что CDROM содержит файловую систему
стандарта ISO 9660, как на большинстве CDROM. С версии 1.1R FreeBSD
автоматически распознаёт также расширение Rock Ridge (для длинных имён
файлов).Например, если вы хотите смонтировать устройство CDROM
/dev/cd0c в каталог /mnt, вы
должны выполнить следующую команду:
&prompt.root; mount -t cd9660 /dev/cd0c /mntЗаметьте, что имя устройства (/dev/cd0c в этом
примере) может быть другим, в зависимости от интерфейса вашего CDROM.
Отметьте, что опция всего лишь приводит к вызову
команды mount_cd9660, так что пример выше может быть
укорочен до такой команды:
&prompt.root; mount_cd9660 /dev/cd0c /mntПри монтировании компакт-диска выдаётся сообщение Device not
configured.Обычно это означает, что в приводе CDROM нет компакт-диска либо
устройство не было обнаружено на этапе загрузки. Вставьте в
привод какой-нибудь диск, и/или проверьте его настройку как
ведущего/ведомого устройства, если оно типа IDE (ATAPI). Для привода
CDROM может потребоваться несколько секунд для обнаружения, что был
вставлен диск, так что будьте терпеливыми.Иногда SCSI CDROM может отсутствовать в системе из-за недостатка
времени на ответ при сбросе шины. Если ваш привод CD-ROM является
SCSI-устройством, пожалуйста, попробуйте добавить такой символ в ваш
файл конфигурации ядра и перекомпилируйте его.
options "SCSI_DELAY=15"
Мой принтер печатает невероятно медленно. Что тут можно
сделать?Если принтер подключен к параллельному порту, и единственной
проблемой является его медлительность, попробуйте установить порт в
режим polled:
&prompt.root; lptcontrol -pУтверждается, что некоторые новейшие принтеры от HP не работают
корректно в режиме прерываний, скорее всего из-за (это ещё не совсем
точно выяснено) проблем с временными задержками.Программы аварийно завершают работу с ошибкой Signal
11.Ошибки выполнения, связанные с 11 сигналом, происходят, когда ваш
процесс пытается обратиться к области памяти, доступ к которой ему не был
дан операционной системой. Если что-то подобное происходит в случайные
на первый взгляд промежутки времени, то вам нужно попытаться выяснить
подробности происходящих событий более детально.Эти проблемы могут быть классифицированы следующим образом:Если проблема возникает только в определенном приложении, которое
было самостоятельно вами разработано, то, скорее всего, это ошибка в
вашем коде.Если это проблема в части базового комплекта системы FreeBSD, то
это тоже может быть ошибка в программном коде, хотя в большинстве
случаев такие проблемы обнаруживаются и ошибки исправляются задолго
до того, как обычным читателям FAQ доводится использовать этот код
(именно для этого предназначена версия -current).В частности, достоверно *не* ошибка FreeBSD, если вы сталкиваетесь
с проблемой при компиляции программы, но при работе компилятора место
сбоя каждый раз изменяется.Например, положим, что вы запускаете команду "make buildworld" и
компиляция завершилась аварийно при попытке компиляции ls.c в to ls.o.
Если при следующей попытке повторно выполнить "make buildworld"
компиляция прервется на том же самом месте, то это ошибки процесса
построения -- попробуйте обновить исходные тексты и попробуйте снова.
Если компиляция прерывается в каком-то другом месте, то в этом
практически достоверно виновато обрудование.Что вы должны сделать:В первом случае вы должны воспользоваться отладчиком, к примеру, gdb,
для нахождения точки программы, в которой делается попытка доступа к
неверному адресу и затем исправить эту ошибку.Во втором случае вам нужно проверить, что ваше оборудование
исправно.Среди часто приводящих к этому причин:Ваши винчестеры могут перегреваться: Проверьте работу
вентиляторов в вашем системном блоке, так как ваш диск (и может,
также другие компоненты, могут перегреваться).Работающий процессор перегревается: Это может произойти из-за
увеличения частоты процессора за рабочие границы или поломки
вентилятора на процессоре. В любом случае вам нужно убедиться, что
ваше оборудование работает так, как ему положено, по крайней мере,
на момент поиска причин неисправности, другими словами, Установите
частоту работы на настройки по умолчанию.Если вы превысили рабочие частоты работы процессора, заметьте,
что дешевле обходится медленная система, чем сгоревшая система,
требующая замены! Также общество нечасто симпатизирует
проблемам на таких системах, вне зависимости от того, считаете ли
вы увеличение рабочей частоты не влияющим на работу или нет.Хитрая память: Если у вас установлено множество микросхем
SIMM/DIMM, то вытащите их все и попытайтесь поработать индивидуально
с каждой микросхемой SIMM или DIMM и локализовать проблему либо до
проблематичной микросхемы DIMM/SIMM, либо даже их комбинации.Чересчур оптимистические настройки материнской платы: При
настройке вашей BIOS и выборе положения перемычек на материнской
плате вы имеете возможность задать различные частоты и задержки,
в большинстве случаев настройки по умолчанию достаточны, но иногда
установка слишком малых периодов ожидания для ОЗУ, установка
параметра "RAM Speed: Turbo" или подобных параметров в BIOS вызовет
странное поведение. Возможным решением может стать установка
параметров BIOS по умолчанию, но сначала стоит записать ваши
настройки!Неустойчивое или недостаточное электропитание материнской платы.
Если в вашей системе есть неиспользуемые адаптеры ввода/вывода,
винчестеры или приводы компакт-дисков, попробуйте временно их убрать
или отключить от кабеля электропитания, чтобы посмотреть, сможет ли
ваш блок питания работать с меньшей нагрузкой. Или попробуйте
воспользоваться другим блоком питания, желательно большей мощности
(например, если имеющийся блок питания рассчитан на 250 Ватт,
попробуйте другой мощностью 300 Ватт).Вы также должны прочитать FAQ по SIG11 (ссылка дана ниже), в котором
даны прекрасные описания всех этих проблем, хотя и с точки зрения Linux.
Также обсуждается, как аппаратура или программное обеспечение для
тестирования памяти могут пропускать сбойную память.Наконец, если ничего из этого не помогает, то возможно, что просто вы
нашли ошибку во FreeBSD и должны следовать инструкциям по посылке
сообщений о проблемах.Подробная информация по этому вопросу содержится в FAQ по проблеме SIG11.При загрузке монитор темнеет и теряет синхронизацию!Это известная проблема с видеоадаптерами ATI Mach 64. Она вызвана тем,
что этот адаптер использует адрес 2e8, как и
четвёртый последовательный порт. Из-за ошибки (или особенности работы?) в
драйвере
sio(4) он обращается к порту, даже если если он не существует, и
даже если вы отключите sio3 (четвёртый порт),
который, как правило, использует этот адрес ввода/вывода.Пока это не исправлено, используйте следующий метод:В приглашении загрузчика наберите . (Это
переведёт ядро в режим конфигурации).Отключите устройства sio0,
sio1, sio2 и
sio3 (все их). После этого драйвер sio не
будет активизироваться и проблем не будет.Для продолжения загрузки наберите exit.Если вам нужно использовать последовательные порты, вы должны построить
новое ядро со следующей модификацией: в файле
/usr/src/sys/i386/isa/sio.c найдите строчку, содержащую
число 0x2e8 и удалите её вместе с предшествующий запятой
(оставив следующую). После этого следуйте обычным указаниям по построению
ядра.Даже после этих изменений вы можете обнаружить, что X Window работает
ненормально. Если это произошло, удостоверьтесь, что вы используете
XFree86 версии не ниже 3.3.3. Этот и последующие релизы имеют встроенную
поддержку адаптеров Mach64 и даже отдельный X-сервер для таких
адаптеров.У меня 128 МБ ОЗУ, но система используется только 64.Так как для определения объёма памяти FreeBSD использует информацию
BIOS, она ограничена 16 битами, используемыми для выражения
размера ОЗУ в килобайтах (65535 КБ = 64МБ) (или меньше... некоторые
BIOS ограничивают размеры памяти до 16МБ). Если у вас больше чем 64МБ
ОЗУ, FreeBSD будет пытаться обнаружить эту память; однако эта попытка
может и не удасться).Для решения этой проблемы вам нужно использовать опцию ядра,
указанную ниже. Способ выяснения полной информации о памяти из BIOS
существует, но у нас нет места в загрузочном блоке, чтобы это делать.
Когда проблема нехватки места в загрузочных блоках будет решена, мы
будем использовать расширенные функции BIOS для получения полной
информации о памяти... но пока мы остановились на опции ядра.options "MAXMEM=n"Здесь n - это объём памяти в килобайтах. Для
машины со 128 МБ ОЗУ вам нужно использовать значение
131072.FreeBSD 2.0 аварийно завершает работу с сообщением kmem_map
too small!Сообщение может также выглядеть как mb_map too
small!Такое завершение работы показывает, что системе не хватает
виртуальной памяти для сетевых буферов (точнее, структур mbuf). Вы
можете увеличить количество виртуальной памяти для структур mbuf,
добавив:options "NMBCLUSTERS=n"в файл конфигурации ядра, где n - это число
в пределах 512-4096, в зависимости от числа TCP-соединений, которое вам
нужно одновременно обслуживать. Я рекомендую попробовать значение 2048 -
это должно избавить вас от аварийных остановов. Вы можете отслеживать
количество структур mbuf, выделенных/используемых системой командой netstat -m.
Значение по умолчанию для NMBCLUSTERS равно
512 + MAXUSERS * 16.При перезагрузке с новым ядром выдаётся сообщение CMAP busy
panic.Процедура определения устаревших файлов
/var/db/kvm_*.db иногда даёт сбой и использует не те
файлы, что может вызвать аварийный останов системы.Если это случилось, перезагрузитесь в однопользовательском режиме
и выполните команду:
&prompt.root; rm /var/db/kvm_*.dbahc0: brkadrint, Illegal Host Access at seqaddr 0x0Это - результат конфликта со SCSI-адаптером Ultrastor. Во время загрузки войдите в меню конфигурации ядра и выключите
устройство
uha0, являющееся источником этой проблемы.Sendmail говорит, что mail loops back to
myselfВ FAQ по sendmail на это дан такой ответ:-
* Выдаются сообщения "Local configuration error", примерно такие:
553 relay.domain.net config error: mail loops back to myself
554 <user@domain.net>... Local configuration error
Как можно решить эту проблему?
Согласно записям MX, почта для домена (скажем, domain.net) была
перенаправлена на указанный хост (в нашем случае relay.domain.net),
но он не распознаётся как domain.net. Добавьте строку domain.net в
файл /etc/sendmail.cw (если вы используете FEATURE(use_cw_file)) или
добавьте "Cw domain.net" в /etc/sendmail.cf.
Текущая версия
FAQ по sendmail больше не поставляется вместе с sendmail.
Однако этот документ регулярно помещается в конференции
comp.mail.sendmail,
comp.mail.misc,
comp.mail.smail,
comp.answers и
news.answers.
Вы можете получить копию по электронной почте, послав сообщение,
содержащее команду
send usenet/news.answers/mail/sendmail-faq в теле
письма, в адрес mail-server@rtfm.mit.edu.Полноэкранные приложения на удалённой машине ведут себя
неправильно!На удалённой машине тип терминала может быть установлен в значение,
отличное от типа терминала cons25, требуемом при
использовании консоли FreeBSD.Есть несколько возможных способов решения этой проблемы:После входа на другую машину установите значение переменной
окружения TERM равным ansi или
sco, если эта машина знает об этих
типах терминалов.Используйте эмулятор VT100 типа screen
на консоли FreeBSD. Screen даёт вам
возможность открывать несколько рабочих сеансов на одном терминале,
и она имеет ещё ряд полезных особенностей. Каждое окно программы
screen ведёт себя как терминал VT100, так
что переменная TERM на удалённой машине должна быть установлена в
значение vt100.Опишите терминал cons25 в базе данных
характеристик терминалов на удалённой машине. Способ описания
зависит от используемой на этой машине операционной системе. Вам
может помочь чтение руководств по администрированию удалённой
системы.Запустите X-сервер на стороне FreeBSD и войдите на удалённую
систему с помощью какого-либо эмулятора терминала, работающего в X
Window, такого, как xterm или
rxvt. Переменная окружения TERM на удалённой
машине должна быть установлена в значение xterm
или vt100.Выводятся сообщения calcru: negative
time...Это может быть вызвано различными аппаратными или программными
проблемами, связанными с прерываниями. Это может быть связано как
с ошибками при программировании, так и с природой самих устройств.
Например, работа с TCP/IP по параллельному порту с использованием
большого MTU приводит к этой проблеме, также как использование
графических акселераторов; в последнем случае вы должны проверить
настройку прерываний на графическом адаптере.Одним из проявлений этой проблемы является прерывание работы
процессов с диагностическим сообщением SIGXCPU exceeded cpu time
limit.Если эта проблема не может быть решена, для FreeBSD 3.0 от 29
ноября 1998 и выше измените значение системной переменной:
&prompt.root; sysctl -w kern.timecounter.method=1Это коснётся производительности системы, но, принимая во внимание
источник этой проблемы, это будет незаметно. Если проблема всё ещё
даёт о себе знать, оставьте значение этой переменной равным единичке
и увеличьте значение параметра NTIMECOUNTER в файле
конфигурации вашего ядра. Если в конце концов вы достигнете значения
NTIMECOUNTER=20, то вам эту проблему решить не удастся,
прерывания дают слишком большую нагрузку на процессор, чтобы обеспечить
отслеживание времени.Выдаётся сообщение pcm0 not found или мой звуковой
адаптер определяется как pcm1, хотя в конфигурационном
файле ядра указана строчка device pcm0Такое бывает во FreeBSD 3.x со звуковыми адаптерами PCI. Устройство
pcm0 предназначено исключительно для адаптеров ISA,
поэтому, если у вас имеется адаптер PCI, то вы увидите эту ошибку и ваш
адаптер будет распознан как pcm1.
Вы не сможете избавиться от предупреждающего сообщения, просто
изменив строку в конфигурационном файле ядра на
device pcm1, так как это приведёт к закреплению
устройства pcm1 за адаптерами ISA, а ваш адаптер PCI
будет найден как устройство pcm2 (и появится
предупреждение pcm1 not found).
Если у вас имеется звуковой адаптер PCI, то вам нужно также создать
устройство snd1, а не snd0:
&prompt.root; cd /dev
&prompt.root; ./MAKEDEV snd1Такой ситуации не возникает во FreeBSD 4.x, так как в ней было положено
много усилий, чтобы сделать её более PnP-центричной и
устройство pcm0 больше не предназначено исключительно
для адаптеров ISAПосле обновления FreeBSD до версии 4.x мой PnP-адаптер больше не
обнаруживается (или определяется как unknown)FreeBSD 4.x теперь гораздо более PnP-центрична,
что отражается на некоторых устройствах PnP (к примеру, звуковых
адаптерах и внутренних модемах), перестающих работать, хотя они
функционировали в системе FreeBSD 3.x.Причины такого поведения объясняются в следующем сообщении
электронной почты, опубликованном в списке рассылки freebsd-questions
Питером Уэммом (Peter Wemm) в ответ на вопрос о внутреннем модеме,
который перестал распознаваться после обновления до FreeBSD 4.x
(комментарии внутри [] были добавлены для пояснения
контекста послания.
BIOS, поддерживающая PNP, предварительно отводит и оставляет ему
[модему] место в адресном пространстве портов, так что [в 3.x]
процедура обнаружения в старом стиле ISA находит его
здесь.В 4.0 код для работы с ISA гораздо более PnP-центричен. [В 3.x]
было возможно при распознавании ISA найти беспризорное
устройство и затем по идентификатору PNP-устройства произвести поиск и
получить ошибку из-за конфликта ресурсов. Поэтому для предотвращения
повторной процедуры распознавания в нем сначала выключаются все
управляемые адаптеры. Это также означает, что для поддерживаемого
оборудования PnP нужно знать их PnP-идентификаторы. Имеются планы на
обеспечение возможности найстройки этого со стороны
пользователя.
Чтобы заставить устройство работать снова, требуется определить его
PnP-идентификатор и добавить его в список, который используется
процедурой распознавания ISA для идентификации устройств PnP. Этот
идентификатор можно получить при помощи программы &man.pnpinfo.8;, найдя
устройство в ее выдаче, вот, например, вывод команды &man.pnpinfo.8; в
случае внутреннего модема:
&prompt.root; pnpinfo
Checking for Plug-n-Play devices...
Card assigned CSN #1
Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
PnP Version 1.0, Vendor Version 0
Device Description: Pace 56 Voice Internal Plug & Play Modem
Logical Device ID: PMC2430 0x3024a341 #0
Device supports I/O Range Check
TAG Start DF
I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
[16-bit addr]
IRQ: 4 - only one type (true/edge)
[лишние строки TAG исключены]
TAG End DF
End Tag
Successfully got 31 resources, 1 logical fdevs
-- card select # 0x0001
CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
Logical device #0
IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
IRQ 5 0
DMA 4 0
IO range check 0x00 activate 0x01
Информация, которая вам нужна, находится в строке Vendor
ID в самом начале вывода команды. Шестнадцатиричное число в
скобках (в этом примере 0x3024a341) является PnP-идентификатором, а
строчка, идущая прямо перед ним (PMC2430) является уникальным
ASCII-идентификатором. Эту информацию нужно добавить в файл
/usr/src/sys/isa/sio.c.Сначала вы должны сделать резервную копию файла
sio.c просто на тот случай, если что-то пойдет не
так. Эта копия также может потребоваться для создания патча для
посылки его вместе с вашим PR (вы же собираетесь послать PR, не правда
ли?) отредактировав файл sio.c и поискав
строчку
static struct isa_pnp_id sio_ids[] = {
после чего переместитесь ниже и найдите подходящее место, чтобы
добавить строчку для вашего устройства. Записи имеют примерно такой
вид, и они отсортированы по ASCII-строкам Vendor ID, которые должны быть
помещены в поле комментария справа от строки кода вместе с полным
описанием устройства (если оно поместится) или частью из
Device Description вывода программы
&man.pnpinfo.8;:
{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */
Добавьте шестнадцатиричный идентификатор Vendor ID вашего устройства
в соответствующее место, сохраните файл, перестройте ядро и выполните
перезагрузку. Ваше устройство должно теперь быть найдено в виде
устройства sio, как это и было во FreeBSD 3.xКоммерческие приложенияЭтот раздел выглядит довольно заброшенным, однако мы,
конечно же, надеемся, что производители сделают добавления! :) Проект
FreeBSD финансово не заинтересован в успехах никакой из компаний, которые
здесь упоминаются, хотя приводит их список в интересах общества (в
предположении, что коммерческий интерес к FreeBSD может положительно
повлиять на дальнейшее развитие FreeBSD). Мы просим поставщиков
коммерческого программного обеспечения присылать нам информацию о
ваших продуктах для включения в этот список. Более полный список
производителей находится на странице
производителей.Где можно купить Motif для FreeBSD?Обратитесь в фирму Apps2go, предлагающую
самый дешёвый дистрибутив Motif 2.1.20 для FreeBSD (как для i386, так и для
Alpha) в формате ELF.Существуют два дистрибутива, для разработчиков
(development edition) и ещё более дешёвая времени
выполнения (runtime edition). В эти дистрибутивы
включены:
OSF/Motif manager, xmbind, panner, wsm.Пакет разработчика с uil, mrm, xm, xmcxx, файлами include
и Imake.Статические и динамические ELF-библиотеки (для использования
с FreeBSD 3.0 и выше).Демонстрационные приложения.При оформлении заказа не забудьте указать, что вам нужна версия Motif
именно для FreeBSD (не забудьте также указать архитектуру процессора)!
Apps2go также продаёт версии для NetBSD и OpenBSD. В
настоящий момент их можно получить только по FTP.Дополнительная информацияWWW-сервер Apps2goилиэлектронные адреса отделов продаж и поддержки.илителефоны (817) 431 8775 и +1 817 431-8775Обратитесь в фирму Metro Link для
получения дистрибутива Motif 2.1 для FreeBSD в форматах ELF или
a.out.В этот дистрибутив включены:
OSF/Motif manager, xmbind, panner, wsm.Пакет разработчика с uil, mrm, xm, xmcxx, файлами include
и Imake.Статические и динамические библиотеки (укажите ELF для
использования с FreeBSD 3.0 и выше; или a.out при использовании
FreeBSD 2.2.8 и ранее).Демонстрационные приложения.Преформатированные страницы справочника.При заказе обязательно отметьте, что вам требуется версия Motif
именно для FreeBSD! Metro Link также предлагает
версии для Linux. Они доступны на CDROM или для скачивания по FTP.Обратитесь в фирму Xi Graphics за
дистрибутивом Motif 2.0 для FreeBSD в формате a.out.В этот дистрибутив включены:
OSF/Motif manager, xmbind, panner, wsm.Пакет разработчика с uil, mrm, xm, xmcxx, файлами include
и Imake.Статические и динамические библиотеки (для использования с
FreeBSD 2.2.8 и ранее).Демонстрационные приложения.Отформатированные страницы Справочника.При заказе обязательно укажите, что вам требуется версия Motif именно
для FreeBSD! Xi Graphics также предлагает версии
для BSDI и Linux. В настоящее время это набор из 4 дискет... в будущем
это будет стандартный дистрибутив на компакт-диске, как их CDE.Где можно купить CDE для FreeBSD?Фирма Xi Graphics предлагала CDE для FreeBSD,
но сейчас этот продукт в продаже отсутствует.KDE - это свободно
распространяемый вариант десктопа для X11, который во многом похож на CDE.
Вам может также приглянуться xfce.
Как KDE, так и xfce могут быть найдены в коллекции портов.Существуют ли коммерческие высокопроизводительные X-серверы?Да, фирмы Xi Graphics и
Metro Link предлагают свой
продукт Accelerated-X для FreeBSD и других систем на базе Intel.Metro Link предлагает высокопроизводительный X-сервер, в котором
предусмотрена упрощённая процедура конфигурирования с помощью набора
утилит FreeBSD для работы с пэкэджами, поддержка нескольких
видеоадаптеров одновременно и он поставляется только в бинарном виде,
доступном по FTP. Нельзя не отметить, что Metro Link продаёт всё это
по очень доступной цене в 39 долларов.Metro Link продаёт также Motif для FreeBSD в форматах ELF и a.out
(смотрите выше).Дополнительная информация
WWW-сервер Metro Linkилиадреса электронной почты отделов продаж и поддержки.илителефоны (954) 938-0283 и +1 954 938-0283Xi Graphics предлагает высокопроизводительный X-сервер, который
обеспечивает простую конфигурацию, поддержку нескольких видеоадаптеров
и поставляется только в бинарной форме, в форме стандартного
дистрибутива на дискетах для FreeBSD и Linux. Xi Graphics также
предлагает высокопроизводительный X-сервер с поддержкой компьютеров
класса laptop.Имеется бесплатная демонстрационная версия 5.0.Xi Graphics также предлагает Motif и CDE для FreeBSD (смотрите
выше).Дополнительная информация
Xi Graphics WWW pageилиSales или Support по email.илителефон (800) 946 7433 или +1 303 298-7478.Существуют ли СУБД для FreeBSD?Да! Обратитесь к разделу
Поставщики программного обеспечения на веб-сервере FreeBSD.Также посмотрите раздел Базы данных
Коллекции портов.Можно ли запустить Oracle на FreeBSD?Да. Руководство по настройке Linux-Oracle на FreeBSD находится
по следующим адресам:
http://www.scc.nl/~marcel/howto-oracle.html
http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsdПрикладные программыИтак, где находятся все прикладные программы?Пожалуйста, загляните на
страницу портов, содержащую информацию о программных продуктах,
перенесённых во FreeBSD. На данный момент в этом списке находится более
3400 приложений и он ежедневно увеличивается, так что почаще туда
заглядывайте или подпишитесь на список рассылки
freebsd-announce, в котором публикуется информация
о появлении новых приложений.Большинство портов предназначено для веток 2.2, 3.x и 4.x, и многие из
них должны нормально работать на системах версий 2.1.x. При выходе
нового релиза FreeBSD в него в каталог ports/
включается актуальная на момент выхода коллекция портов.Мы также поддерживаем концепцию пакаджа, являющегося не
более чем упакованным дистрибутивом в бинарной форме с некоторыми
встроенными возможностями по его настройке во время установки. Пакадж
может быть легко проинсталлирован и деинсталлирован снова без углубления
в детали того, какие файлы должны быть инсталлированы.Используйте меню установки пакаджей в
/stand/sysinstall (в пункте меню post-configuration)
или запускайте pkg_add(1) с указанием конкретных файлов
с пакаджами, которые вы хотите проинсталлировать. Файлы с пакаджами, как
правило, идентифицируются по их суффиксу .tgz, а для
тех, кто имеет дистрибутив системы на компакт-диске, предназначен каталог
packages/All, содержащий все эти файлы. Они также
могут быть получены по сети для разных версий FreeBSD со следующих
серверов:для 2.2.8-RELEASE/2.2.8-STABLE
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/для 3.X-RELEASE/3.X-STABLE
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/для 4.1-RELEASE/4-STABLE
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/для 5.X-CURRENT
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/или с ближайшего к вам зеркального сервера.Имейте в виду, что не все порты могут быть доступны в виде
пакаджей, так как постоянно идёт добавление новых. Неплохо время от
времени проверять, какие пакаджи доступны на основном сервере ftp.FreeBSD.org.Почему возможности /bin/sh так малы? Почему бы
во FreeBSD не использовать bash или какой-либо другой
командный процессор?Потому что в стандарте POSIX сказано, что все командные процессоры
должны вести себя так же, как shell.Более подробный ответ заключается в следующем: многим требуется, чтобы
разрабатываемые скрипты для командного процессора были переносимы между
многими системами. Именно поэтому в POSIX очень подробно описан командный
процессор и набор утилит. Большинство скриптов пишутся на языке процессора
Bourne shell, к тому же некоторые важные программные вызовы
(&man.make.1;, &man.system.3;, &man.popen.3; и их аналоги на языках скриптов
высокого уровня, таких как Perl или Tcl) предполагают для интерпретации
команд использование именно Bourne shell. Так как Bourne shell используется
столь широко и часто, то очень важно, чтобы он стартовал очень быстро, его
поведение было строго регламентировано и при этом потребности в оперативной
памяти были малы.В имеющейся реализации мы приложили максимум усилий для воплощения в
жизнь всех этих требований одновременно. Для того, чтобы сохранить
/bin/sh небольшим по размеру, мы не включили многие из
обычных возможностей, которые имеются в других командных процессорах.
Однако в Коллекцию Портов включены командные процессоры, обладающие гораздо
большими возможностями, такие, как bash, scsh, tcsh и zsh. (Вы можете
сами сравнить использование памяти всеми этими оболочками, посмотрев в
колонки VSZ и RSS вывода команды ps
-u).Где найти библиотеку libc.so.3.0?Похоже, что вы пытаетесь запустить пакадж, построенный в системе версии
2.2 и выше, на системе версии 2.1.x. Пожалуйста, прочтите предыдущий раздел
и найдите подходящий для вашей системы порт или пакадж.Выдаются сообщения Error: can't find
libc.so.4.0Вы случайно скачали пакаджи, предназначенные для систем версий 4.X и
5.X и пытались установить их на вашей системе FreeBSD версий 2.X или 3.X.
Пожалуйста, скачайте подходящие версии пакаджей.ghostscript выдаёт массу сообщений на моём 386/486SX.У вас нет сопроцессора, верно? Вам нужно добавить в ядро другой
эмулятор сопроцессора; это делается добавлением следующей строки в файл
конфигурации ядра и последующей его перекомпиляцией.
options GPL_MATH_EMULATE
Если вы поступаете таким образом, вам нужно будет
убрать опцию MATH_EMULATE.При запуске приложения SCO/iBCS2, оно прерывается на
socksys (только во FreeBSD 3.0 и более
ранних версий).Прежде всего вам нужно отредактировать файл
/etc/sysconfig (или /etc/rc.conf),
изменив в последнем разделе значение следующей переменной на
YES:
# Set to YES if you want ibcs2 (SCO) emulation loaded at startup
ibcs2=NO
Это включит загрузку модуля поддержки ibcs2 на этапе
загрузки системы.Затем вам нужно изменить каталог /compat/ibcs2/dev так, чтобы он
выглядел следующим образом:
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null
lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys
-rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null
crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx
Работа с socksys была значительно упрощена по сравнению с более ранними
версиями. Socksys должен указывать на /dev/null, чтобы
обмануть open & close. Код, имеющийся в -CURRENT, возьмёт на себя всё
остальное. Если вам нужен драйвер spx для
подключения X по локальному сокету, определите переменную
SPX_HACK при компиляции системы.Как настроить INN (Internet News) на моей машине?После установки пакаджа или порта для inn, для начала загляните
на страничку
Дэйва Бэрра (Dave Barr), посвящённую INN, где вы
найдёте соответствующий FAQ.Какую версию Microsoft FrontPage я должен иметь?Используй порт, дурачок! Среди портов имеется Apache с поддержкой
FrontPage.Поддерживает ли FreeBSD среду Java?Да. Посетите страницу
http://www.FreeBSD.org/java/.Почему некоторый порт не компилируется на моей машине
с 3.X-STABLE?Если вы используете FreeBSD версии, значительно отстающей от -CURRENT
или -STABLE, вам нужен пакет обновления, который можно найти по адресу
http://www.FreeBSD.org/ports/. Если вы отслеживаете все
изменения, то, скорее всего, кто-то внёс изменения в порт, так что он
работает в -CURRENT, но не работает в -STABLE. Так как предполагается, что
коллекция портов должна работать
как в ветке -CURRENT, так и в ветви -STABLE, то, пожалуйста, пошлите
сообщение об этой ошибке с помощью команды send-pr(1).
Где найти ld.so?Если вам необходимо запустить некоторые приложения в формате aout
типа Netscape Navigator на Elf-машине, такой как 3.1-R и выше,
то для этого требуется /usr/libexec/ld.so и некоторые
библиотеки в формате aout. Они включены в дистрибутив как compat22.
Запустите /stand/sysinstall или
install.sh в каталоге compat22, чтобы
установить этот компонент. Прочтите также документы ERRATA от
3.1-R и 3.2-R.Конфигурирование ядраЯ хочу изменить настройки ядра. Это сложно?Вовсе нет! Обратитесь к
соответствующему разделу Руководства, который посвящён этому
вопросу.Рекомендуем сохранить копию вашего ядра в файл
kernel.YYMMDD после того, как вы получите рабочую
версию, для того, чтобы в следующий раз, если вы испортите что-либо в
вашем конфигурационном файле, вы смогли загрузить это ядро, вместо того,
чтобы начинать снова с kernel.GENERIC. Это, в
частности, имеет смысл, если вы производите загрузку системы с
контроллера, который не поддерживается в стандартном ядре GENERIC (из
моего личного опыта).Я не могу скомпилировать ядро. Отсутствует
_hw_float.Позвольте мне угадать. Вы, наверное, удалили
npx0 из
вашего файла конфигурации ядра, потому что у вас нет сопроцессора, да?
А вот и неправильно! :-) Строка npx0ОБЯЗАТЕЛЬНА. Даже если у вас нет
математического сопроцессора, вы должны
включить поддержку устройства npx0.Почему моё ядро такое большое (больше 10МБ)?Скорее всего, вы компилировали ядро в отладочном
режиме. Ядра, построенные в этом режиме, содержат много
символьной информации, которая используется для отладки и сильно
увеличивает размер ядра. Заметьте, что, если вы работаете с FreeBSD версии
3.0 и старше, то уменьшения производительности при использовании
отладочного ядра нет или оно незначительно, однако отладочное ядро
полезно иметь под рукой на случай аварийного завершения работы
системы.Однако, если вы испытываете нехватку дискового пространства или
просто не хотите использовать отладочное ядро, проверьте, что имеют
место следующие две вещи:В конфигурационном файле вашего ядра нет строчки, имеющей такой
вид:makeoptions DEBUG=-gВы не запускали утилиту config с опцией
.Обе из вышеперечисленных ситуаций приведут к построению ядра в
отладочном режиме. Если же вы точно следуете указанным шагам, то сможете
построить обычное ядро и заметите значительное уменьшение его размера;
большинство ядер имеют размер от 1.5МБ до 2МБ.Конфликты прерываний при включении поддержки многопортовыx
коммуникационных адаптеров.Q. Когда я компилирую ядро с поддержкой
многопортовых коммуникационных адаптеров, сообщается, что только первый
порт будет тестироваться, а все остальные пропускаются из-за конфликтов
прерываний. Как это исправить?A. Проблема состоит в том, что во FreeBSD
встроен код, предохраняющий ядро от аппаратных и программных конфликтов.
Вам нужно убрать указания IRQ на всех портах, кроме одного.
Например:
#
# Высокоскоростной многопортовый коммуникационный адаптер - 16550 UARTS
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
Как включить поддержку накопителей QIC-40/80?Раскомментируйте следующую строку в файле конфигурации стандартного
ядра (или добавьте ее в конфигурационный файл вашего ядра), добавьте
flags 0x1 к строке, содержащей fdc и
перекомпилируйте ядро.
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 flags 0x1 vector fdintr
disk fd0 at fdc0 drive 0 ^^^^^^^^^
disk fd1 at fdc0 drive 1
#tape ft0 at fdc0 drive 2
Затем создайте устройство с именем /dev/ft0,
перейдя в каталог /dev и запустив команду
&prompt.root; sh MAKEDEV ft0для первого устройства, ft1 для второго и
так далее.У вас появится устройство с именем /dev/ft0, на
которое вы можете производить запись с помощью специальной программы
управления, называющейся ft - за
дополнительной информацией обратитесь к странице справочника по ft.Версии операционной системы, предшествующие ,
имеют огрехи, связанные с качеством носителя. Если у вас появились
проблема, когда ft прокручивает ленту
туда-сюда на одном и том же месте, попробуйте взять последнюю версию
программы ft с /usr/src/sbin/ft
из и попробовать её.Системное администрированиеГде расположены файлы конфигурации системы?Для FreeBSD версий от 2.0.5R до 2.2.1R основным конфигурационным файлом
является /etc/sysconfig. Все параметры указываются
здесь, а остальные конфигурационные файлы, такие, как
/etc/rc
и /etc/netstart просто его используют.Посмотрите файл /etc/sysconfig и измените значения
переменных на соответствующие вашей системе. В файле содержатся
комментарии, описывающие смысл этих переменных и способ их задания.В системах выше 2.2.1 и в 3.0 файл /etc/sysconfig
сменил название на говорящее само за себя rc.conf,
синтаксис описания переменных был несколько улучшен.
/etc/netstart тоже был переименован в
/etc/rc.network, так что все конфигурационные файлы
теперь можно перенести одной командой cp
/usr/src/etc/rc* /etc.А в системах версий 3.1 и выше /etc/rc.conf был
перемещён в /etc/defaults/rc.conf. Не
редактируйте этот файл! Вместо этого, если в файле
/etc/defaults/rc.conf имеется параметр, который вы
хотите изменить, то вы должны скопировать строчку с ним в файл
/etc/rc.conf и поменять его значение именно
здесь.Например, если вы хотите запустить named, сервер DNS, включенный в
поставку FreeBSD начиная с FreeBSD 3.1, всё, что вам нужно сделать, это:
&prompt.root; echo named_enable="YES" >> /etc/rc.confЧтобы запустить местные сервисы во FreeBSD 3.1 и выше, поместите
скрипты в каталог /usr/local/etc.rd. У этих скриптов
должен быть выставлен бит выполнимости, и их имена должны оканчиваться на
.sh. Во FreeBSD 3.0 и ранее, вы должны отредактировать файл
/etc/rc.local.Файл /etc/rc.serial предназначен для инициализации
коммуникационных адаптеров (например, установки характеристик
- работы последовательных портов ит д).
+ работы последовательных портов и тому подобное).
Файл /etc/rc.i386 предназначен для настройки
специфичных для архитектуры Intel параметров, таких, как эмуляция iBCS2
или характеристик системной консоли ПК.Как проще всего добавить пользователя?Используйте команду adduser.
Для выполнения более сложных операций обратитесь к команде pw.Чтобы удалить пользователя, используйте команду rmuser. И,
снова повторимся, команда pw тоже будет работать.Как добавить в систему новый диск?Обратитесь к Руководству по форматированию дисков на сервере www.FreeBSD.org.Как использовать устройство для чтения сменных дисков?Каким бы ни было это устройство, типа ZIP, EZ (или даже обычным
дисководом, если вы хотите его использовать) или каким-то
другим, как только оно будет установлено и распознано
системой, и вы вставите в него картридж/дискету/что-там-ещё, всё
будет выглядеть примерно одинаково.(этот раздел опирается на
FAQ по устройствам ZIP Марка Мэйо (Mark Mayo))Если это устройство ZIP или обычный дисковод, и у вас уже есть
файловая система DOS на дискетах, то вы можете использовать команду
типа:
&prompt.root; mount -t msdos /dev/fd0c /floppyдля обычных дискет, или
&prompt.root; mount -t msdos /dev/da2s4 /zipдля дискет ZIP со стандартной конфигурацией.Для других дисков посмотрите их параметры с помощью команды
fdisk или /stand/sysinstall.Остальные примеры даны для привода ZIP на da2, третьем диске
SCSI.Если это дискета или сменный диск, который будет использоваться для
обмена информацией с другими людьми, хорошей идеей будет помещение туда
файловой системы BSD. Вы получите поддержку длинных имён файлов,
увеличение производительности по крайней мере в два раза и гораздо
большую надёжность. Первым делом вам снова будет нужно выполнить
разбиение диска на разделы/файловые системы. Вы можете воспользоваться
утилитой fdisk либо
/stand/sysinstall, а в случае небольшого диска, на
котором не нужно располагать несколько операционных систем, просто сотрите
таблицу разделов (слайсов) FAT и используйте разбиение на разделы
BSD.
&prompt.root; dd if=/dev/zero of=/dev/rda2 count=2
&prompt.root; disklabel -Brw da2 autoВы можете использовать disklabel или
/stand/sysinstall для создания нескольких разделов
BSD. Вам наверняка придётся это сделать, если вы станете добавлять место
для раздела подкачки на винчестере, хотя это не имеет отношения к
устройствам типа ZIP.В итоге вы должны создать новую файловую систему (в этом примере
она занимает весь наш диск ZIP):
&prompt.root; newfs /dev/rda2cи смонтировать её:
&prompt.root; mount /dev/da2c /zipХорошо ещё добавить строку типа следующей в файл
/etc/fstab,
чтобы в будущем можно было просто давать команду
mount /zip:
/dev/da2c /zip ffs rw,noauto 0 0
Почему после редактирования моего файла crontab я получаю сообщения
вида root: not found?Обычно это случается при редактировании системного crontab-файла
(/etc/crontab) и последующего использования утилиты
&man.crontab.1; для его установки:&prompt.root; crontab /etc/crontabЭто неправильно. Системный crontab-файл имеет формат, отличный от
пользовательских crontab-файлов, которые обновляет утилита
&man.crontab.1; (страница Справочника по &man.crontab.5; описывает
отличия более подробно).Если вы сделали именно это, то нужно удалить файл
/var/cron/tabs/root, так как он будет являться
просто копией /etc/crontab, но неправильного формата.
В следующий раз при редактировании /etc/crontab
вам не нужно ничего делать для извещения утилиты &man.cron.8; о сделанных
изменениях, так как она заметит изменения автоматически.Реальная причина ошибки заключается в том, что системный crontab-файл
имеет дополнительное поле, указывающее, какой пользователь запускает
команду. В системном crontab-файле, поставляемом с FreeBSD и используемом
по умолчанию, это пользователь root для всех
строк. Если этот crontab-файл используется в качестве crontab-файла
пользователя root (что не то же
самое, что системный crontab-файл), &man.cron.8; полагает,
что слово root является первым в команде на выполнение,
но такой команды не существует.
- Я сделал ошибку в файле rc.conf, и теперь не
- могу его отредактировать из-за того, что файловая система находится в
- режиме только для чтения. Что мне делать?
+ Я сделал ошибку в файле rc.conf или в каком-то
+ другом файле начальной загрузки, и теперь не могу его отредактировать
+ из-за того, что файловая система находится в режиме только для чтения.
+ Что мне делать?При получении приглашения на ввод полного пути до командного
процессора, просто нажмите ENTER, а затем выполните
команду mount / для повторного монтирования корневой
файловой системы в режиме чтения/записи. Вам может также потребоваться
выполнить команду mount -a -t ufs для монтирования
файловой системы, в которой расположен ваш любимый редактор. Если
редактор расположен на сетевой файловой системе, то вам потребуется
выполнить сетевые настройки вручную до монтирования сетевой файловой
системы, либо воспользоваться редактором, находящимся в локальной файловой
системе, таким, как &man.ed.1;.Если вы собираетесь использовать полноэкранный редактор, такой, как
&man.vi.1; или &man.emacs.1;, то вам нужно будет выполнить команду
export TERM=cons25, чтобы такие редакторы смогли
корректно взять данные из базы данных &man.termcap.5;.После выполнения этих шагов вы сможете отредактировать файл
/etc/rc.conf так, как вы это обычно делаете для
исправления ошибки. Сообщение об ошибке, выводимое сразу же после
сообщений при загрузке ядра, должно указать вам на номер строки в файле,
которая содержит ошибку.Как смонтировать вторичный раздел DOS?Вторичные разделы DOS находятся после ВСЕХ первичных разделов.
Например, если раздел E является вторым разделом DOS на
втором диске SCSI, вам нужно создать специальные файлы для пятого
слайса в каталоге /dev, затем смонтировать /dev/da1s5:
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV da1s5
&prompt.root; mount -t msdos /dev/da1s5 /dos/eМожно ли смонтировать другие файловые системы?Компакт-диски с файловой системой UFS от
Digital UNIX могут быть замонтированы без
всяких проблем. Монтирование файловых систем Digital UNIX или других
систем, поддерживающих UFS, может быть более сложным, в зависимости от
особенностей разбиения диска конкретной операционной системой. Linux: Версии 2.2 и выше имеют поддержку
разделов ext2fs.
За дополнительной информацией обратитесь к страницам справочника по
команде
mount_ext2fs. NT: Существует драйвер, позволяющий под
FreeBSD иметь доступ к NTFS в режиме "только для чтения". Посмотрите
учебник от Марка Овенса (Mark Ovens) по адресу
http://ukug.uk.freebsd.org/~mark/ntfs_install.html.Нас интересует любая дополнительная информация по этому вопросу.Как можно использовать загрузчик NT для запуска FreeBSD?Эта процедура выглядит по разному для версий FreeBSD 2.2.x и 3.x (с
трёхступенчатым процессом загрузки системы).Идея заключается в копировании первого сектора корневого раздела
FreeBSD в файл, находящийся в разделе DOS/NT. Предположим, что вы назвали
этот файл c:\bootsect.bsd (по аналогии с
c:\bootsect.dos), после чего можете отредактировать
файл c:\boot.ini, чтобы он выглядел примерно
так:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
C:\BOOTSECT.BSD="FreeBSD"
C:\="DOS"
Для систем 2.2.x предполагается, что DOS, NT, FreeBSD или другая
операционная система были установлены в их соответствующие разделы fdisk на
одном и том же диске. В моём случае DOS &
NT находятся на первом разделе fdisk, а FreeBSD на втором. Я также
установил FreeBSD для загрузки с её раздела, а
не из MBR.Смонтируйте дискету в формате DOS (если вы используете NTFS) или
раздел FAT, скажем, в каталог /mnt.
&prompt.root; dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1Перезапустите DOS или NT. Пользователи NTFS должны скопировать файл
bootsect.bsd и/или bootsect.lnx
с дискеты на диск C:\. Измените атрибуты
(права) на файл boot.ini следующим образом:C:\>attrib -s -r c:\boot.iniОтредактируйте этот файл, добавив соответствующие строки из примерного
boot.ini выше, и восстановите атрибуты:C:\>attrib +s +r c:\boot.iniЕсли FreeBSD загружается из MBR, восстановите его командой DOS
fdisk после того, как переконфигурировали их для
загрузки с их родных разделов.Для систем FreeBSD 3.x эта процедура выглядит несколько проще.Если FreeBSD установлена на тот же самый диск, что и загрузочный раздел
NT, просто скопируйте /boot/boot1 в
C:\BOOTSECT.BSD. Однако, если FreeBSD установлена на
другой диск, то /boot/boot1 работать не будет, нужно
копировать /boot/boot0.
НЕ КОПИРУЙТЕ ПРОСТО /boot/boot0 ВМЕСТО
/boot/boot1, ЭТИМ ВЫ ПЕРЕЗАПИШЕТЕ ТАБЛИЦУ РАЗДЕЛОВ
ВИНЧЕСТЕРА И ВАШ КОМПЬЮТЕР ПЕРЕСТАНЕТ ЗАГРУЖАТЬСЯ!/boot/boot0 нужно устанавливать с помощью sysinstall,
выбрав менеджер загрузки FreeBSD в диалоговом окне при выборе менеджера
загрузки. Это потому что в /boot/boot0 область
таблицы разделов заполнена символами NULL, а sysinstall копирует сюда
таблицу разделов перед тем, как скопировать /boot/boot0
в область MBR.При запуске менеджер загрузки FreeBSD задаёт ОС, которая загружалась
последний раз, устанавливая для этой операционной системы признак
активизации в таблице разделов, а затем записывает 512 байт самого
себя обратно в MBR, так что если вы просто скопируете
/boot/boot0 в C:\BOOTSECT.BSD,
то в MBR будет записана пустая таблица разделов с флагом активности в
некотором месте.Как загрузить FreeBSD и Linux с помощью LILO?Если у вас установлены FreeBSD и Linux на одном и том же диске,
следуйте указаниям по установке LILO о загрузке не-Linux операционных
систем. Они сводятся к следующему:Загрузите Linux, и добавьте следующие строки в файл
/etc/lilo.conf:
other=/dev/hda2
table=/dev/hda
label=FreeBSD
(здесь вы предполагаем, что слайс с FreeBSD известен Linux как
/dev/hda2; измените эту строку в соответствии с вашей
конфигурацией). Затем достаточно будет запустить lilo,
войдя в систему как администратор.Если FreeBSD располагается на другом диске, вам нужно добавить строчку
loader=/boot/chain.b в конфигурационный файл
LILO. Например:
other=/dev/dab4
table=/dev/dab
loader=/boot/chain.b
label=FreeBSD
В некоторых случаях для успешной загрузки со второго диска вам
может потребоваться указать номер диска BIOS загрузчику FreeBSD.
Например, если диск SCSI с FreeBSD определяется BIOS как диск 1,
в приглашении загрузчика FreeBSD нужно указать:
Boot: 1:da(0,a)/kernelВо FreeBSD 2.2.5 и выше вы можете настроить boot(8)
на автоматическое принятие таких параметров во время загрузки.В документе
Linux+FreeBSD mini-HOWTO содержится много информации,
касающейся взаимодействия FreeBSD и Linux.Как загрузить FreeBSD и Linux с помощью BootEasy?Установите LILO в начало загрузочного раздела Linux, а не в
Master Boot Record. После этого можно запустить LILO из BootEasy.Это рекомендуется сделать в любом случае при одновременном
использовании Windows-95 и Linux, чтобы упростить восстановление
работоспособности Linux после переинсталляции Windows95 (которая
является Недоброжелательной Операционной Системой и не терпит
присутствия других операционных систем в Master Boot Record).Не угрожает ли режим dangerously dedicated моему
здоровью?В процессе установки вы можете выбрать два
различных метода разбиения вашего диска. По умолчанию это делается
в режиме совместимости с другими операционными системами на этой же
машине с использованием записей в таблице разделов fdisk (то, что
называется слайсом во FreeBSD), со слайсом (разделом),
выделенным FreeBSD. Опционально, вы можете выбрать установку менеджера
загрузки для переключения между операционными системами. Либо вы
можете выделить диск полностью под FreeBSD, не заботясь о совместимости
с другими операционными системами.Почему же этот режим называется dangerous? Дело в том,
что диск в этом режиме не будет содержать того, что обычные утилиты для
ПК распознают как таблицу разделов. В зависимости от того, насколько
хорошо они написаны, они могут сообщить вам об этом, как только
обнаружат такой диск, или, что гораздо хуже, могут запортить загрузчик
BSD, даже не спрашивая и не сообщая об этом. К тому же известно, что
разметка диска в режиме dangerously dedicated вводит в
заблуждение BIOS многих производителей, включая AWARD (которые используются
в компьютерах HP Netserver, Micronics и многих других) и Symbios/NCR
(производителя популярных SCSI-контроллеров серии 53C8xx). И это не
полный список, есть ещё другие производители. Симптомами подобных
проблем является сообщение read error, выводимое загрузчиком
FreeBSD, когда он не может найти сам себя, а также зависания системы при
загрузке.Тогда зачем вообще нужен этот режим? Он экономит всего лишь
несколько килобайт дискового пространства и может вызвать серьёзные
проблемы при новой инсталляции. Причиной появления этого режима
является желание избежать появления одной из самых распространённых
проблем, с которой сталкиваются новички - соответствие параметров
BIOS и реальных параметров диска.Параметры диска являются устаревшей концепцией, но она
лежит в основе работы BIOS с диском. Когда программа установки FreeBSD
создаёт слайсы, она записывает их расположение в соответствии с тем,
как с ними будет работать BIOS. Если это делается неправильно, вы не
сможете выполнить загрузку системы.Режим dangerously dedicated пытается обойти это, упрощая
решение данной проблемы. Иногда он делает это правильно. Однако это
значит, что его нужно использовать только как последнюю альтернативу - есть
способы получше, решающие проблему в 99 случаях из 100.Итак, как избежать использования режима DD во время
установки? Сначала запишите параметры диска, которые сообщает BIOS. Вы
можете выяснить это, заставив ядро вывести эти параметры при загрузке,
указав в приглашении boot:, или
используя boot -v в загрузчике. Перед тем, как
запустится программа установки, ядро выведет параметры, используемые BIOS.
Не волнуйтесь - подождите запуска программы
- установки, а затем воспользуйтесь скролингом, чтобы посмотреть
+ установки, а затем воспользуйтесь скроллингом, чтобы посмотреть
значения этих параметров. Как правило, BIOS нумерует диски в том же
порядке, что и FreeBSD, сначала IDE, затем SCSI.Когда вы разбиваете диск на слайсы, проверьте, что параметры диска,
выводимые в окне программы FDISK, корректны (то есть они соответствуют
параметрам BIOS); если это не так, воспользуйтесь командой
g, чтобы их исправить. Вы можете это сделать, если на
диске нет абсолютно ничего или если этот диск был перенесён с другой
системы. Заметьте, что это касается только загрузочного диска; FreeBSD
прекрасно разберётся с остальными дисками, которые могут у вас быть.Как только вы добились соответствия параметров диска в BIOS и
FreeBSD, скорее всего, проблем у вас больше не будет, и использовать
режим DD не потребуется. Если, однако, страшной сообщение
read error продолжает появляться при загрузке, самое время
перекреститься и попробовать этот режим - терять вам больше нечего.Чтобы вернуть диск из режима dangerously dedicated к
нормальному режиму использования, есть два способа. Первый заключается
в том, что вы записываете достаточное количество байтов NULL поверх
MBR, чтобы любой инсталлятор думал, что это чистый диск. Это можно
сделать, например, командой
&prompt.root; dd if=/dev/zero of=/dev/rda0 count=15Другой способ - недокументированной командой DOSC:\>fdisk /mbrпроинсталлировать новую MBR, удалив загрузчик BSD.Как добавить дополнительную виртуальную память?Наилучший способ - увеличить размер раздела подкачки, может быть,
добавив для этого ещё один диск. Общим правилом является выбор
размера виртуальной памяти, в два раза превышающий объём физической
памяти. Однако, если у вас очень мало физической памяти, этот объём
гораздо больше. Хорошей практикой является задание достаточного
объёма виртуальной памяти в ожидании добавления физической памяти,
чтобы потом не испытывать трудностей.Перенос виртуальной памяти на отдельный диск увеличивает
быстродействие системы по сравнению с добавлением виртуальной памяти
на том же диске. Например, компиляция исходных текстов происходит
быстрее, если они находятся не на том же диске, что и раздел подкачки.
Особенно это заметно для дисков SCSI.Если у вас имеется несколько дисков, размещение раздела подкачки
на каждом из них, даже на рабочем диске, обычно бывает полезно.
Как правило, каждый быстрый диск в вашей системе должен иметь раздел
подкачки. FreeBSD поддерживает по умолчанию до 4 устройств подкачки с
чередованием. При задании нескольких разделов подкачки вам захочется
сделать их одинакового размера, однако иногда первичный раздел подкачки
делается несколько больше для того, чтобы он мог поместить аварийный
образ ядра. Размер вашего первичного раздела подкачки должен по крайней
мере быть равным объёму физической памяти, чтобы поместить аварийный
образ ядра.Диски IDE не позволяют реализовать одновременный доступ к обоим дискам
по одному каналу (FreeBSD не поддерживает режим 4, так что весь ввод/вывод
для дисков IDE программируется). Однако я всё
равно советую перенести раздел подкачки на отдельный диск. Диски
достаточно дешёвы, и экономить тут не на чем.Использование NFS для размещения раздела подкачки рекомендуется
только в случае, если у вас нет локального диска. Подкачка поверх
NFS медленна и неэффективна в релизах FreeBSD до 4.x, хотя достаточно
быстра в релизах 4.0 и выше. Кроме того, её скорость будет ограничена
реальной пропускной способностью сети и это даст дополнительную нагрузку
на NFS-сервер.Вот пример vn-файла подкачки размером 64Мб
(/usr/swap0, хотя, конечно, вы можете выбрать любое
другое имя.Удостоверьтесь, что ядро откомпилировано со строкой
pseudo-device vn 1 #Vnode driver (turns a file into a device)
в конфигурационном файле. Ядро GENERIC её содержитсоздайте vn-устройство
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV vn0создайте файл подкачки (/usr/swap0)
&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Установите корректные права на файл
(/usr/swap0)
&prompt.root; chmod 0600 /usr/swap0Включите использование файла подкачки в
/etc/rc.conf
swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.
перезагрузите машинуЧтобы включить использование файла подкачки немедленно, наберите
&prompt.root; vnconfig -ce /dev/vn0c /usr/swap0 swapУ меня проблемы с установкой принтера.Обратитесь к соответствующему разделу Руководства,
посвящённому печати. В нём описаны решения большинства ваших
проблем.Раскладка клавиатуры неверна.Программа kbdcontrol имеет параметр, задающий файл раскладки.
Файлы раскладок находятся в каталоге
/usr/share/syscons/keymaps. Выберите соответствующий
вашей системе и загрузите его.
&prompt.root; kbdcontrol -l uk.isoПрограмма kbdcontrol
предполагает использование каталога
/usr/share/syscons/keymaps
и расширения .kbd.Это может быть настроено в файле /etc/sysconfig
(или rc.conf).
Обратитесь к соответствующим комментариям в этом файле.В системах 2.0.5R и выше, всё, относящееся к знакогенератору,
раскладке клавиатуры, находится в каталоге
/usr/share/examples/syscons.На данный момент поддерживаются следующие раскладки:Belgian ISO-8859-1Brazilian 275 keyboard Codepage 850Brazilian 275 keyboard ISO-8859-1Danish Codepage 865Danish ISO-8859-1French ISO-8859-1German Codepage 850German ISO-8859-1Italian ISO-8859-1Japanese 106Japanese 106xLatin AmericanNorwegian ISO-8859-1Polish ISO-8859-2 (programmer's)Russian Codepage 866 (alternative)Russian koi8-r (shift)Russian koi8-rSpanish ISO-8859-1Swedish Codepage 850Swedish ISO-8859-1Swiss-German ISO-8859-1United Kingdom Codepage 850United Kingdom ISO-8859-1United States of America ISO-8859-1United States of America dvorakUnited States of America dvorakxНе получается заставить работать дисковые квоты.Не включайте квотирование на /,Помещайте файл с квотами в ту файловую систему, которую
он обслуживает, то есть:Файловая системаФайл квот/usr/usr/admin/quotas/home/home/admin/quotas……Что не так с устройством ccd?Симптом выглядит так:
&prompt.root; ccdconfig -C
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
Это сообщение обычно выдаётся, когда вы пытаетесь объединить разделы
c, по умолчанию имеющие тип unused.
Драйвер ccd требует, чтобы используемые разделы имели тип FS_BSDFFS.
Отредактируйте метки тех дисков, которые вы хотите использовать, сменив
типы разделов на 4.2BSD.Почему невозможно отредактировать метку диска ccd?Симптом выглядит так:
&prompt.root; disklabel ccd0
(здесь выводится информация о диске, пробуем отредактировать метку)
&prompt.root; disklabel -e ccd0
(редактирование, сохранение, выход)
disklabel: ioctl DIOCWDINFO: No disk label on disk;
use "disklabel -r" to install initial label
Это происходит из-за того, что метка диска, возвращаемая ccd, на
самом деле ненастоящая, не соответствующая реально
располагающейся на диске. Вы можете решить эту проблему, явно записав эту
метку обратно следующим образом:
&prompt.root; disklabel ccd0 > /tmp/disklabel.tmp
&prompt.root; disklabel -Rr ccd0 /tmp/disklabel.tmp
&prompt.root; disklabel -e ccd0
(теперь это будет работать)
Поддерживает ли FreeBSD вызовы IPC из System V?Да, FreeBSD поддерживает IPC из System V, а именно совместно
используемую память, сообщения и семафоры. Чтобы они работали, вам
нужно добавить следующие строки в файл конфигурации ядра.
options SYSVSHM
options SYSVSHM # enable shared memory
options SYSVSEM # enable for semaphores
options SYSVMSG # enable for messaging
Во FreeBSD 3.2 и выше эти параметры уже включены в ядро
GENERIC, что уже означает их присутствие в вашей
системе.Перекомпилируйте и проинсталлируйте ядро.Как настроить sendmail для доставки почты по UUCP?Конфигурация sendmail, поставляемая с FreeBSD, предназначена для
сайтов, которые имеют непосредственный выход в Internet. Сайты,
которым требуется обмениваться почтой по UUCP, должны использовать
другой конфигурационный файл.Ковыряние в файле /etc/sendmail.cf вручную - это
занятие для пуристов (и мазохистов). Восьмая версия sendmail поставляется
с новой системой генерации конфигурационных файлов с использованием
препроцессора m4,
в которой ручная настройка перенесена на более высокий уровень абстракции.
Используйте конфигурационные файлы в каталоге
/usr/src/usr.sbin/sendmail/cf.Если вы не собираетесь инсталлировать все исходные тексты системы,
специально для вас конфигурационные файлы sendmail выделены в отдельный
дистрибутив. Если вы имеете смонтированный компакт-диск, выполните
такую команду:
&prompt.root; cd /cdrom/src
&prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmailНе волнуйтесь, эти файлы занимают всего лишь несколько сотен килобайт.
Файл README в каталоге cf может
быть использован как начальное введение в конфигурацию m4.Для доставки почты по UUCP лучше всего использовать
mailertable. В этом файле содержится база данных,
используемая sendmail при маршрутизации почты.Первым делом создайте ваш файл .mc. Для таких
файлов предназначен каталог
/usr/src/usr.sbin/sendmail/cf/cf.
Посмотрите в нём, там есть уже несколько примеров. Положим, что вы назвали
ваш файл foo.mc, всё, что вам нужно для преобразования
его в нормальный sendmail.cf, это:
&prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf
&prompt.root; make foo.cf
&prompt.root; cp foo.cf /etc/sendmail.cfТипичный файл .mc выглядит примерно так:
include(`../m4/cf.m4')
VERSIONID(`Your version number')
OSTYPE(bsd4.4)
FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(mailertable)
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCPПараметры nodns и nocanonify
подавляют использование DNS в процессе доставки. Строка
UUCP_RELAY может понадобиться только в очень странных
случаях, не спрашивайте о них. Просто поместите здесь имя хоста Internet,
который может обрабатывать адреса с псевдо-доменами .UUCP; в
большинстве случаев достаточно поставить сюда имя почтового шлюза
вашего провайдера.Как только вы сгенерируете конфигурационный файл, вам понадобится
/etc/mailertable. Типичный пример такого файла:
#
# makemap hash /etc/mailertable.db < /etc/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:
Как видите, это часть реально существующего файла. Первые три строки
описывают особые случаи, когда почта, направленная на некоторые домены,
будет посылаться не по стандартному маршруту, а на некоторую близлежащую
UUCP-систему для сокращения маршрута доставки. Следующая
строка описывает,
что почта на локальный домен в сети Ethernet может быть доставлена по SMTP.
В конце файла описаны близлежащие системы UUCP в псевдо-домене .UUCP, что
позволит выполнять правильную доставку почты на адреса
uucp-система!получатель.
В последней строке всегда присутствует одна точка, соответствующая всем
остальным доменам, с доставкой по UUCP на
ближнюю систему UUCP, который является универсальный почтовым шлюзом во весь
остальной мир. Все имена узлов после uucp-dom:
должны быть реально существующими узлами UUCP, что можно проверить
командой uuname.Как напоминание о том, что этот файл должен быть преобразован в формат
базы данных DBM перед использованием, командная строка, выполняющая это
действие, помещена как комментарий в начало файла. При изменении
mailertable всегда нужно выполнять эту команду.Последняя подсказка: если вы не уверены в правильности настройки
маршрутизации почты, используйте sendmail с опцией .
Она переводит sendmail в режим проверки адресов;
введите 0 , а затем адрес, который вы хотите
протестировать на правильность маршрутизации. В последней строке будут
указаны используемый
почтовый агент, хост получателя, с которым будет работать этот агент,
и (может быть преобразованный) адрес. Выход их этого режима
осуществляется по Control-D.
&prompt.user; sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>0 foo@interface-business.de
rewrite: ruleset 0 input: foo @ interface-business . de
...
rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \
< @ interface-business . de >
>^DКак настроить почту при коммутируемом соединении с Internet?Если адрес IP вам выделен статически, то вам не нужно ничего
менять. Установите имя вашего хоста в соответствии с выделенным
именем DNS, а sendmail сделает всё остальное.Если ваш IP-адрес выделяется динамически при коммутируемом соединении
по протоколу ppp с Internet, может быть, вам
выделен почтовый ящик на сервере провайдера. Предположим, что домен вашего
провайдера называется myISP.com, а ваше
имя пользователя - user. Также положим, что вы
назвали вашу машину bsd.home, и что ваш
провайдер сказал, что вы можете использовать relay.myISP.com в качестве почтового шлюза.Чтобы забирать почту из вашего почтового ящика, вам нужно установить
соответствующий агент. Хорошим агентом является программа
fetchmail, так как она поддерживает много
различных протоколов. Обычно провайдеры предлагают POP3. Если вы
используете user-ppp, то можете автоматически забирать вашу почту при
установлении соединения с Internet, добавив такую строку в файл
/etc/ppp/ppp.linkup:
MYADDR:
!bg su user -c fetchmail
Если вы используете sendmail (как
показано ниже) для доставки почты для внешних пользователей, поместите
команду
!bg su user -c "sendmail -q"
после вышеуказанной строки. Это заставит sendmail обработать вашу
очередь почтовых сообщений, как только будет осуществлено подключение
к сети.Предположим, что вы имеет учётную запись для user
на машине bsd.home. В домашнем каталоге
пользователя user на машине bsd.home создайте файл
.fetchmailrc такого содержания:
poll myISP.com protocol pop3 fetchall pass MySecret
Излишним будет напоминание о том, что этот файл никому не должен
быть доступен для чтения, кроме пользователя user,
потому что он содержит пароль MySecret доступа к
почтовому ящику.Чтобы посылать почту с правильным заголовком from:,
вы должны указать программе sendmail использовать
user@myISP.com, а не user@bsd.home.
Вам может понадобиться настроить sendmail для посылки всей почты через
relay.myISP.com, чтобы убыстрить её передачу.Следующий файл .mc должен подойти:
VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`myISP.com')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(SMART_HOST, `relay.myISP.com')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnl
В предыдущем разделе описано, как преобразовать файл
.mc в sendmail.cf. И не забудьте
перезапустить sendmail после обновления sendmail.cf.Ой! Я забыл пароль администратора!Без паники! Просто перезапустите систему, наберите boot
-s в приглашении Boot: (или просто -s в
случае использования версий FreeBSD до 3.2) для входа в однопользовательский
режим. На вопрос об используемой оболочке нажмите ENTER. На приглашение
&prompt.root; введите mount -u /, чтобы перемонтировать
корневую файловую систему в режиме чтения/записи, после чего выполните
команду mount -a для монтирования всех файловых систем.
Запустите команду passwd root, чтобы сменить
пароль администратора, а затем exit для
продолжения процесса загрузки.Как запретить перезагрузку по клавишам Control-Alt-Delete?Если вы используете драйвер консоли syscons (который является
стандартным) во FreeBSD 2.2.7-RELEASE и выше, перегенерируйте и установите
новое ядро со строчкойoptions SC_DISABLE_REBOOTв конфигурационном файле. Если же вы используете драйвер консоли PCVT
во FreeBSD 2.2.5-RELEASE и выше, то укажите следующую строку в
конфигурационном файле:options PCVT_CTRL_ALT_DELДля более старых версий FreeBSD отредактируйте используемый для консоли
файл раскладки клавиатуры, заменив ключевые слова boot
на nop. Используемая по умолчанию раскладка находится
в файле /usr/share/syscons/keymaps/us.iso.kbd. Вам
может потребоваться явно указать в файле /etc/rc.conf
загрузку этой раскладки, чтобы она действительно поменялась. Конечно,
если в вашей стране вы используете другую раскладку, вы должны
отредактировать именно её.Как преобразовать текстовые файлы DOS в формат UNIX?Используйте такую команду:
&prompt.user; perl -i.bak -npe 's/\r\n/\n/g' file ...где file - это имя файла(ов) для преобразования. Преобразование
делается в том же самом файле, оригинальные файлы сохраняются с
расширением .bak.Это преобразование также можно выполнить с помощью команды
tr:
&prompt.user; tr -d '\r' < dos-text-file > unix-fileгде dos-text-file - это имя файла,
содержащего текст DOS, а в файл unix-file будет
помещён уже преобразованный текст. Этот способ может работать гораздо
быстрее, чем при использовании perl.Как прервать процесс по имени?Используйте команду killall.Почему su выдаёт сообщение о том, что я не вхожу в root ACL?Эта ошибка выдаётся распределённой системой аутентификации Kerberos.
Эта ошибка не фатальна, однако это раздражает. Вы можете запустит su
с ключом -K либо деинсталлировать Kerberos, как описано в следующем
разделе.Как деинсталлировать Kerberos?Чтобы убрать Kerberos из системы, переинсталлируйте дистрибутив bin
того релиза, который у вас запущен. Если у вас есть CDROM, вы можете
смонтировать компакт-диск (положим, в каталог /cdrom) и выполнить
команду
&prompt.root; cd /cdrom/bin
&prompt.root; ./install.shКак добавить в систему дополнительные псевдотерминалы?Если у вас много пользователей, работающий в сеансах telnet, ssh, X
или в screen, вам можете столкнуться с проблемой нехватки
псевдотерминалов. Их количество можно увеличить следующим образом:Откомпилируйте и инсталлируйте новое ядро, в конфигурационный
файл которого входит такая строка:
pseudo-device pty 256
Выполните следующие команды:
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV pty{1,2,3,4,5,6,7}для создания 256 дополнительных файлов устройств для новых
терминалов.Отредактируйте файл /etc/ttys, добавив по
строке для каждого из 256 терминалов. Они должны соответствовать
формату существующих строк, то есть должны выглядеть вот так:
ttyqc none network
Порядок назначения букв при записи в виде регулярного выражения
имеет вид tty[pqrsPQRS][0-9a-v].Теперь осталось только перезапустить систему с новым ядром.Не получается создать устройство snd0!Такого устройства, как snd, не существует.
Это название используется в качестве краткого обозначения различных
устройств, которые составляют во FreeBSD звуковой драйвер, таких как
mixer, sequencer и
dsp.Для создания этих устройств вы должны сделать следующее:
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV snd0Как перечитать содержимое /etc/rc.conf и перестартовать /etc/rc
без перезагрузки системы?Перейдите в однопользовательский режим, а затем возвратитесь обратно
в многопользовательский.На консоли выполните следующее:
&prompt.root; shutdown now
(Замечание: без -r или -h)
&prompt.root; return
&prompt.root; exitЧто означает термин sandbox (песочница)?Sandbox - это термин, используемый при обеспечении
безопасности. Он имеет два значения:Процесс, помещённый внутрь некоторых виртуальных стен, которые
предназначены для того, чтобы предотвратить взлом всей системы в
результате взлома этого конкретного процесса.Говорится, что процесс может играть в границах
этих стен. Что бы
этот процесс ни делал, он эти стены разрушить не может, поэтому вам
не нужен его особый аудит, чтобы с уверенностью сказать, насколько
его работа безопасна для системы.Стеной может служить, например, идентификатор пользователя. Вот
определение, даваемое на страницах справочника по named и часто
используемое при обсуждении безопасности систем.Рассмотрим, например, службу ntalk (смотрите
/etc/inetd.conf). Раньше эта служба запускалась с идентификатором
пользователя root,
а сейчас - tty. Пользователь tty - это та песочница, которая
осложняет взлом системы через ntalk посредством использования этого
идентификатора пользователя.Процесс, помещённый внутрь симулируемой машины. Это даёт больший
уровень безопасности. В общем это означает, что некто, взломавший
процесс, может думать. что может сломать и систему в целом, однако
фактически может сломать только симулятор этой машины и не может
модифицировать никаких реальных данных.Самым распространённым способом достигнуть такого результата
является построение имитирующего окружения в каталоге и затем запуск
процессов и этом каталоге через chroot (т.е. задав этот каталог в
качестве / для этого процесса, а не реальный
/ всей системы).Другим часто используемым методом является монтирование низлежащей
файловой системы в режиме "только для чтения" и затем создание
уровня файловой системы поверх неё, что даёт процессу видимость
доступа по записи на ту файловую систему. Процесс будет полагать,
что может записывать в те файлы, но это будет единственный процесс,
который увидит результат - другие процессы не будут этого делать,
ни в коем случае.Попытка сделать такой тип песочницы настолько прозрачна, что
пользователь (или взломщик) даже не поймёт, что он в ней
находится.В UNIX реализованы два типа "песочниц". Один на уровне процесса, и один
на уровне идентификаторов пользователей.Каждый процесс в UNIX полностью защищён от других процессов. Никакой
процесс не может модифицировать адресное пространство другого процесса.
Это отличается от Windows, где процесс может легко записать что-либо в
адресное пространство другого процесса, что приводит к аварийным
ситуациям.В UNIX каждым процессом владеет некоторый идентификатор пользователя.
Если этот пользователь не root, от ограждает процесс от других,
владельцами которых являются другие пользователи. Этот идентификатор
используется также для защиты данных на диске.Как разрешить обычным пользователям монтировать дискеты,
компакт-диски и другие сменные носители?Обычным пользователям можно позволить монтировать устройства.
Вот как это делается:Как пользователь root, установите системную
переменную vfs.usermount в значение
1.
&prompt.root; sysctl -w vfs.usermount=1Работая пользователем root, назначьте
соответствующие права на устройства с поблочным доступом,
которые соответствуют сменным носителям.Например, чтобы позволить пользователям монтировать дискеты
в первом дисководе, воспользуйтесь командой&prompt.root; chmod 666 /dev/fd0Чтобы разрешить пользователям из группы
operator монтировать компакт-диски, сделайте
так:
&prompt.root; chgrp operator /dev/cd0c
&prompt.root; chmod 640 /dev/cd0cНаконец, добавьте строчку vfs.usermount=1 в файл
/etc/sysctl.conf, чтобы она срабатывала во время
загрузки системы.Теперь все пользователи могут монтировать дискету
/dev/fd0 в собственные каталоги:
&prompt.user; mkdir ~/my-mount-point
&prompt.user; mount -t msdos /dev/fd0 ~/my-mount-pointПользователи из группы operator теперь могут
монтировать компакт-диск /dev/cd0c в собственные
каталоги:
&prompt.user; mkdir ~/my-mount-point
&prompt.user; mount -t msdos /dev/cd0c ~/my-mount-pointРазмонтировка устройства осуществляется просто:
&prompt.user; umount ~/my-mount-pointИспользование vfs.usermount, однако, имеет
некоторые негативные стороны, связанные с вопросами безопасности.
Более правильным способом работы с носителями в формате MSDOS
является использование пакета
mtools из коллекции портов.Как перенести систему на большой новый диск?Самый лучший способ заключается в переустановке ОС на новый диск и
последующем переносе данных пользователей. Это очень рекомендуется
делать, если вы следовали ветке -stable в течение более одного релиза
или обновляли релиз, а не устанавливали новый. Вы можете установить
программу booteasy на оба диска с помощью команды &man.boot0cfg.8; и
выполнять загрузку с любого из них до тех пор, пока не будете
удовлетворены новой конфигурацией системы. Пропустите следующий
абзац, чтобы перейти к вопросу переноса данных после этой
операции.Если вы решили не делать новой установки, то вам нужно разбить на
разделы и разметить новый диск с помощью
/stand/sysinstall или &man.fdisk.8; и
&man.disklabel.8;. Вы также должны установить на оба диска программу
booteasy с помощью &man.boot0cfg.8;, чтобы иметь возможность выполнять
загрузку как старой, так и новой системы после выполнения копирования.
Обратитесь к
руководству по форматированию носителей за подробным описанием
этого процесса.Итак, после подготовки диск, вы можете переносить данные. К
сожалению, вы не можете просто скопировать данные. Такие вещи, как
файлы устройств (в каталоге /dev) и символические
ссылки будут этому мешать. Вам нужно использовать инструменты, которые
работают с такими случаями, а именно &man.dump.8; и &man.tar.1;. Я
рекомендую выполнять перенос данных в однопользовательском режиме, но
это не обязательно.Вы не должны использовать ничего, кроме &man.dump.8; и
&man.restore.8; для переноса корневой файловой системы. Команда
&man.tar.1; может сработать, а может и не сработать. Также вы должны
использовать &man.dump.8; и &man.restore.8; при переносе одного раздела
в другой пустой раздел. Последовательность шагов при использовании
программы dump для переноса данных раздела в новый раздел такова:выполните команду newfs над новым разделом.смонтируйте его во временный каталог.перейдите в этот каталог.Выполните команду dump над старым разделом, направив вывод в
новый раздел.Например, если вы собираетесь перенести корневую файловую систему
на устройство /dev/ad1s1a с использованием
каталога /mnt в качестве временной точки
монтирования, то это делается так:
&prompt.root; newfs /dev/ad1s1a
&prompt.root; mount /dev/ad1s1a
&prompt.root; cd /mnt
&prompt.root; dump 0uaf - / | restore xf -Если вы собираетесь изменить размещение ваших разделов - скажем,
разбив один из разделов на два или объединив два раздела в один, вы
можете обнаружить необходимость в переносе всего в один подкаталог на
новое место. Так как программа &man.dump.8; работает с файловыми
системами, она этого сделать не сможет. Поэтому воспользуйтесь
программой &man.tar.1;. Команда общего вида для переноса
/old в /new в случае
&man.tar.1; имеет такой вид:
&prompt.root; (cd /old; tar cf - .) | (cd /new; tar xpf -)Если в каталог /old смонтированы файловые
системы, и вы не хотите перемещать данные или размонтировать их, то
просто добавьте флаг 'l' к первому упоминанию &man.tar.1;:
&prompt.root; (cd /old; tar clf - .) | (cd /new; tar xpf -).Вы можете предпочесть cpio(1), pax(1) или cpdup (из
ports/sysutils/cpdup) вместо tar.
+
+
+
+ Я пытался обновить мою систему до последней -STABLE, а получил -RC
+ или -BETA! Что происходит?
+
+
+
+
+ Краткий ответ: это же просто название. RC означает
+ Release Candidate. Это значит, что вскоре
+ произойдет выход релиза. Во FreeBSD -BETA значит то же самое,
+ что и -RC.
+
+ Подробный ответ: во FreeBSD релизы выпускаются из одного из
+ двух мест. Крупные релизы, точка-ноль, такие, как
+ 3.0-RELEASE и 4.0-RELEASE, ответвляются от основного потока
+ разработки, более известного как -CURRENT. Мелкие релизы, такие, как
+ 3.1-RELEASE или 4.2-RELEASE, являются снэпшотами активной ветки
+ -STABLE.
+
+ Когда делается релиз, то ветвь, из которой он выпускается,
+ подвергается некоторой подготовке. Частью этого процесса
+ является замораживание кода. Когда инициируется замораживание
+ кода, то имя ветки изменяется для того, чтобы отразить факт
+ близости релиза. Например, если ветка называлась 4.0-STABLE, то
+ её имя будет изменено на 4.1-RC, чтобы указать, что скоро из неё
+ будет сделан релиз. Как только релиз, а в этом примере это
+ 4.1-RELEASE, будет сделан, ветвь будет переименована в
+ 4.1-STABLE.
+
+
+
+
X Window System и виртуальные консолиЯ хочу запустить X, как это сделать?Самый простой способ - это указать во время инсталляции, что вы
хотите использовать X.Затем следуйте указаниям в документации по утилите xf86config,
которая предназначена для конфигурирования работы XFree86(tm) с вашим
графическим адаптером/мышью/итд.Вы можете также попробовать сервер Xaccel. За подробной информацией
обратитесь к разделу, посвящённому продуктам фирм Xi Graphics и Metro Link.Почему моя мышь не работает с X?Если вы используете syscons (стандартный драйвер консоли), то можете
настроить поддержку указателя мыши во всех виртуальных экранах. Во
избежание конфликтов с X, драйвер syscons поддерживает виртуальное
устройство /dev/sysmouse. Все события,
получаемые от реальной мыши, пишутся в устройство sysmouse через moused.
Если вы хотите использовать вашу мышь на одной или нескольких виртуальных
консолях, продолжая использовать X,
посмотрите и настройте
moused.Затем отредактируйте /etc/XF86Config так, чтобы
в нём были следующие строки.
Section Pointer
Protocol "SysMouse"
Device "/dev/sysmouse"
.....
Пример выше предназначен для XFree86 3.3.2 и выше. Для более ранних
версий параметр Protocol должен быть
MouseSystems.Некоторые предпочитают использовать в X устройство
/dev/mouse. Чтобы оно работало, файл устройства
/dev/mouse должен являться ссылкой на
/dev/sysmouse:
&prompt.root; cd /dev
&prompt.root; rm -f mouse
&prompt.root; ln -s sysmouse mouseУ моей мыши есть колёсико. Могу ли я его использовать при работе
в X?Да. Но вам нужно будет настроить программы-клиенты для X. Посмотрите
страничку
Коласа Наабу (Colas Nahaboo)
(http://www.inria.fr/koala/colas/mouse-wheel-scroll/).Если вы собираетесь использовать программу
imwheel, следуйте этим простым указаниям:Трансляция событий от колёсикаРабота программы imwheel основана на
трансляции событий от кнопок мыши 4 и 5 в события от клавиатуры. То
есть вам нужно заставить драйвер мыши транслировать события от колёсика
в события от кнопок 4 и 5. Есть два способа сделать это, в первом
из которых трансляцию выполняет &man.moused.8;. Во втором методе
трансляцию событий выполняет сам X-сервер.Использование &man.moused.8; для трансляции событий от
колёсикаДля того, чтобы &man.moused.8; выполнял преобразование событий,
просто добавьте опцию к команде,
запускающей &man.moused.8;. Например, если обычно вы запускаете
&man.moused.8; командой moused -p /dev/psm0,
то теперь вы должны будете использовать moused -p
/dev/psm0 -z 4. Если &man.moused.8; запускается у вас
автоматически во время загрузки через
/etc/rc.conf, то вы можете просто добавить
опцию к переменной
moused_flags в файле
/etc/rc.conf.Теперь вам нужно указать X, что вы используете 5-кнопочную
мышь. Для этого просто добавьте строчку
Buttons 5 в секцию Pointer
файла /etc/XF86Config. Например, в вашем
файле /etc/XF86Config секция
Pointer может принять такой вид:Секция Pointer файла XF86Config для мыши с
колёсиком и трансляцией через moused
Section "Pointer"
Protocol "SysMouse"
Device "/dev/sysmouse"
Buttons 5
EndSection
Использование X-сервера для трансляции событий от
колёсикаЕсли &man.moused.8; у вас не запущен или если вы не хотите,
чтобы &man.moused.8; занимался трансляцией событий от колёсика,
то это может сделать X-сервер. Это требует некоторых модификаций
в вашем файле /etc/XF86Config. Во-первых,
вам нужно правильно выбрать протокол для вашей мыши. Большинство
манипуляторов с колёсиками используют протокол
IntelliMouse. Однако XFree86 поддерживает другие
протоколы, такие, как MouseManPlusPS/2 для мышей
Logitech MouseMan+. После того, как вы выберите используемый
протокол, в секцию Pointer нужно будет добавить
строчку Protocol.Во-вторых, вам нужно указать, что X-сервер будет
переопределять события от колёсика в события от кнопок 4 и 5.
Это делается заданием опции
ZAxisMapping.Например, если вы не используете &man.moused.8; и ваша мышь
IntelliMouse подключена к порту для мыши PS/2, в вашем файле
/etc/XF86Config должно быть указано
следующее:Секция Pointer для мыши с колёсиком
из файла XF86Config с трансляцией
с помощью X-сервера
Section "Pointer"
Protocol "IntelliMouse"
Device "/dev/psm0"
ZAxisMapping 4 5
EndSection
Установка программы imwheelТеперь установите программу Imwheel из
Коллекции Портов. Она находится в категории x11.
Эта утилита будет преобразовывать события от колёсика вашей мыши в
события от клавиатуры. Например, она может послать в программу
последовательность Page Up, когда вы крутите колёсико
вперёд. Для преобразования событий от колёсика в нажатия клавиш
imwheel использует конфигурационный файл,
причём для разных приложений возможна посылка разных
последовательностей. Конфигурационным файлом, используемым по
умолчанию, является /usr/X11R6/etc/imwheelrc. Вы
можете скопировать его в ~/.imwheelrc и
отредактировать, если хотите изменить параметры работы
imwheel. Формат конфигурационного файла
описан на странице Справочника о &man.imwheel.1;.Настройка редактора Emacs для работы с
Imwheel
(по желанию)Если вы используете emacs или
Xemacs, то в ваш файл
~/.emacs нужно добавить маленький раздел. Для
редактора emacs, добавьте следующее:Конфигурация Emacs для работы с
Imwheel
;;; For imwheel
(setq imwheel-scroll-interval 3)
(defun imwheel-scroll-down-some-lines ()
(interactive)
(scroll-down imwheel-scroll-interval))
(defun imwheel-scroll-up-some-lines ()
(interactive)
(scroll-up imwheel-scroll-interval))
(global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines)
(global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines)
;;; end imwheel section
Для редактора Xemacs, в ваш файл
~/.emacs добавьте следующее:Конфигурация Xemacs для работы с
Imwheel
;;; For imwheel
(setq imwheel-scroll-interval 3)
(defun imwheel-scroll-down-some-lines ()
(interactive)
(scroll-down imwheel-scroll-interval))
(defun imwheel-scroll-up-some-lines ()
(interactive)
(scroll-up imwheel-scroll-interval))
(define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines)
(define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines)
;;; end imwheel section
Запуск ImwheelВы можете просто набрать команду imwheel в вашем
в окне xterm после установки. Она сама перейдёт в фоновый режим и
немедленно начнёт работу. Если вы хотите использовать
imwheel всегда, просто добавьте её запуск в
ваш .xinitrc или .xsession.
Все предупреждения о PID-файлах, которые выводит
imwheel, можно проигнорировать. Эти
предупреждения имеют смысл только в Linux-версии
imwheel.Меню и диалоговые окна в X Window работают неправильно!Попробуйте выключить Num Lock.Если клавиша Num Lock во время загрузки по умолчанию включена,
добавьте в секцию Keyboard
файла XF86Config следующую строку.
# Let the server do the NumLock processing. This should only be
# required when using pre-R6 clients
ServerNumLock
Что такое виртуальные консоли и как изменить их количество?Виртуальные консоли, упрощённо говоря, позволяют вам иметь
несколько одновременных сеансов работы с той же самой машиной без
установки какой бы то ни было сети или запуска X.При запуске системы после вывода сообщений этапа загрузки на консоль
выдаётся приглашение на вход в систему. Вы можете ввести своё имя и пароль
и начать работать (или играть!) на первой виртуальной консоли.В какой-то момент вы можете захотеть запустить ещё одну сеанс,
скажем, чтобы заглянуть в документацию по программе, которую вы
запустили или для для чтения электронной почты во время ожидания
завершения передачи данных по FTP. Просто нажмите Alt-F2 (удерживая
клавишу Alt, нажмите F2) и вы обнаружите приглашение, ждущее вас на
второй виртуальной консоли! Когда захотите вернуться к
первоначальному сеансу, нажмите Alt-F1.После инсталляции по умолчанию во FreeBSD задействованы три виртуальных
консоли (8 начиная с 3.3-RELEASE), а комбинации клавиш Alt-F1, Alt-F2 и
Alt-F3 служат для переключения между ними.Чтобы увеличить количество консолей, отредактируйте файл /etc/ttys, добавив
туда записи для терминалов с именами от ttyv4 до
ttyvc после слов Virtual
terminals:
# Edit the existing entry for ttyv3 in /etc/ttys and change
# "off" to "on".
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
ttyva "/usr/libexec/getty Pc" cons25 on secure
ttyvb "/usr/libexec/getty Pc" cons25 on secure
Используйте из них столько, сколько посчитаете нужным. Чем больше
виртуальных терминалов у вас имеется, тем больше ресурсов они
используют; это может иметь значение, если у вас меньше чем 8МБ ОЗУ.
Вы можете сменить статус консолей с secure на
insecure.Если вы хотите запустить X, вы должны
оставить для него по крайней мере один неиспользуемый (или
выключенный) виртуальный терминал. Таким образов, если вы хотите
иметь приглашения login на всех двенадцати функциональных клавиши,
то вам не повезло - вы можете это сделать только для одиннадцати из
них, если хотите на этой же машине ещё запустить X-сервер.Самым простым способом убрать консоль является просто её
выключение. Например, если вы запустили на всех 12 консолях
виртуальные терминалы, как указано выше, и ещё хотите запустить X, то
должны будете изменить параметры двенадцатого виртуального
терминала с:
ttyvb "/usr/libexec/getty Pc" cons25 on secure
на:
ttyvb "/usr/libexec/getty Pc" cons25 off secure
Если на вашей клавиатуре только десять функциональных клавиш,
то последние строки будут выглядеть так:
ttyv9 "/usr/libexec/getty Pc" cons25 off secure
ttyva "/usr/libexec/getty Pc" cons25 off secure
ttyvb "/usr/libexec/getty Pc" cons25 off secure
(Вы также можете просто их удалить.)После того, как вы отредактировали файл /etc/ttys,
проверьте, что у вас имеется достаточное количество устройств для
виртуальных терминалов. Самый простой способ сделать это:
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV vty12Самым простым (и надёжным) способом активировать виртуальные
консоли является перезагрузка. Однако если вы вовсе не хотите этого
делать, просто остановите X Window System и выполните (как
пользователь root):
&prompt.root; kill -HUP 1При этом требуется, чтобы вы полностью закрыли X Window, если она
была запущена, до запуска этой команды. Если вы это не сделаете,
ваша система может повиснуть/заблокироваться после выполнения команды
kill.Как осуществляется доступ к виртуальным консолям из X?Используйте комбинацию клавиш
CtrlAltFn
для переключения обратно в виртуальную консоль. Нажатие
CtrlAltF1
вернёт вас на первую виртуальную консоль.После того, как вы оказались в текстовой консоли, можете использовать,
как обычно, комбинации
AltFn для переключения между ними.Чтобы вернуться в сеанс работы X, вы должны переключиться в виртуальную
консоль, на которой запущена X Window. Если вы запустили X из командной
строки (например, при помощи команды startx), то сеанс
работы X будет привязан к следующей неиспользуемой виртуальной консоли, а
не к той текстовой консоли, с которой он был запущен. Если у вас имеется
восемь активных виртуальных терминалов, то X будет работать на девятом, и
вам нужно будет воспользоваться комбинацией
AltF9
для возврата в X.Как запустить XDM во время загрузки?Есть две философские школы, проповедующие различные методы запуска
xdm. Последователи одного течения запускают xdm из /etc/ttys, используя
приводимый пример, тогда как другие вставляют запуск xdm в скрипт rc.local или
X.sh, поместив последний в каталог
/usr/local/etc/rc.d. Оба метода равноправны, и один
из них может работать в ситуациях, с которыми не справляется другой и
наоборот. В обоих случая результат один и тот же: X выводит
графическое приглашение login:.Плюсом метода с использованием ttys является документирование того,
на каком vty будет запущен X и то, что ответственность за перезапуск
X-сервера при завершении сеанса работы лежит на процессе init. Метод
с использованием rc.local позволяет просто прекратить работу xdm, если
при запуске X возникли какие-нибудь проблемы.Из rc.local xdm должен быть запущен без
аргументов, (то есть как даемон). xdm должен быть запущен ПОСЛЕ запуска
getty, иначе они будут конфликтовать, блокируя консоль. Лучше всего
выдержать паузу секунд на 10 и потом запустить xdm.Если xdm запускается из
/etc/ttys, то есть вероятность конфликта между
xdm и getty. Одним из способов
избежать этого является добавление номера vt в файл
/usr/X11R6/lib/X11/xdm/Xservers.
:0 local /usr/X11R6/bin/X vt4
В вышеприведённом случае X-серверу указывается работать на
/dev/ttyv3. Заметьте, что номера отличаются на
единицу. Дело в том, что X-сервер считает vty от единицы, когда как
отсчёт vty в ядре FreeBSD ведётся с нуля.При запуске xconsole выдаётся сообщение Couldn't open
console.Если вы запускаете
X через скрипт
startx, права на устройство /dev/consoleне изменяются, поэтому такие команды, как
xterm -C и
xconsole, не будут работать.Это зависит от прав доступа, установленных для консоли по умолчанию.
В многопользовательской системе вовсе не нужно, чтобы любой
пользователь мог выводить информацию на системную консоль. Для
пользователей, вошедших в систему через VTY, для решения этой проблемы
существует файл
fbtab.В общем, раскомментируйте строчку вида
/dev/ttyv0 0600 /dev/console
в файле /etc/fbtab, и
этого будет достаточно для того, чтобы всякий,
кто вошёл в систему с /dev/ttyv0, будет иметь доступ к
консоли.Моя мышь PS/2 в X работает неправильно.Вполне может быть, что ваша мышь и её драйвер
рассинхронизировались.В версиях 2.2.5 и более ранних это может произойти при переключении
из X в виртуальный терминал и последующем возвращении в X. Если эта
проблема возникает достаточно часто, попробуйте добавить следующую
строку в файл конфигурации ядра и перекомпилировать его.
options PSM_CHECKSYNC
Если у вас нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу.С этой опцией проблем с синхронизацией мыши и её драйвера должно
быть меньше. Если, однако, эта проблема всё же осталась, щёлкните
любой кнопкой мыши, не двигая ей, что заставит мышь и драйвер сделать
попытку синхронизироваться.Заметьте, что в некоторых системах эта опция может не работать и
приводить к отключению функции tap устройства ALPS
GlidePoint, подключенного к порту мыши PS/2.В версиях 2.2.6 и выше, проверка синхронизации сделана гораздо лучше
и включена в стандартный драйвер мыши PS/2. Она должна работать даже с
GlidePort. (Так как код проверки стал стандартной функцией, опция
PSM_CHECKSYNC в этих версиях недоступна.) Однако в редких случаях
драйвер может ошибочно обнаруживать проблемы с синхронизацией, и вы
будете видеть такие сообщения ядра:
psmintr: out of sync (xxxx != yyyy)
а также обнаружите, что мышь теперь работает неправильно.Если это случится, отмените проверку согласования, установив
значение флага для драйвера мыши PS/2 в 0x100. Войдите в конфигуратор
UserConfig, задав опцию в
приглашении загрузчика:
boot: -cЗатем в командной строке UserConfig
наберите:
UserConfig> flags psm0 0x100
UserConfig> quitМоя мышь PS/2 от MouseSystems похоже, не работает.Было несколько сообщений, что некоторые модели мышей PS/2 от
MouseSystems работают только в режиме высокого разрешения.
В других режимах курсор мыши постоянно прыгает в верхний левый угол
экрана.К сожалению, для версий 2.0.X и 2.1.X решения этой проблемы не
существует. Для версий от 2.2 до 2.2.5 приложите следующий патч к файлу
/sys/i386/isa/psm.c и перестройте ядро. Если у вас
нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу.
@@ -766,6 +766,8 @@
if (verbose >= 2)
log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
unit, i);
+ set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH);
+
#if 0
set_mouse_scaling(sc->kbdc); /* 1:1 scaling */
set_mouse_mode(sc->kbdc); /* stream mode */
Для версий 2.2.6 и выше укажите флаг 0x04 драйверу мыши PS/2 для
перевода её в режим высокого разрешения. Войдите в
UserConfig, задав опцию в
приглашении загрузчика:
boot: -cЗатем в командной строке UserConfig
наберите:
UserConfig> flags psm0 0x04
UserConfig> quitВ предыдущем разделе описана возможная причина проблем с мышью.При компиляции приложений для X программа imake не
может найти файл Imake.tmpl. Где он
находится?Файл Imake.tmpl является частью пакета Imake, стандартного
инструмента для построения X-приложений. Он, также как ещё несколько
заголовочных файлов, требуемых для построения X-приложений, содержится
в дистрибутиве программ X. Вы можете их проинсталлировать из sysinstall
или взять из дистрибутива X. Как поменять местами кнопки мыши?Поместите команду xmodmap -e "pointer = 3 2 1" в
один из ваших скриптов .xinitrc или .xsession.Как установить экранную заставку и где такие заставки можно
найти?Перед самым выпуском релиза FreeBSD 3.1 в систему была добавлена
возможность вывода заставки во время загрузки. На данный
момент экраны заставок должны быть 256-цветными файлами формата BMP
*.BMP или ZSoft PCX (*.PCX).
Кроме того, они должны иметь разрешение 320x200 или меньше для работы со
стандартными адаптерами VGA. Если вы включили поддержку VESA при компиляции
ядра, то вы можете использовать экраны размером до 1024x768. Заметьте, что
поддержка VESA требует указание опции VM86
при компиляции ядра. Реальная поддержка VESA может быть вкомпилирована в
ядро при указании опции VESA либо загружена в виде
kld-модуля ядра во время начальной загрузки.Чтобы использовать заставку, вам нужно изменить файлы, управляющие
процессом загрузки FreeBSD. Формат этих файлов был изменён перед выпуском
релиза FreeBSD 3.2, так что есть два способа загрузки экранных
заставок:FreeBSD 3.1Первым делом нужно найти экранную заставку в формате BMP. Релиз
3.1 поддерживает заставки только в формате Windows. После того, как
вы нашли понравившуюся вам заставку, скопируйте её в файл
/boot/splash.bmp. Затем вам нужно поместить в
файл /boot/loader.rc следующие строки:
load kernel
load -t splash_image_data /boot/splash.bmp
load splash_bmp
autoboot
FreeBSD 3.2+Кроме поддержки заставок в формате PCX, FreeBSD 3.2 включает
более гибкую систему конфигурации процесса загрузки. Если вы хотите,
вы можете использовать метод, указанный выше для FreeBSD 3.1. Если
же вы хотите использовать формат PCX, замените
splash_bmp на splash_pcx. С
другой стороны, если вы хотите использовать новую систему
конфигурации процесса загрузки, вам нужно создать файл
/boot/loader.rc, содержащий следующие
строки:
include /boot/loader.4th
start
и файл /boot/loader.conf со строками:
splash_bmp_load="YES"
bitmap_load="YES"
Здесь предполагается, что в качестве заставки вы используете файл
/boot/splash.bmp. Если вы используете PCX-файл,
скопируйте его под именем /boot/splash.pcx,
создайте файл /boot/loader.rc, как указано
выше, и создайте файл /boot/loader.conf, который
содержит следующее:
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx"
Теперь всё, что вам нужно - это сама заставка. Поищите заставки в
галерее по адресу
http://www.baldwin.cx/splash/.Можно ли в X использовать клавиши Windows(tm), которые есть на
клавиатуре?Да. Всё, что вам нужно сделать, это с помощью &man.xmodmap.1;
задать функции, которые вы хотите к этим клавишам привязать.Положим, что все клавиатуры Windows(tm) стандартны и
3 клавиши имеют следующие клавиатурные коды115 - клавиша Windows(tm), между клавишами Ctrl и Alt с левой
стороны116 - клавиша Windows(tm), справа от клавиши Alt-Gr117 - клавиша вызова меню, слева от клавиши Ctrl, находящейся
справаЧтобы заставить левую клавишу Windows(tm) набирать запятую, попробуйте
выполнить такую команду:
&prompt.root; xmodmap -e "keycode 115 = comma"Чтобы увидеть результат, вам нужно будет перезапустить ваш оконный
менеджер.Для того, чтобы переопределения клавиш Windows(tm) выполнялось
автоматически каждый раз при запуске X, можно поместить вызов команд
xmodmap в ваш ~/.xinitrc либо,
что предпочтительней, создать файл ~/.xmodmaprc и
включить в него параметры для xmodmap, по одному на
строку, и добавить строкуxmodmap $HOME/.xmodmaprcв ваш ~/.xinitrc.Например, я переопределил эти 3 клавиши так, чтобы они выполняли
функции F13, F14 и F15 соответственно. Это позволяет легко привязать
их к полезным функциям в приложениях или вашем менеджере окон.Чтобы сделать это, поместите в файл ~/.xmodmaprc
вот такие строки:
keycode 115 = F13
keycode 116 = F14
keycode 117 = F15
Я использую fvwm2 и переопределил клавиши таким
образом, что F13 сворачивает в иконку (или восстанавливает предыдущие
размеры) окна, на которое указывает курсор, F14 перемещает окно с курсором
на передний план или, если оно уже впереди, возвращает обратно, а F15
вызывает главное меню Рабочего места (Workplace) (приложение), даже если
курсор находится не на рабочем столе, что бывает полезно, если нет ни
одного видимого кусочка рабочего стола (к тому же логотип на клавише
соответствует этой функции).Вот строки из моего ~/.fvwmrc, с помощью которых
это достигается:
Key F13 FTIWS A Iconify
Key F14 FTIWS A RaiseLower
Key F15 A A Menu Workplace Nop
Работа в сетиГде можно найти информацию о бездисковой
загрузке?Бездисковая загрузка означает, что машина с FreeBSD
загружается по сети и читает необходимые файлы с сервера, а не со своего
диска. Подробное описание есть в
соответствующей главе
Руководства.Может ли машина с FreeBSD использоваться как маршрутизатор?Стандарты Internet и опыт практической работы не позволяют нам
в FreeBSD держать маршрутизацию пакетов включенной по умолчанию. Вы
можете сделать это, изменив значение следующей переменной в файле rc.conf на
YES:
gateway_enable=YES # Set to YES if this host will be a gateway
Этот параметр изменит значение системной переменнойnet.inet.ip.forwarding на 1.Кроме того, в большинстве случаев вам будет необходимо запустить
программу маршрутизации, для того, чтобы объявить о появлении нового
маршрутизатора другим системам в вашей сети; FreeBSD поставляется со
стандартной для BSD-систем программой маршрутизации routed, в более
сложных ситуациях вы можете попробовать GaTeD
(доступный по адресу
http://www.gated.org
с ftp.gated.Merit.EDU), который
поддерживает FreeBSD начиная с версии 3_5Alpha7.Мы обязаны предупредить вас, что даже когда FreeBSD настроена
таким образом, она не полностью соответствует стандартам Internet
для маршрутизаторов, однако для обычной работы этого хватает.Можно ли подключить машину с Win95 к Internet с помощью
FreeBSD?Как правило, те, кто задает такие вопросы, имеют дома два компьютера,
один с FreeBSD, а другой с Win95; идея состоит в использовании
FreeBSD для подключения к Internet, а затем осуществлять выход в
Internet из Windows95 через FreeBSD. На самом деле это просто
особый случай предыдущего вопроса. ... и ответ на него - да! Во FreeBSD 3.x, ppp режима пользователя
имеет параметр . Если вы запустите
ppp с параметром , установив
в файле /etc/rc.confgateway_enable
в значение YES и правильно настроите машину с Windows,
то всё должно прекрасно заработать.Более подробная информация о настройке может быть найдена в
Подробном
Примере PPP Стива Симса (Steve Sims).Если вы используете ppp режима ядра, или у вас Ethernet-подключение к
Internet, можно воспользоваться командой natd.
Пожалуйста, обратитесь к разделу о natd этого
FAQ.Почему не проходит компиляция последней версии BIND от ISC?Это - результат конфликта между файлом cdefs.h в
дистрибутиве и тем, что поставляется с FreeBSD. Достаточно
удалить файл compat/include/sys/cdefs.h.Поддерживает ли FreeBSD протоколы SLIP и PPP?Да. Посмотрите страницы справочника по командам slattach, sliplogin,
pppd и
ppp.
Pppd и ppp могут обслуживать как
входящие, так и исходящие соединения. Sliplogin имеет
дело исключительно со входящими соединениям,
а slattach
- только с исходящими.Эти программы описаны в следующих разделах
руководства:
Протокол SLIP (сервер)
Протокол SLIP (клиент)
Протокол PPP (режим ядра)
Протокол PPP (режим пользователя)Если вы имеете доступ в Internet через командную строку
оболочки, вам может подойти slirp.
С его помощью можно получить (ограниченный) доступ к таким
службам, как ftp и http прямо с вашей машины.Поддерживает ли FreeBSD NAT или Masquerading?Если у вас есть локальная сеть (одна или больше машин), но только один
IP адрес, предоставленный провайдером, вас может привлечь natd.
natd позволяет подключить всю сеть к Internet,
используя единственный IP адрес.Программа ppp имеет похожую
встроенную возможность через параметр . В обоих
случаях используется библиотека libalias.
Не могу создать устройство /dev/ed0!В стандарте сетевого взаимодействия Беркли сетевые интерфейсы
напрямую доступны только ядру. За дополнительной информацией
обратитесь к файлу /etc/rc.network и страницам
справочника, описывающим различные сетевые программы, упоминаемые здесь.
Если всё это оставит вас в недоумении, почитайте книгу, описывающую
администрирование сети в другой BSD-подобной операционной системе;
с некоторыми незначительными исключениями, администрирование сети
во FreeBSD в основном совпадает с SunOS 4.0 и Ultrix.Как настроить алиас на Ethernet?Добавьте netmask 0xffffffff в командной строке
ifconfig
так, как это сделано здесь:
&prompt.root; ifconfig ed0 alias 204.141.95.2 netmask 0xffffffffКак заставить адаптер 3C503 использовать другой тип сетевого
разъёма?Если вы хотите задействовать другой разъём, то должны указать
дополнительный параметр в командной строке ifconfig.
Разъёмом по умолчанию является link0. Чтобы
задействовать разъём AUI, а не BNC, используйте link2.
Эти флаги должны быть указаны с помощью переменных ifconfig_*
в
/etc/rc.conf.У меня проблемы при работе NFS во FreeBSD.Некоторые сетевые адаптеры работают (мягко говоря) хуже, чем другие
что может иногда вызывать проблемы при работе приложений типа NFS,
интенсивно использующих сеть.Подробности описаны в
соответствующей главе Руководства, посвящённой NFS.Почему я не могу смонтировать диск Linux по NFS?Некоторые версии NFS для Linux поддерживают запросы на монтирование
только с привилегированного порта; попробуйте
&prompt.root; mount -o -P linuxbox:/blah /mntПочему я не могу смонтировать диск Sun по NFS?Рабочие станции Sun под управлением SunOS 4.X поддерживают запросы
на монтирование только с привилегированного порта; попробуйте
&prompt.root; mount -o -P sunbox:/blah /mntПроблемы при связи по PPP с машинами NeXTStep.Попробуйте отменить все расширения TCP в /etc/rc.conf,
изменив значение следующей переменной в NO:
tcp_extensions=NO
Маршрутизаторы Annex фирмы Xylogic не работают по этой же причине,
поэтому при подключении к ним вам нужно проделать то же самое.Как включить поддержку multicast IP?Работа с многоадресной рассылкой по умолчанию полностью
поддерживается версиями FreeBSD 2.0 и выше. Если вы хотите использовать
ваш компьютер как маршрутизатор многоадресного трафика, вам нужно
перекомпилировать ядро с включенной опцией MROUTING и
запустить mrouted. Версии FreeBSD 2.2 и выше будут
запускать mrouted во время загрузки, если переменная
mrouted_enable в файле /etc/rc.conf
установлена в значение YES.Приложения MBONE находятся в своей категории портов, mbone. Если
вы ищете приложения для организации конференций vic и
vat, посмотрите там!Более подробная информация располагается на сервере
Mbone Information Web.Какие сетевые адаптеры сделаны на наборе микросхем DEC PCI?Вот список, составленный Гленом Фостером (Glen Foster),
с некоторыми незначительными добавлениями:
Vendor Model
----------------------------------------------
ASUS PCI-L101-TB
Accton ENI1203
Cogent EM960PCI
Compex ENET32-PCI
D-Link DE-530
Dayna DP1203, DP2100
DEC DE435, DE450
Danpex EN-9400P3
JCIS Condor JC1260
Linksys EtherPCI
Mylex LNP101
SMC EtherPower 10/100 (Model 9332)
SMC EtherPower (Model 8432)
TopWare TE-3500P
Znyx (2.2.x) ZX312, ZX314, ZX342, ZX345, ZX346, ZX348
(3.x) ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442,
ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd)
Почему я должен использовать FQDN для хостов не в моей сети?Вы, наверное, обнаружили, что хост, к которому вы обратились,
оказался на самом деле в другом домене; например, если вы находитесь
в домене foo.bar.edu и хотите обратиться к хосту mumble в
домене bar.edu, то должны указать его
полное доменное имя, mumble.bar.edu, а не
просто mumble.Традиционно, это позволял делать ресолвер BSD BIND. Однако текущая
версия bind,
поставляемая с FreeBSD, больше не добавляет имена доменов, отличающихся от
того, в котором вы находитесь, для не полностью указанных имён хостов. Так
что неполно указанный хост mumble будет найден либо как
mumble.foo.bar.edu, либо будет искаться
в корневом домене.Это отличается от предыдущего поведения, при котором поиск продолжался
в mumble.bar.edu
и mumble.edu.
Посмотрите RFC 1535 о причинах объявления такого поведения плохой
практикой и даже ошибкой в безопасности.Как хорошее решение, вы можете поместить строку
search foo.bar.edu bar.edu
вместо ранее используемой
domain foo.bar.edu
в файл
/etc/resolv.conf. Однако удостоверьтесь, что порядок поиска не
нарушает границ полномочий между местным и внешним
администрированием, как это названо в RFC 1535.Permission denied для любых действий, связанных с
работой сети.Если вы компилировали ядро с опцией IPFIREWALL,
имейте в виду, что политика по умолчанию настроена как в 2.1.7R (она
на самом деле изменилась во время разработки 2.1-STABLE), то есть указан
запрет на прохождение всех пакетов, которые явно не разрешены.Если вы случайно неверно отконфигурировали межсетевой экран, то для
восстановления работоспособность сети дайте такую команду, войдя
суперпользователем:
&prompt.root; ipfw add 65534 allow all from any to anyТакже вы можете установить firewall_type='open' в
файле /etc/rc.conf.Более подробная информация о конфигурировании межсетевого экрана в
FreeBSD находится в соответствующем разделе
Руководства.Какую нагрузку вызывает использование IPFW?Ответ на этот вопрос зависит главным образом от набора правил
и производительности процессора. Для большинства приложений, имеющих
дело с ethernet и простым набором правил, ответ: незначительно. Для
тех, кому нужны реальные цифры для удовлетворения любопытства,
читайте дальше.Следующие измерения были сделаны с использованием 2.2.5-STABLE на
машине 486-66. IPFW был модифицирован для измерения времени,
затрачиваемого внутри процедуры ip_fw_chk и вывода
результатов на консоль каждую тысячу пакетов.Тестировались два набора по 1000 правил в каждом. Первый набор был
предназначен для демонстрации наихудшего случая, повторяя условие
&prompt.root; ipfw add deny tcp from any to any 55555Это наихудший случай, так как все условия IPFW будут проверены
перед тем, как будет принято окончательное решение о том, что пакет
не соответствует условию (мы меняли номер порта). После 999
повторений этого условия находилось правило
allow ip from any to any.Второй набор был предназначен для быстрого прерывания
процесса проверки условий:
&prompt.root; ipfw add deny ip from 1.2.3.4 to 1.2.3.4Неподходящий IP-адрес источника для указанного условия
быстро вызывает пропуск этого правила. Как и ранее, последним правилом
было allow ip from any to any.Затраты на обработку пакета в первом случае было примерно 2.703
мс/пакет, или примерно 2.7 микросекунд на правило. Таким образом,
теоретический предел скорости обработки пакетов с этими правилами
равен примерно 370 пакетам в секунду. Предполагая использование
ethernet 10Мб/с с размером пакета примерно 1500, мы можем достигнуть
только 55.5% использования пропускной способности.В последнем случае на обработку каждого пакета было затрачено
примерно 1.172мс, или около 1.2 микросекунд на правило. Теоретический
предел обработки будет равен около 853 пакетам в секунду, что почти
соответствует скорости 10Мб/с ethernet.Большое количество протестированных правил и природа этих правил
не даёт представление о реальной жизни - они были использованы
только для генерации информации о времени обработки. Вот
несколько наблюдений, которые нужно иметь в виду для построении
эффективного набора правил:Поместите правило `established' в самое начало списка для
обработки основного трафика TCP. Не помещайте перед ним никаких
правил allow tcp.Старайтесь помещать часто вызываемые правила как можно раньше,
а редко используемые - позже (без изменения
политики, конечно). Вы можете выяснить частоту
использования правил с помощью вывода статистики командой
ipfw -a l.Как можно перенаправить запросы с одной машины на другую?Вы можете перенаправить запрос на FTP (или другой сервис) с помощью
пакаджа socket, доступного в дереве портов в категории
sysutils. Просто замените командную строку запуска сервиса
на вызов socket, типа:
ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.foo.comftpгде ftp.foo.com
и ftp являются соответственно хостом и портом
для перенаправления.Где можно найти средства управления сетевым трафиком?Для FreeBSD существуют два средства управления трафиком: свободно
распространяемый ALTQ
и коммерческий продукт Bandwidth Manager от Emerging Technologies.Почему появляются сообщения
/dev/bpf0: device not configured?Для работы программ, использующих Berkeley Packet Filter (bpf) необходимо
включение в ядро соответствующего драйвера. Перекомпилируйте ядро, добавив
в его конфигурационный файл следующую строку:
pseudo-device bpfilter # Berkeley Packet Filter
Затем, после перезапуска системы, вам нужно создать соответствующий файл
устройства. Это можно сделать, сменив текущий каталог на
/dev и выполнив команду
&prompt.root; sh MAKEDEV bpf0Обратитесь к разделу руководства, посвящённому созданию файлов
устройств за подробной информацией по этому вопросу.Как смонтировать диск Windows-машины в моей локальной сети, как это
делает smbmount в Linux?Воспользуйтесь пакетом sharity
light из Коллекции Портов.PPPНе могу заставить работать ppp. Что я делаю не так?Первым делом прочтите страницы
справочника, посвящённые ppp, а также соответствующий раздел Руководства.
Включите протоколирование командой
set log Phase Chat Connect Carrier lcp ipcp ccp command
Эта команда может быть набрана в командной строке ppp или она может находиться в конфигурационном файле
/etc/ppp/ppp.conf (начало секции default - лучшее для неё место. Удостоверьтесь, что
файл
/etc/syslog.conf содержит строки
!ppp
*.* /var/log/ppp.log
и файл /var/log/ppp.log существует. Теперь вы
сможете найти полную информацию о происходящем в файле протокола. Не
беспокойтесь, если не всё вам будет там понятно. Если вы будете
пользоваться чьей-то помощью, протокол вам пригодится.Если ваша версия ppp не понимает команду set log, вы
должны скачать последнюю
версию. Она рассчитана на FreeBSD версий 2.1.5 и выше.Ppp просто зависает, когда я его запускаюОбычно это происходит, когда не может быть определено имя вашего хоста.
Наилучший способ исправить это - удостовериться, что файл
/etc/hosts используется вашим ресолвером.
Отредактируйте файл /etc/host.conf, поместив
на первое место строчку hosts. Затем просто добавьте
записи о вашей машине в файл /etc/hosts. Если у вас
нет локальной сети, измените строку localhost:
127.0.0.1 foo.bar.com foo localhost
В противном случае просто добавьте ещё одну запись о вашем хосте.
Обратитесь к соответствующим страницам справочника за подробным
описанием.Если вы выполнили эти указания, вы сможете успешно выполнить
команду ping -c1 `hostname`.Ppp не звонит в режиме -autoВо-первых, проверьте, что у вас есть маршрут по умолчанию. Выполнив
команду netstat -rn, вы
должны увидеть две строки такого вида:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.0.2 UGSc 0 0 tun0
10.0.0.2 10.0.0.1 UH 0 0 tun0
Здесь предполагается, что вы использовали адреса,
приведённые в Руководстве, Справочнике или файле
ppp.conf.sample. Если у вас нет маршрута по умолчанию, это
может быть из-за использования старой версии
ppp, которая не
понимает слова HISADDR в файле
ppp.conf. Если ваша версия ppp из FreeBSD
версий ранее чем 2.2.5, замените строку
add 0 0 HISADDR
на
add 0 0 10.0.0.2
Другой причиной отсутствия маршрута по умолчанию может быть
то, что вы ошибочно установили маршрут по умолчанию в вашем файле /etc/rc.conf
(этот файл назывался /etc/sysconfig
до 2.2.2-RELEASE), и вы пропустили строку
delete ALL
в ppp.conf. В таком случае обратитесь к
соответствующему разделу
Руководства.Что означает сообщение No route to host?Эта ошибка появляется из-за отсутствующего раздела
MYADDR:
delete ALL
add 0 0 HISADDR
в файле /etc/ppp/ppp.linkup. Он необходим, если ваш
IP адрес выделяется динамически или адрес маршрутизатора вам не
известен. Если вы используете интерактивный
режим, вы можете набрать следующие команды после входа в
пакетный режим (пакетный режим
идентифицируется заглавными буквами PPP в
приглашении):
delete ALL
add 0 0 HISADDR
Обратитесь к разделу PPP и
динамические IP адреса Руководства за подробной информацией.Соединение разрывается через 3 минутыТаймаут для ppp по умолчанию равен 3 минутам. Это может быть
изменено строкой
set timeout NNNгде NNN - время неактивности в секундах,
после которого соединение закрывается. Если NNN
равно нулю, соединение никогда не разрывается по таймауту. Эту команду
можно поместить в файл ppp.conf или набрать ее в
интерактивном режиме. Изменение этого параметра также возможно при
активном соединении, если подключиться к сокету ppp сервера с помощью программ
telnet
или pppctl.
Обратитесь к страницам Справочника, посвящённым
ppp.Соединение разрывается при большой нагрузкеЕсли у вас включен Link Quality Reporting (LQR), возможно,
что слишком много пакетов LQR теряется в канале. Ppp делает вывод,
что канал плох, и разрывает соединение. В FreeBSD до версии 2.2.5
LQR было включено по умолчанию. Сейчас оно по умолчанию выключено.
LQR можно выключить строкой
disable lqr
Соединение разрывается в случайные промежутки времениИногда, на шумной линии или даже на линии с включенным режимом
ожидания звонка, ваш модем может вешать трубку, думая (совершенно
напрасно), что потерял несущую.В большинстве модемов есть параметр, определяющий чувствительность
к временной потере несущей. Например, в модеме USR Sportster,
это определяется значением регистра S10 в десятых долях секунды.
Чтобы сделать связь более устойчивой, добавьте следующую
последовательность посылок-ожиданий в строку набора:
set dial "...... ATS10=10 OK ......"
Обратитесь к руководству по вашему модему.Соединение часто рвётся в случайные промежутки времениМногие сообщают об обрывах соединений без видимой причины. Первым
делом нужно выяснить, с какой стороны соединения рвётся связь. Если вы используете внешний модем, можете просто попробовать
использовать утилиту ping и посмотреть, мигает ли
индикатор TD при передаче данных. Если он мигает (а
индикатор RD нет), проблема с той стороны. Если
индикатор TD не загорается, проблема
с вашей стороны. При использовании внутреннего модема вам необходимо
воспользоваться командой set server, указав её в файле
ppp.conf. Когда произойдёт обрыв связи, подключитесь
к ppp с помощью pppctl. Если ваше сетевое подключение неожиданно
восстановится (ppp оживает при проявлении активности на диагностическом
сокете) или или если вы не сможете соединиться (здесь мы полагаем, что
команда set socket в начальный момент была выполнена
успешно), то проблема имеет локальный характер. Если вы сможете
подключиться, но связи всё равно нет, включите вывод отладочной информации
командой set log local async и запустите
ping из другого окна или терминала, чтобы проверить
связь. В отладочном выводе будут показаны данные,
передаваемые и получаемые из канала связи. Если данные посылаются,
но не принимаются обратно, проблема с противоположной стороны.Выяснив, является эта проблема локальной или удалённой системы,
вы имеете следующие возможности:Удалённая система не отвечаетЗдесь вы мало что можете сделать. Большинство провайдеров
отказываются оказать помощь, если вы используете ОС не от Microsoft.
Вы можете добавить команду enable lqr в ваш
ppp.conf, что позволит ppp отследить ошибки в
удалённой системе и закрывать соединение, однако такое обнаружение
достаточно медленно и поэтому
не так уж полезно. Вы можете также просто не сообщать своему
провайдеру, что запускаете user-ppp....Первым делом попробуйте отключить всю местную компрессию,
указав в конфигурационном файле следующее:
disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
deny pred1 deflate deflate24 protocomp acfcomp shortseq vj
Теперь попробуйте установить соединение ещё раз и удостовериться,
что ситуация не изменилась. Если качество соединения улучшилось
или проблема оказалась полностью решённой, выясните, настройка
чего приводила к проблемам методом проб и ошибок. Это даст вам
дополнительную защиту, когда вы будете разговаривать с вашим
провайдером (хотя при этом может обнаружиться, что вы работаете
не с продуктом Microsoft). Перед тем, как звонить провайдеру, включите вывод отладочной
информации, как вы это делали ранее и подождите, пока соединение
снова не прервётся. Правда, для этого требуется некоторое
дисковое пространство. Интерес могут представлять последние
прочитанные из порта данные. Обычно это данные в формате ascii
и они могут даже содержать описание проблемы (Memory fault,
core dumped ?).Если ваш провайдер согласен помочь вам, нужно будет включить
режим отладки с их стороны, а потом, когда связь прервётся в
следующий раз, они могут сказать вам, почему возникли проблемы
с их стороны. Будет хорошо, если вы пришлёте детальное описание
на адрес &a.brian;, или даже попросите провайдера связаться
со мной напрямую.Ppp зависаетЛучше всего в этом случае перекомпилировать ppp, добавив параметры
CFLAGS+=-g и STRIP= в конец
Makefile, а затем выполнить команду
make clean && make && make install.
Когда ppp зависнет, найдите идентификатор процесса ppp с помощью команды
ps ajxww | fgrep ppp и выполните команду
gdb ppp PID. Затем в
приглашении gdb вы можете использовать команду bt для
получения стека вызовов.Пошлите результат на адрес brian@Awfulhak.org.Ничего не происходит после сообщения Login OK!До версии FreeBSD 2.2.5, как только связь устанавливалась, ppp ожидал начала
согласования Line Control Protocol
(LCP) с противоположной стороны. Многие провайдеры Internet не
начинают согласования и предполагают, что это сделает клиент.
Чтобы заставить ppp инициировать согласование
параметров LCP, используйте следующую строку:
set openmode active
Замечание: Ничего страшного не
произойдёт, если согласование
начнут обе стороны, поэтому режим инициирования сейчас
по умолчанию активный. Однако, в следующем разделе описывается
ситуация, когда это приводит к некоторым
неприятностям.В протоколе есть сообщения о том, что magic being the
same.Иногда, сразу же после установления соединения, вы можете увидеть
сообщения в протоколе, говорящие что magic is the same.
Иногда эти сообщения проходят безболезненно, а иногда одна из сторон
прекращает работу. Большинство реализаций ppp не может справиться с
такой ситуацией, и, даже когда связь выглядит установившейся, вы
будете видеть только бесконечно повторяющиеся конфигурационные
запросы и подтверждения в файле протокола до тех пор, пока ppp
окончательно не закроет соединение.Обычно это происходит на серверах с медленными дисками, на
которых порт обслуживает программа getty, а ppp выполняется из
сценария регистрации или другой программы после регистрации
пользователя. Были сообщения, что такое случается постоянно при
использовании slirp. Причина заключается в том, что во время,
проходящее между завершением работы getty и запуском ppp, ppp
со стороны клиента начинает посылать пакеты Line Control Protocol
(LCP). Так как режим эха остаётся всё ещё включенным, ppp клиента
получает отражения своих запросов.Частью процесса согласования параметров LCP является определение
магического числа для каждой стороны соединения для
обнаружения отражений. Согласно спецификации, когда одна
сторона пытается использовать совпадающее "магическое" число, должен быть
послан ответ
NAK и должно быть выбрано новое "магическое" число. В тот момент,
когда на порту сервера включен режим эха, клиент ppp посылает пакеты
LCP, получает то же самое "магическое" число в отражённом пакете и
отвечает на него NAK. Он также видит отражённый NAK (который также
означает, что ppp должен изменить своё "магическое" число). В
потенциале это может вызвать появление огромного количества процессов
смен "магических" чисел, и все они накапливаются в буфере терминала.
Как только запустится сервер ppp, он будет перегружен запросами на
смену "магических", немедленно решит, что этого много для согласования
LCP и прервёт соединение. В то же самое время, клиент, который больше
не видит отражений, останавливается для того, чтобы увидеть, что
сервер закрыл соединеие.Этого можно избежать, позволив начинать согласование
противоположной стороне следующей строкой в файле ppp.conf:
set openmode passive
Это заставит ppp ожидать начала согласования LCP. Некоторые
серверы, однако, могут никогда не начать согласование. Если это тот
самый случай, вы можете сделать следующее:
set openmode active 3
Это заставит ppp пассивно ждать 3 секунды, и только затем посылать
запросы LCP. Если противоположная сторона начнёт посылать в этот
момент запросы, ppp немедленно ответит, не ожидая истечения
трёхсекундного интервала.Согласование LCP продолжается, пока не закроется соединениеВ настоящий момент одной из неприятных особенностей
реализации ppp является то, что она не
связывает сообщения LCP, CCP & IPCP с запросами. Как результат, если
реализация ppp с одной стороны более чем на
6 секунд медленнее, чем с
другой, противоположная сторона будет посылать два дополнительных
запроса на согласование параметров LCP. Это фатально.Предположим, что у нас работают две реализации, A и B.
A начинает посылать запросы LCP сразу же
после соединения, а
B требуется 7 секунд для запуска. Когда
B запускается,
A послало 3 LCP-запроса. Полагаем, что
режим эха выключен,
в противном случае мы столкнулись бы с проблемами "магического"
числа, описанные в предыдущем разделе. B
посылает REQ, затем
ACK на первый REQ от A. Это приводит к тому,
что A входит
в состояние OPENED и посылает (первый) ACK обратно
B. В
то же самое время B посылает обратно ещё два
ACK в ответ на
два дополнительных REQ, посланные A до старта
B. B
затем получает первый ACK от A и
возвращается в состояние
REQ-SENT, послав ещё один (четвёртый) REQ
согласно RFC. Затем
он получает третий ACK и входит в состояние OPENED. В
то же
время B принимает четвёртый REQ от A, что возвращает
его в состояние ACK-SENT и посылает ещё один
(второй) REQ
и (четвёртый) ACK согласно RFC. A получает
REQ, переходит
в состояние REQ-SENT и посылает ещё один
REQ. Он немедленно
принимает последующий ACK и входит в
состояние OPENED.Это будет продолжаться до тех пор, пока одна из сторон не
обнаружит, что это ни к чему не приводит и не закроет соединение.Лучшим способом избежать этой ситуации является конфигурация
одной из сторон как passive, чтобы она ждала
другую для
начала согласования. Это можно сделать командой
set openmode passive
С этой командой нужно быть осторожным. Вы также должны будете
использовать команду
set stopped N
для ограничения периода ожидания, в течении которого ppp ждёт
начала согласования с противоположной стороны. Как вариант, может
быть использована строка
set openmode active N
(где N - период ожидания в секундах
перед тем, как начать согласование).Вскоре после соединения ppp блокируетсяВ версиях FreeBSD ранее 2.2.5, была возможна ситуация,
когда связь выключалась очень скоро после соединения из-за
некорректной обработки запроса на согласования сжатия данных
ppp. Это случалось, когда обе стороны
пытались установить разные типы CCP (Compression Control Protocol). Эта
проблема
сейчас решена, но если вы всё ещё используете старую версию
ppp, проблема может быть обойдена с помощью
строки
disable pred1
Когда я выполняю команду shell для тестирования соединения,
ppp блокируетсяКогда вы выполняете команду shell или
!, ppp запускает оболочку (если были
заданы параметры, ppp их
использует). Ppp будет ждать окончания выполнения команды, прежде
чем продолжить. Если вы попытаетесь воспользоваться связью ppp
после запуска команды, связь будет выглядеть заблокированной. Это
происходит из-за того, что ppp ждёт завершения
выполнения запущенной команды.Если вам необходимо выполнять подобные команды, используйте
команду !bg. В этом случае нужная команда будет
выполняться в фоновом режиме, а ppp сможет продолжить обслуживание канала
связи.Ppp, обслуживающее нуль-модем, никогда не закрываетсяPpp не может определить, что соединение
было закрыто.
Это происходит из-за метода использования сигнальных линий
нуль-модемного кабеля. При использовании такого типа соединения
всегда включайте LQR.
enable lqr
По умолчанию LQR включается, если это было затребовано с
противоположной стороны на этапе согласования параметров
соединения.В режиме -auto ppp неожиданно начинает звонитьЕсли ppp начинает неожиданно звонить, вы
должны определить
причину и задать фильтры dfilters для предотвращения подобных
звонков.Для выяснения причины такого поведения, используйте строку:
set log +tcp/ip
Это включит протоколирование всего трафика через соединение. В
следующий раз, когда неожиданно будет установлено соединение,
вы установите причину по временным отметкам в файле протокола.После этого вы можете запретить дозвонку при выясненных
условиях. Как правило, такие проблемы возникают из-за обращений
к DNS. Для предотвращения обращений к DNS и установления соединения
(что не запретит ppp пропускать пакеты через уже
установленное соединение), используйте такую комбинацию:
set dfilter 1 deny udp src eq 53
set dfilter 2 deny udp dst eq 53
set dfilter 3 permit 0/0 0/0
Это может вам не подойти, так как закроет возможность дозвонки
по запросу - большинству программ нужно обратиться к DNS до того,
как начать работать.В случае DNS, вы должны попытаться определить, кто пытается
определить имя хоста. В большинстве случаев виновным оказывается
sendmail.
Удостоверьтесь, что вы указали программе sendmail
не осуществлять обращений к DNS в его конфигурационном файле.
Обратитесь к разделу о настройке почты
за подробным описанием создания конфигурационного файла и что туда
нужно поместить. Вам может понадобиться добавить в файл
.mc строку:
define(`confDELIVERY_MODE', `d')dnl
Это заставит sendmail ставить все сообщения в очередь до тех пор, пока
не будет запущена её обработка (как правило, sendmail запускается с
параметрами , указывающими, что
обрабатывать очередь нужно каждые 30 минут) или до тех пор, пока
не будет выполнена команда sendmail -q (может быть, из
файла ppp.linkup).Что означают ошибки CCPВ файле протокола появляются такие сообщения об ошибках:
CCP: CcpSendConfigReq
CCP: Received Terminate Ack (1) state = Req-Sent (6)
Это происходит, если ppp пытается установить компрессию
типа Predictor1, а противоположная сторона не хочет устанавливать
никакой компрессии. Эти сообщения безобидны, но если вы хотите
от них избавиться, вы можете запретить компрессию Predictor1 и
у себя тоже:
disable pred1
Ppp блокируется во время передачи файла с ошибками
ввода-выводаВ FreeBSD 2.2.2 и ранее существовала ошибка в драйвере устройства
tun, которая не позволяла проходить пакетам размером, превышающим
значение MTU интерфейса. Приём пакета, большего, чем размер MTU,
приводит к ошибке ввода-вывода, который протоколируется через
syslogd.Спецификация протокола ppp утверждает, что MRU, равное 1500,
должно всегда подходить как минимальное,
несмотря на
согласование LCP, таким образом, если сделать MTU меньше
1500, ваш провайдер может начать передавать пакеты размером 1500,
несмотря ни на что, и вы это почувствуете - ваше соединение
заблокируется.Проблема может быть обойдена, если никогда не ставить MTU,
меньшее, чем 1500, для FreeBSD 2.2.2 и ранее.Почему ppp не протоколирует скорость соединения?Для вывода протокола взаимодействия с модемом вам нужно
включить следующее:
set log +connect
Это заставит ppp протоколировать
всё, вплоть до последней прочтённой через expect
строки.Если вы хотите видеть скорость соединения и используете
PAP или CHAP (и поэтому вам не нужно определять никаких сценариев
входа через set login после получения строки CONNECT
сценарием дозвонки dial), вы должны указать ppp, что нужно ожидать полную
строку CONNECT, вроде следующего:
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \
\"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"
Здесь мы получили строку CONNECT, ничего не посылаем, затем
ожидаем символа перевода строки, заставляя ppp принять полный ответ модема.Ppp игнорирует символ \
в chat-скриптеPpp обрабатывает каждую строку в ваших конфигурационных файлах, так что
он может проинтерпретировать строку вида
set phone "123 456 789" правильно (и
обнаружить. что номер является на самом деле
единственным аргументом. Для того, чтобы
указать символ ", вы должны экранировать его символом
обратного слэша (\).Когда интерпретатор chat обрабатывает каждую строку, он ещё раз
просматривает аргумент для того, чтобы найти какую-либо специальную
последовательность типа \P или \T
(обратитесь к Справочнику). В результате этой двойной интерпретации вы
должны всегда использовать правильное число экранирующих символов.Если вам нужно передать символ \, например, вашему
модему, вам необходимо указать что-то типа:
set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"
что приведёт к такой последовательности:
ATZ
OK
AT\X
OK
или
set phone 1234567
set dial "\"\" ATZ OK ATDT\\T"
что даст такую последовательность:
ATZ
OK
ATDT1234567
Ppp получает ошибку защиты, но я не вижу файла
ppp.corePpp (или любая другая программа такого рода) никогда не
создаёт файлов дампа памяти. Так так ppp запускается с
эффективным uid, равным 0, то операционная система не будет
записывать дамп памяти ppp на диск перед его завершением. Если,
однако ppp всё же прекратит работу из-за
нарушения защиты,
или по другому сигналу, который вызывает создание дампа памяти,
и вы уверены, что используете самую
последнюю версию (смотрите
самое начало раздела), то вы должны сделать следующее:
&prompt.user; tar xfz ppp-*.src.tar.gz
&prompt.user; cd ppp*/ppp
&prompt.user; echo STRIP= >>Makefile
&prompt.user; echo CFLAGS+=-g >>Makefile
&prompt.user; make clean all
&prompt.user; su
&prompt.root; make install
&prompt.root; chmod 555 /usr/sbin/pppТеперь у вас есть отладочная версия ppp. Вам нужно
стать суперпользователем для запуска ppp, так как соответствующие
биты прав были убраны. Когда запустите ppp, обратите особое внимание
на то, какой каталог у вас был текущим на этот момент.Итак, если ppp получит ошибку нарушения защиты, он сбросит дамп
памяти с именем ppp.core. Затем вам нужно сделать следующее:
&prompt.user; su
&prompt.root; gdb /usr/sbin/ppp ppp.core(gdb)bt
.....
(gdb)f 0
....
(gdb)i args
....
(gdb)l
.....
Вся эта информация должна быть предоставлена вместе с вашим
вопросом, чтобы проблему можно было продиагностировать.Если вы умеете обращаться с gdb, вы можете попробовать найти
причины образования дампа, а также адреса и значения относящихся
к этому переменных.Процесс, вызвавший прозвонку в режиме auto, никогда не получает
затребованного соединенияЭта проблема проявлялась, когда ppp в
режиме auto был настроен на динамическое согласование локального IP-адреса
с противоположной стороной. Это исправлено в последней версии -
поищите на странице справочника слово iface.Причиной было то, что когда эта программа использует системный
вызов
connect(2), для сокета назначается IP-адрес tun-интерфейса.
Ядро создаёт первый исходящий пакет и записывает его в устройство
tun. Затем ppp читает пакет и устанавливает
соединение. Если
в результате согласования ppp динамического
IP-адреса,
адрес интерфейса изменется, сокет будет работать некорректно. Любые
IP-пакеты, передаваемые через сокет, будут отброшены. Если даже
этого не произойдёт, ответные данные не будут достигать отправителя,
так как этот адрес больше ему не принадлежит.Теоретически есть несколько способов решить эту проблему.
Лучше всего, если противоположная сторона назначит интерфейсу тот же
самый IP-адрес :-) Текущая версия ppp именно так и
поступает, более ранние реализации этого не делали.Самым простым решением будет просто никогда не менять IP-адрес
tun-интерфейса, а вместо этого изменять на лету все исходящие пакеты так,
чтобы IP-адрес источника менялся с IP-адреса интерфейса на соответствующий
с противоположной стороны. Это, в сущности, то же самое, что делает опция
iface-alias в последней версии ppp (с помощью библиотеки libalias(3)
и ключа для ppp) - она отслеживает все назначенные
ранее интерфейсу адреса и замещает их на последний из назначенных.Другой возможный (и, наверное, самый надёжный) способ - это
создать системный вызов, меняющий IP-адреса всем уже связанным
сокетам. Ppp использовал бы этот вызов для
модификации сокетов
всех работающих программ после согласования нового IP-адреса. Этот
же самый системный вызов могли бы использовать клиенты DHCP, когда
они осуществляют повторную привязку к сокету.Ещё одной возможностью является разрешение интерфейсу становиться
активным без IP-адреса. Исходящим пакетам будет даваться IP адрес
255.255.255.255 до тех пор, пока не будет дан ioctl-запрос SIOCAIFADDR.
приводящий к полной привязке сокета. Ppp
нужно будет изменять
IP-адрес источника и контрольную сумму пакета, только если он
установлен в 255.255.255.255. Это, однако, является некоторым
хаком, так как ядро будет посылать некорректные пакеты на не полностью
сконфигурированный интерфейс, в предположении, что существует
механизм исправления этих пакетов.Почему большинство игр не работает с опцией -nat?Причиной, по которой игры и подобные программы не работают с
библиотекой libalias заключается в том, что внешняя машина будет пытаться
открыть соединение или посылать (нежданные) UDP пакеты на машину
внутренней сети. Программное обеспечение, обеспечивающее опцию -nat, не
знает о том, что она должна пересылать эти пакеты машине внутренней
сети.Чтобы это всё же заработало, удостоверьтесь, что единственной
запущенной программой является программное обеспечение, с которым вы
испытываете проблемы, затем напустите tcpdump на tun-интерфейс
маршрутизатора либо включите протоколирование tcp/ip
в ppp (set log +tcp/ip) на маршрутизаторе.Когда вы запустите некорректно работающее программное обеспечение,
вы должны увидеть пакеты, проходящие через маршрутизатор. Когда
что-то начнёт приходить извне, оно будет отброшено (в этом-то и
проблема). Заметьте номер порта получателя этих пакетов, затем
завершите работу вашего программного обеспечения. Выполните эту
процедуру несколько раз для того, чтобы убедиться, что номер порта
постоянен. Если это так, то следующая строчка в соответствующем
разделе /etc/ppp/ppp.conf заставит программное обеспечение
функционировать нормально:
nat port protointernalmachine:portportЗдесь proto - это tcp
либо udp, internalmachine -
это машина, которой вы хотите перенаправлять пакеты,
и port - это номер порта получателя
пакетов.Несомненно, вы не сможете использовать программное обеспечение на
других машинах, не изменяя указанную выше команду, а также запускать
программное обеспечение на двух машинах внутри сети одновременно -
в конце концов, внешний мир видит всю вашу сеть как единственную
машину.Если номера портов непостоянны, есть ещё три варианта:1) Настройте поддержку этого в
libalias. Примеры особых случаев можно найти в
/usr/src/lib/libalias/alias_*.c
(alias_ftp.c - хорошее начало). Это
означает, что вам нужно будет использовать чтение некоторых распознаваемых
исходящих пакетов, обнаруживать команды для установления внешней машиной
обратной связи на внутреннюю машину на конкретный (случайный) порт и
настраивать маршрут в таблице соответствий так, чтобы
последующие пакеты проходили нормально.Это самое трудоёмкое решение, но оно наилучшее и позволит программному
обеспечению работать на нескольких машинах.2) Используйте прокси-сервера.
Приложение может поддерживать, например, socks5 или (как в случае
cvsup) может иметь режим passive, обходящийся
без запросов к противоположной стороне на открытие обратного
соединения.3) Переназначьте всё на внутреннюю
машину с помощью команды nat addr. Это решение в
лоб.Кто-нибудь ведёт список полезных номеров портов?Пока нет, но ниже находится список, могущий таковым стать (если
к этому будет проявлен какой-либо интерес). В каждом примере
internal нужно заменить на IP-адрес машины,
участвующей в игре.Asheron's Callnat port udp
internal:65000 65000Находясь в игре, вручную смените номер порта на 65000. Если
у вас есть несколько машин, на которых вы хотите играть, назначьте
каждой машине уникальный номер порта (то есть 65001, 65002 и так
далее), и добавьте по строчке nat port для каждой
машины.Half Lifenat port udp
internal:27005 27015PCAnywhere 8.0nat port udp
internal:5632 5632nat port tcp
internal:5631 5631Quakenat port udp
internal:6112 6112Альтернативное решение, обеспечивающее поддержку прокси для
Quake, можно найти на сервере
www.battle.net.Quake 2nat port udp
internal:27901 27910Red Alertnat port udp
internal:8675 8675nat port udp
internal:5009 5009Что такое ошибки FCS?FCS является сокращением от Frame Check Sequence
(контроль последовательности кадров). Каждый кадр ppp имеет
контрольную сумму для проверки того, что принятые данные совпадают
с переданными. Если FCS принятого пакета некорректна, пакет
отбрасывается и счётчик FCS для HDLC увеличивается. Значения ошибок
уровня HDLC можно вывести командой show hdlc.Если у вас плохая линия (или драйвер коммуникационного адаптера
отбрасывает пакеты), ошибки FCS неизбежны. Это обычно не является
причиной для волнений, хотя это существенно замедляет протоколы
компрессии. Если у вас внешний модем, проверьте качество
экранирования соединительного кабеля - это может избавить от
проблемы.Если ваша связь замирает, как только вы соединились и
наблюдается большое количество ошибок FCS, это может быть вызвано
не полной прозрачностью канала для 8-битовых данных. Проверьте, что
модем не использует программного управления потоком (XON/XOFF). Если же
оборудование должно , использовать программное
управление потоком, то воспользуйтесь командой set accmap
0x000a0000 для указания ppp экранировать
символы ^Q и ^S.Другой причиной слишком большого количества ошибок FCS может
быть прекращение противоположной стороной сеанса PPP.
В этом случае Вам может понадобиться включить протоколирование
async для проверки того, не являются ли поступаемые из
линии данные на самом деле приглашениями login или shell. Если вы
получили приглашение shell с противоположной стороны, возможно
завершение ppp без обрыва связи командой close
lcp (последующая команда term
снова вернёт вас к приглашению
shell на удалённой машине).Если ничего в файле протокола не говорит о том, что связь
была прервана, вы должны спросить у администратора удалённой
машины (вашего провайдера), почему сеанс был закрыт.Почему при работе в MacOS и Windows 98 соединения замирают, когда на
маршрутизаторе используется PPPoEМы благодарим Майкла Возняка (Michael Wozniak)
mwozniak@netcom.ca, который сообщил следующую информацию, и
Дэна Флемминга (Dan Flemming) danflemming@mac.com за решение
проблемы в случае Mac:Это происходит из-за эффекта, который можно назвать чёрной
дырой на маршрутизаторе. MacOS и Windows 98 (и, может быть,
другие операционные
системы от Microsoft), посылают пакеты TCP с запрашиваемым размером
сегмента, который слишком велик для того, чтобы быть помещённым в кадр
PPPoE (для сети ethernet размер MTU по умолчанию равен 1500) и с установленным битом не
фрагментировать (по умолчанию для TCP), а маршрутизаторы Telco не
посылает пакет ICMP нужно фрагментировать обратно на сайт
www, с которым вы работаете. Когда
www-сервер посылает вам кадры, которые не помещаются в поток PPPoE, то
маршрутизаторы Telco их отбрасывают и странички не загружаются (часть
страниц/графики всё же видно, потому что они меньше, чем MSS). Похоже,
что такие настройки действуют по умолчанию на большинстве конфигураций
PPPoE Telco (если они вообще знают, как программировать маршрутизатор...
да уж...).Одним из способов исправить это является использование утилиты regedit
на машинах 96/98 для того, чтобы добавить в реестр следующий
параметр...
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU
Это должна быть строка со значением 1450 (точнее,
1464, чтобы размещать пакеты TCP точно по размеру кадра
PPPoE, однако 1450 даёт вам некоторый запас в случае
других протоколов IP, которые вы можете использовать).Обратитесь к MS KB # Q158474 - Windows TCPIP Registry
Entries и Q120642 - TCPIP & NBT Configuration Parameters
for Windows NT для получения подробной информации по изменению
MTU в Windoze для работы с маршрутизатором FreeBSD/NAT/PPPoE.К несчастью, в MacOS нет возможности изменить настройки TCP/IP. Однако
имеется коммерческое программное обеспечение, такое, как OTAdvancedTuner
(OT for OpenTransport, the MacOS TCP/IP stack) компании Sustainable Softworks, которое
позволяет пользователям настраивать параметры TCP/IP. Пользователи MacOS
NAT должны выбрать ip_interface_MTU из выпадающего меню,
ввести число 1450 вместо 1500 в окне,
затем щёлкнуть на кнопке, следующей за Save as Auto
Configure, и щёлкнуть на Make Active.Ничего не помогает - я уже отчаялся!Если всё уже перепробовано, и ничего не получается, пошлите нам
максимальное количество информации, ваш конфигурационный файл,
способ запуска ppp, соответствующие части
файла протокола, и вывод команды netstat -rn
(до и после соединения) в адрес списка рассылки
freebsd-questions@FreeBSD.org или в телеконференцию comp.unix.bsd.freebsd.misc,
и может быть, кто-нибудь укажет вам верное направление.Коммуникационные адаптерыВ этом разделе освещены вопросы о работе последовательных
адаптеров во FreeBSD. Протоколы PPP и SLIP рассматриваются в разделе,
посвящённом .Как узнать, какие последовательные порты были обнаружены
FreeBSD?При загрузке ядра FreeBSD оно будет пытаться найти последовательные
порты, с поддержкой которых было откомпилировано. Вы можете
повнимательней присмотреться к выдаваемым сообщениям либо выполнить
команду
&prompt.user; dmesg | grep sioпосле загрузки и запуска системы.Вот пример вывода указанной команды:
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
Здесь присутствуют два последовательных порта. Первый использует irq
4, порт ввода/вывода 0x3f8 и построен на микросхеме
UART типа 16550A. Второй использует тот же тип микросхемы, но использует
irq 3 и адрес порта ввода/вывода 0x2f8. Внутренние
модемы выглядят точно также, как последовательные порты, за исключением
того, что к модем ним подключен всегда.В ядро GENERIC встроена поддержка двух
последовательных портов, с irq и адресами портов ввода/вывода, как в
примере выше. Если эти настройки не соответствуют вашим, или если вы
добавили внутренние модемы, или у вас больше последовательных портов, чем
описано в ядре, просто переконфигурируйте ядро. За дополнительной
информацией обратитесь к разделу о построении
ядра.Как узнать, какие внутренние модемы были обнаружены FreeBSD?Посмотрите ответ на предыдущий вопрос.Я только что поставил 2.0.5 и не нашёл устройств
tty0X!Не волнуйтесь, просто они были объединены с устройствами
ttydX. Вам придётся подправить конфигурационные
файлы, которые вы раньше использовали.Как осуществляется доступ к последовательным портам во
FreeBSD?Третий последовательный порт, sio2 (который в
DOS называется COM3), называется /dev/cuaa2 для
устройств, выполняющих исходящие звонки, и /dev/ttyd2
для устройств,
принимающих входящие звонки. Какая разница между этими двумя классами
устройств?Вы должны использовать ttydX для входящих
соединений. При открытии /dev/ttydX в блокирующем
режиме, процесс будет ожидать неактивности соответствующего устройства
cuaaX, а затем появления сигнала о наличии несущей.
При открытии устройства cuaaX, он проверяет, что
последовательный порт не используется уже устройством
ttydX. Если порт доступен, он похищает
его у устройства ttydX. Также устройство
cuaXX не следит за наличием несущей. С такой схемой
работы и модемом, находящимся в режиме автоответа, вы можете позволить
пользователям входить в систему и в то же время можете осуществлять
исходящие звонки, а система позаботится о возможных конфликтах.Как включить поддержку многопортовых последовательных
адаптеров?Повторим ещё раз: информация о конфигурировании ядра содержится в
разделе, посвящённом этому вопросу. Для многопортовых последовательных
адаптеров в файле конфигурации ядра поместите ключевое слово
sio
для каждого порта на адаптере. Но irq и вектор должен быть указан
только у одного порта. Все порты на адаптере должны использовать одно
и то же irq. Используйте последний последовательный порт для указания
irq. Также включите опцию COM_MULTIPORT.В следующем примере дано описание 4-портового адаптер AST на irq
7:
options "COM_MULTIPORT"
device sio4 at isa? port 0x2a0 tty flags 0x781
device sio5 at isa? port 0x2a8 tty flags 0x781
device sio6 at isa? port 0x2b0 tty flags 0x781
device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
Флаги указывают, что управляющий порт имеет младший номер
устройства 7 (0x700), включена диагностика на время
обнаружения
(0x080), и все порты используют одно и то же irq
(0x001).Может ли FreeBSD использовать несколько многопортовых адаптеров
с одинаковым irq?Пока нет. Вы должны назначить уникальный irq для каждого
адаптера.Можно ли установить режим работы по умолчанию для порта?Вашему приложению может понадобиться открыть устройства
ttydX (или cuaaX). Когда процесс
открывает устройство, оно имеет набор параметров ввода/вывода. Вы можете
посмотреть их значения командой
&prompt.root; stty -a -f /dev/ttyd1Когда вы меняете настройки этого устройства, они действуют
вплоть до закрытия устройства. При повторном открытии оно будут
иметь режимы работы по умолчанию. Чтобы изменить значения режимов
работы по умолчанию, вы можете открыть и изменить настройки в устройстве
начального состояния. Например, чтобы сделать режимом
по умолчанию режим CLOCAL, 8 бит, и управление потоком
XON/XOFF для устройства ttyd5, сделайте
следующее:
&prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoffДля выполнения таких действий предназначен скрипт
/etc/rc.serial. Теперь при открытии устройства
ttyd5 приложение будет иметь именно такой режим
работы с портом. Оно, однако. может изменить эти режимы по своему
усмотрению.Вы можете запретить изменение приложением некоторых режимов работы,
выполнив настройки устройства постоянного состояния.
Например, чтобы сделать скорость работы ttyd5
постоянной и равной 57600 bps, выполните
&prompt.root; stty -f /dev/ttyld5 57600Теперь, если приложение откроет ttyd5 и попытается
изменить скорость работы порта, она всё равно останется равной 57600
bps.Естественно, вы должны сделать устройства начального и
постоянного состояний доступными на запись только пользователю
root. Скрипт MAKEDEV
при создании файлов устройств этого НЕ делает.Как сделать вход через модем?Похоже, что вы хотите стать Internet-провайдером, да? Сначала
вам необходимо подключить к системе один или несколько модемов,
которые могут работать в режиме автоответа. Модем должен держать
сигнал наличия несущей, только когда она присутствует. Он должен
вешать трубку и переинициализировать, когда сигнал готовности
устройства DTE (DTR) меняет состояние из включенного на
выключенный. Должно использоваться аппаратное
(RTS/CTS)
управление потоком или вовсе отсутствовать. Ещё он должен работать
на постоянной скорости с портом компьютера, но (что удобно для
звонящих) с согласованием скорости передачи с другим модемом.Для большинства модемов, поддерживающих набор команд Hayes,
следующая последовательность команд выполнит эти настройки и
сохранит их в энергонезависимой памяти:
AT &C1 &D3 &K3 &Q6 S0=1 &W
Информация о том, как сделать эти настройки без обращения к терминальным
программам MS-DOS, содержится в разделе о посылке AT-команд.Затем опишите модем в файле /etc/ttys.
В нём перечислены все порты, с которых операционная система ожидает
входа пользователей. Добавьте строку, которая выглядит как эта:
ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
В этой строке указано, что ко второму последовательному порту
(/dev/ttyd1) подключен модем на скорости 57600 bps без
контроля по чётности (std.57600, что берётся из файла
/etc/gettytab).
Тип терминала для этого порта определён как dialup.
Порт включен (on) и небезопасен
(insecure), что означает, что попытки войти в систему
пользователем root с этого порта будут отвергнуты. Для портов,
обслуживающих входящие звонки, как этот, используйте устройства вида
ttydX.Использование слова dialup в качестве имени
терминала является обычной практикой. Многие пользователи включают в свои
файлы .profile или .login скрипты для задания реального типа терминала, если
начальным является тип dialup. В примере порт описан небезопасным.
Чтобы войти пользователем root на этом порту, вам
нужно сначала войти обычным пользователем, а затем командой
su стать пользователем root. Если
порт имеет атрибут secure, то пользователь
root может входить с этого порта
непосредственно.После модифицирования /etc/ttys, вам
нужно послать сигнал потери связи или HUP процессу
init:
&prompt.root; kill -HUP 1Это заставит процесс init снова прочитать файл /etc/ttys.
Процесс init запустит процессы getty для всех портов с характеристикой
on. Вы можете проверить, доступны ли входы с
конкретного порта, выполнив команду
&prompt.user; ps -ax | grep '[t]tyd1'Вы должны увидеть нечто вроде следующего:
747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1
Как подключить терминал к FreeBSD?Если вы собираетесь использовать другой компьютер в качестве
терминала для FreeBSD, соедините их последовательные порты
нуль-модемным кабелем. Если у вас есть терминал, обратитесь к его
документации.Затем модифицируйте файл /etc/ttys
описанным выше способом. Например, если вы подключаете терминал
WYSE-50 к пятому последовательному порту, используйте такую строчку:
ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure
В этом примере описан порт на /dev/ttyd4, имеющий
терминал wyse50, подключенный на скорости 34800 bps без контроля по
четности (std.38400 из /etc/gettytab) и
разрешён непосредственный вход пользователя root
(secure).Почему не удаётся запустить tip или
cu?Скорее всего, в вашей системе запуск программ tip и cu разрешён только
пользователю uucp и членам группы
dialer. Вы можете использовать группу
dialer для управления доступом к вашему модему или
удалённым системам. Достаточно добавить пользователя в группу
dialer.Вы можете разрешить всем пользователям вашей системы запускать
tip и cu, выполнив команды:
&prompt.root; chmod 4511 /usr/bin/cu
&prompt.root; chmod 4511 /usr/bin/tipМой модем Hayes не поддерживается---что можно сделать?На самом деле страница Справочника о программе tip устарела. Модемы
Hayes поддерживаются системой. Просто добавьте
at=hayes в ваш файл /etc/remote.Драйвер модемов Hayes не достаточно умён, чтобы поддерживать
некоторые из новых возможностей современных модемов---сообщения
типа BUSY, NO DIALTONE или
CONNECT 115200 будут приводить его в замешательство. Вы
должны выключить вывод таких сообщений при использовании программы tip (командой
ATX0&W).Кроме того, значение таймаута по умолчанию для программы
tip равен 60 секундам. Ваш модем должен использовать
меньшее значение, иначе tip будет думать, что у вас проблемы со связью.
Попробуйте ATS7=45&W.На самом деле tip в том виде, каком поставляется, не
поддерживает модемы Hayes полностью. Решением является редактирование
файла tipconf.h в каталоге /usr/src/usr.bin/tip/tip.
Чтобы это сделать, вам нужен дистрибутив исходных текстов системы.Замените строку #define HAYES 0 на #define
HAYES 1. Затем выполните команды make и
make install. После этих действий всё работает
замечательно.Как я должен ввести эти AT-команды?Создайте так называемое прямое описание в вашем файле
/etc/remote.
Например, если ваш модем подключен к первому последовательному порту,
/dev/cuaa0, сделайте такую строку:
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
Укажите максимальную скорость обмена с портом, поддерживаемую
модемом в параметре br. Затем выполните команду tip cuaa0 и
вы подключитесь к модему.Если в вашей системе нет устройства /dev/cuaa0,
сделайте следующее:
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV cuaa0Или используйте cu, войдя администратором, с такими параметрами:
&prompt.root; cu -lline -sspeedгде line - это имя последовательного порта (например,
/dev/cuaa0), а speed - скорость работы модема с портом
(например, 57600). После ввода AT-команд, наберите
~. для завершения работы.Знак <@> для описания характеристики pn
не работает!Знак <@> в характеристике, описывающей
номер телефона, указывает программе tip обратиться к файлу
/etc/phones для поиска телефонного номера. Однако
знак <@> является также и специальным символом в
файлах описания характеристик типа /etc/remote.
Экранируйте его символом обратного слэша:pn=\@Как набрать телефонный номер из командной строки?Поместите так называемое общее описание в ваш файл
/etc/remote.
Например:
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
Тогда вы сможете выполнять команды вроде tip -115200
5551234. Если предпочитаете программу cu, а не tip, используйте
общее описание для cu:
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
и выполняйте команду cu 5551234 -s 115200.Нужно ли при этом каждый раз задавать скорость работы с
портом?Создайте описание для tip1200 или
cu1200, но не останавливайтесь на этом и используйте
подходящую скорость при задании характеристики br. Tip полагает,
что хорошим значением по умолчанию является 1200 bps, поэтому он
использует описание для tip1200. Однако вас никто не
заставляет использовать именно эту скорость.Мне нужно иметь доступ к нескольких хостам через терминальный
сервер.Вместо того, чтобы каждый раз ожидать подключения к терминальному
серверу, а затем набирать команду CONNECT
host, используйте характеристику
cm программы tip. Например, вот такое описание в файле
/etc/remote:
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
позволит вам просто набирать tip pain или
tip muffin для подключения к хостам
pain или muffin и
tip deep13 для доступа к терминальному серверу.Может ли tip использовать несколько телефонов для одного
сайта?Эта проблема возникает, когда в университете есть пара
модемных входов и несколько тысяч студентов, пытающихся ими
воспользоваться...Создайте описание для вашего университета в файле /etc/remote и
используйте <\@> при задании
характеристики pn:
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
После этого пропишите номера телефонов университета в файле /etc/phones:
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
Tip будет
пытаться воспользоваться всеми телефонными номерами в указанном порядке,
прежде чем завершить работу. Если вы хотите, чтобы попытки были
продолжены, запустите tip в цикле while.Почему нужно нажимать CTRL+P дважды для посылки одного этого
символа?По умолчанию CTRL+P является специальным символом принудительного
ввода, используемым для указания программе tip, что
следующий символ является байтом данных. Вы можете назначить
функцию символа принудительного ввода любому другому символу с помощью
команды ~s, которая предназначена для установки
значений переменных.Наберите
~sforce=single-char'' с
начала новой строки. Здесь под single-char
имеется в виду любой одиночный символ. Если вы не зададите
single-char, то символом
принудительного ввода будет нулевой символ, который можно получить,
набрав CTRL+2 или CTRL+SPACE. Подходящим значением для
single-char может быть SHIFT+CTRL+6, который
используется только некоторыми терминальными серверами.Вы можете задать любое значение для символа принудительного ввода,
указав его в вашем файле $HOME/.tiprc:
force=single-charНеожиданно всё стало набираться ЗАГЛАВНЫМИ БУКВАМИ?Должно быть, вы нажали CTRL+A, символ перехода в верхний
регистр
программы tip,
специально предназначенный для тех, у кого не работает клавиша caps-lock.
Используйте команду ~s, как это было сделано
выше, и установите значение переменной raisechar во
что-нибудь подходящее. В действительности вы можете установить его равным
символу принудительного ввода, если не собираетесь пользоваться этими
особенностями.Следующий пример файла .tiprc должен понравиться пользователям
редактора Emacs, которым часто приходится нажимать CTRL+2 и CTRL+A:
force=^^
raisechar=^^
Здесь ^^ обозначает SHIFT+CTRL+6.Как можно передавать файлы с помощью программы
tip?Если вы соединились с другой UNIX-системой, вы можете посылать и
принимать файлы командами ~p (передача) и
~t (приём). Эти
команды запускают программы cat и echo на
удалённой системе, чтобы принять и послать файлы. Синтаксис вызова
имеет такой вид:
~p <local-file> [<remote-file>]
~t <remote-file> [<local-file>]
Контроль ошибок передачи при этом не осуществляется, так что вам
может понадобиться другой протокол передачи, например, zmodem.Как использовать zmodem вместе с tip?Первым делом установите одну из программ, реализующих протокол
zmodem из коллекции портов (там есть парочка в категории comms,
lrzsz
и
rzsz).Для приёма файлов запустите программу передачи на противоположной
стороне. Затем нажмите enter и наберите ~C rz (или
~C lrz, если у вас установлен
lrzsz) для начала приёма их на
локальную машину.Для посылки файлов, запустите программу приёма на противоположной
стороне. Затем нажмите enter и наберите
~C sz files (или
~C lsz files) для посылки
файлов на удалённую систему.FreeBSD не распознаёт последовательные порты на моей машине, хотя
все настройки верны.Микросхемы UART производства Acer на материнских платах и адаптерах
распознаются некорректно. Для решения этой проблемы попробуйте
воспользоваться патчем с сервера
www.lemis.com.РазноеПочему FreeBSD использует гораздо больше места в разделе подкачки, чем
Linux?Это только кажется, что для FreeBSD требуется больше места на разделе
подкачки, чем для Linux. На самом деле это не так. Главное отличие
FreeBSD от Linux в этом плане заключается в том, что FreeBSD активно
перемещает неиспользуемые страницы памяти, к которым не было обращений,
в раздел подкачки, чтобы увеличить объём доступной физической памяти
для активного использования. Linux же перемещает страницы памяти в
раздел подкачки только в крайнем случае. Получаемое во FreeBSD
увеличение нагрузки на раздел подкачки компенсируется более эффективным
использованием оперативной памяти.Заметьте, что, хотя FreeBSD предпочитает использовать раздел подкачки,
она не может сбросить все неактивные страницы в своп при полностью
неактивной системе. Так что вряд ли может возникнуть ситуация, когда,
проснувшись рано утром, вы обнаружите, что вся ваша система находится в
разделе подкачки, хотя она простаивала всю ночь.Почему утилита &man.top.1; показывает очень маленький объём
свободной памяти, даже когда запущено всего лишь несколько
приложений?Просто дело в том, что под свободной памятью подразумевается никак не
используемая память. Вся память, которая вашей программе явно не
выделялась, используется ядром FreeBSD для дискового кэша.
Значения, показываемые утилитой &man.top.1;, помеченные как
Inact, Cache и Buf
- это всё кэшированные данные разных степеней устаревания. То, что данные
находятся в кэше, означает, что система не будет обращаться к медленному
диску снова за теми данными, обращение к которым было недавно, повышая таким
образом общую производительность. В общем случае маленькие значения в
пункте Free, показываемые утилитой &man.top.1; для
свободной памяти - это хорошо, если, конечно они не
очень маленькие.Почему используются (и что из себя представляют) форматы выполнимых
файлов a.aut и ELF?Для понимания того, почему FreeBSD использует формат
ELF, вы должны сначала получить представление о трёх
доминирующих форматах выполнимых файлов для UNIX:До FreeBSD версии 3.x, во FreeBSD использовался формат
a.out.a.outЭто самый старый, классический формат объектных
файлов для UNIX. В нём используется короткий и компактный заголовок
с магическим числом в начале, которое часто используется для
определения формата (за подробным описанием обратитесь к странице
Справочника о a.out(5)).
Он содержит три загружаемых сегмента: .text, .data и .bss плюс таблицу
символов и таблицу строк.COFFЭто формат объектных файлов SVR3. Дополнительно в заголовок
включена таблица секций, так что вы можете иметь их больше, чем только
.text, .data и .bss.ELFПреемник COFF, в который добавлены возможности
иметь много секций и 32- или 64-разрядные значения. Один большой
минус: ELF был спроектирован также в
предположении, что для каждой аппаратной платформы будет существовать
только один ABI. Это предположение достаточно некорректно, и даже в
мире коммерческих реализаций SYSV (в котором имеется по крайней мере
три ABI: SVR4, Solaris и SCO) это не так.FreeBSD каким-то образом пытается решить эту проблему,
предоставляя утилиту для пометки конкретного
выполнимого файла ELF с информацией о ABI, с
которым он совместим. Обратитесь к странице Справочника об утилите
brandelf
за подробной информацией.FreeBSD выросла на классических традициях и традиционно
использовала формат a.out,
технологию, опробованную и проверенную во многих вариациях BSD. Хотя давно
уже можно было компилировать и выполнять родные выполнимые файлы (и ядро) в
формате ELF, FreeBSD с самого начала сопротивлялась
переходу на ELF как на формат, используемый по
умолчанию. Почему? Когда мир Linux делал болезненный переход к
ELF, причин отвергнуть формат a.out
было не так уж и много, разве что их негибкий механизм работы с совместно
используемыми библиотеками, который был основан на таблице переходов, что
делало построение таких библиотек очень затруднительным для разработчиков.
Так как средства работы с ELF предоставляли решение этой
проблемы и это было в общем-то шагом вперёд в любом случае,
цена перехода была признана стоящей того и переход был сделан.В случае FreeBSD, наш механизм работы с совместно используемыми
библиотеками очень похож на механизм, применяемый в SunOS, поэтому его очень легко использовать. Однако,
начиная с 3.0, FreeBSD официально поддерживает ELF как
формат, используемый по умолчанию. И, хотя формат
a.out поддерживается в полной мере, разработчики из
проекта GNU, являющиеся авторами компилятора, который мы используем, больше
не поддерживают формат a.out. Это заставило нас
поддерживать различные версии компилятора и компоновщика, и не позволило
воспользоваться всеми возможностями последних разработок GNU.
Потребность в наличии реализации ISO-C++, в основном конструкторов и
деструкторов, также привела к поддержке ELF в будущих
релизах FreeBSD.Да, но почему так много разных форматов?Если вернуться в далёкое тёмное прошлое, то тогда компьютеры были
очень просто устроены. На них могла работать простая, маленькая
система. Формат a.out полностью решал задачу представления программ
на простых системах (PDP-11). Когда же люди перенесли unix с простых
систем, они оставили a.out, так как его было достаточно для ранних
реализаций unix для таких архитектур, как Motorola 68k, VAX, и тд.Затем какой-то умный инженер решил, что если он может заставить
программное обеспечение делать некоторые тонкие манипуляции, то это
позволит преодолеть некоторые ограничения при проектировании и позволит
ядру процессора работать быстрее. Когда это было сделано с новым типом
аппаратуры (в наши дни известном как RISC), оказалось, что
a.out
плохо подходит для этой аппаратуры, поэтому было разработано много новых
форматов для достижения большей производительности от такого аппаратного
обеспечения, чем может дать простой, имеющий ограничения формат
a.out. Были разработаны такие форматы, как
COFF, ECOFF и
ещё несколько безвестных других со своими ограничениями, пока наконец
все не остановились на формате ELF.Вдобавок к этому, так как размеры программ стали достигать огромных
размеров, а дисковая (и физическая) память оставалась сравнительно
небольшой, то возникла концепция совместно используемых библиотек.
Система VM также стала более мощной. Хотя каждое из этих нововведений
продолжало использовать формат a.out, его
бесполезность становилась
видна всё больше и больше с добавлением каждой новой возможности. К тому
же люди захотели динамически загружать код во время выполнения программ
или сбрасывать части программ после выполнения кода инициализации для
экономии основной памяти и/или размера свопа. Языки программирования
становились всё более умными и люди захотели автоматического запуска
некоторого кода перед главной процедурой программы. С форматом
a.out была сделана масса ухищрений для реализации
всех этих
требований, и они в общем-то работали. В конце концов наступил момент,
когда формат a.out перестал бы справляться со всеми
этими
проблемами без ещё больших потерь в коде и гибкости в работе. Тогда
как ELF решал многие из этих проблем, переход на него
был бы
болезненным на рабочей системе. Так что ELF ждал
момента, когда
был бы более болезненным оставаться с форматом a.out,
чем перейти
к формату ELF.Однако с течением времени инструменты разработки, на которых
основаны инструменты разработки FreeBSD (особенно ассемблер и
загрузчик), разделились на две параллельные ветви. В дерево FreeBSD
была добавлена поддержка совместно используемых библиотеки и были
исправлены некоторые ошибки. Разработчики из GNU, которые изначально
писали эти программы, полностью их переделали, добавив более простую
поддержку построения кросс-компиляторов, в котором можно использовать
различные форматы, и тд. Когда многие захотели строить кросс-компилятор
с выходным кодом для FreeBSD, то им не повезло, так как старые исходные
тексты, которые FreeBSD использовала для as и ld, не подошли. Новый
набор утилит от GNU (binutils) поддерживает кросс-компиляцию,
ELF,
совместно используемые библиотеки, расширения C++, и тд. Вдобавок,
многие разработчики выпускают программы в бинарном формате
ELF, и
для FreeBSD было бы полезно иметь возможность их запускать. И если
такая возможность будет реализована, зачем тогда вообще продолжать
опираться на a.out? Это измученная старая лошадь,
которая была
полезна долгое время, но сейчас самое время от неё отказаться, оставив
в прошлом долгие годы преданной службы.ELF более выразителен, чем a.out, и позволяет
реализовать
большую расширяемость основной системы. Инструменты для работы с
ELF лучше поддерживаются разработчиками, и предоставляют
поддержку
кросс-компиляции, что для многих важно. ELF может
работать немного
медленнее, чем a.out, но это трудно измерить. Также между ними есть
некоторые отличия по распределению страниц памяти, обработке кода
инициализации, и тд. Никакие из этих отличий особо не важны, но эти
отличия всё же есть. Со временем поддержка a.out
будет убрана из
ядра GENERIC, и постепенно убрана из системы совсем, как только отпадёт
нужда в запуске старых программ в
формате a.out.Почему командой chmod невозможно изменить права на символические
ссылки?Символические ссылки не имеют прав доступа, а по умолчанию утилита
&man.chmod.1; не следует символической ссылке для изменения прав доступа
к файлу, на который указывает ссылка. Поэтому, если у вас есть файл,
скажем, с именем foo и символическая ссылка
bar на этот файл, то эта команда всегда будет
выполняться успешно.
&prompt.user; chmod g-w barОднако права на файл foo не изменятся.Чтобы это работало, используйте опции или
вместе с опцией .
Обратитесь к страницам Справочника по команде chmod и по symlink.Опция выполняет команду chmod РЕКУРСИВНО. Будьте
осторожны, задавая каталоги или символические ссылки на каталоги в
параметрах chmod. Если вы хотите изменить
права на каталог, на который указывает символическая ссылка, используйте
chmod
без опций и следуйте символической ссылке с помощью лидирующего слэша
(/). Например, если foo
является символической ссылкой на каталог bar, а
вы хотите изменить права на foo (на самом деле
bar), вы должны выполнить команду
типа следующей:
&prompt.user; chmod 555 foo/Если задан лидирующий слэш, chmod будет
следовать символической ссылке, foo, меняя права
на каталог bar.Почему длина регистрационного имени всё
ещё ограничена 8 символами?Наверное, вы думаете, что достаточно будет изменить значение
константы UT_NAMESIZE, перекомпилировать полностью
систему и всё будет работать. К несчастью, часть приложений и утилит
(включая системные) имеют жёстко заданные малые значения (не всегда
8 или 9, но и такие странные, как
15 или 20) в структурах и буферах.
Это приведёт не только к порче файлов журналов (из-за записи полей
переменного размера там, где ожидается поле фиксированного размера), но
может повлиять на работу клиентов системы Sun NIS и может в принципе
вызвать другие проблемы при взаимодействии с другими системами UNIX.Во FreeBSD 3.0 и старше, максимальная длина имени была увеличена
до 16 символов и все утилиты с предопределённым размером имени были
найдены и исправлены. Так как это касается столь многих областей в
системе, то такие изменения не делались вплоть до 3.0. Если вы абсолютно уверены, что сможете найти и исправить проблемы
такого рода самостоятельно, когда они возникнут, то можете увеличить
длину регистрационного имени в ранних релизах, отредактировав файл
/usr/include/utmp.h и изменив соответствующим образом константу
UT_NAMESIZE. Вы должны будете также изменить значение MAXLOGNAME в
файле /usr/include/sys/param.h, чтобы оно соответствовало UT_NAMESIZE.
И наконец, если вы компилируете из исходных текстов, не забудьте, что
/usr/include обновляется каждый раз! Делайте изменения в
соответствующих файлах каталога /usr/src/.. Можно ли запускать программы для DOS во FreeBSD?Да, начиная с версии 3.0, вы можете использовать эмулятор DOS
doscmd от BSDI, который был интегрирован
в систему и усовершенствован. Пошлите письмо в список рассылки,
посвящённый эмуляции во FreeBSD, если вы заинтересованы в участии в
этом проекте.Для систем, предшествующих 3.0, в коллекции портов есть замечательная
утилита pcemu,
эмулирующая процессор 8088 и функции BIOS, чего достаточно для запуска
приложений DOS, работающих в текстовом режиме. Она требует X Window
System (которая поставляется как XFree86).Что такое sup и как это можно использовать?Сокращение
SUP означает Software Update Protocol, который был разработан в
CMU для синхронизации исходных текстов. Мы используем его для
синхронизации исходных текстов на удалённых сайтах с основным сервером
разработчиков.Протокол SUP использует пропускную способность канала неэффективно,
и был отвергнут. В настоящее время рекомендуемым методом для
синхронизации исходных текстов является протокол CVSup.Насколько греется процессор при работе FreeBSD?В. Кто-нибудь делал замеры температуры при работе FreeBSD? Я
знаю, что Linux греется меньше, чем DOS, но никогда не видел упоминания
FreeBSD. Наверное, он сильно греется.О. Нет, но мы сделали различные вкусовые тесты у добровольцев с
завязанными глазами, которые до этого приняли по 250 микрограмм
LSD-25. 35% добровольцев заявило, что FreeBSD имеет вкус апельсина,
тогда как вкус Linux расценивался как фиолетовый туман. Насколько
я помню, ни одна из групп не отметила значительной разницы в
температуре. Вы хотели опубликовать полные результаты этого опроса,
когда обнаружили, что слишком много добровольцев покинули помещение
во время тестов, что несколько смазало результаты. Я думаю, что
большинство из них работают сейчас в Apple над их новым GUI
чеши и нюхай. Это старый добрый бизнес!Серьёзно, и FreeBSD, и Linux используют инструкцию
HLT (halt), когда система простаивает, что уменьшает
потребление энергии и в свою очередь, выделение тепла. Вдобавок, если у
вас настроен APM (комплексное управление энергопотреблением), то FreeBSD
может переводить процессор в режим пониженного энергопотребления.Кто там скребётся в микросхемах памяти??В. Делает ли FreeBSD что-нибудь эдакое при компиляции
ядра, что вызывает поскрипывание микросхем памяти? При компиляции (и в
короткий промежуток времени после обнаружения дисковода при старте системы)
от микросхем памяти исходит странный царапающий звук.О. Да! Вы, наверное, видели частое упоминание даемонов
в документации по BSD, но не многие знают, что это настоящие нематериальные
существа, которые теперь завладели вашим компьютером. Царапающий звук,
издаваемый микросхемами памяти - это на самом деле высокочастотное
перешёптывание между даемонами, когда они решают, как лучше справиться
с различными задачами по администрированию системы.Если шум достиг ваших ушей, команда DOS fdisk /mbr
их спугнёт, но не удивляйтесь, если они отреагируют соответствующим
образом и попытаются вас остановить. Фактически, если во время
выполнения этой команды вы услышите сатанинский голос Билла Гейтса из
встроенного динамика, бегите и даже не оглядывайтесь! Избавленные
от противостояния с даемонами BSD, близнецы-демоны DOS и Windows часто
могут захватить полный контроль не только над вашей машиной и
навлечь вечное проклятие на вашу душу. Если бы у меня был выбор, я
думаю, что предпочёл бы царапающий звук.Что такое MFC?MFC - это сокращение от Merged From -CURRENT. Оно
используется в протоколах изменений CVS для отметки того, что изменение
было перенесено в ветвь STABLE из CURRENT.Что означает сокращение BSD?Это сокращение значит что-то на секретном языке, который могут знать
только посвящённые. Это нельзя перевести один к одному, однако
достаточно сказать, что перевод с BSD - это что-то между Команда
Formula-1, Пингвины - это вкусные плюшки и Мы
прикольнее, чем Linux. :-)Если серьёзно, то BSD является сокращением от Berkeley Software
Distribution, названия, которое было выбрано Berkeley
CSRG (Computer Systems Research Group) для их
дистрибутива Unix.Что такое repo-copy?repo-copy (что является краткой формой от repository
copy) обозначает прямое копирование файлов внутри репозитория
CVS.Без repo-copy, если есть необходимость скопировать или переместить
файл в другое место репозитория, то коммиттер должен выполнять команды
cvs add для помещения файла на новое место, а затем
cvs rm, чтобы удалить старый файл, если старая копия
должна быть удалена.Минусом этого метода является то, что история (то есть записи в
журналах CVS) работы с файлом не копируются в новое место. Так как
Проект FreeBSD осознаёт важность сохранения истории, вместо описанного
процесса зачастую используется копирование в репозитории. Это действие
заключается в том, что один из хозяев репозитория копирует файлы
непосредственно внутри репозитория, не пользуясь командами
cvs.Почему я должен беспокоиться о цвете фар велосипеда?На самом деле краткий, очень краткий ответ на этот вопрос заключается в
том, что вы этого делать не должны. Если давать более подробный ответ,
то ваше умение делать фары не должно означать, что вы должны препятствовать
другим делать их просто потому, что вам не нравится цвет, в который
они собираются их окрашивать. Эта метафора означает, что вам не нужно
обсуждать каждую мелочь просто потому, что вы знаете о ней
достаточно много. Некоторые люди отмечают, что объём шума, генерируемый
при появлении некоторого изменения, находится в обратной зависимости от
сложности самого изменения.Более пространный и полный ответ заключается в том, что после очень
долгого обсуждения того, должна ли утилита &man.sleep.1; обрабатывать
дробное число, заданное в качестве второго аргумента, &a.phk;
опубликовал большое сообщение, озаглавленное
Велосипедная фара (любого цвета) на зелёной траве....
Соответствующие части этого сообщения цитируются ниже.
&a.phk; on freebsd-hackers,
October 2, 1999Что там насчёт этой велосипедной фары? Кто-то
из вас меня спрашивал.Это долгая история, или же это старая история, но на самом деле
она коротка. В начале 1960-х годов Паркинсон (C. Northcote Parkinson)
написал книгу Закон Паркинсона, которая содержит много
интересных взглядов на процесс управления.[немного выдержек из краткого содержания книги]В конкретном примере с велосипедной фарой другим важным объектом
является атомная электростанция. Я полагаю, что это иллюстрирует
древность книги.Паркинсон показал, что вы можете прийти на совещание руководителей
и получить добро на строительство многомиллионной или даже
многомиллиардной атомной электростанции, но если вы хотите получить
финансирование производства велосипедных фар, то погрязнете в
бесконечных обсуждениях.Паркинсон объясняет это тем, что атомная станция настолько большой,
дорогой и сложный объект, что люди не могут его осознать и вместо того,
чтобы попробовать это сделать, они полагаются на то, что кто-то уже
проверил все мелочи до того, как всё зашло так далеко. В своей книге
Ричард П. Фейнманн (Richard P. Feynmann) даёт несколько интересных и
очень поучительных примеров, связанных с Лос Аламос.Велосипедная фара - это противоположный случай. Любой может
сделать фару за один уикэнд, и у него ещё останется время посмотреть
футбол по телевизору. Так что не важно, насколько хорошо вы готовились
к обсуждению, насколько убедительны будут ваши аргументы, кто-нибудь
воспользуется шансом показать, что он не зря ест свой хлеб, что он
обращает внимание, что он здесь.В Дании это называется оставить отпечаток своего
пальца. Это касается личной гордости и престижа, это похоже
на возможность указать куда-то и сказать: Вон там! Это сделал
я. Это сильно выражено в политиках, но
присутствует во многих людях, которые получают возможность сделать
это. Просто вспомните об отпечатках ног во влажном цементе.
Пожалуйста, отметьте, что вам не нужно
выполнять процедуру построения системы полностью, если у вас уже
есть заполненный /usr/obj.
Полный релиз будет строиться в каталоге
/some/big/filesystem/release и по окончании этого
процесса дистрибутив, готовый к помещению на FTP-сервер, будет находиться в
каталоге /some/big/filesystem/release/R/ftp. Если вы
захотите построить SNAP другой ветки, не -CURRENT, то можете указать
RELEASETAG=SOMETAG в командной строке make release выше,
например, при указании RELEASETAG=RELENG_2_2, будет
строиться самый свежий снэпшот ветки 2.2-STABLE.Как создать инсталляционные диски?Весь процесс создания инсталляционных дисков и дистрибутивов исходных
текстов и бинарников автоматизирован в файле
/usr/src/release/Makefile. Информации, в нём
содержащейся, должно быть достаточно, чтобы начать. Однако, должны вас
предупредить, что этот процесс включает в себя выполнение
make world и поэтому занимает много времени и дискового
пространства.По команде make world были переустановлены все
программы.Да, так и должно быть; как говорит название этой команды, make
world выполняет построение всех системных файлов с нуля, так
что в итоге можете быть уверены, что получите чистую рабочую
систему (вот почему это занимает столько времени).Если в момент запуска команд make world или
make install определена переменная окружения
DESTDIR, то вновь создаваемые файлы будут помещены в
дерево каталогов. идентичное существующему, с корнем, располагающимся в
${DESTDIR}. Однако некоторые случайные
комбинации модификаций совместно используемых библиотек и версий
компилируемых программ при исполнении команды
make world, может этому помешать.При загрузке системы выдаётся сообщение (bus speed
defaulted).Адаптеры SCSI Adaptec 1542 позволяют программно изменять скорость
доступа к шине. Предыдущие версии драйвера 1542 пытались определить
максимально возможную скорость работы и установить это значение. Мы
обнаружили, что у некоторых пользователей это приводило к нарушению
работоспособности системы, поэтому эта возможность сейчас вынесена
в параметр конфигурации ядра TUNE_1542. Использование
этой опции на тех системах, где она работает, может привести к
ускорению доступа к дискам, а там, где это не работает, может привести
к потере данных.Можно ли работать с current при ограниченном доступе в
Internet?Да, это можно делать без скачивания
полного дерева исходных
текстов с помощью системы CTM.Как вы разделяете дистрибутив на файлы по 240К?Команда split в современных BSD-системах имеет опцию
, позволяющую разрезать файлы на части с точностью до
байта.Вот пример из файла /usr/src/Makefile.
bin-tarball:
(cd ${DISTDIR}; \
tar cf - . \
gzip --no-name -9 -c | \
split -b 240640 - \
${RELEASEDIR}/tarballs/bindist/bin_tgz.)
Я написал некоторое добавление к ядру, кому его послать?Обратитесь к соответствующему разделу Руководства, в котором
описано, как это сделать.И спасибо вам за ваши усилия!Как распознаются и инициализируются адаптеры ISA Plug N Play?От: Фрэнка Дурды
IV (Frank Durda IV)Если рассматривать на самом низком уровне, то существует несколько
портов ввода/вывода, в которые должны выводить информацию все адаптеры
PnP, когда компьютер пытается выполнить запрос о наличии установленных
адаптеров. Так что, когда запускается процедура определения адаптеров
PnP, она выполняет запрос о наличии каких-либо адаптеров PnP, а все
такие адаптеры выдают свой номер модели при чтении того же порта
ввода/вывода, поэтому процедура определения получит ответ на свой
запрос, состоящий из логически наложенных номеров моделей,
интерпретируемый как да. В этом ответе по крайней мере
один бит будет установлен в единицу. Затем код определения адаптеров может
выключать адаптеры с ID (назначаемыми Microsoft/Intel),
большими, чем X. Потом следует попытка определить, остались ли ещё
адаптеры, отвечающие на запрос. Если ответ 0, то
адаптеров с ID, большими чем X, нет. После этого делается попытка
определить наличие адаптеров с номерами, меньшими чем X.
Если они есть, то становится известно, что есть адаптеры с номерами,
меньшими, чем X. Тогда происходит запрос адаптерам, большим чем
X-(limit-4), на выключение. Запрос повторяется. Применив этот метод
полудвоичного поиска границ расположения ID достаточное количество раз, код
идентификации найдёт все адаптеры PnP, установленные в данной машине
за число итераций, гораздо меньшее, чем может занять перебор 2^64
возможных вариантов ID.ID представляет собой два 32-разрядные числа (всего их 2^64)
+ 8 бит контрольной суммы. Первые 32 бита являются идентификатором
производителя. Они никогда не сообщаются, однако часто бывает, что
различные типы адаптеров от одного и того же производителя имеют
различные 32-битные значения идентификатора производителя.
Необходимость в 32 разрядах только для задания производителя адаптера
выглядит несколько излишним.Оставшиеся 32 бита являются серийным номером, ethernet-адресом,
чем-либо, делающим этот адаптер уникальным. Производитель не должен
выпускать других адаптеров, имеющих то же самое значение этих битов,
если, конечно, у них не разные идентификаторы производителя. Таким
образом, вы можете иметь несколько адаптеров одинакового типа, но с
различными 64-разрядными номерами.Группы по 32 бита не могут быть нулевыми. Это позволяет при
логическом объединении OR их номеров получать ненулевое значение во
время начального поиска адаптеров.Как только система определила ID всех адаптеров, она активизирует
каждый адаптер, по одному за раз (через те же порты ввода/вывода), и
определяет, какие ресурсы требуются данному адаптеру, какие возможные
прерывания доступны и тд. Сканирование и сбор информации происходит
по всем адаптерам.Эта информация соотносится с содержащейся в файлах ECU на диске
или в MLB BIOS. Поддержка PnP из ECU и BIOS для аппаратуры на
MLB обычно имеет синтетический характер, и периферия не выполняет
полностью процедуру настоящего PnP. Однако, используя BIOS и
информацию из ECU, процедура инициализации может обнаружить устройства
PnP, которые не могут быть найдены другим способом.Затем устройства PnP опрашиваются ещё раз для назначения им портов
ввода/вывода, DMA, IRQ и адресов отображаемой памяти. Теперь
устройства должны иметь именно такие настройки и они должны оставаться
такими до следующей перезагрузки, хотя нигде не сказано, что вы не
можете их менять, когда захотите.Здесь сделано много упрощений, однако общую идею вы должны
уловить.Microsoft использовала для PnP некоторые порты статуса первого
принтера, по их логике, не существует адаптеров, использующих эти
адреса для ввода/вывода. Я обнаружил один такой адаптер принтера от
IBM, который декодирует запись в порт статуса в момент начального
опроса устройств PnP, на что MS ответил хулиган. Так что они
выполняют запись в порт статуса принтера для установки адресов,
вдобавок используют этот адрес + 0x800, и ещё один порт
ввода/вывода, который может располагаться где угодно в диапазоне между
0x200 и 0x3ff, для чтения.Поддерживает ли FreeBSD аппаратные платформы, отличные от x86?Интерес к работе над поддержкой многоплатформенности во FreeBSD
проявили несколько групп разработчиков, и одна из попыток переноса на
другую архитектуру, FreeBSD/AXP (ALPHA), оказавшаяся достаточно удачной,
в настоящее время доступна по адресу
ftp://ftp.FreeBSD.org/pub/FreeBSD/alpha.
Эта реализация для ALPHA сейчас поддерживает всё увеличивающееся число
машин ALPHA, в частности, модели AlphaStation, AXPpci, PC164, Miata и
Multia. Чтобы быть в курсе событий, происходящих с этим проектом,
подпишитесь на соответствующий freebsd-alpha@FreeBSD.org
список рассылки.Также был проявлен интерес к переносу FreeBSD на платформу SPARC. Если
вы хотите подключиться к этому проекту, подпишитесь на соответствующий
freebsd-sparc@FreeBSD.org список
рассылки. В список планируемых к поддержке платформ совсем недавно
добавились архитектуры IA-64 и PowerPC, дополнительную информацию можно
получить, подключившись к соответствующим спискам рассылки
freebsd-ia64@FreeBSD.org и/или
freebsd-ppc@FreeBSD.org. Для обсуждение общих вопросов,
касающихся новых аппаратных платформ, предназначен список рассылки
freebsd-platforms@FreeBSD.org.Мне нужно старшее число для написанного мною драйвера
устройства.Всё зависит от того, планируете вы сделать этот драйвер
общедоступным или нет. Если это так, то, пожалуйста, пошлите нам
копию исходных текстов драйвера вместе с соответствующими
модификациями в файле files.i386, пример
описания устройства
в файле конфигурации ядра и соответствующий код
MAKEDEV
для создания специальных файлов устройств, которые
использует ваше устройство. Если это не так. или это невозможно
из-за лицензионных ограничений, то для старшего числа символьного
устройства и старшего числа блочного устройства для этих целей были
зарезервированы значения 32 и 8 соответственно; используйте их. В
любом случае. мы будем рады услышать о вашем драйвере в списке
рассылки freebsd-hackers@FreeBSD.org.Альтернативный метод размещения каталоговВ ответ на вопрос о других методах размещения каталогов могу
сказать, что используемая в настоящее схема не претерпела изменений
с 1983 года. Эти соглашения были предназначены для оригинальной
файловой системы FFS, я никогда их не пересматривал. Эта схема
прекрасно работает, позволяя избежать переполнения групп дорожек.
Как некоторые из вас замечали, она работает плохо при поиске.
Большинство файловых систем создаются из архивов, которые были
созданы с глубиной первого поиска (aka ftw). Это приводит к тому, что
их каталоги размещаются на нескольких группах дорожек, создавая
наихудший случай для последующего поиска глубиной один. Если бы
было известно общее количество каталогов, которые должны быть созданы,
выходом было бы создание (общее количество / количество групп дорожек)
на дорожку группу перед переходом. Обычно это число определяется чисто
эвристически. Даже при использовании маленького фиксированное числа,
скажем 10, значительно улучшает ситуацию. Чтобы различать операции
восстановления от обычных операций (где текущий алгоритм подходит),
вы можете использовать объединение в кластеры объёмом до 10, если они
делаются в окне, равным 10 секундам. Во всяком случае, я думаю, что
это требует некоторых экспериментов.Кирк МакКузик (Kirk McKusick), Сентябрь 1998Что делать при аварийном остановах системы[Этот раздел был вырезан из письма, написанного &a.wpaul; в
список рассылки freebsd-current
&a.des;, который исправил несколько опечаток и добавил комментарии в
квадратных скобках]
From: Bill Paul <wpaul@skynet.ctr.columbia.edu>
Subject: Re: the fs fun never stops
To: ben@rosengart.com
Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT)
Cc: current@FreeBSD.org
[<ben@rosengart.com> отправил письмо, содержащее
следующее аварийное сообщение системы]
> Fatal trap 12: page fault while in kernel mode
> fault virtual address = 0x40
> fault code = supervisor read, page not present
> instruction pointer = 0x8:0xf014a7e5
^^^^^^^^^^
> stack pointer = 0x10:0xf4ed6f24
> frame pointer = 0x10:0xf4ed6f28
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, def32 1, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 80 (mount)
> interrupt mask =
> trap number = 12
> panic: page fault
[Если] вы увидите такое сообщение, просто его воспроизвести и
послать нам не достаточно. Указатель инструкций, выделенный мною,
важен, к сожалению, его значение зависит от конфигурации ядра.
Другими словами, его значение меняется в зависимости от конкретного
ядра, которое вы используете. Если вы используете ядро GENERIC
одного из снэпшотов, то кто-то ещё может отследить функцию, вызвавшую
ошибку, но если вы работаете со специально отконфигурированным ядром,
то только вы можете сказать нам, где случилась
ошибка.Вот что вы должны сделать:Запишите значение указателя инструкций. Заметьте, что
часть 0x8: в этом случае не важна: нам нужна часть
0xf0xxxxxx.Когда система перезагрузится, сделайте следующее:
&prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxxx
где f0xxxxxx - это значение указателя инструкций.
Однако неприятность заключается в том, что вы не получите точного
соответствия, так как в таблице имен ядра для точек входа в функции
даны адреса на начало функций, а указатель инструкций будет указывать
куда-то внутрь её тела. Если вы не получили точного соответствия,
опустите последнюю цифру в значении указателя инструкций и попробуйте
снова, то есть:
&prompt.user; nm -n /kernel.that.caused.the.panic | grep f0xxxxx
Если и это не привело ни к каким результатам, отрежьте следующую
цифру. Повторяйте, пока не получите хоть что-то. Результатом будет
список функций, которые, возможно, привели к аварийному останову.
Этот механизм обнаружения ошибочного места довольно неточен, но это
всё же лучше, чем ничего.Зачастую люди приводят подобные аварийные сообщения, на редко кто
утруждается привести соответствие указателя инструкций с функцией в
таблице символов ядра.Лучшим способом выяснить причину, вызвавшую аварийный останов, является
создание аварийного дампа системы, а затем использование
gdb(1) для трассировки вызовов. Конечно, это зависит от
корректности работы gdb(1) с -CURRENT, что я
гарантировать
не могу (помнится, кто-то говорил, что новый ELF gdb(1)
некорректно работает с аварийными дампами ядра: необходимо проверить это до
выхода 3.0, иначе не избежать краски стыда на наших лицах после выпуска
CD).Во всяком случае, обычно я использую такой способ:Отредактируйте конфигурационный файл ядра, добавив строку
options DDB, если вам зачем-то понадобился
встроенный отладчик. (Я использую его в основном для указания точек
останова, если подозреваю возникновение бесконечных циклов.)Выполните
config -g KERNELCONFIG
для создания каталога построения ядра.cd /sys/compile/KERNELCONFIG;
makeДождитесь окончания компиляции ядра.make installrebootВ процессе выполнения команды &man.make.1; будут построены два ядра,
kernel и kernel.debug.
kernel будет установлен как
/kernel, тогда как kernel.debug
может быть использован в качестве источника отладочной информации для
gdb(1).Чтобы включить сброс аварийного дампа, вам нужно отредактировать файл
/etc/rc.conf так, чтобы устройство
dumpdev указывало на раздел подкачки. В этом
случае скрипты rc(8) будут вызывать команду
dumpon(8) для включения создания аварийных дампов. Вы
можете запустить команду dumpon(8) вручную. После
аварийной остановки аварийный дамп может быть получен с помощью программы
savecore(8); если значение переменной
dumpdev было установлено в
/etc/rc.conf, скрипты rc(8) запустят
savecore(8) автоматически и поместят аварийный дамп в
каталог /var/crash.Аварийные дампы FreeBSD обычно имеют размер, равный физическому
объёму оперативной памяти вашей машины. Так что если у вас 64МБ
ОЗУ, вы получите дамп размером 64МБ. Поэтому вы должны удостовериться,
что в каталоге /var/crash достаточно места для
хранения дампа. Либо вы можете вручную запустить
savecore(8) и создать аварийный дамп в другом
каталоге, где достаточно места. Размер аварийного дампа можно
уменьшить, указав в конфигурации ядра
options MAXMEM=(размер) подходящее значение для
объёма памяти, которое будет использоваться ядром. Например, если у вас
128 МБ ОЗУ, вы можете ограничить использование памяти ядром 16
мегабайтами, так что размер аварийного дампа будет равен 16МБ, а не
128.Как только вы получили аварийный дамп, вы можете выполнить трассировку
вызовов с помощью gdb(1) таким образом:
&prompt.user; gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0(gdb)whereЗаметьте, что при этом может быть выведено несколько экранов
информации; в идеале вы должны использовать script(1)
для их
перехвата. При использовании необработанного образа ядра со всей
отладочной информацией может быть найдена конкретная строка исходного
текста ядра, при достижении которой случилась аварийная остановка.
Для выяснения последовательности событий, приведших к аварийному
останову, обычно читается трассировка стека снизу вверх. Вы можете
также использовать gdb(1) для вывода значений различных
переменных или структур, чтобы выяснить состояние системы во время
аварии.Теперь, если вы в самом деле душевнобольной и у вас есть второй
компьютер, то можете настроить gdb(1) для удалённой
отладки, так, что сможете использовать gdb(1) на одном
компьютере, чтобы
отладить ядро на другом, включая использование точек останова,
пошагового прохода по коду ядра, всё как с обычной прикладной
программой. Я пока с этим не игрался, так как не часто имею
возможность поставить две машины одну напротив другой для отладки.[Билл (Bill) добавил: "Я забыл обратить ваше внимание
на одну вещь: если у вас включена поддержка DDB и ядро переходит
в режим отладки, вы можете намеренно вызвать аварийный останов
(и создание аварийного дампа), набрав 'panic' в командной строке
ddb. Этот процесс может снова вызвать отладчик. В этом случае
наберите 'continue' и процесс будет завершён созданием аварийного
дампа." -ed]Перестала работать функция dlsym() для ELF!По умолчанию при работе с форматом ELF символы, определённые в
выполнимом файле, не доступны динамическому загрузчику. Поэтому
при вызове функции dlsym(), которая осуществляет
поиск по дескриптору, полученному после вызова dlopen(NULL, flags),
желаемый результат достигнут не будет.Если вы хотите осуществить поиск в выполнимом файле процесса с
помощью функции dlsym(), вам нужно компоновать
выполнимый файл с опцией компоновщика ELF.Увеличение и уменьшение адресного пространства ядраПо умолчанию размер адресного пространства ядра равен 256 МБ во
FreeBSD 3.x и 1 ГБ во FreeBSD 4.x. Если вы используете FreeBSD
в качестве сервера с интенсивной сетевой нагрузкой (скажем,
большой FTP или HTTP сервер), вы можете обнаружить, что 256 МБ
недостаточно.Каким же образом можно увеличить адресное пространство? Здесь
есть два момента. Во-первых, вам нужно указать ядру выделить
большее количество адресного пространства для самого ядра. Во-вторых,
так как ядро загружается в верхнюю часть адресного пространства, вам
нужно уменьшить адрес загрузки так, чтобы он не вышел за верхнюю
границу. Первая проблема решается увеличением значения константы
NKPDE в
файле src/sys/i386/include/pmap.h. В случае 1 ГБ
адресного пространства он должен выглядеть примерно так:
#ifndef NKPDE
#ifdef SMP
#define NKPDE 254 /* addressable number of page tables/pde's */
#else
#define NKPDE 255 /* addressable number of page tables/pde's */
#endif /* SMP */
#endif
Для вычисления значения NKPDE разделите желаемый
объём адресного пространства (в мегабайтах) на четыре и вычтите из
получившегося числа единичку в случае однопроцессорной машины и
двоечку в случае многопроцессорного ядра.Для достижения второй цели вам нужно правильный адрес для загрузки
ядра: просто отнимите размер адресного пространства (в байтах) от
0x100100000; результат будет равным 0xc0100000 для адресного пространства
в 1 ГБ. Установите значение константы LOAD_ADDRESS
в файле src/sys/i386/conf/Makefile.i386 в это
значение; затем установите значение счётчика в начале списка секций в
файле src/sys/i386/conf/kernel.script в то же самое
значение, как это сделано здесь:
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(btext)
SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-freebsdelf/lib);
SECTIONS
{
/* Read-only sections, merged into text segment: */
. = 0xc0100000 + SIZEOF_HEADERS;
.interp : { *(.interp) }
После этого переконфигурируйте и перестройте ядро. Вы можете
столкнуться с проблемами при работе утилит ps(1),
top(1) и подобных им; решить их может
make world (или ручная перекомпиляция
libkvm, ps и
top после копирования исправленного
pmap.h
в /usr/include/vm/).ЗАМЕЧАНИЕ: Размер адресного пространства ядра должен быть
кратен четырём мегабайтам.[&a.dg; добавил: Я думаю, что размер адресного пространства
ядра должен быть степенью двойки, но я в этом не уверен. Для работы с
верхними адресами памяти использовался код старого загрузчика, и я ожидаю
по крайней мере точность в 256 МБ.]Наши благодарности
FreeBSD Core TeamЕсли вы обнаружили неточности в этом FAQ или хотите что-то
в него добавить, пожалуйста, напишите нам по адресу &a.faq;.
Мы ждём ваши отзывы и пожелания, чтобы с вашей помощью сделать этот
документ ещё лучше!
&a.jkh;Различные упорядочения и добавления в FAQ.&a.dwhite;Работа со списком рассылки freebsd-questions&a.joerg;Работа с телеконференциями Usenet&a.wollman;Раздел о сети и форматированиеJim LoweИнформация о протоколе многоадресной передачи&a.pds;Раб-наборщикAndrey ZakhvatovПеревод на русский языкThe FreeBSD TeamОхи, вздохи, стоны, добавленияИ всем остальным, оставшимся неизвестными, наши глубочайшие
извинения и сердечные благодарности!
diff --git a/ru_RU.KOI8-R/books/handbook/Makefile b/ru_RU.KOI8-R/books/handbook/Makefile
index 702397ef60..d3fd8111ce 100644
--- a/ru_RU.KOI8-R/books/handbook/Makefile
+++ b/ru_RU.KOI8-R/books/handbook/Makefile
@@ -1,67 +1,65 @@
#
# Build the FreeBSD Handbook.
#
# The FreeBSD Russian Documentation Project
# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/Makefile,v 1.12 2000/10/11 15:57:22 phantom Exp $
+# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/Makefile,v 1.16 2000/11/15 17:21:30 phantom Exp $
# Original version: 1.28
#
MAINTAINER=phantom@FreeBSD.org
DOC?= book
FORMATS?= html-split
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
-NO_TIDY= YES
-
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
SRCS= book.sgml
SRCS+= advanced-networking/chapter.sgml
SRCS+= backups/chapter.sgml
SRCS+= basics/chapter.sgml
SRCS+= bibliography/chapter.sgml
SRCS+= boot/chapter.sgml
#SRCS+= contrib/chapter.sgml
#SRCS+= cutting-edge/chapter.sgml
-#SRCS+= disks/chapter.sgml
+SRCS+= disks/chapter.sgml
#SRCS+= eresources/chapter.sgml
#SRCS+= hw/chapter.sgml
SRCS+= install/chapter.sgml
#SRCS+= internals/chapter.sgml
SRCS+= introduction/chapter.sgml
#SRCS+= kernelconfig/chapter.sgml
-#SRCS+= kerneldebug/chapter.sgml
-#SRCS+= kernelopts/chapter.sgml
+SRCS+= kerneldebug/chapter.sgml
+SRCS+= kernelopts/chapter.sgml
#SRCS+= l10n/chapter.sgml
SRCS+= linuxemu/chapter.sgml
-#SRCS+= mail/chapter.sgml
+SRCS+= mail/chapter.sgml
SRCS+= mirrors/chapter.sgml
SRCS+= pgpkeys/chapter.sgml
#SRCS+= policies/chapter.sgml
#SRCS+= ppp-and-slip/chapter.sgml
#SRCS+= printing/chapter.sgml
-#SRCS+= security/chapter.sgml
+SRCS+= security/chapter.sgml
#SRCS+= serialcomms/chapter.sgml
SRCS+= staff/chapter.sgml
#SRCS+= users/chapter.sgml
SRCS+= x11/chapter.sgml
SRCS+= ports/chapter.sgml
# Entities
SRCS+= ../../../en_US.ISO_8859-1/books/handbook/authors.ent
SRCS+= chapters.ent
SRCS+= mailing-lists.ent
SRCS+= newsgroups.ent
SRCS+= ruauthors.ent
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml b/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml
index 94223eeb64..2db6d7903f 100644
--- a/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml
@@ -1,2884 +1,2885 @@
- Сложные вопросы работы в сети
+Сложные вопросы работы в сети
-
- Краткий обзор
+
+ Краткий обзор
- Последующая глава посвящена некоторым более часто используемым
- сетевым службам UNIX-систем. Это, конечно же, будет касаться настройки
- указанных служб в Вашей системе FreeBSD.
-
+ Последующая глава посвящена некоторым более часто используемым
+ сетевым службам UNIX-систем. Это, конечно же, будет касаться настройки
+ указанных служб в Вашей системе FreeBSD.
+Сетевые шлюзы и маршруты
- Предоставил &a.gryphon;. 6 октября 1995.
+ Предоставил &a.gryphon;, 6 октября 1995.Чтобы некоторая машина могла найти другую, должен иметься механизм
описания того, как добраться от одной машине к другой. Такой механизм
называется маршрутизацией. Маршрут задается парой
адресов: адресом назначения (destination) и
сетевым шлюзом (gateway). Эта пара означает, что, если
Вы пытаетесь соединиться с адресом назначения, то
вам нужно будет пройти через сетевой шлюз. Существует
три типа адресов назначения: отдельные хосты, подсети и
маршрут по умолчанию (default). Маршрут по
умолчанию (default route) используется, если не подходит ни один
из других маршрутов. Мы поговорим немного подробнее о маршрутах по
умолчанию позже. Также имеется и три типа сетевых шлюзов: отдельные
хосты, интерфейсы (также называемые подключениями
(links)) и аппаратные адреса ethernet.ПримерДля иллюстрации различных аспектов маршрутизации мы будем
использовать следующий пример, который является результатом работы
команды netstat -r:
Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
foobar.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.foobar.com link#1 UC 0 0
224 link#1 UC 0 0
В первых двух строках фигурируют маршрут по умолчанию (который
будет описан в следующем разделе) и маршрут на
localhost.Интерфейс (колонка Netif), который будет
использоваться для localhost, и который назван
lo0, имеет также второе название, устройство
loopback. Это значит сохранение всего трафика для указанного адреса
назначения внутри, без посылки его по сети, так как он все равно
будет направлен туда, откуда был создан.Следующими выделяющимися адресами являются строчки 0:e0:.... Это аппаратные адреса ethernet.
FreeBSD будет автоматически распознавать любой хост (в нашем
примере это test0) в локальной сети ethernet и
добавит маршрут для этого хоста, указывающий непосредственно на
интерфейс ethernet, ed0. С этим типом
маршрута также связан параметр таймаута (колонка
Expire), используемый в случае неудачной попытки
услышать этот хост в течении некоторого периода времени. В таком
случае маршрут будет автоматически удален. Такие хосты поддерживаются
при помощи механизма, известного как RIP (Routing Information
Protocol), который вычисляет маршруты к хостам локальной сети при
помощи определения кратчайшего расстояния.FreeBSD добавит также все маршруты к подсетям для локальных
подсетей (10.20.30.255 является
широковещательным адресом для подсети 10.20.30, а имя foobar.com является именем домена, связанным
с этой подсетью). Назначение link#1 соответствует
первому сетевому адаптеру в машине. Отметьте отсутствие
дополнительного интерфейса для этих строк.В обеих этих группах (хосты и подсети локальной сети) маршруты
конфигурируются автоматически даемоном, который называется
routed. Если он не запущен, то будут существовать
только статически заданные (то есть введенные явно) маршруты.Строка host1 относится к нашему хосту, который
известен по адресу ethernet. Так как мы являемся посылающим хостом,
FreeBSD знает, что нужно использовать loopback-интерфейс
(lo0) вместо того, чтобы осуществлять
посылку в интерфейс ethernet.Две строки host2 являются примером того, что
происходит при использовании алиасов в команде ifconfig (обратитесь
к разделу об ethernet для объяснения того, почему мы это делаем).
Символ => после интерфейса
lo0 указывает на то, что мы используем не
просто интерфейс loopback (так как это адрес, обозначающий локальный
хост), но к тому же это алиас. Такие маршруты появляются только
на хосте, поддерживающем алиасы; для всех остальных хостов в локальной
сети в таких случаях будут показаны просто строчки
link#1.Последняя строчка (подсеть назначения 224)
имеет отношение к многоадресной посылке, которая будет рассмотрена в
другом разделе.Другим столбцом, о котором стоит сказать, является
Flags. Каждый маршрут имеет различные атрибуты,
которые перечислены в этой колонке. Ниже приведена краткая таблица
значений некоторых этих флагов и их значений:UUp: Маршрут актуален.HHost: Адресом назначения является отдельный хост.GGateway: Посылать все для этого адреса назначения на указанную
удаленную систему, которая будет сама определять дальнейший путь
прохождения информации.SStatic: Маршрут был настроен вручную, а не автоматически
сгенерирован системой.CClone: Новый маршрут сгенерирован на основе указанного для
машин, к которым мы подключены. Такой тип маршрута обычно
используется для локальных сетей.WWasCloned: Указывает на то, что маршрут был автоматически
сконфигурирован на основе маршрута в локальной
сети (Clone).LLink: Маршрут включает ссылку на аппаратный адрес
ethernet.Маршруты по умолчаниюКогда локальной системе нужно установить соединение с удаленным
хостом, она обращается к таблице маршрутов для того, чтобы определить,
существует ли такой маршрут. Если удаленный хост попадает в подсеть,
для которой известен способ ее достижения (маршруты типа Cloned), то
система определяет возможность подключиться к ней по этому
интерфейсу.Если все известные маршруты не подходят, у системы имеется
последняя возможность: маршрут default. Это маршрут
с особым типом сетевого шлюза (обычно единственным, присутствующим
в системе), и в поле флагов он всегда помечен как c.
Для хостов в локальной сети этот сетевой шлюз указывает на машину,
имеющую прямое подключение к внешнему миру (неважно, используется ли
связь по протоколу PPP или устройство, подключенное к выделенной
линии).Если вы настраиваете маршрут по умолчанию на машине, которая сама
является сетевым шлюзом во внешний мир, то маршрутом по умолчанию
будет являться сетевой шлюз у Вашего провайдера Интернет (ISP).Давайте взглянем на примеры маршрутов по умолчанию. Вот типичная
конфигурация:
[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]
Хосты Local1 и Local2 находятся в
нашей сети, первый хост служит для подключения по протоколу PPP к
серверу доступа вашего ISP. У Вашего провайдера имеется локальная
сеть, в которой, кроме всего прочего, находится сервер, к которому вы
подключены, и аппаратура (T1-GW) обеспечивающая собственное подключение
провайдера к Интернет.Маршруты по умолчанию для каждой из ваших машин будут
следующими:хостмаршрут по умолчаниюинтерфейсLocal2Local1ethernetLocal1T1-GWPPPЧасто задается вопрос Почему (или каким образом) в качестве
шлюза по умолчанию для машины Local1 мы указываем T1-GW, а не сервер
провайдера, к которому подключаемся?.Запомните, что из-за использования PPP-интерфейсом адреса в сети
провайдера Интернет с вашей стороны соединения, маршруты для всех
других машин в локальной сети провайдера будут сгенерированы
автоматически. Таким образом, вы уже будете знать, как достичь машины
T1-GW, так что нет нужды в промежуточной точке при посылке трафика к
серверу ISP.И напоследок отметим, что в локальной сети адрес ...1 часто используется в качестве адреса
сетевого шлюза. Тогда (при использовании того же самого примера)
если пространство адресов класса C вашей локальной сети было задано
как 10.20.30, а ваш провайдер использует
10.9.9, то маршруты по умолчанию будут
такие:
Local2 (10.20.30.2) --> Local1 (10.20.30.1)
Local1 (10.20.30.1, 10.9.9.30) --> T1-GW (10.9.9.1)
Хосты с двойным подключениемЕсть еще один тип подключения, который мы должны рассмотреть, и
это случай, когда хост находится в двух различных сетях. Технически,
любая машина, работающая как сетевой шлюз (в примере выше
использовалось PPP-соединение), считается хостом с двойным
подключением. Однако этот термин реально используется для описания
машины, находящейся в двух локальных сетях.В одном случае у машины имеется два адаптера ethernet, каждый
имеющий адрес в разделенных подсетях. Как альтернативу можно
рассмотреть вариант с одним ethernet-адаптером и использованием
алиасов в команде ifconfig. В первом случае используются два физически
разделенных сети ethernet, в последнем имеется один физический сегмент
сети, но две логически разделенных подсети.В любом случае таблицы маршрутизации настраиваются так, что для
каждой подсети эта машина определена как шлюз (входной маршрут) в
другую подсеть. Такая конфигурация, при которой машина выступает в
роли моста между двумя подсетями, часто используется, если нужно
реализовать систему безопасности на основе фильтрации пакетов или
функций межсетевого экрана в одном или обоих направлениях.Распространение маршрутовМы уже говорили о том, как мы задаем наши маршруты во внешний мир,
но не упоминали о том, как внешний мир находит нас.Мы уже знаем, что таблицы маршрутизации могут быть настроены так,
что весь трафик для некоторого диапазона адресов (в нашем примере это
подсеть класса C) может быть направлен заданному хосту в той сети,
которая будет перенаправлять входящие пакеты дальше.При получении адресного пространства, выделенного Вашей сети,
Ваш провайдер настроит свои таблицы маршрутизации так, что весь трафик
для Вашей подсети будет пересылаться по PPP-соединению к Вашей сети.
Но как серверы по всей стране узнают, что Ваш трафик нужно посылать
Вашему ISP?Существует система (подобная распределению информации DNS), которая
отслеживает все назначенные пространства адресов и определяет точку
подключения к магистрали Интернет. Магистралью называют
главные каналы, по которым идет трафик Интернет внутри страны и по
всему миру. Каждая магистральная машина имеет копию основного набора
таблиц, согласно которой трафик для конкретной сети направляется по
конкретному магистральному каналу, и затем, передаваясь по цепочке
провайдеров, он достигает вашей сети.Задачей вашего провайдера является объявить на магистрали о том,
что он отвечает за подключение (и поэтому на него указывает маршрут)
вашей сети. Этот процесс называется распространением маршрута.Устранение неполадокИногда с распространением маршрута возникают проблемы, и некоторые
сайты не могут к вам подключиться. Наверное, самой полезной командой
для определения точки неверной работы маршрутизации является
&man.traceroute.8;. Она также полезна и когда вы сами не можете
подключиться к удаленной машине (то есть команда &man.ping.8; не
срабатывает).Команда &man.traceroute.8; запускается с именем удаленного хоста, с
которым вы хотите установить соединение, в качестве параметра. Она
показывает промежуточные сетевые шлюзы по пути следования, в конце
концов достигая адрес назначения или прерывая свою работу из-за
отсутствия соединения.За дополнительной информацией обратитесь к странице Справочника по
&man.traceroute.8;.МостыНаписано Стивом Питерсоном (Steve Peterson)
steve@zpfe.com.ВведениеИногда полезно разделить одну физическую сеть (другими словами,
сегмент Ethernet) на два отдельных сегмента сети без необходимости
создания подсетей IP и использования маршрутизатора для соединения
сегментов. Устройство, которое соединяет две сети на такой манер,
называется мостом, а система FreeBSD с двумя сетевыми адаптерами
может выступать в роли моста.Мост работает на основе изучения адресов уровня MAC (то есть
адресов Ethernet) устройств на каждом своем сетевом интерфейсе.
Он перенаправляет трафик между двумя сетями, только когда адреса
отправителя и получателя находятся в разных сетях.По многим параметрам мост работает также, как коммутатор Ethernet
с малым количеством портов.Ситуации, когда можно использовать мостыНа сегодняшний день есть две ситуации, когда можно использовать
мост.Большой трафик в сегментеПервая ситуация возникает, когда ваша физическая сеть перегружена
трафиком, но по каким-то соображениям вы не хотите разделять сеть
на подсети и соединять их с помощью маршрутизатора.Давайте рассмотрим в качестве примера газету, в которой
редакторский и производственный отделы находятся в одной и той же
подсети. Пользователи в редакторском отделе все используют сервер A
для служб доступа к файлам, а пользователи производственного отдела
используют сервер B. Для объединения всех пользователей используется
Ethernet, а высокая нагрузка на сеть замедляет работу.Если пользователи редакторского отдела могут быть собраны в
одном сегменте сети, а пользователи производственного отдела в
другом, то два сетевых сегмента можно объединить мостом. Только
сетевой трафик, предназначенный для интерфейсов с "другой" стороны
моста, будет посылаться в другую сеть, тем самым снижая уровень
нагрузки на каждый сегмент сети.Межсетевой экран с возможностями фильтрации/ограничения
пропускной способности трафикаВторой распространенной ситуацией является необходимость в
обеспечении функций межсетевого экрана без трансляции
IP-адресов (NAT).Для примера можно взять маленькую компанию, которая подключена
к своему провайдеру по каналу DSL или ISDN. Для нее провайдер
выделил 13 IP-адресов для имеющихся в сети 10 персональных
компьютеров. В такой ситуации использование межсетевого экрана
на основе маршрутизатора затруднено из=а проблем с разделением на
подсети.Межсетевой экран на основе моста может быть настроен и включен
между маршрутизаторами DSL/ISDN без каких-либо проблем с
IP-адресацией.Настройка мостаВыбор сетевого адаптераДля работы моста требуются по крайней мере два сетевых адаптера.
К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают
функции моста. Прочтите страницу Справочника по &man.bridge.4; для
выяснения подробностей о поддерживаемых адаптерах.Перед тем, как продолжить, сначала установите и протестируйте
два сетевых адаптера.Изменения в конфигурации ядраДля включения поддержки функций моста в ядре, добавьте
строчкуoptions BRIDGEв файл конфигурации вашего ядра, и перестройте ядро.Поддержка функций межсетевого экранаЕсли вы планируете использовать мост в качестве межсетевого
экрана, вам нужно также добавить опцию IPFIREWALL. Прочтите раздел
, содержащий общую информацию о настройке
моста в качестве межсетевого экрана.Если вам необходимо обеспечить прохождение не-IP пакетов (таких,
как ARP) через мост, то имеется недокументированная опция межсетевого
экрана, которую можно задать. Это опция
IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при
этом правило, используемое межсетевым экраном по умолчанию, меняется
на разрешительное для всех пакетов. Перед тем, как задавать эту
опцию, убедитесь, что вы понимаете работу вашего набора
правил.Поддержка функций ограничения пропускной способностиЕсли вы хотите использовать мост в качестве машины,
ограничивающей пропускную способность, то добавьте в файл
конфигурации ядра опцию DUMMYNET. Дополнительную
информацию можно почерпнуть из страницы Справочника по
&man.dummynet.4;.Включение функций мостаДобавьте строкуnet.link.ether.bridge=1в файл /etc/sysctl.conf для включения функций
моста во время работы системы. Если вы хотите, чтобы пакеты,
проходящие через мост, фильтровались через ipfw, вы должны также туда
добавить строчкуnet.link.ether.bridge_ipfw=1ПроизводительностьЯ использую в качестве моста/межсетевого экрана машину Pentium 90 с
двумя сетевыми адаптерами: 3Com 3C900B и 3C905B. Защищенная часть сети
работает в полудуплексном режиме на скорости 10Мбит/сек, а связь между
мостом и моим маршрутизатором (Cisco 675) осуществляется на скорости
100Мбит/сек в полнодуплексном режиме. Без функций фильтрации пакетов
дополнительная задержка составляет около 0.4 миллисекунды для пакета
утилиты ping между защищенной сетью, работающей на скорости 10 Мбит,
и маршрутизатором Cisco 675.Дополнительные замечанияЕсли вы хотите осуществлять удаленный доступ на мост по протоколу
telnet из сети, то нет проблем в назначении одному из сетевых адаптеров
IP-адреса. Общепринято, что назначение адреса обоим сетевым адаптерам
является не самой хорошей идеей.Если в вашей сети присутствует несколько мостов, не должно быть
более одного маршрута между любыми двумя рабочими станциями. С
технической точки зрения это означает отсутствие поддержки протокола
spanning tree.NFSЭтот раздел написал &a.unfurl;, 4 марта
2000.Среди многих типов файловых систем, которые поддерживаются во
FreeBSD, особое место занимает система Network File System, или NFS. NFS
позволяет вам использовать каталоги и файлы, находящиеся на одной машине,
совместно с еще одной или несколькими машинами по сети, к которой они
подключены. При помощи NFS пользователи и программы могут получать доступ
к файлам на удаленных системах точно так же, как если бы это были
файлы на собственных дисках.Использование NFS имеет несколько преимуществ:Отдельно взятым рабочим станциям не нужно иметь столь много
дискового пространства, так как совместно используемые данные могут
храниться на одной отдельной машине и быть доступными для всех машин
в сети.Пользователям не нужно иметь уникальные для каждой машины
домашние каталоги. Если у них есть каталог, доступный по NFS, он
может использоваться отовсюду.Устройства хранения информации, такие, как дискеты и приводы
компакт-дисков, могут использоваться другими машинами в сети,
что избавляет от необходимости в приобретении дополнительного
оборудования.Как это работаетNFS строится их двух компонент – клиент и сервер.
Представляйте их в связке хочу/имею. Клиент хочет
данные, которые сервер имеет. Сервер делится
своими данными с клиентом. Для того, чтобы эта система нормально
функционировала, нужно правильно настроить и запустить несколько
процессов.На сервере работают следующие даемоны:nfsd - NFS Daemon, обслуживающий запросы от
клиентов NFS.mountd - NFS Mount Daemon, который выполняет
запросы, передаваемые ему от nfsd.На стороне клиента должен быть запущен только один-единственный
даемон:nfsiod - NFS async I/O Daemon (даемон
асинхронного ввода/вывода), обслуживающий запросы от своего
NFS-сервера.Настройка NFSК счастью для нас, на системах FreeBSD эта настройка проста.
Процессы, которые должны быть запущены, все могут быть запущены
во время загрузки ценой нескольких модификаций в вашем файле
/etc/rc.conf.Проверьте, что на NFS-сервере у вас есть такие строки:
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"
mountd запускается автоматически, если включен
сервер NFS. Флаги и в команде
nfsd указывают на обслуживание клиентов, работающих
по протоколам UDP и TCP. Параметр указывает
команде nfsd на запуск 4 своих копий.На клиентской строне убедитесь в наличии таких строк:
nfs_client_enable="YES"
nfs_client_flags="-n 4"
Как и в случае nfsd, параметр
указывает nfsiod на запуск
4 своих копий.Последний этап настройки требует создания файла с именем
/etc/exports. Файл экспортирования перечисляет,
какие файловые системы на вашем сервере будут использоваться совместно
с другими машинами (или экспортироваться), и с какими
именно. Каждая строка в файле описывает файловую систему, которая
будет предоставляться на доступ. Имеется полный набор параметров,
который можно использовать, но я коснусь только некоторых. Описания
остальных параметров можно найти в Справочнике
по &man.exports.5;.Вот несколько примерных строк из файла
/etc/exports:В следующей строке экспортируется /cdrom для
для трех машинок, находящихся в том же самом домене, что и сервер
(из-за отсутствия доменного имени для каждой машины) или которые
имеют описания в файле /etc/hosts. Флаг
указывает на использование экспортируемой файловой
системы в режиме только для чтения. С этим флагом удаленная система не
сможет никоим образом изменить экспортируемую файловую систему./cdrom -ro moe larry curlyВ следующей строке экспортируется файловая система
/home, которая становится доступной трем хостам,
указанным по их IP-адресам. Это полезно, если у вас есть собственная
сеть, но сервис DNS не используется. Флаг
позволяет также экспортировать все каталоги, находящиеся ниже в
указанной файловой системе./home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4В строке, приведенной ниже, файловая система
/a экспортируется для двух машин, которые
находятся в различных, не совпадающих с серверным, доменах. Флаг
позволяет пользователю root удаленной
системы осуществлять запись на совместно используемую файловую систему
как пользователь root. Без флага -maproot=0 даже если кто-то имеет
права доступа root на удаленной системе, он не сможет модифицировать
файлы на совместно используемой файловой системе.
/a -maproot=0 host.domain.com box.example.com
Для того, чтобы клиент смог использовать экспортированную файловую
систему, он должен иметь права сделать это. Проверьте, что клиент
указан в вашем файле /etc/exports.Теперь, после того, как вы сделали все эти изменения, вы можете
просто перезагрузиться, а FreeBSD запустит все во время загрузки,
либо последовательно запустить следующие команды, работая как
пользователь root:На сервере NFS:
&prompt.root; nfsd -u -t -n 4
&prompt.root; mountd -rНа клиенте NFS:
&prompt.root; nfsiod -n 4Теперь вы готовы к реальному монтированию удаленной файловой
системы. Это может быть сделано двумя способами. В приводимых
примерах сервер будет носить имя server, а клиент
будет носить имя client. Если вы просто хотите
временно смонтировать удаленную файловую систему, или всего лишь
протестировать ваши настройки, то вы можете запустить команды, подобные
приводимым здесь, работая как пользователь root на клиентской
машине:
&prompt.root; mount server:/home /mntПо этой команде файловая система /home на
сервере будет смонтирована в каталог /mnt на
клиенте. Если все настроено правильно, вы сможете перейти в каталог
/mnt на клиенте и увидеть файлы, находящиеся на сервере.Если вы хотите иметь удаленную файловую систему смонтированной
постоянно (каждый раз при загрузке), то добавьте ее в ваш файл
/etc/fstab. Вот примерная строка:
server:/home /mnt nfs rw 0 0
Read the &man.fstab.5; man page for more options.Практическое использованиеИмеется много способов использовать NFS в работе. Я достаточно
часто использую ее в локальной сети, которую администрирую. Вот
несколько способов ее полезного применения.В моей сети имеется несколько машин, но всего лишь на одной из них
имеется привод компакт-дисков. Почему? Потому что этот единственный
привод используется совместно всеми другими машинами через NFS. То же
самое может быть сделано с приводами НГМД.С таким большим количеством машин ваши личные файлы приходят в
беспорядок и распределяются по всем машинам. У меня сделан центральный
сервер NFS, на котором размещены все домашние каталоги пользователей
и они экспортируются на все другие машины в локальной сети, так что
вне зависимости от того, с какой машины я вошел в сеть, я получаю один
и тот же домашний каталог.Когда вы переустанавливаете FreeBSD на одной из ваших машин, это
можно делать через NFS. Просто поместите компакт-диск с дистрибутивом
на файловый сервер.Каталог /usr/ports/distfiles у меня является
общим для всех машин. Таким образом, когда я устанавливаю порт,
который уже устанавливался ранее на другой машине, мне не нужно
снова скачивать архив с исходным кодом.Проблемы взаимодействия с другими системамиПредоставил &a.jlind;.Некоторые сетевые адаптеры для систем PC с шиной ISA имеют
ограничения, которые могут привести к серьезным проблемам в сети, в
частности, с NFS. Эти проблемы не специфичны для FreeBSD, однако
эту систему они затрагивают.Проблема, которая возникает практически всегда при работе по сети
систем PC (FreeBSD) с высокопроизводительными рабочими станциями,
выпущенными такими производителями, как Silicon Graphics, Inc. и Sun
Microsystems, Inc. Монтирование по протоколу NFS будет работать
нормально, и некоторые операции также будут выполняться успешно, но
неожиданно сервер окажется недоступным для клиент, хотя запросы к и
от других систем будут продолжаться обрабатываться. Такое встречается
с клиентскими системами, не зависимо от того, является ли клиент
машиной с FreeBSD или рабочей станцией. Во многих системах при
возникновении этой проблемы нет способа корректно завершить работу
клиента. Единственным выходом зачастую является холодная перезагрузка
клиента, потому что ситуация с NFS не может быть разрешена.Хотя правильным решением является установка более
производительного и скоростного сетевого адаптера на систему FreeBSD,
имеется простое решение, приводящее к удовлетворительным результатам.
Если система FreeBSD является сервером, укажите
параметр на клиенте при монтировании. Если
система FreeBSD является клиентом, то смонтируйте
файловую систему NFS с параметром . Эти
параметры могут быть заданы в четвертом поле записи в файле
fstab клиента при автоматическом монтировании,
или при помощи параметра в команде mount при
монтировании вручную.Нужно отметить, что имеется также другая проблема, ошибочно
принимаемая за приведенную выше, когда серверы и клиенты NFS находятся
в разных сетях. Если это тот самый случай,
проверьте, что ваши маршрутизаторы пропускают
нужную информацию UDP, в противном случае вы ничего не получите, что
бы вы ни предпринимали.В следующих примерах fastws является именем хоста
(интерфейса) высокопроизводительной рабочей станции, а
freebox является именем хоста (интерфейса) системы
FreeBSD со слабым сетевым адаптером. Кроме того,
/sharedfs будет являться экспортируемой через NFS
файловой системой (смотри команду man exports), а
/project будет точкой монтирования экспортируемой
файловой системы на клиенте. В любом случае, отметьте, что для
вашего приложения могут понадобиться дополнительные параметры, такие,
как , или
.Примеры для системы FreeBSD (freebox) является
клиентом: в файле /etc/fstab на машине
freebox:
fastws:/sharedfs /project nfs rw,-r=1024 0 0
Команда, выдаваемая вручную на машине
freebox:
&prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /projectПримеры для системы FreeBSD в качестве сервера: в файле
/etc/fstab на машине
fastws:
freebox:/sharedfs /project nfs rw,-w=1024 0 0
Команда, выдаваемая вручную на машине
fastws:
&prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /projectПрактически все 16-разрядные сетевые адаптеры позволят работать
без указанных выше ограничений на размер блоков при чтении и
записи.Для тех, кто интересуется, ниже описывается, что же происходит в
при появлении этой ошибки, и объясняется, почему ее невозможно
устранить. Как правило, NFS работает с блоками размером
8 килобайт (хотя отдельные фрагменты могут иметь меньшие размеры). Так
пакет Ethernet имеет максимальный размер около 1500 байт, то
блок NFS разбивается на несколько пакетов Ethernet, хотя
на более высоком уровне это все тот же единый блок, который должен быть
принят, собран и подтвержден как один блок.
Высокопроизводительные рабочие станции могут посылать пакеты, которые
соответствуют одному блоку NFS, сразу друг за другом, насколько это
позволяет делать стандарт. На слабых, низкопроизводительных адаптерах
пакеты, пришедшие позже, накладываются поверх ранее пришедших пакетов
того же самого блока до того, как они могут быть переданы хосту и
блок как единое целое не может быть собран или подтвержден. В
результате рабочая станция входит в ситуацию таймаута и пытается
повторить передачу, но уже с полным блоком в 8КБ, и процесс будет
повторяться снова, до бесконечности.Задав размер блока меньше размера пакета Ethernet, мы достигаем
того, что любой полностью полученный пакет Ethernet может быть
подтвержден индивидуально, и избежим тупиковую ситуацию.Наложение пакетов может все еще проявляться, когда
высокопроизводительные рабочие станции сбрасывают данные на PC-систему,
однако повторение этой ситуации не обязательно с более скоростными
адаптерами с блоками NFS. Когда происходит наложение,
затронутые блоки будут переданы снова, и скорее всего, они будут
получены, собраны и подтверждены.Работа с бездисковыми станциямиТекст предоставил &a.martin;.netboot.com/netboot.rom
позволяют вам загрузить вашу машину с FreeBSD по сети и работать с
FreeBSD даже без наличия диска на клиентской машине. В версии 2.0
возможно даже иметь локальный раздел подкачки. Поддерживается также
подкачка поверх NFS.Список поддерживаемых адаптеров Ethernet включает: Western
Digital/SMC 8003, 8013, 8216 и совместимые с ними; NE1000/NE2000 и
совместимые с ними (требуется перекомпиляция)Инструкции по настройкеНайдите машину, которая будет вашим сервером. Эта машина должна
иметь достаточное количество дискового пространства для того, чтобы
на ней поместились бинарные файлы FreeBSD 2.0, и на ней должны
быть запущены сервисы bootp, tftp и NFS. Протестированные
машины:HP9000/8xx под управлением HP-UX 9.04 и выше (версии до
9.04 не работают)Sun/Solaris 2.3. (вам может потребоваться найти
bootp)Настройте сервер bootp, чтобы он сообщал клиенту его IP,
сетевой шлюз и маску подсети.
diskless:\
:ht=ether:\
:ha=0000c01f848a:\
:sm=255.255.255.0:\
:hn:\
:ds=192.1.2.3:\
:ip=192.1.2.4:\
:gw=192.1.2.5:\
:vm=rfc1048:
Настройте сервер TFTP (на той же самой машине, что и сервер
bootp) для того, чтобы он сообщал клиенту загрузочную информацию.
Имя этого файла
cfg.X.X.X.X (или
/tftpboot/cfg.X.X.X.X,
будут пробоваться оба), где X.X.X.X -
это IP-адрес клиента. Этот файл может содержать любые корректные
команды netboot. В версии 2.0 netboot воспринимает следующие
команды:helpвывод справочной информацииip
вывод/задание IP-адреса клиентаserver
вывод/задание адреса сервера bootp/tftpnetmask
вывод/задание маски подсетиhostname nameвывод/задание имени хостаkernel
вывод/задание имени ядраrootfs
вывод/задание корневой файловой системыswapfs
вывод/задание файловой системы для подкачкиswapsize
задание размера файла подкачки в КБайтах для бездисковой
работыdiskbootзагрузка с дискаautobootпродолжить процесс загрузкиtrans
|включить/выключить передатчикflags
задать параметры загрузкиТипичный полный cfg-файл для бездисковой работы может
содержать следующее:
rootfs 192.1.2.3:/rootfs/myclient
swapfs 192.1.2.3:/swapfs
swapsize 20000
hostname myclient.mydomain
cfg-файл для машины с локальным разделом подкачки может
содержать следующее:
rootfs 192.1.2.3:/rootfs/myclient
hostname myclient.mydomain
Проверьте, что ваш сервер NFS экспортирует корневую файловую
систему (и, если нужно, подкачку) для вашего клиента, а клиент
имеет доступ с правами администратора к этим файловым системам.
Типичный файл /etc/exports на системе
FreeBSD может иметь такой вид:
/rootfs/myclient -maproot=0:0 myclient.mydomain
/swapfs -maproot=0:0 myclient.mydomain
А на системе HP-UX:
/rootfs/myclient -root=myclient.mydomain
/swapfs -root=myclient.mydomain
Если вы осуществляете подкачку поверх NFS (полностью
бездисковая конфигурация), то создайте файл подкачки для вашего
клиента при помощи команды dd. Если команде
swapfs задан параметр
/swapfs и указан размер 20000, как в примере
выше, то файл подкачки для машины myclient будет называться
/swapfs/swap.X.X.X.X,
где X.X.X.X является IP-адресом клиента,
например:
&prompt.root; dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000Кроме того, дисковое пространство подкачки после начала его
использования может содержать важную информацию, так что
постарайтесь ограничить доступ к этому файлу для предотвращения
несанкционированного доступа:
&prompt.root; chmod 0600 /swapfs/swap.192.1.2.4Распакуйте корневую файловую систему в каталоге, который будет
использоваться клиентом для своей корневой файловой системы
(/rootfs/myclient в примере выше).На системах HP-UX: Сервер должен работать под управлением
HP-UX версии 9.04 или выше для машин серий HP9000/800. Более
ранние версии не допускают создания файлов устройств
поверх NFS.При распаковке каталога /dev в
/rootfs/myclient обратите внимание то
то, что некоторые системы (HPUX) не создадут файлы устройств,
которые нужны FreeBSD. Вам может потребоваться при первой
загрузке перейти в однопользовательский режим (нажав control-c
во время процесса загрузки), перейти в каталог
/dev и выполнить команду
sh ./MAKEDEV all с клиента для того, чтобы
все исправить.Запустите на клиентской машине программу
netboot.com или прошейте ПЗУ файлом
netboot.romСовместное использование файловых систем / и
/usrВ настоящее время нет официально одобренного способа сделать это,
хотя для каждого клиента я использую общую файловую систему
/usr и индивидуальную /.
Если у кого-либо появятся соображения о том, как сделать это корректно,
пожалуйста, дайте знать мне и/или &a.core;.Компиляция netboot для специфичных ситуацийNetboot может быть перекомпилирован для поддержки адаптеров
NE1000/2000 изменением настроек в файле
/sys/i386/boot/netboot/Makefile. Посмотрите
комментарии в самом начале этого файла.ISDNПоследний раз внес изменения &a.wlloyd;.Полезным источником информации о технологии ISDN и его аппаратном
обеспечении является
Страница Дэна Кегела (Dan Kegel) об ISDN.Быстрое введение в ISDN:Если вы живете в Европе, то рекомендую вам изучить раздел об
ISDN-адаптерах.Если вы планируете использовать ISDN в основном для соединений
с Интернет через провайдера по коммутируемому, невыделенному
соединению, я рекомендую посмотреть информацию о терминальных
адаптерах. Это даст вам самую большую гибкость и наименьшее
количество проблем при смене провайдера.Если вы объединяете две локальные сети или подключаетесь к
Интернет через постоянное ISDN-соединение, я рекомендую остановиться
на отдельном мосте/маршрутизаторе.Стоимость является важным фактором при выборе вашего решения.
Далее перечислены все возможности от самого дешевого до самого дорогого
варианта.Адаптеры ISDNТекст предоставил &a.hm;.Этот раздел на самом деле имеет отношение только к пользователям
ISDN в странах, где поддерживается стандарт DSS1/Q.931.Некоторое все увеличивающееся количество ISDN-адаптеров для PC
поддерживается во FreeBSD 2.2.x и выше пакетом isdn4bsd. Он находится
в разработке, но сообщения говорят о том, что он успешно используется
по всей Европе.Самая последняя версия isdn4bsd доступна по адресу
ftp://isdn4bsd@ftp.consol.de/pub/, на главном ftp-сервере
isdn4bsd (войдите как пользователь isdn4bsd,
указав свой адрес электронной почты в качестве пароля, и перейдите в
каталог pub. Вход на общедоступный ftp
как пользователь ftp или
anonymousне даст желаемого
результата).Isdn4bsd позволяет вам подключаться к другим маршрутизаторам ISDN
с использованием как IP поверх HDLC, так и PPP на синхронном канале.
Имеется также программа-автоответчик.Поддерживаются многие ISDN-адаптеры для PC, в основном с набором
ISDN-микросхем Siemens (ISAC/HSCX), поддержка других наборов (фирм
Motorola, Cologne Chip Designs) находится в разработке. Актуальный
список поддерживаемых адаптеров находится в файле README.Если вы заинтересованы в добавлении поддержки другого протокола
ISDN, неподдерживаемого в данный момент адаптера или каком-то другом
усовершенствовании isdn4bsd, то обратитесь по адресу
hm@kts.org.Имеется список рассылки, управляемый пакетом majordomo. Чтобы к
нему присоединиться, пошлите письмо на адрес &a.majordomo; и
укажите:
subscribe freebsd-isdn
в тексте вашего сообщения.Терминальные адаптеры ISDNТерминальные адаптеры(TA) для ISDN выполняют ту же роль, что и
модемы для обычных телефонных линий.Большинство TA используют стандартный набор модемных AT-команд,
и могут использоваться в качестве простой замены для модемов.TA будут работать точно так же, как и модемы, за исключением
скорости соединения и пропускной способности, которые будут гораздо
выше, чем у вашего старого модема. Вам потребуется настроить PPP точно также, как и в случае использования
модема. Проверьте, что вы задали скорость работы последовательного
порта максимально высокой.Главным преимуществом использования TA для подключения к провайдеру
Интернет является возможность использования динамического PPP. Так
как пространство адресов IP истощается все больше, большинство
провайдеров не хочет больше выдавать вам статический IP-адрес.
Большинство же маршрутизаторов не может использовать динамическое
выделение IP-адресов.TA полностью полагаются на даемон PPP, который используете из-за
его возможностей и стабильности соединения. Это позволяет вам при
использовании FreeBSD легко заменить модем на ISDN, если у вас уже
настроено соединение PPP. Однако, в тоже время любые проблемы, которые
возникают с программой PPP, отражаются и здесь.Если вы хотите максимальной надежности, используйте параметр ядра
PPP, а не пользовательский iijPPP.Известно, что следующие TA работают с FreeBSD.Motorola BitSurfer и Bitsurfer ProAdtranБольшинство остальных TA, скорее всего, тоже будут работать,
производители TA прилагают все усилия для обеспечения поддержки
практически всего набора стандартных AT-команд модема.Как и в случае модемов проблемой использования внешнего TA является
потребность в хорошем последовательном адаптере на вашем
компьютере.Вы должны прочесть раздел о последовательных
портах Руководства для того, чтобы в деталях понять работу
последовательных устройств, и осознать различие асинхронными и
синхронными последовательными портами.TA, работающий со стандартным последовательным (асинхронным) портом
PC, ограничивает вас скоростью 115.2Кбс, хотя реально у вас соединение
на скорости 128Кбс. Чтобы использовать 128Кбс, которые обеспечивает
ISDN, полностью, вы должны подключить TA к синхронному
последовательному адаптеру.Не обманывайте себя, думая, что покупка встроенного TA поможет
избежать проблемы синхронности/асинхронности. Встроенные TA просто
уже имеют внутри стандартный последовательный порт PC. Все, что при
этом достигается - это экономия дополнительных последовательного
кабеля и электрической розетки.Синхронный адаптер с TA по крайней мере так же быстр, как и
отдельный маршрутизатор, а если он работает под управлением машины
класса 386 с FreeBSD, то это гораздо более гибкое решение.Выбор sync/TA по сравнению с отдельным маршрутизатором в большей
степени вопрос религиозный. По этому поводу в списках рассылки была
некоторая дискуссия. Рекомендую поискать в архивах обсуждение
полностью.Отдельные мосты/маршрутизаторы ISDNМосты или маршрутизаторы ISDN не так уж специфичны для FreeBSD
или для любой другой операционной системы. Для более подробного
описания технологий маршрутизации и работы мостов, пожалуйста,
обратитесь к книге по сетевым технологиям.В контексте этой страницы я буду использовать термины маршрутизатор
и мост как взаимозаменяемые.Вместе с падением цен на простые мосты/маршрутизаторы ISDN, они
становятся все более популярными. Маршрутизатор ISDN представляет
собой маленькую коробочку, которая подключается непосредственно в
вашу сеть (или адаптер) Ethernet, и поддерживает связь с другим
мостом/маршрутизатором. Все программное обеспечение для работы по
PPP и другим протоколам, встроено в маршрутизатор.Маршрутизатор обладает гораздо большей пропускной способностью, чем
стандартный TA, так как он использует полное синхронное соединение
ISDN.Основной проблемой с маршрутизаторами и мостами ISDN является то,
что их совместная работа с оборудованием других производителей может
оказаться под вопросом. Если вы собираетесь подключаться к провайдеру,
я рекомендую обсудить с ним то, что вам нужно.Если вы планируете объединить два сегмента локальной сети, то есть
домашнюю сеть с сетью офиса, это самое простое решение с минимальными
издержками на обслуживание. Так как вы покупаете оборудование для
обоих сторон соединения, то можете быть уверены, что связь будет
работать нормально.Например, для соединения домашнего компьютера или сети
подразделения к сети центрального офиса, может использоваться такая
настройка.Офис подразделения или домашняя сетьСеть построена на основе 10 Base T Ethernet. Подключите
маршрутизатор к сетевому кабелю с помощью трансивера AUI/10BT,
если это нужно.
---Рабочая станция Sun
|
---Машина с FreeBSD
|
---Windows 95 (Do not admit to owning it)
|
Отдельный маршрутизатор
|
Канал ISDN BRI
Если ваш домашний или удаленный офис представляет собой один
компьютер, то для непосредственного подключения к маршрутизатору вы
вы можете использовать витую пару с перекрестным соединениям.Центральный офис или другая локальная сетьСеть построена на Ethernet с витой парой.
-------Сервер Novell
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Отдельно стоящий маршрутизатор
|
Канал ISDN BRI
Одним большим преимуществом большинства маршрутизаторов/мостов
является то, что они позволяют иметь 2 отдельных
независимых соединения PPP к 2 различным сайтам
одновременно. Это не поддерживается в большинстве
TA, кроме специальных (дорогих) моделей, имеющих по два
последовательных порта. Не путайте это с балансировкой нагрузки,
MPP и так далее.Это может оказаться весьма полезной особенностью, например, если
у вас имеется постоянное ISDN-соединение в вашем офисе, и вы хотите
им воспользоваться, но не хотите задействовать дополнительный канал
ISDN на работе. Маршрутизатор, расположенный в офисе, может
использовать выделенное соединение по каналу B (64Кбс) для Интернет,
и одновременно другой канал B для отдельного соединения для передачи
данных. Второй канал B может использоваться для входящих, исходящих
и динамически распределяемых соединений (MPP и другие) совместно с
первым каналом B для повышения пропускной способности.Мост Ethernet также позволяет вам передавать больше, чем просто
трафик IP, вы можете передавать IPX/SPX и любые другие протоколы,
которые вы используете.NIS/YPТекст написал &a.unfurl; 21 января 2000, дополнения и
комментарии частично от Эрика Огрена (Eric Ogren)
eogren@earthlink.net и Удо Эрделхоффа (Udo Erdelhoff)
ue@nathan.ruhr.de сделаны в июне 2000.Что это такое?NIS, что является сокращением от Network Information Services
(Сетевые Информационные Службы), которые были разработаны компанией
Sun Microsystems для централизованного администрирования систем Unix
(первоначально SunOS). В настоящее время эти службы практически стали
промышленным стандартом; все основные версии Unix (Solaris, HP-UX, AIX,
Linux, NetBSD, OpenBSD, FreeBSD, и так далее) поддерживают NIS.NIS первоначально назывались Yellow Pages (или yp), но из-за
проблем с авторскими правами, Sun была вынуждена изменить это
название.Это система клиент/сервер на основе вызовов RPC, которая позволяет
группе машин в одном домене NIS совместно использовать общий набор
конфигурационных файлов. Системный администратор может настроить
клиентскую систему NIS только с минимальной настроечной информацией, а
затем добавлять, удалять и модифицировать настроечную информацию из
одного места.Это похоже на систему доменов Windows NT; хотя их внутренние
реализации не так уж и похожи, основные функции сравнимы.Термины/программы, о которых вы должны знатьСуществует несколько терминов и некоторое количество
пользовательских программ, которые будут нужны, когда вы будете
пытаться сделать NIS во FreeBSD, и в случае создания сервера, и
в случае работы в качестве клиента NIS:Имя домена NIS. Главный сервер NIS и
все его клиенты (включая вторичные серверы), имеют доменное имя
NIS. Как и в случае с именем домена NT, имя домена NIS не имеет
ничего общего с DNS.portmap. Для обеспечения работы RPC
(Remote Procedure Call, Удаленного Вызова Процедур, сетевого
протокола, используемого NIS), должен быть запущен даемон
portmap. Если даемон portmap
не запущен, невозможно будет запустить сервер NIS, или работать как
NIS-клиент.ypbind. ypbind
“связывает” NIS-клиента с его NIS-сервером. Он
определяет имя NIS-домена системы, и при помощи RPC подключается к
серверу. ypbind является основой
клиент-серверного взаимодействия в среде NIS; если на клиентской
машине программа ypbind перестанет работать, то
эта машина не сможет получить доступ к серверу NIS.ypserv. Программа
ypserv, которая должна запускаться только на
серверах NIS, собственно и является сервером NIS. Если ypserv
перестанет работать, то сервер не сможет отвечать на запросы NIS
(к счастью, на этот случай предусмотрен вторичный сервер).Есть несколько реализаций NIS (к FreeBSD это не относится),
в которых не производится попыток подключиться к другому серверу,
если ранее используемый сервер перестал работать. Зачастую
единственным средством, помогающим в этой ситуации, является
перезапуск серверного процесса (или сервера полностью) или
процесса ypbind на клиентской машине.rpc.yppasswdd. Программа
rpc.yppasswdd, другой процесс, который
запускается только на главных NIS-серверах, является даемоном,
позволяющим клиентам NIS изменять свои пароли NIS. Если этот
даемон не запущен, то пользователи должны будут входить на
основной сервер NIS и там менять свои пароли.Как это работает?В системе NIS существует три типа хостов; основные (master)
серверы, вторичные (slave) серверы и клиентские машины. Серверы
выполняют роль централизованного хранилища информации о конфигурации
хостов. Основные серверы хранят оригиналы этой информации, когда как
вторичные серверы хранят ее копию для обеспечения избыточности.
Клиенты связываются с серверами, чтобы предоставить им эту
информацию.Информация во многих файлах может совместно использоваться
следующим образом. Файлы master.passwd,
group, и hosts используются
совместно через NIS. Когда процессу, работающему на клиентской машине,
требуется информация, как правило, находящаяся в этих файлах локально,
он делает запрос к серверу, с которым связан, для получения этой
информации.Типы машинОсновной сервер NIS.
Такой сервер, по аналогии с первичным контроллером домена Windows
NT, хранит файлы, используемые всеми клиентами NIS. Файлы
passwd, group и
различные другие файлы, используемые клиентами NIS, находятся
на основном сервере.Возможно использование одной машины в качестве сервера для
более чем одного домена NIS. Однако, в этом введении такая
ситуация не рассматривается, и предполагается менее масштабное
использование NIS.Вторичные серверы NIS.
Похожие на вторичные контроллеры доменов NT, вторичные серверы
NIS содержат копии оригинальных файлов данных NIS. Вторичные
серверы NIS обеспечивают избыточность, что нужно в критичных
приложениях. Они также помогают распределять нагрузку на
основной сервер: клиенты NIS всегда подключаются к тому серверу
NIS, который ответил первым, в том числе и к вторичным
серверам.Клиенты NIS.
Клиенты NIS, как и большинство машин NT Workstation,
аутентифицируются на сервере NIS (или на контроллере домена
в случае NT Workstation) во время входа в систему.Использование NIS/YPВ этом разделе приводится пример настройки NIS.В этом разделе предполагается, что вы работаете с FreeBSD версии
3.3 или выше. Указания, приводимые здесь, скорее всего,
будут работать с любой версией FreeBSD, выше,
чем 3.0, однако нет гарантий, что это на самом деле так.ПланированиеДавайте предположим, что вы являетесь администратором в маленькой
университетской лаборатории. В настоящий момент в этой лаборатории
с 15 машинами отсутствует единая точка администрирования; на каждой
машине имеются собственные файлы /etc/passwd и
/etc/master.passwd. Эти файлы синхронизируются
друг с другом только вручную; сейчас, когда вы добавляете
пользователя в лаборатории, вы должны выполнить команду
adduser на всех 15 машинах. Понятно, что такое
положение вещей нужно исправлять, так что вы решили перевести
сеть на использование NIS, используя две машины в качестве
серверов.Итак, конфигурация лаборатории сейчас выглядит примерно
так:Имя машиныIP-адресРоль машиныellington10.0.0.2Основной сервер NIScoltrane10.0.0.3Вторичный сервер NISbasie10.0.0.4Факультетская рабочая станцияbird10.0.0.5Клиентская машинаcli[1-11]10.0.0.[6-17]Другие клиентские машиныЕсли вы определяете схему NIS первый раз, ее нужно хорошо
обдумать. Вне зависимости от размеров вашей сети, есть несколько
ключевых моментов, которые требуют принятия решений.Выбор имени домена NISЭто имя не должно быть именем домена, которое
вы использовали. Более точно это имя называется именем
домена NIS. Когда клиент рассылает запросы на получение
информации, он включает в них имя домена NIS, частью которого
является. Таким способом многие сервера в сети могут указать,
какой сервер на какой запрос должен отвечать. Думайте о домене
NIS как об имени группы хостов, которые каким-то образом
связаны.Некоторые организации в качестве имени домена NIS используют
свой домен Интернет. Это не рекомендуется, так как может вызвать
проблемы в процессе решения сетевых проблем. Имя домена NIS должно
быть уникальным в пределах вашей сети и хорошо, если оно будет
описывать группу машин, которые представляет. Например,
художественный отдел в компании Acme Inc. может находиться в
домене NIS с именем "acme-art". В нашем примере положим, что
мы выбрали имя test-domain.Несмотря на это, некоторые операционные системы (в частности,
SunOS) используют свое имя домена NIS в качестве имени домена
Интернет. Если одна или более машин в вашей сети имеют такие
ограничения, вы обязаны использовать имя
домена Интернет в качестве имени домена NIS.Требования к серверуЕсть несколько вещей, которые нужно иметь в виду при выборе
машины для использования в качестве сервера NIS. Одной из
обескураживающей вещью, касающейся NIS, является уровень
зависимости клиентов от серверов. Если клиент не может
подключиться к серверу своего домена NIS, зачастую машину просто
становится нельзя использовать. Отсутствие информации о
пользователях и группах приводит к временной остановке работы
большинства систем. Зная это, вы должны выбрать машину, которая
не должна подвергаться частым перезагрузкам и не используется
для разработки. Сервер NIS в идеале должен быть отдельно стоящей
машиной, единственным целью в жизни которой является быть сервером
NIS. Если вы работаете в сети, которая не так уж сильно загружена,
то можно поместить сервер NIS на машине, на которой запущены и
другие сервисы, просто имейте в виду, что если сервер NIS
становится недоступным, то это негативно отражается на
всех клиентах NIS.Серверы NISОригинальные копии всей информации NIS хранится на единственной
машине, которая называется главным сервером NIS. Базы данных,
которые используются для хранения информации, называются картами NIS.
Во FreeBSD эти карты хранятся в
/var/yp/[domainname], где
[domainname] является именем обслуживаемого
домена NIS. Один сервер NIS может поддерживать одновременно
несколько доменов, так что есть возможность иметь несколько таких
каталогов, по одному на каждый обслуживаемый домен. Каждый домен
будет иметь свой собственный независимый от других набор карт.Основной и вторичный серверы обслуживают все запросы NIS с
помощью даемона ypserv. Ypserv
отвечает за получение входящих запросов от клиентов NIS,
распознавание запрашиваемого домена и отображение имени в путь к
соответствующему файлы базы данных, а также передаче информации из
базы данных обратно клиенту.Настройка основного сервера NISНастройка основного сервера NIS может оказаться сравнительно
простой, в зависимости от ваших потребностей. В поставку FreeBSD
сразу включена поддержка NIS. Все, что вам нужно, это добавить
следующие строки в файл /etc/rc.conf, а
FreeBSD сделает за вас все остальное..nisdomainname="test-domain"
В этой строке задается имя домена NIS, которое будет
test-domain, еще до настройки сети
(например, после перезагрузки).nis_server_enable="YES"
Здесь указывается FreeBSD на запуск процессов серверов NIS,
когда дело доходит до сетевых настроек.nis_yppasswdd_enable="YES"
Здесь указывается на запуск даемона
rpc.yppasswdd, который, как это отмечено
выше, позволит пользователям менять свой пароль NIS с
клиентской машины.А теперь все, что вам нужно сделать, это запустить команду
/etc/netstart, работая как администратор. По
ней произойдет настройка всего, при этом будут использоваться
значения, заданные в файле /etc/rc.conf.Инициализация карт NISКарты NIS являются файлами баз данных,
которые хранятся в каталоге /var/yp.
Они генерируются из конфигурационных файлов, находящихся в каталоге
/etc основного сервера NIS, за одним
исключением: файл /etc/master.passwd.
На это есть весомая причина; вам не нужно распространять пароли
пользователя root и других административных пользователей на все
серверы в домене NIS. По этой причине, прежде чем инициализировать
карты NIS, вы должны сделать вот что:
&prompt.root; cp /etc/master.passwd /var/yp/master.passwd
&prompt.root; cd /var/yp
&prompt.root; vi master.passwdВы должны удалить все записи, касающиеся системных
пользователей (bin, tty, kmem, games и так далее), а также записи,
которые вы не хотите распространять клиентам NIS (например, root
и другие пользователи с UID, равным 0 (администраторы)).Проверьте, чтобы файл
/var/yp/master.passwd был недоступен для
записи ни для группы, ни для остальных пользователей (режим
доступа 600)! Воспользуйтесь командой chmod,
если это нужно.Когда с этим будет покончено, самое время проинициализировать
карты NIS! В поставку FreeBSD включен скрипт с именем
ypinit, который делает это (обратитесь к его
справочной странице за дополнительной информацией). Отметьте, что
этот скрипт имеется на большинстве ОС UNIX, но не во всех. В
системе Digital Unix/Compaq Tru64 Unix он называется
ypsetup. Так как мы генерируем карты для
главного сервера NIS, то при вызове программы
ypinit мы передаем ей параметр
. Для генерации карт NIS в предположении, что
вы уже сделали шаги, описанные выше, выполните следующее:
ellington&prompt.root; ypinit -m test-domain
Server Type: MASTER Domain: test-domain
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] n
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
At this point, we have to construct a list of this domains YP servers.
rod.darktech.org is already known as master server.
Please continue to add any slave servers, one per line. When you are
done with the list, type a <control D>.
master server : ellington
next host to add: coltrane
next host to add: ^D
The current list of NIS servers looks like this:
ellington
coltrane
Is this correct? [y/n: y] y
[..вывод при генерации карт..]
NIS Map update completed.
ellington has been setup as an YP master server without any errors.
Программа ypinit должна была создать файл
/var/yp/Makefile из
/var/yp/Makefile.dist. При создании этого
файла предполагается, что вы работаете в окружении с единственным
сервером NIS и только с машинами FreeBSD. Так как в домене
test-domain имеется также и вторичный сервер,
то вы должны отредактировать файл
/var/yp/Makefile:
ellington&prompt.root; vi /var/yp/MakefileВы должны закомментировать строку, в которой указано
`NOPUSH = "True"' (она уже не раскомментирована).Настройка вторичного сервера NISНастройка вторичного сервера NIS осуществляется еще проще,
чем настройка главного сервера. Войдите на вторичный сервер и
отредактируйте файл /etc/rc.conf точно также,
как вы делали это ранее. Единственным отличием является то, что
при запуске программы ypinit мы теперь должны
использовать опцию . Применение опции
требует также указание имени главного сервера
NIS, так что наша команда должна выглядеть так:
coltrane&prompt.root; ypinit -s ellington test-domain
Server Type: SLAVE Domain: test-domain Master: ellington
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] n
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
There will be no further questions. The remainder of the procedure
should take a few minutes, to copy the databases from ellington.
Transferring netgroup...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byuser...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byhost...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring group.bygid...
ypxfr: Exiting: Map successfully transferred
Transferring group.byname...
ypxfr: Exiting: Map successfully transferred
Transferring services.byname...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.byname...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.byname...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring netid.byname...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring ypservers...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byname...
ypxfr: Exiting: Map successfully transferred
coltrane has been setup as an YP slave server without any errors.
Don't forget to update map ypservers on ellington.
Теперь у вас должен быть каталог с именем
/var/yp/test-domain. Копии карт главного
сервера NIS должны быть в этом каталоге. Вы должны удостовериться,
что этот каталог обновляется. Следующие строки в
/etc/crontab вашего вторичного сервера должны
это делать:
20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuid
Эти две строки заставляют вторичный сервер синхронизировать
свои карты с картами главного сервера. Хотя делать это не
обязательно, потому что главный сервер делает попытки передать
все изменения в своих картах NIS на свои вторичные серверы,
информация для входа в систему настолько жизненно важна для
систем, зависящих от сервера, что выполнение регулярных обновлений
является совсем не плохой идеей. Это еще более важно в загруженных
сетях, в которых обновления карт могут не всегда завершаться
успешно.А теперь точно также запустите команду
/etc/netstart на вторичном сервере, по которой
снова выполнится запуск сервера NIS.Клиенты NISКлиент NIS выполняет так называемую привязку к конкретному
серверу NIS при помощи даемона ypbind.
ypbind определяет домен, используемый в системе
по умолчанию (тот, который устанавливается по команде
domainname), и начинает широковещательную рассылку
запросов RPC в локальной сети. В этих запросах указано имя домена,
к серверу которого ypbind пытается осуществить
привязку. Если сервер, который был настроен для обслуживания
запрашиваемого домена, получит широковещательный запрос, он ответит
ypbind, который, в свою очередь запомнит адрес
сервера. Если имеется несколько серверов (например, главный и
несколько вторичных), то ypbind будет использовать
адрес первого ответившего. С этого момента клиентская система будет
направлять все свои запросы NIS на этот сервер. Время от времени
ypbind будет обмениваться пакетами
ping с сервером для проверки его работоспособности.
Если на один из тестовых пакетов не удастся получить ответа за
разумное время, то ypbind пометит этот домен как
домен, с которым связка разорвана, и снова начнет процесс посылки
широковещательных запросов в надежде найти другой сервер.Настройка клиента NISНастройка машины с FreeBSD в качестве клиента NIS достаточно
проста.Отредактируйте файл /etc/rc.conf,
добавив туда следующие строки для того, чтобы задать имя домена
NIS и запустить ypbind во время запуска
сетевых служб:
nisdomainname="test-domain"
nis_client_enable="YES"
Для получения всех возможных учетных записей от сервера NIS
добавьте при помощи vipw в ваш файл
/etc/master.passwd такую строчку:
+:::::::::
Эта строчка даст всем пользователям с корректной учетной
записью в картах учетных баз пользователей доступ к этой
системе. Есть множество способов настроить ваш клиент NIS,
изменив эту строку. Посмотрите ниже текст, касающийся сетевых групп, чтобы получить более
подробную информацию. Дополнительная информация для изучения
находится в книге издательства O'Reilly под названием
Managing NFS and NIS.Для импортирования всех возможных записей о группах с
сервера NIS, добавьте в ваш файл
/etc/group такую строчку:
+:*::
После завершения выполнения этих шагов у вас должно получиться
запустить команду ypcat passwd и увидеть
карту учетных записей сервера NIS.Безопасность NISВ общем-то любой пользователь, зная имя вашего домена, может
выполнить запрос RPC к ypserv и получить содержимое ваших карт NIS.
Для предотвращения такого неавторизованного обмена ypserv поддерживает
так называемую систему securenets, которая может использоваться для
ограничения доступа к некоторой группе хостов. При запуске ypserv
будет пытаться загрузить информацию, касающуюся securenets, из файла
/var/yp/securenets.Имя каталога зависит от параметра, указанного вместе с опцией
. Этот файл содержит записи, состоящие из
указания сети и сетевой маски, разделенных пробелом. Строчки,
начинающиеся со знака #, считаются комментариями.
Примерный файл securenets может иметь примерно такой вид:
# allow connections from local host -- mandatory
127.0.0.1 255.255.255.255
# allow connections from any host
# on the 192.168.128.0 network
192.168.128.0 255.255.255.0
# allow connections from any host
# between 10.0.0.0 to 10.0.15.255
# this includes the machines in the testlab
10.0.0.0 255.255.240.0
Если ypserv получает запрос от адреса, который соответствует одному
из этих правил, он будет отрабатывать запрос обычным образом. Если же
адрес не подпадает ни под одно правило, запрос будет проигнорирован
и в журнал будет записано предупреждающее сообщение. Если файл
/var/yp/securenets не существует, ypserv будет
обслуживать соединения от любого хоста.Программа ypserv также поддерживает пакет программ
tcpwrapper от Wietse Venema. Это позволяет
администратору для ограничения доступа вместо
/var/yp/securenets использовать конфигурационные
файлы tcpwrapper.Хотя оба этих метода управления доступом обеспечивают некоторую
безопасность, они, как основанные на проверке привилегированного
порта, оба подвержены атакам типа IP spoofing. Весь
сетевой трафик, связанный с работой NIS, должен блокироваться вашим
межсетевым экраном.Серверы, использующие файл /var/yp/securenets,
могут быть не в состоянии обслуживать старых клиентов NIS с древней
реализацией протокола TCP/IP. Некоторые из этих реализаций при
рассылке широковещательных запросов устанавливают все биты машинной
части адреса в ноль и/или не в состоянии определить маску подсети при
вычислении адреса широковещательной рассылки. Хотя некоторые из этих
проблем могут быть решены изменением конфигурации клиента, другие
могут привести к отказу от использования
/var/yp/securenets.Использование /var/yp/securenets на сервере
с такой архаичной реализацией TCP/IP является весьма плохой идеей, и
приведёт к потере работоспособности NIS в большой части вашей
сети.Использование пакета tcpwrapper увеличит
время отклика вашего сервера NIS. Дополнительной задержки может
оказаться достаточно для возникновения таймаутов в клиентских
программах, особенно в загруженных сетях или с медленными серверами
NIS. Если одна или более ваших клиентских систем страдают от таких
проблем, вы должны преобразовать такие клиентские системы во вторичные
серверы NIS и сделать принудительную их привязку к самим себе.Запрет входа некоторых пользователейВ нашей лаборатории есть машина basie, о которой
предполагается, что она является исключительно факультетской рабочей
станцией. Мы не хотим исключать эту машину из домена NIS, однако
файл passwd на главном сервере NIS содержит
учетные записи как для работников факультета, так и студентов. Что мы
можем сделать?Есть способ ограничить вход некоторых пользователей на этой машине,
даже если они присутствуют в базе данных NIS. Чтобы это сделать, вам
достаточно добавить
-username в конец файла
/etc/master.passwd на клиентской машине, где
username является именем пользователя,
которому вы хотите запретить вход. Рекомендуется сделать это с помощью
утилиты vipw, так как vipw
проверит ваши изменения в /etc/master.passwd, а
также автоматически перестроит базу данных паролей по окончании
редактирования. Например, если мы хотим запретить пользователю
bill осуществлять вход на машине
basie, то мы сделаем следующее:
basie&prompt.root; vipw[add -bill to the end, exit]
vipw: rebuilding the database...
vipw: done
basie&prompt.root; cat /etc/master.passwd
root:[password]:0:0::0:0:The super-user:/root:/bin/csh
toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5::0:0:System &:/:/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
+:::::::::
-bill
basie&prompt.root;
Использование сетевых группЭта часть раздела о сетевых группах была предоставлена
Удо Эрделхоффом (Udo Erdelhoff) ue@nathan.ruhr.de в
июле 2000 года.Способ, описанный в предыдущей главе, работает достаточно хорошо,
если вам нужны особые правила для очень малой группы пользователей или
машин. В более крупных сетях вы забудете о
запрете входа определенных пользователей на важные машины или даже
будете настраивать каждую машину по отдельности, теряя таким образом
главное преимущество использования NIS,
централизованное администрирование.Ответом разработчиков NIS на эту проблему являются
сетевые группы. Их назначение и смысл можно
сравнить с обычными группами, используемыми в файловых системах Unix.
Главное отличие заключается в отсутствии числового идентификатора и
возможности задать сетевую группу включением как пользователей, так и
других сетевых групп.Сетевые группы были разработаны для работы с большими, сложными
сетями с сотнями пользователей и машин. С одной стороны, хорошо, если
вам приходится с такой ситуацией. С другой стороны, эта сложность
делает невозмохным описание сетевых групп с помощью простых примеров.
Пример, используемый в дальнейшем, демонстрирует эту проблему.Давайте предположим, что успешное внедрение системы NIS в вашей
лаборатории заинтересовало ваше руководство. Вашим следующим заданием
стало расширение домена NIS для включения в него некоторых других
машин студенческого городка. В двух таблицах перечислены имена
новых машин и пользователей, а также их краткое описание.Имена пользователейОписаниеalpha, betaОбычные служащие IT-департаментаcharlie, deltaПрактиканты IT-департаментаecho, foxtrott, golf, ...Обычные сотрудникиable, baker, ...Проходящие интернатуруИмена машинОписаниеwar, death, famine, polutionВаши самые важные серверы. Только служащим IT позволяется
входить на эти машины.pride, greed, envy, wraith, lust, slothМенее важные серверы. Все сотрудники департамента IT могут
входить на эти машины.one, two, three, four, ...Обычные рабочие станции. Только
реально нанятым служащим позволяется
использовать эти машины.trashcanОчень старая машина без каких-либо критичных данных. Даже
проходящим интернатуру разрешено ее использовать.Если вы попытаетесь реализовать эти требования, ограничивая
каждого пользователя по отдельности, то вам придется добавить
на каждой машине в файл с паролями по одной строчке
-user для каждого пользователя, которому
запрещено входить на эту систему. Если вы забудете даже одну строчку,
у вас могут начаться проблемы. Гораздо проще делать это правильно во
время начальной установки, однако вы постепенно будете
забывать добавлять строчки для новых пользователей во время
повседневной работы. В конце концов, Мерфи был оптимистом.Использование в этой ситуации сетевых групп дает несколько
преимуществ. Нет необходимости описывать по отдельности каждого
пользователя; вы ставите в соответствие пользователю одну или
несколько сетевых групп и разрешаете или запрещаете вход всем членам
сетевой группы. Если вы добавляете новую машину, вам достаточно
определить ограничения на вход для сетевых групп. Если добавляется
новый пользователь, вам достаточно добавить его к одной или большему
числу сетевых групп. Эти изменения независимы друг от друга; нет
больше комбинаций для каждого пользователя и машины.
Если настройка вашей системы NIS тщательно спланирована, то для
разрешения или запрещения доступа к машинам вам нужно будет
модифицировать единственный конфигурационный файл.Первым шагом является инициализация карты NIS по имени netgroup.
Программа ypinit во FreeBSD по умолчанию этой карты не создает, хотя
реализация NIS будет ее поддерживает, как только она будет создана.
Чтобы создать пустую карту, просто наберите
ellington&prompt.root; vi /var/yp/netgroupи начните добавлять содержимое. Например, нам нужно по крайней
мере четыре сетевых группы: сотрудники IT, практиканты IT, обычные
сотрудники и интернатура.
IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
USERS (,echo,test-domain) (,foxtrott,test-domain) \
(,golf,test-domain)
INTERNS (,able,test-domain) (,baker,test-domain)
IT_EMP, IT_APP и так далее
являются именами сетевых групп. Несколько слов в скобках служат для
добавления пользователей в группу. Три поля внутри группы обозначают
следующее:Имя хоста или хостов, к которым применимы последующие записи.
Если имя хоста не указано, то запись применяется ко всем хостам.
Если же указывается имя хоста, то вы получите мир темноты, ужаса
и страшной путаницы.Имя учетной записи, которая принадлежит этой сетевой
группе.Домен NIS для учетной записи. Вы можете импортировать в вашу
сетевую группу учетные записи из других доменов NIS, если вы один
из тех несчастных, имеющих более одного домена NIS.Каждое из этих полей может содержать шаблоны, подробности даны в
странице справочника по &man.netgroup.5;.Не нужно использовать имена сетевых групп длиннее 8 символов,
особенно если в вашем домене NIS имеются машины, работающие под
управлением других операционных систем. Имена чувствительны к
регистру; использование заглавных букв для имен сетевых групп
облегчает распознавание пользователей, имен машин и сетевых
групп.Некоторые клиенты NIS (отличные от FreeBSD) не могут работать
с сетевыми группами, включающими большое количество записей.
Например, в некоторых старых версиях SunOS возникают проблемы, если
сетевая группа содержит более 15 записей. Вы
можете обойти это ограничение, создав несколько подгрупп с 15 или
меньшим количеством пользователей и настоящую сетевую группу,
состоящую из подгрупп:
BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
BIGGRP3 (,joe32,domain) (,joe33,domain)
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3
Вы можете повторить этот процесс, если вам нужно иметь более 225
пользователей в одной сетевой группе.Активация и распространение вашей карты NIS проста:
ellington&prompt.root; cd /var/yp
ellington&prompt.root; makeЭто приведет к созданию трех карт NIS
netgroup, netgroup.byhost и
netgroup.byuser. Воспользуйтесь утилитой
&man.ypcat.1; для проверки доступности вашей новой карты NIS:
ellington&prompt.user; ypcat -k netgroup
ellington&prompt.user; ypcat -k netgroup.byhost
ellington&prompt.user; ypcat -k netgroup.byuserВывод первой команды должен соответствовать содержимому файла
/var/yp/netgroup. Вторая команда не выведет
ничего, если вы не зададите сетевые группы, специфичные для хоста.
Третья команда может использоваться пользователем для получения
списка сетевых групп.Настройка клиента достатчно проста. Чтобы настроить сервер
war, вам достаточно запустить &man.vipw.8;
и заменить строку
+:::::::::
на
+@IT_EMP:::::::::
Теперь только данные, касающиеся пользователей, определенных в
сетевой группе IT_EMP, импортируются в
базу паролей машины war и только этим
пользователям будет разрешен вход.К сожалению, это ограичение также касается и функции ~ командного
процессора и всех подпрограмм, выполняющих преобразование между
именами пользователей и их численными идентификаторами. Другими
словами, команда cd ~user работать не
будет, команда ls -l будет выдавать числовые
идентификаторы вместо имен пользователей, а find . -user
joe -print работать откажется, выдавая сообщение
No such user. Чтобы это исправить, вам нужно будет
выполнить импорт всех записей о пользователях без
разрешения на вход на ваши серверы.Это можно сделать, добавив еще одну строку в файл
/etc/master.passwd. Эта строка должна содержать
+:::::::::/sbin/nologin, что означает
Произвести импортирование всех записей с заменой командного
процессора на /sbin/nologin в импортируемых
записях. Вы можете заменить любое поле в строке с паролем,
указав значение по умолчанию в вашем
/etc/master.passwd.Проверьте, что строка
+:::::::::/sbin/nologin помещена после
+@IT_EMP:::::::::. В противном случае все
пользовательские записи, импортированные из NIS, будут иметь
/sbin/nologin в качестве оболочки.После этого изменения при появлении нового сотрудника IT вам будет
достаточно изменять только одну карту NIS. Вы можете применить
подобный метод для менее важных серверов, заменяя
старую строку +::::::::: в их файлах
/etc/master.passwd на нечто, подобное
следующему:
+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologin
Соответствующие строки для обычных рабочих станций могут иметь
такой вид:
+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologin
И все было прекрасно до того момента, когда через несколько
недель изменилась политика: Департамент IT начал нанимать интернатуру.
Интернатуре в IT позволили использовать обычные рабочие станции и
менее важные серверы; практикантам позволили входить на главные
серверы. Вы создали новую сетевую группу IT_INTERN, добавили в нее
новую интернатуру и начали изменять настройки на всех и каждой
машине... Как говорит старая мудрость: Ошибки в
централизованном планировании приводят к глобальному
хаосу.Возможность в NIS создавать сетевые группы из других сетевых
групп можт использоваться для предотвращения подобных ситуаций. Одним
из вариантов является создание сетевых групп на основе ролей.
Например, вы можете создать сетевую группу с именем
BIGSRV для задания ограничений на вход на
важные серверы, другую сетевую группу с именем
SMALLSRV для менее важных серверов и третью
сетевую группу под названием USERBOX для
обычных рабочих станций. Каждая из этих сетевых групп содержит
сетевые группы, которым позволено входить на эти машины. Новые записи
для вашей карты NIS сетевой группы должны выглядеть таким
образом:
BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERS
Этот метод задания ограничений на вход работает весьма хорошо,
если вы можете выделить группы машин с одинаковыми ограничениями. К
сожалению, такая ситуация может быть исключением, но не правилом. В
большинстве случаев вм нужна возможность определять ограничения на
вход индивидуально для каждой машины.Задание сетевых групп в зависимости от машин является другой
возможностью, которой можно воспользоваться при изменении политики,
описанной выше. При таком развитии событий файл
/etc/master.passwd на каждой машине содержит две
строки, начинающиеся с ``+''. Первая из них добавляет сетевую группу
с учетными записями, которым разрешено входить на эту машину, а вторая
добавляет все оставшиеся учетные записи с
/sbin/nologin в качестве командного процессора.
Хорошей идеей является использование ИМЕНИ МАШИНЫ заглавными буквами
для имени сетевой группы. Другими словами, строки должны иметь такой
вид:
+@BOXNAME:::::::::
+:::::::::/sbin/nologin
Как только вы завершите эту работу для всех ваших машин, вам не
нужно будет снова модифицировать локальные версии
/etc/master.passwd. Все будущие изменения могут
быть выполнены изменением карты NIS. Вот пример возможной карты
сетевой группы для этого случая с некоторыми полезными
дополнениями.
# Сначала определяем группы пользователей
IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
DEPT2 (,golf,test-domain) (,hotel,test-domain)
DEPT3 (,india,test-domain) (,juliet,test-domain)
ITINTERN (,kilo,test-domain) (,lima,test-domain)
D_INTERNS (,able,test-domain) (,baker,test-domain)
#
# Теперь задаем несколько групп на основе ролей
USERS DEPT1 DEPT2 DEPT3
BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERS
#
# И группы для специальных задач
# Открыть пользователям echo и golf доступ к антивирусной машине
SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)
#
# Сетевые группы, специфичные для машин
# Наши главные серверы
WAR BIGSRV
FAMINE BIGSRV
# Пользователю india необходим доступ к этому серверу
POLUTION BIGSRV (,india,test-domain)
#
# Этот очень важен и ему требуются большие ограничения доступа
DEATH IT_EMP
#
# Антивирусная машина, упомянутая выше
ONE SECURITY
#
# Ограничить машину единственным пользователем
TWO (,hotel,test-domain)
# [...далее следуют другие группы]
Если вы используете какие-либо базы данных для управления
учетными записями ваших пользователей, вы должны смочь создать первую
часть карты с помощью инструментов построения отчетов вашей базы
данных. В таком случае новые пользователи автоматически получат
доступ к машинам.И последнее замечание: Не всегда бывает разумно использовать
сетевые группы на основе машин. Если в студенческих лабораториях вы
используете несколько десятков или даже сотен одинаковых машин, то
вам нужно использовать сетевые группы на основе ролей, а не основе
машин, для того, чтобы размеры карты NIS оставались в разумных
пределах.Важные замечанияЕсть некоторые действия, которые нужно будет выполнять по-другому,
если вы работаете с NIS.Каждый раз, когда вы собираетесь добавить пользователя в
лаборатории, вы должны добавить его только на
главном сервере NIS и обязательно перестроить карты
NIS. Если вы забудете сделать это, то новый
пользователь не сможет нигде войти, кроме как на главном сервере
NIS. Например, если в лаборатории нам нужно добавить нового
пользователя “jsmith”, мы делаем вот что:
&prompt.root; pw useradd jsmith
&prompt.root; cd /var/yp
&prompt.root; make test-domainВместо pw useradd jsmith вы можете также
запустить команду adduser jsmith.Не помещайте административные учетные записи в карты
NIS. Вам не нужно распространять административных
пользователей и их пароли на машины, которые не должны иметь доступ
к таким учетным записям.Сделайте главный и вторичные серверы NIS безопасными
и минимизируйте их время простоя. Если кто-то либо
взломает, либо просто отключит эти машины, то люди без права
входа в лабораторию с легкостью получат доступ.Это основное уязвимое место в любой централизованно
администрируемой системе, и это очень важный момент. Если вы не
защищаете ваши серверы NIS, вы будете иметь дело с толпой
разозленных пользователей!Совместимость с NIS v1ypserv из поставки FreeBSD имеет
встроенную поддержку для обслуживания клиентов NIS v1. Реализация NIS
во FreeBSD использует только протокол NIS v2, хотя другие реализации
имеют поддержку протокола v1 для совместимости со старыми системами.
Даемоны ypbind, поставляемые с такими
системами, будут пытаться осуществить привязку к серверу NIS v1, даже
если это им не нужно (и они будут постоянно рассылать широковещательные
запросы в поиске такого сервера даже после получения ответа от сервера
v2). Отметьте, что хотя имеется поддержка обычных клиентских вызовов,
эта версия ypserv не отрабатывает запросы на передачу карт v1;
следовательно, она не может использоваться в качестве главного или
вторичного серверов вместе с другими серверами NIS, поддерживающими
только протокол v1. К счастью, скорее всего, в настоящий момент
такие серверы практически не используются.Серверы NIS, которые также являются клиентами NISОсобое внимание следует уделить использованию ypserv в домене со
многими серверами, когда серверные машины являются также клиентами NIS.
Неплохо бы заставить серверы осуществить привязку к самим себе,
запретив рассылку запросов на привязку и возможно, перекрестную
привязку друг к другу. Если один сервер выйдет из строя, а другие
будут зависеть от него, то в результате могут возникнуть странные
ситуации. Постепенно все клиенты попадут в таймаут и попытаются
привязаться к другим серверам, но полученная задержка может быть
значительной, а странности останутся, так как серверы снова могут
привязаться друг к другу.Вы можете заставить хост выполнить привязку к конкретному серверу,
запустив команду ypbind с флагом
.Использование libscrypt или libdescryptОдним из общих вопросов, которые возникают в начале работы с NIS,
является вопрос совместимости криптографической библиотеки crypt. Если
ваш сервер NIS использует криптографические библиотеки DES, он сможет
поддерживать клиентов, которые тоже используют DES. Чтобы определить,
что используют ваши сервер и клиенты, взгляните на символические ссылки
в каталоге /usr/lib. Если машина настроена на
использование библиотек DES, это будет выглядеть примерно так:
&prompt.user; ls -l /usr/lib/*crypt*
lrwxrwxrwx 1 root wheel 13 Jul 15 08:55 /usr/lib/libcrypt.a@ -> libdescrypt.a
lrwxrwxrwx 1 root wheel 14 Jul 15 08:55 /usr/lib/libcrypt.so@ -> libdescrypt.so
lrwxrwxrwx 1 root wheel 16 Jul 15 08:55 /usr/lib/libcrypt.so.2@ -> libdescrypt.so.2
lrwxrwxrwx 1 root wheel 15 Jul 15 08:55 /usr/lib/libcrypt_p.a@ -> libdescrypt_p.a
-r--r--r-- 1 root wheel 13018 Nov 8 14:27 /usr/lib/libdescrypt.a
lrwxr-xr-x 1 root wheel 16 Nov 8 14:27 /usr/lib/libdescrypt.so@ -> libdescrypt.so.2
-r--r--r-- 1 root wheel 12965 Nov 8 14:27 /usr/lib/libdescrypt.so.2
-r--r--r-- 1 root wheel 14750 Nov 8 14:27 /usr/lib/libdescrypt_p.a
Если машина настроена на использование стандартных для FreeBSD
криптографических библиотек MD5, то они будут иметь примерно такой
вид:
&prompt.user; ls -l /usr/lib/*crypt*
lrwxrwxrwx 1 root wheel 13 Jul 15 08:55 /usr/lib/libcrypt.a@ -> libscrypt.a
lrwxrwxrwx 1 root wheel 14 Jul 15 08:55 /usr/lib/libcrypt.so@ -> libscrypt.so
lrwxrwxrwx 1 root wheel 16 Jul 15 08:55 /usr/lib/libcrypt.so.2@ -> libscrypt.so.2
lrwxrwxrwx 1 root wheel 15 Jul 15 08:55 /usr/lib/libcrypt_p.a@ -> libscrypt_p.a
-r--r--r-- 1 root wheel 6194 Nov 8 14:27 /usr/lib/libscrypt.a
lrwxr-xr-x 1 root wheel 14 Nov 8 14:27 /usr/lib/libscrypt.so@ -> libscrypt.so.2
-r--r--r-- 1 root wheel 7579 Nov 8 14:27 /usr/lib/libscrypt.so.2
-r--r--r-- 1 root wheel 6684 Nov 8 14:27 /usr/lib/libscrypt_p.a
Если у вас возникли проблемы с аутентификацией клиента NIS, начать
её решать определённо стоит отсюда. Если вы хотите
использовать сервер NIS в гетерогенной сети, вам, наверное, нужно
будет использовать DES на всех системах в силу того, что это
минимальный общий стандарт.DHCPТекст написал &a.gsutter;, март 2000.Что такое DHCP?DHCP, или Dynamic Host Configuration Protocol (Протокол
Динамической Конфигурации Хостов), описывает порядок, по которому
система может подключиться к сети и получить необходимую информацию
для работы в ней. Во FreeBSD используется реализация DHCP от ISC
(Internet Software Consortium), так что вся информация, описывающая
особенности, зависящие от реализации, относится к дистрибутиву
ISC.Что описывается в этом разделеВ этом разделе Руководства делается попытка описать только те части
системы DHCP, которые интегрированы с FreeBSD; таким образом, серверная
часть не описывается. Справочные страницы по DHCP, кроме ссылок,
дающихся ниже, будут вам весьма полезны.Как это работаетКогда на клиентской машине выполняется программа dhclient,
являющаяся клиентом DHCP, она начинает широковещательную рассылку
запросов на получение настроечной информации. По умолчанию эти запросы
делаются на 68 порт UDP. Сервер отвечает на UDP 67, выдавая клиенту
адрес IP и другую необходимую информацию, такую, как сетевую маску,
маршрутизатор и серверы DNS. Вся эта информация дается в форме
"аренды" DHCP и верна только определенное время (что настраивается
администратором сервера DHCP). При таком подходе устаревшие адреса IP
тех клиентов, которые больше не подключены к сети, могут быть
автоматически использоваться повторно.Клиенты DHCP могут получить от сервера очень много информации.
Подробный список находится в странице Справочника
&man.dhcp-options.5;.Интеграция с FreeBSDКлиент DHCP от ISC, dhclient, полностью
интегрирован во FreeBSD. Поддержка клиента DHCP есть как в программе
установки, так и в самой системе, что исключает необходимость в
знании подробностей конфигурации сети в любой сети, имеющей сервер
DHCP. Утилита dhclient включена во все версии
FreeBSD, начиная с 3.2.DHCP поддерживается утилитой sysinstall.
При настройке сетевого интерфейса из программы sysinstall первый
вопрос, который вам задается, это "Do you want to try dhcp
configuration of this interface?" ("Хотите ли вы попробовать настроить
этот интерфейс через dhcp?"). Утвердительный ответ приведёт к запуску
программы dhclient, и при удачном его выполнении к автоматическому
заданию информации для настройки интерфейса.
- Есть две вещи, которые вы должны сделать для того, чтобы ваша
- система использовала DHCP при загрузке:
+ Есть две вещи, которые вы должны сделать для того, чтобы ваша
+ система использовала DHCP при загрузке:
-
-
- Убедитесь, что устройство bpf
- включено в компиляцию вашего ядра. Чтобы это сделать, добавьте
- строчку pseudo-device bpf в конфигурационный
- файл ядра и перестройте ядро. Более подробная информация о
- построении ядер имеется в разделе .
-
- Устройство bpf уже является частью
- ядра GENERIC, которое поставляется вместе с
- FreeBSD, так что, если вы не используете другое ядро, то вам и
- не нужно его делать для того, чтобы работал DHCP.
-
-
- Те, кто беспокоится о безопасности, должны иметь в виду, что
- устройство bpf является также тем самым
- устройством, которое позволяет работать программам-снифферам
- пакетов (хотя для этого они должны быть запущены пользователем
- root). Наличие устройства bpf
- необходимо для использования DHCP, но если
- вы чересчур беспокоитесь о безопасности, то вам нельзя добавлять
- устройство bpf в ядро для того, чтобы
- в будущем использовать DHCP.
-
-
-
-
- Отредактируйте ваш файл /etc/rc.conf,
- включив в него следующее:
-
-
+
+
+ Убедитесь, что устройство bpf
+ включено в компиляцию вашего ядра. Чтобы это сделать, добавьте
+ строчку pseudo-device bpf в конфигурационный
+ файл ядра и перестройте ядро. Более подробная информация о
+ построении ядер имеется в разделе .
+
+ Устройство bpf уже является частью
+ ядра GENERIC, которое поставляется вместе с
+ FreeBSD, так что, если вы не используете другое ядро, то вам и
+ не нужно его делать для того, чтобы работал DHCP.
+
+
+ Те, кто беспокоится о безопасности, должны иметь в виду, что
+ устройство bpf является также тем самым
+ устройством, которое позволяет работать программам-снифферам
+ пакетов (хотя для этого они должны быть запущены пользователем
+ root). Наличие устройства bpf
+ необходимо для использования DHCP, но если
+ вы чересчур беспокоитесь о безопасности, то вам нельзя добавлять
+ устройство bpf в ядро для того, чтобы
+ в будущем использовать DHCP.
+
+
+
+
+ Отредактируйте ваш файл /etc/rc.conf,
+ включив в него следующее:
+
+
ifconfig_fxp0="DHCP"
-
-
-
+
+
+ Обязательно замените fxp0 именем интерфейса,
- который вы хотите настроить динамически.
+ который вы хотите настроить динамически.
Если dhclient в вашей системе находится в другом
месте или если вы хотите задать дополнительные параметры для
dhclient, то также укажите следующее (изменив так,
как вам нужно):
dhcp_program="/sbin/dhclient"
dhcp_flags=""
Сервер DHCP, dhcpd, включен как часть порта
isc-dhcp2 в коллекции портов. Этот порт содержит
полный дистрибутив ISC DHCP, состоящий из клиента, сервера, агент
для перенаправления запросов и документация.Файлы/etc/dhclient.confdhclient требует наличия конфигурационного
файла, /etc/dhclient.conf. Как правило, файл
содержит только комментарии, а настройки по умолчанию достаточно
хороши. Этот настроечный файл описан в странице Справочника
&man.dhclient.conf.5;./sbin/dhclientdhclient скомпонован статически и находится
в каталоге /sbin. На страница Справочника
&man.dhclient.8; дается более подробная информация о
dhclient./sbin/dhclient-scriptdhclient-script является специфичным для
FreeBSD скриптом настройки клиента DHCP. Он описан в
&man.dhclient-script.8;, но для нормального функционирования
никаких модификаций со стороны пользователя не требуется./var/db/dhclient.leasesВ этом файле клиент DHCP хранит базу данных выданных к
использованию адресов в виде журнала. На странице
&man.dhclient.leases.5; дается гораздо более подробное
описание.Дополнительная литератураПолное описание протокола DHCP дается в RFC 2131. Кроме
того, дополнительная информация есть на сервере dhcp.org.
diff --git a/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml b/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml
index db9229a6b3..086ef8a5bc 100644
--- a/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml
@@ -1,536 +1,536 @@
Основы UnixКраткий обзор
- Переписано Chris Shumway
+ Переписал Chris Shumway
cshumway@cdrom.com, 10 марта 2000.В этой главе мы попытаемcя раскрыть основные принципы и команды
операционной системы FreeBSD. Если Вы новичок, то обязательно
прочтите это главу, прежде чем задавать какие-либо вопросы.Права доступаFreeBSD исторически развивалась из BSD UNIX, и основывается на
некоторых ключевых концепциях UNIX. В первую очередь это, конечно,
- тот факт, что FreeBSD -- многопользовательская операционная система.
+ тот факт, что FreeBSD – многопользовательская операционная система.
Это означает, что несколько пользователей могут работать одновременно,
решая различные задачи и совершенно не мешая друг другу. На системе
лежит ответственность за правильное разделение и управление такими
ресурсами как память, процессорное время, периферийные устройства и
прочее.Многопользовательность предполагает наличие механизма
регулирования прав доступа к любому ресурсу в системе. Существует три
типа прав доступа: на чтение, запись и исполнение. Права
сгруппированы три по три, соответственно чтение/запись/выполнение для
владельца/группы/всех остальных. Численное представление:ЗначениеПрава доступаСписок файлов каталога0Ничего не разрешено---1Нельзя читать и писать, разрешено исполнять--x2Нельзя читать и исполнять, разрешено писать-w-3Нельзя читать, разрешено писать и исполнять-wx4Разрешено читать, нельзя писать и исполнятьr--5Разрешено читать и исполнять, нельзя писатьr-x6Разрешено читать и писать, нельзя исполнятьrw-7Разрешено всеrwxЧтобы увидеть права доступа, можно воспользоваться командой
ls -l. Формат вывода этой команды
следующий:-rw-r--r--Первый символ показывает тип файла: обычный файл, директория,
символьное или блочное устройство, ссылка или другой объект.
Следующие три символа (в данном случае это rw-)
задают права доступа владельца файла. Затем идут права группы,
которой принадлежит файл (r--). Последняя тройка
(r--) определяет права для всех остальных. Минус
означает отсутствие каких-либо прав (т.е. нельзя ни читать, ни писать, ни
выполнять). В данном случае права установлены таким образом, что
владелец может читать и писать в в файл, а группа и другие может только
читать. Таким образом, численное представление прав будет
644.Права на устройства контролируются аналогичным образом. Во
FreeBSD все устройства представлены в виде файлов, которые можно
открывать, читать и писать в них. Эти специальные файлы содержаться в
директории /dev.Директории также являются специальными файлами, и к ним применимы
те же права на чтение, запись и выполнение. Правда, в данном случае
“выполнение” имеет несколько другой смысл. Когда
директория помечена как “исполнимая”, это означает, что
можно получить список файлов в ней, “зайти” в нее.На самом деле, про права доступа можно рассказать еще много
интересного, например, про setuid-бит на выполняемые файлы и так
называемый sticky-бит на директории. За дополнительными сведениями по
этому вопросу обращайтесь к страницам системного справочника man
(&man.chmod.1;).Структура каталоговТак как файловая система FreeBSD используется при выполнении
многих важных системных операций, иерархическая структура очень важна.
Структура каталогов достаточно полно отражена в &man.hier.7; странице
системного справочника man, и поэтому нет нужды приводить ее
здесь.Самым важным из всех каталогов является, несомненно, корневой
каталог, обозначаемым символом /. Корневой каталог
- монтируется самым первым на этапе загрузки, и содержит все
+ монтируется самым первым на этапе загрузки и содержит все
необходимое, чтобы поднять систему и примонтировать остальные файловые
системы.Точкой монтирования называется директория, которая будет
соответствовать корню примонтированной файловой системой. Среди
- стандартных точки монтирования -- /usr,
+ стандартных точки монтирования – /usr,
/var, /mnt и
/cdrom. Эти директории обычно перечислены в
файле /etc/fstab, в котором указаны файловые
системы и их точки монтирования. Большинство файловых систем,
описанных в /etc/fstab монтируются автоматически
из скрипта &man.rc.8;, если только они не перечислены с опцией
. Обратитесь к странице системного справочника
&man.fstab.5; за дополнительной информацией о файле
/etc/fstab и различных опциях
монтирования.Интерпретатор командПри работе с FreeBSD, в большинстве случаях для выполнения
повседневных задач используется командный интерфейс (так называемый
“шелл”), который принимает команды, которые ему подаются,
и выполняет их. Многие командные интерпретаторы имеют встроенные
средства выполнения наиболее часто используемых команд, например,
операции над файлами и каталогами, редактирование командной строки,
командные макросы и переменные окружения. Вместе с FreeBSD
поставляется несколько командных интерпретаторов, например, sh, или
- Bourne Shell, и csh, иначе C-shell. Многие другие, намного более
- мощные, например, tcsh или bash, доступны в коллекции портов.
+ Bourne Shell, и csh, иначе C-shell. Многие другие, более мощные,
+ например, tcsh или bash, доступны в коллекции портов.
- Какой из командных интерпретаторов использовать? Это дело вкуса.
+ Какой из командных интерпретаторов использовать? Это дело вкуса.
Если Вы программируете на C, то Вам, возможно, понравится tcsh, а если
- Вы работали с Linux, то Вам скорее понравится bash. Каждый из
- названных интерпретаторов имеет свои особенные свойства, которые
- отличат его от других и, возможно, повлияют на Ваши
- предпочтения.
+ Вы работали с Linux, то Вас скорее устроит bash, нежели что-либо
+ другое. Каждый из названных интерпретаторов имеет свои особенные
+ свойства, которые отличат его от других и, возможно, повлияют на Ваш
+ выбор.Одна из наиболее часто используемых функций командного
- интерпретатора -- дополнение частичного имени файла до полного. Вы
+ интерпретатора – дополнение частичного имени файла до полного. Вы
можете набрать только первые несколько символов имени файла, нажать
клавишу табуляции (TAB), и командный интерпретатор автоматически
Например, у нас есть два фала, названные foobar и
foo.bar. Допустим, мы хотим удалить файл
foo.bar. Для этого, наберем на клавиатуре
rm fo[TAB].[TAB].Вы увидите следующее: rm foo[BEEP].bar.
- Здесь [BEEP] -- это так называемый консольный звонок,
+ Здесь [BEEP] – это так называемый консольный звонок,
сигнализирующий о том, что интерпретатор не в состоянии закончить имя
файла, так как по введенным Вами символам невозможно однозначно
идентифицировать файл. Например, имена файлов
foobar и foo.bar оба
начинаются с fo, но после нажатия TAB можно
однозначно дополнить только до foo. Если же теперь
ввести точку (.) и вновь нажать TAB, интерпретатор
достроит имя файла целиком.При работе с любым командным интерпретатором, Вы столкнетесь с
переменными окружения. Под переменной окружения понимается некоторая
строка символов, идентифицируемая некоторым именем. Значение
переменных окружения может быть прочитано любо программой, запущенной
из командного интерпретатора, и часто содержит конфигурационные
настройки для многих приложений и утилит. Ниже приведены некоторые
наиболее часто встречающиеся переменные окружения с объяснением их
значения:ПеременнаяОписаниеUSERИмя текущего пользователя.PATHКаталоги, разделенные двоеточием, в которых производить
поиск исполняемых файлов.DISPLAYСетевое имя виртуального дисплея X11, если доступен для
подключения.SHELLТекущий командный интерпретатор.TERMНазвание (тип) терминала. Используется, чтобы узнать
возможности терминала.TERMCAPСписок escape-последовательностей для управления
различными функциями терминала.OSTYPEНазвание (тип) операционной системы. Например,
FreeBSD.MACHTYPEАрхитектура машины (процессора).EDITORПредпочитаемый пользователем текстовый редактор.PAGERПредпочитаемая пользователем утилита просмотра
файлов.MANPATHКаталоги, разделенные двоеточием, в которых производить
поиск файлов системного справочника.В зависимости от используемого командного интерпретатора, для
просмотра и установки значений переменных окружения служат различные
команды. Например, в интерпретаторах csh и tcsh это
setenv. В sh и bash это set и
export. В частности, чтобы установить или изменить
значение переменной EDITOR (в csh или tcsh) равное
/usr/local/bin/emacs, выполните команду:setenv EDITOR /usr/local/bin/emacsЕсли Вы используете bash:export EDITOR="/usr/local/bin/emacs"Чтобы получить значение переменной, например, в командной строке,
поместите символ доллара ($) перед именем
переменной. Например, команда echo $TERM выведет
значение переменной $TERM.Командный интерпретатор воспринимает некоторые символы, называемые
метасимволами, в качестве управляющих, несущих специальные функции.
- Одни из наиболее часто используемых -- символ *,
+ Одни из наиболее часто используемых – символ *,
который заменяет любое количество символов в имени файла, и
?, заменяющий один символ. Эти метасимволы
используются для поиска файлов по маске, например, команда
echo * выполняет практически тоже самое, что и
команда ls, так как под маску *
попадают все файлы из текущего каталога (на самом деле, это всегда так
и зависит от командного интерпретатора, например, в bash под маску
* не попадут файлы, начинающиеся с точки
- . -- скрытые файлы).
+ . – скрытые файлы).В некоторых ситуациях требуется, чтобы интерпретатор воспринимал
метасимволы как обычные, не несущие специальной смысловой нагрузки.
Этого можно достичь, поставив перед символом обратную косую черту
(\). Например, команда echo
$TERM выведет тип Вашего терминала, в то же время команда
echo \$TERM выведет именно слово
$TERM, а не значение переменной
$TERM.Как изменить командый интерпретатор по умолчаниюСамым простым, пожалуй, будет воспользоваться командой
chsh. Если переменная EDITOR
определена, то будет загружен текстовый редактор
$EDITOR, иначе vi. Вам нужно будет изменить значение
поля “Shell:” и выйти из редактора с сохранением
результатов.Можно также воспользоваться опцией команды
chsh. Например:&prompt.user; chsh -s /usr/local/bin/bashПомните, чтобы использовать некоторую программу в качестве
командного интерпретатора, она должна быть
обязательно упомянута в файле
/etc/shells. Обычно, при установке
интерпретаторов из дерева портов, это делается автоматически.
Если же это не так, Вам нужно будет самим добавить соответствующую
строчку в этот файл.Например, допустим, что Вы установили bash
вручную, без использования соответствующего порта, и поместили его в
каталог /usr/local/bin. В таком случае,
можно набрать:&prompt.root; echo "/usr/local/bin/bash" >> /etc/shellsТеперь можно смело использовать команду
chsh.Текстовые редакторыМногие конфигурационные файлы во FreeBSD имеют текстовый формат,
и, соответственно, для их редактирования Вам нужно будет освоиться с
каким-либо текстовым редактором. Вместе с FreeBSD поставляется лишь
некоторые из них; в коллекции портов можно найти многие другие.Самым простым в изучении и использовании, по-видимому, можно
- назвать ee, что расшифровывается
- “easy editor”, “простой редактор”. Чтобы
+ назвать ee, что расшифровывается как
+ “easy editor”, т.е. “простой редактор”. Чтобы
начать редактировать какой-либо файл, наберите в командной строке
ee filename, где filename имя
редактируемого файла. Например, для редактирования файла
/etc/rc.conf, наберите ee
/etc/rc.conf. В верхней части экрана Вы увидите список
основных команд редактора. символ каретки (^)
означает клавишу Ctrl, таким образом, ^e означает нажатие клавиши Ctrl
и затем e. Чтобы выйти из редактора, нажмите
клавишу Esc, затем Enter. Если остались какие-либо несохраненные
данные, Вам потребуется подтвердить выход, либо сохранив результат
работы, либо нет.FreeBSD также поставляется с мощным текстовым редактором
vi, как часть системы, и редакторами
emacs и vim,
которые можно найти в коллекции портов. Эти редакторы сложнее
изучить, но их возможности порой превосходят всякие ожидания! Если в
будущем Вам потребуется часто редактировать большие объемы текстов, Вы
убедитесь, что время, потраченное на изучение этих редакторов,
окупится с лихвой.За дополнительной информацией...Системный справочник (man)Пожалуй, самым полным руководством по FreeBSD является
системный справочник (man). Практически каждое приложение или
утилита имеют соответствующую страницу (часто не одну), описывающую
тот или иной аспект работы программы, всевозможные опции и
настройки. Для просмотра этих страниц существует команда
man:&prompt.user; man command
- Здесьcommand -- это команда, про которую Вы
+ Здесьcommand – это команда, про которую Вы
хотите получить информацию. Например, для команды
ls наберите:&prompt.user; man lsСодержимое системного справочника для удобства разделено на
несколько секций:Пользовательские команды.Системные вызовы и коды ошибок.Функции стандартных библиотек.Драйверы устройств.Форматы файлов.Развлечения и игры.Дополнительная информация.Команды системного администрирования.Для разработчиков ядра.В некоторых случаях (не так уж редко), страницы, относящиеся к
одной и той же команде, находятся в различных секциях справочника.
Например, есть команда cdmod и системный вызов
chmod(). В этом случае, необходимо явно указать
секцию, в которой искать соответствующую страницу:&prompt.user; man 1 chmodЭта команда выведет справку об утилите chmod.
По традиции, конкретная секция справочника указывается в скобках
после команды, например, &man.chmod.1; относится к утилите
- chmod, а &man.chmod.2; -- к соответствующему
+ chmod, а &man.chmod.2; – к соответствующему
системному вызову.Часто бывает так, что Вы не знаете название команды, но имеете
представление о том, что она должна делать. В этом случае можно
попытаться найти нужную команду по ключевым словам, встречающимся в
ее описании, используя опцию программы
man:&prompt.user; man -k mailВы получите список команд, имеющих слово “mail” в
своих описаниях. Это эквивалентно использованию команды
apropos.Или например, Вы видите список файлов в каталоге
/usr/bin, при этом не имея ни малейшего
представления о том, какие функции выполняет каждый их них? Просто
наберите &prompt.user; cd /usr/bin; man -f * или
&prompt.user; cd /usr/bin; whatis *, что
фактически одно и то же.GNU Info FilesFreeBSD поставляется с многочисленными приложениями и утилитами от
Фонда Свободного Программного Обеспечения, Free Software Foundation
(FSF). В дополнение к этим программам посталяется обширная
гипертекстовая документация в виде так называемых
info файлов, которые могут быть просмотрены с
помощью команды info, или, в качестве
альтернативы, если Вы имеете установленый
emacs, в соответствующем (info) режиме
этого редактора.Чтобы воспользоваться командой &man.info.1;, просто наберите в
командной строке:&prompt.user; infoЧтобы вызвать на экран краткое введение, наберите
h. Для ознакомления с возможными командами,
наберите ?.
diff --git a/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml b/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml
index 907fedae84..eb919ac9de 100644
--- a/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml
@@ -1,481 +1,481 @@
БиблиографияТак как страницы Справочника FreeBSD предоставляют лишь описание
определенных отдельных кусочков операционной системы FreeBSD, они
не очень удобны для иллюстрации, как обьеденить вместе эти кусочки
для того, что настроить ОС и сделать ее работу более гладкой.
Для этого незаменимы хорошая книга и хорошее руководство
пользователя.
- Книги и Журналы Специализирующиеся на FreeBSD
+ Книги и журналы, специализирующиеся на FreeBSD
- Международные Книги и
- Журналы:
+ Международные книги и
+ журналы:Using
FreeBSD (на Китайском).FreeBSD for PC 98'ers (на японском), выпущено SHUWA System
Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.FreeBSD (на японском), выпущено CUTT. ISBN 4-906391-22-2
C3055 P2400E.Complete Introduction to FreeBSD (на японском), выпущено Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.Personal UNIX Starter Kit FreeBSD (на японском), выпущено ASCII. ISBN 4-7561-1733-3 P3000E.FreeBSD Handbook (японский перевод), выпущено ASCII. ISBN 4-7561-1580-2
P3800E.FreeBSD mit Methode (на немецком), выпущено Computer und
Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.FreeBSD Install and Utilization Manual (на японском), выпущено Mainichi Communications Inc..
- Книги и Журналы на английском языке:
+ Книги и журналы на английском языке:
The Complete FreeBSD, выпущено Walnut Creek CDROM.
- Руководства Пользователей
+ Руководства для пользователейComputer Systems Research Group, UC Berkeley. 4.4BSD
User's Reference Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-075-9Computer Systems Research Group, UC Berkeley. 4.4BSD
User's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-076-7UNIX in a Nutshell. O'Reilly &
Associates, Inc., 1990. ISBN 093717520XMui, Linda. What You Need To Know When You Can't Find
Your UNIX System Administrator. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-104-6Ohio State
University has written a UNIX
Introductory Course which is available online in HTML and
postscript format.Jpman Project, Japan
FreeBSD Users Group. FreeBSD User's
Reference Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0088-4 P3800E.
- Руководства Администраторов
+ Руководства для администраторовAlbitz, Paul and Liu, Cricket. DNS and
BIND, 2nd Ed. O'Reilly & Associates, Inc., 1997.
ISBN 1-56592-236-0Computer Systems Research Group, UC Berkeley. 4.4BSD
System Manager's Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-080-5Costales, Brian, et al. Sendmail, 2nd Ed.
O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0Frisch, Æleen. Essential System
Administration, 2nd Ed. O'Reilly & Associates,
Inc., 1995. ISBN 1-56592-127-5Hunt, Craig. TCP/IP Network
Administration. O'Reilly & Associates, Inc., 1992.
ISBN 0-937175-82-XNemeth, Evi. UNIX System Administration
Handbook. 2nd Ed. Prentice Hall, 1995. ISBN
0131510517Stern, Hal Managing NFS and NIS O'Reilly
& Associates, Inc., 1991. ISBN 0-937175-75-7Jpman Project, Japan
FreeBSD Users Group. FreeBSD System
Administrator's Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0109-0 P3300E.
- Programmers' Guides
+ Руководства для программистовAsente, Paul. X Window System Toolkit.
Digital Press. ISBN 1-55558-051-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Reference Manual. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-078-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-079-1Harbison, Samuel P. and Steele, Guy L. Jr. C: A
Reference Manual. 4rd ed. Prentice Hall, 1995.
ISBN 0-13-326224-3Kernighan, Brian and Dennis M. Ritchie. The C
Programming Language.. PTR Prentice Hall, 1988.
ISBN 0-13-110362-9Lehey, Greg. Porting UNIX Software.
O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7Plauger, P. J. The Standard C Library.
Prentice Hall, 1992. ISBN 0-13-131509-9Stevens, W. Richard. Advanced Programming in the UNIX
Environment. Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7Stevens, W. Richard. UNIX Network
Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN
0-13-490012-XWells, Bill. “Writing Serial Drivers for UNIX”.
Dr. Dobb's Journal. 19(15), December 1994.
pp68-71, 97-99.
- Внутренности Операционной Системы
+ Внутренности операционной системыAndleigh, Prabhat K. UNIX System
Architecture. Prentice-Hall, Inc., 1990. ISBN
0-13-949843-5Jolitz, William. “Porting UNIX to the 386”.
Dr. Dobb's Journal. January 1991-July
1992.Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and
John Quarterman The Design and Implementation of the
4.3BSD UNIX Operating System. Reading, Mass. :
Addison-Wesley, 1989. ISBN 0-201-06196-1Leffler, Samuel J., Marshall Kirk McKusick, The Design
and Implementation of the 4.3BSD UNIX Operating System: Answer
Book. Reading, Mass. : Addison-Wesley, 1991. ISBN
0-201-54629-9McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
John Quarterman. The Design and Implementation of the
4.4BSD Operating System. Reading, Mass. :
Addison-Wesley, 1996. ISBN 0-201-54979-4Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
The Protocols. Reading, Mass. : Addison-Wesley,
1996. ISBN 0-201-63346-9Schimmel, Curt. Unix Systems for Modern
Architectures. Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3Vahalia, Uresh. UNIX Internals -- The New
Frontiers. Prentice Hall, 1996. ISBN
0-13-101908-2Wright, Gary R. and W. Richard Stevens. TCP/IP
Illustrated, Volume 2: The Implementation. Reading,
Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-XБезопасностьCheswick, William R. and Steven M. Bellovin. Firewalls
and Internet Security: Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-63357-4Garfinkel, Simson and Gene Spafford. Practical UNIX
Security. 2nd Ed. O'Reilly & Associates, Inc.,
1996. ISBN 1-56592-148-8Garfinkel, Simson. PGP Pretty Good
Privacy O'Reilly & Associates, Inc., 1995. ISBN
1-56592-098-8ОборудованиеAnderson, Don and Tom Shanley. Pentium Processor
System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5Ferraro, Richard F. Programmer's Guide to the EGA,
VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7Intel Corporation publishes documentation on their CPUs,
chipsets and standards on their developer web site,
usually as PDF files.Shanley, Tom. 80486 System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40994-1Shanley, Tom. ISA System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40996-8Shanley, Tom. PCI System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40993-3Van Gilluwe, Frank. The Undocumented PC.
Reading, Mass: Addison-Wesley Pub. Co., 1994. ISBN
0-201-62277-7История UNIXLion, John Lion's Commentary on UNIX, 6th Ed. With
Source Code. ITP Media Group, 1996. ISBN
1573980137Raymond, Eric S. The New Hacker's Dictionary, 3rd
edition. MIT Press, 1996. ISBN
0-262-68092-0. Also known as the Jargon
FileSalus, Peter H. A quarter century of UNIX.
Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5Simon Garfinkel, Daniel Weise, Steven Strassmann. The
UNIX-HATERS Handbook. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1Don Libes, Sandy Ressler Life with UNIX
— special edition. Prentice-Hall, Inc., 1989. ISBN
0-13-536657-7The BSD family tree. 1997. ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree or local on a FreeBSD-current machine.The BSD Release Announcements collection.
1997. http://www.de.FreeBSD.org/de/ftp/releases/Networked Computer Science Technical Reports
Library. http://www.ncstrl.org/Old BSD releases from the Computer Systems Research
group (CSRG). http://www.mckusick.com/csrg/:
The 4CD set covers all BSD versions from 1BSD to 4.4BSD and
4.4BSD-Lite2 (but not 2.11BSD, unfortunately). As well, the last
disk holds the final sources plus the SCCS files.
- Magazines and Journals
+ Прочие изданияThe C/C++ Users Journal. R&D
Publications Inc. ISSN 1075-2838Sys Admin — The Journal for UNIX System
Administrators Miller Freeman, Inc., ISSN
1061-2688
diff --git a/ru_RU.KOI8-R/books/handbook/book.sgml b/ru_RU.KOI8-R/books/handbook/book.sgml
index 7500c65980..acdb152998 100644
--- a/ru_RU.KOI8-R/books/handbook/book.sgml
+++ b/ru_RU.KOI8-R/books/handbook/book.sgml
@@ -1,161 +1,161 @@
%man;
%bookinfo;
%chapters;
%authors;
%ruauthors;
%mailing-lists;
%newsgroups;
]>
Руководство FreeBSDПроект Русской Документации FreeBSDru-freebsd-doc@FreeBSD.org.uaФевраль 1999199519961997199819992000The FreeBSD Documentation Project2000Проект Русской Документации FreeBSD
&bookinfo.legalnotice;
Добро пожаловать в FreeBSD! Это руководство охватывает процесс
инсталляции и ежедневного использования FreeBSD Release
&rel.current;. Это руководство в процессе
разработки и являет собой результат работы множества
людей. Многие из разделов до сих пор не существуют, а некоторые из
существующих требуют обновления. Если Вы заинтересованы в помощи
этому проекту, пошлите письмо в &a.ru.doc;. Обновленная версия этого
документа постоянно доступна с
Основного Web сервера FreeBSD. Он также может быть загружен из
Internet в одном из наиболее распространенных форматов с FTP сервера Проекта
FreeBSD или с одного из многочисленных зеркал. Вы также можете захотеть
воспользоваться возможностью Поиска в Руководстве
FreeBSD.В Начале
&chap.introduction;
&chap.install;
&chap.basics;
&chap.ports;
Системное Администрирование
&chap.boot;
&chap.security;
+
+ &chap.disks;
&chap.backups;
&chap.x11;
Сетевые Коммуникации
&chap.advanced-networking;
-
Углубленные темы
&chap.kernelopts;
&chap.kerneldebug;
--->
&chap.linuxemu;
Приложения
&chap.mirrors;
&chap.bibliography;
&chap.staff;
&chap.pgpkeys;
diff --git a/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml b/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml
index d1258684fa..02060178fa 100644
--- a/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml
@@ -1,563 +1,563 @@
Процесс загрузки FreeBSDОписаниеВо FreeBSD по умолчанию используется трехэтапный процесс загрузки,
в котором задействованы три программы, последовательно вызывающие друг
друга (два загрузочных блока и загрузчик). Каждая их этих трех программ
строится на функциях предыдущей программы и становится все более
сложной.
- Затем стартует ядро, которая выполняет обнаружение устройств и
- их инициализацию. После завершения процесса своей загрузки ядро
+ Затем стартует ядро, которое детектирует устройства и выполняет
+ их инициализацию. После завершения процесса своей загрузки, ядро
передает управление пользовательскому процессу с именем &man.init.8;,
который выполняет проверку дисков на возможность использования. Затем
&man.init.8; запускает пользовательский процесс настройки ресурсов,
выполняющий монтирование файловых систем, настройку сетевых адаптеров
для работы в сети и вообще запуск всех процессов, обычно выполняемых
в системе FreeBSD при загрузке.
- Загрузочные блоки: Этапы начальной загрузки 1 и 2
+ Загрузочные блоки: первый и второй этапы начальной загрузкиНачальная загрузка представляет собой
процесс, в течение которого компьютер распознает и инициализирует свои
устройства и определяет, какие программы должны быть запущены.В этом процессе задействованы специальные микросхемы Постоянных
Запоминающих Устройств (ПЗУ), которые определяют, что делать и в свою
очередь, передают управление другим микросхемам, которые выполняют
проверку памяти и целостности системы, конфигурируют устройства и
предоставляют другим программам способ выяснить подробную информацию о
настройках.В случае обычных персональных компьютеров в этом процессе участвует
BIOS (который ответственен на начальную загрузку) и CMOS (которая
хранит конфигурацию). BIOS и CMOS умеют работать с дисками и также
знают, где на диске находится программа, которая знает, как загрузить
операционную систему.Эта глава не описывает первую часть процесса начальной загрузки.
Вместо этого она посвящена тому, что происходит после передачи
управления программе, находящейся на диске.Загрузочные блоки (как правило) отвечают за поиск загрузчика, его
запуск и поэтому должны уметь находить программу в файловой системе,
уметь ее запустить, а также должны иметь возможность выполнять
некоторую настройку своей работы.boot0На самом деле это предшествующий всему загрузочный блок по имени
boot0, который находится в Главной Загрузочной
Записи (Master Boot Record), особой части диска, которая
используется при начальной загрузке системы для определения порядка
загрузки, и содержит список возможных слайсов для загрузки.boot0 очень прост, так как программа в MBR может
иметь размер, не превышающий 512 байт.Эта программа выводит нечто вроде следующего:Образец экрана boot0
F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2
boot1boot1 находится в загрузочном секторе загрузочного слайса,
то есть там, где boot0 или
любая другая программа из MBR ожидает найти
программу, которую следует запустить для продолжения процесса
загрузки.boot1 очень прост, так как он тоже может иметь размер, не
превышающий 512 байт, и знает достаточно о метке
диска FreeBSD, хранящей информацию о слайсе, для того,
чтобы найти и запустить boot2.boot2boot2 устроен несколько более сложно, и умеет работать с файловой
системой FreeBSD в объеме, достаточном для нахождения в ней файлов и
может предоставлять простой интерфейс для выбора и передачи
управления ядру или загрузчику.Так как загрузчик устроен
гораздо более сложно, и дает удобный и простой способ настройки
процесса загрузки, boot2 обычно запускает его, однако раньше его
задачей был запуск непосредственно самого ядра.Образец экрана boot2
>> FreeBSD/i386 BOOT
Default: 0:wd(0,a)/kernel
boot:
- Загрузчик: Третий этап процесса начальной загрузки
+ Загрузчик: третий этап процесса начальной загрузкиПередача управления загрузчику является последним, третьим этапом в
процессе начальной загрузки, а сам загрузчик находится в файловой
системе, обычно как /boot/loader.Когда как файлы /boot/boot0,
/boot/boot1 и
/boot/boot2 здесь присутствуют, они не являются
реальными копиями MBR, загрузочного сектора или
метки диска соответственно.Загрузчик являет собой удобный в использовании инструмент для
настройки при помощи простого набора команд, управляемого более мощным
интерпретатором с более сложным набором команд.Процесс работы загрузчикаВо время инициализации загрузчик пытается произвести поиск
консоли, дисков и определить, с какого диска он был запущен.
Соответствующим образом он задает значения переменных и после этого
запускает интерпретатор, а простые команды передаются уже ему.Затем загрузчик читает файл
/boot/loader.rc, который по умолчанию использует
файл /boot/defaults/loader.conf, устанавливающий
подходящие значения по умолчанию для переменных и читает файл
/boot/loader.conf для изменения в этих
переменных. Затем с этими переменными работает
loader.rc, загружающий выбранные модули и
ядро.И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу
в ожидании нажатия клавиши, и загружает ядро, если оно не было
сделано. Если ожидание было прервано, пользователю выдается
приглашение, которое воспринимает простой набор команд, в помощью
которых пользователь может изменить значения переменных, выгрузить
все модули, загрузить модули и окончательно продолжить процесс
загрузки или перезагрузить машину.Более подробное техническое описание этого процесса дается на
странице Справочника &man.loader.8;Встроенные команды загрузчикаПростой набор команд состоит из:autoboot секундыПродолжает загрузку ядра, если не будет прерван в течение
указанного в секундах промежутка времени. Он выводит счетчик,
и по умолчанию выдерживается интервал в 10 секунд.boot
-параметрыимя ядраПродолжить процесс загрузки указанного ядра, если оно было
указано, и с указанными параметрами, если они были
указаны.boot-confПовторно провести тот же самый процесс автоматической
настройки модулей на основе переменных, что был произведен при
загрузке. Это имеет смысл, если до этого вы выполнили команду
unload, изменили некоторые переменные,
например, наиболее часто меняемую kernel.help
темаВывод сообщений подсказки из файла
/boot/loader.help. Если в качестве темы
указано слово index, то выводится список
имеющихся тем.include имя файла
…Выполнить файл с указанным именем. Файл считывается и
его содержимое интерпретируется строчка за строчкой. Ошибка
приводит к немедленному прекращению выполнения команды
include.load типимя файлаЗагружает ядро, модуль ядра или файл указанного типа с
указанным именем. Все аргументы после имени файла передаются в
файл.ls маршрутВыводит список файлов по указанному маршруту или в корневом
каталоге, если маршрут не был указан. Если указан параметр
, будут выводиться и размеры файлов.lsdev Выводится список всех устройств, с которых могут быть
загружены модули. Если указан параметр ,
выводится дополнительная информация.lsmod Выводит список загруженных модулей. Если указан параметр
, то выводится дополнительная
информация.more имя файлаВывод указанного файла с паузой при выводе каждой строки
LINES.rebootВыполнить немедленную перезагрузку машины.set переменнаяset
переменная=значениеЗадает значения переменных окружения загрузчика.unloadУдаление из памяти всех загруженных модулей.Примеры использования загрузчикаВот несколько практического использования загрузчика.Чтобы просто загрузить ваше ядро обычным образом, но в
однопользовательском режиме:boot -sДля выгрузки обычных ядра и модулей, а потом просто загрузить
ваше старое (или другое) ядро:unloadload kernel.oldВы можете использовать kernel.GENERIC
для обозначения стандартного ядра, поставляемого на установочном
диске, или kernel.old для обращения к ранее
установленному ядру (после того, как, например, вы обновили или
отконфигурировали новое ядро).Для загрузки ваших обычных модулей с другим ядром
используйте такие команды:unloadset kernel="kernel.old"boot-confДля загрузки скрипта конфигурации ядра (автоматизированный
скрипт, который выполняет то, что вы обычно делаете в
конфигураторе ядра во время загрузки):load -t userconfig_script
/boot/kernel.conf
- Взаимодействие я ядром во время загрузки
+ Взаимодействие с ядром во время загрузкиКак только ядро окажется загруженным при помощи загрузчика (обычный способ) или boot2 (минуя загрузчик), оно проверяет
флаги загрузки, если они есть, и действует соответствующим
образом.Флаги загрузки ядраВот наиболее часто используемые флаги загрузки:во время инициализации ядра запрашивать устройство для
его монтирования в качестве корневой файловой системы.загрузка с компакт-диска.запустить UserConfig для конфигурации ядра во время
загрузкипосле загрузки перейти в однопользовательский режимво время запуска ядра выводить более подробную
информациюЕсть и другие флаги загрузки, обратитесь к странице
справочника по &man.boot.8; для выяснения подробной информации по
ним.
- Init: Инициализация управления процессами
+ Init: инициализация управления процессамиПосле того, как ядро завершит загрузку, оно передает управление
пользовательскому процессу init, который расположен
в файле /sbin/init или в файле, маршрут к которому
указан в переменной init_pathзагрузчика.Процесс автоматической перезагрузкиПроцесс автоматической перезагрузки проверяет целостность
имеющихся файловых систем. Если это не так, и утилита
fsck не может исправить положение, то
init переводит систему в однопользовательский режим для того,
чтобы системный администратор сам разобрался с возникающими
проблемами.Однопользовательский режимВ этот режим можно перейти во время процесса автоматической
перезагрузки, при ручной загрузке с флагом
или заданием переменной boot_single в
загрузчике.Этот режим может быть также вызван запуском программы
shutdown без параметров перезагрузки
() или останова () из
многопользовательского
режима.Если режим доступа к системной консоли console
установлен в файле /etc/ttys в
insecure, то система выведет запрос на ввод пароля
пользователя root перед входом в однопользовательский режим.Незащищенная консоль в /etc/ttys
# name getty type status comments
#
# This entry needed for asking password when init goes to single-user mode
# If you want to be asked for password, change "secure" to "insecure" here
console none unknown off insecure
Обозначение консоли как insecure означает,
что вы считаете физический доступ к консоли незащищенным, и хотите,
чтобы только тот, кто знает пароль пользователя root, мог
воспользоваться однопользовательским режимом, но это не значит, что
вы хотите работать с консолью небезопасным способом. Таким
образом, если вы хотите добиться защищенности, указывайте
insecure, а не secure.Многопользовательский режимЕсли init определит, что ваши файловые системы
находятся в полном порядке, или после того, как пользователь выйдет
из однопользовательского
режима, система перейдет в многопользовательский режим, работа
в котором начинается с настройки ресурсов системы.Настройка ресурсов (rc)Система настройки ресурсов считывает настройки, применяемые по
умолчанию, из файла /etc/defaults/rc.conf, а
настройки, специфичные для конкретной системы, из
/etc/rc.conf, после чего осуществляется
монтирование файловых систем, перечисленных в файле
/etc/fstab, запуск сетевых служб, различных
системных даемонов и, наконец, выполнение скриптов запуска
дополнительно установленных пакаджей.Страница справочника по &man.rc.8; является хорошим источником
информации о системе настройки ресурсов. так же, как и
самостоятельное изучение скриптов.Процесс остановки системыВо время контролируемого процесса остановки системы через утилиту
shutdown, программа init будет
пытаться запустить скрипт /etc/rc.shutdown, после
чего будет посылать всем процессам сигнал прекращения работы, и затем
сигнал принудительного прекращения работы тем процессам, которые не
завершили работу вовремя.
diff --git a/ru_RU.KOI8-R/books/handbook/disks/chapter.sgml b/ru_RU.KOI8-R/books/handbook/disks/chapter.sgml
new file mode 100644
index 0000000000..43fea936f0
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/disks/chapter.sgml
@@ -0,0 +1,967 @@
+
+
+
+ Диски
+
+
+ Краткий обзор
+
+ Эта глава посвящена использованию дисков, как физических, так и
+ построенных на основе микросхем памяти и сетевых, в системе
+ FreeBSD.
+
+
+
+ Нумерация дисков в BIOS
+
+ Вам необходимо изучить этот вопрос перед тем, как устанавливать и
+ настраивать FreeBSD на вашей машине, особенно если у вас имеется
+ несколько дисков.
+
+ В случае PC под управлением DOS или других зависимых от BIOS
+ операционных систем (WINxxx), BIOS может скрывать обычный порядок
+ следования дисков, и операционная система не замечает этого. Это
+ позволяет пользователю загружаться с диска, отличного от так
+ называемого основного первичного. Это особенно удобно
+ тем пользователям, которые находят, что самый простым и дешевым
+ способом создания резервных копий является покупка второго винчестера,
+ идентичного первому, и выполнение регулярных копий первого диска на
+ второй при помощи программ Ghost или XCOPY. В таком случае, если
+ первый диск ломается, подвергается атаке вируса или портится из-за
+ дефекта в операционной системе, он может быть легко восстановлен просто
+ указанием BIOS логически поменять диски местами. Это похоже на
+ переключение кабелей на винчестерах, но без разборки корпуса.
+
+ Более дорогие системы с контроллерами SCSI часто включают
+ расширения BIOS, которые точно также позволяют изменить порядок
+ следования до семи дисков SCSI.
+
+ Пользователь, который привык пользоваться этой возможностью, может
+ быть удивлен результатом попытки ею воспользоваться с FreeBSD.
+ FreeBSD не использует BIOS и не знает о логическом
+ переназначении дисков BIOS. Это может привести к очень
+ запутанной ситуации, особенно когда диски идентичны по физическим
+ параметрам и к тому же являлись клонами друг друга.
+
+ При работе с FreeBSD, всегда настраивайте BIOS на естественный
+ порядок нумерации дисков до установки FreeBSD, и оставляйте эту
+ настройку. Если вам нужно поменять диски местами, делайте это, но
+ самым сложным способом, открывая корпус машины и переключая кабели и
+ перемычки.
+
+
+ Пример из Удивительных приключений Билла и Фреда:
+
+ Билл пожертвовал стареньким Wintel-компьютером под машину FreeBSD
+ для Фреда. Билл задал единственный винчестер SCSI как устройство
+ SCSI номер ноль и установил на него FreeBSD.
+
+ Фред начал работать с системой, однако после нескольких дней
+ работы заметил, что старый диск SCSI сообщает о множестве программных
+ ошибок, и сообщил об этом Биллу.
+
+ Спустя еще несколько дней Билл, решив выделить некоторое время на
+ решение этой проблемы, взял идентичный диск SCSI со "склада"
+ винчестеров в кладовке. Первичное сканирование поверхности
+ показало нормальное функционирование, так что Билл устанавливает этот
+ диск как устройство SCSI номер четыре, и выполняет копирование образа
+ с диска номер ноль на диск с номером четыре. Теперь, после того, как
+ новый диск был установлен и начал нормально работать, Билл решает,
+ что хорошо бы начать использовать его, поэтому он воспользовался
+ возможность в SCSI BIOS изменить порядок следования дисков для
+ загрузки системы с устройства SCSI номер четыре. FreeBSD загружается
+ и работает прекрасно.
+
+ Фред продолжает свою работу еще несколько дней, и вскоре Билл и
+ Фред решают, что пришло время для нового испытания -- обновления до
+ новой версии FreeBSD. Билл убрал диск SCSI номер ноль, потому что
+ он был несколько поврежден, и заменил его другим идентичным диском со
+ "склада". Затем Билл установил новую версию FreeBSD на новый диск
+ SCSI с номером ноль при помощи волшебных дискет Фреда с поддержкой
+ FTP через Интернет. Установка прошла нормально.
+
+ Фред продолжает использовать новую версию FreeBSD несколько дней и
+ решает, что она достаточно хороша для использования в инженерном
+ отделе... самое время скопировать всю его работу со старой версии.
+ Так что Фред монтирует устройство SCSI номер четыре (самая последняя
+ копия старой версии FreeBSD). Фред с ужасом обнаруживает, что
+ никаких следов его работы на диске SCSI номер четыре нет.
+
+ Куда же исчезли данные?
+
+ Когда Билл делал копию образа исходного диска SCSI номер ноль на
+ диск SCSI номер четыре, диск номер четыре стал "новым клоном". Когда
+ Билл изменил порядок следования дисков в SCSI BIOS, чтобы загружаться
+ с диска SCSI номер четыре, он обманул этим только самого себя.
+ FreeBSD продолжала работать с диска SCSI номер ноль. Выполнение
+ подобных изменений в BIOS приведет к тому, что все или некоторые
+ компоненты кода начальной загрузки будут браться с указанного диска
+ BIOS, но когда очередь доходит до драйверов ядра FreeBSD, нумерация
+ дисков BIOS игнорируется, и FreeBSD возвращается обратно к обычной
+ схеме нумерации дисков. В приведенном примере система продолжала
+ работать с начальным диском SCSI номер ноль, и все данные Фреда
+ оставались здесь, а не на устройстве SCSI номер четыре. Тот факт,
+ что система запускалась с диска SCSI номер четыре, был просто обманом
+ человеческих ожиданий.
+
+ Мы хотим отметить, что при этом феномене не был уничтожен или
+ утерян ни один байт данных. Старый диск SCSI номер ноль был забран
+ из мусорки и вся работа Фреда была восстановлена (и теперь Билл
+ знает, что он умеет считать до нуля).
+
+ Хотя в этом примере использовались диски SCSI, общая идея
+ применима и для устройств IDE.
+
+
+
+
+ Именование дисков
+
+ Физически диски существуют в двух разновидностях,
+ IDE или SCSI; однако есть диски,
+ работа с которыми выполняется RAID-контроллерами, представляющие собой
+ микросхемы памяти и так далее. Так как такие устройства ведут себя
+ несколько иначе, они имеют собственные драйверы и им соответствуют
+ другие устройства.
+
+
+ Соглашения по наименованию физических дисков
+
+
+
+
+ Тип устройства
+ Имя, соответствующее устройству
+
+
+
+
+
+ Диски IDE
+ ad в 4.0-RELEASE,
+ wd до 4.0-RELEASE.
+
+
+
+ Приводы IDE CDROM
+ acd, начиная с 3.1-RELEASE,
+ wcd до 4.0-RELEASE.
+
+
+
+ Диски SCSI
+ da, начиная с 3.0-RELEASE,
+ sd до 3.0-RELEASE.
+
+
+
+ Приводы SCSI CDROM
+ cd
+
+
+
+ Различные нестандартные приводы CDROM
+ mcd для Mitsumi CD-ROM,
+ scd для Sony CD-ROM,
+ matcd для Matsushita/Panasonic CD-ROM
+
+
+
+
+ Дисководы
+ fd
+
+
+
+ Ленточные устройства SCSI
+ sa, начиная с 3.0-RELEASE,
+ st до 3.0-RELEASE.
+
+
+
+ Ленточные устройства IDE
+ ast, начиная с 4.0-RELEASE,
+ wst до 4.0-RELEASE.
+
+
+
+ Флэш-диски
+ fla для устройств флэш-памяти DiskOnChip,
+ начиная с 3.3-RELEASE.
+
+
+
+ Диски RAID
+ myxd для Mylex и amrd
+ для AMI MegaRAID, idad для Compaq Smart RAID,
+ начиная с 4.0-RELEASE. id от 3.2-RELEASE до
+ 4.0-RELEASE.
+
+
+
+
+
+
+ Слайсы и разделы
+
+ Физические диски обычно разбиты на слайсы,
+ кроме случаев, когда они подготовлены в режиме dangerously
+ dedicated. Номер слайса следует за именем устройства и
+ предваряется буквой s:
+ da0s1.
+
+ Слайсы, физические диски, подготовленные для режима
+ dangerously dedicated, и другие диски содержат
+ разделы, которые обозначаются буквами от
+ a до h. Буква
+ b зарезервирована для раздела подкачки, а
+ c для особого раздела, равного по размеру
+ полному слайсу или диску. Это описано в .
+
+
+
+
+ Монтирование и размонтирование файловых систем
+
+ Файловую систему лучше всего рассматривать как дерево, корень
+ которого, как обычно, находится в /.
+ /dev, /usr и другие каталоги
+ в корневом каталоге являются ветками, которые могут иметь собственные
+ ветви, такие, как /usr/local и так далее.
+
+ Есть несколько причин размещать некоторые из этих каталогов в
+ раздельных файловых системах. /var содержит
+ журналы, очереди и различные типы временных файлов, поэтому может быть
+ заполнена до отказа. Заполнение корневой файловой системы
+ нежелательно, так что отделение /var от
+ / зачастую бывает весьма полезно.
+
+ Другим общим соображением при размещении отдельных деревьев
+ каталогов в других файловых системах является их размещение на
+ отдельных физических дисках или отдельных виртуальных дисках, таких,
+ как точки монтирования сетевой файловой
+ системы или привода CDROM.
+
+
+ Файл fstab
+
+ Во время процесса загрузки файловые
+ системы, перечисленные в /etc/fstab, монтируются
+ автоматически (если при них не указан флаг
+ ).
+
+ Файл /etc/fstab состоит из строк следующего
+ формата:
+
+
+device/mount-pointfstypeoptionsdumpfreqpassno
+
+
+ device являются именем устройства (которое
+ должно существовать) вида, описанного выше в главе о соглашениях по именованию
+ дисков.
+
+ mount-point является каталогом (который должен
+ существовать), в который будет смонтирована файловая система.
+
+ fstype является типом файловой системы для
+ передачи в &man.mount.8;. По умолчанию во FreeBSD файловая система
+ имеет тип ufs.
+
+ В качестве параметров options указывается
+ для файловых систем, доступных по чтению-записи,
+ или для файловых систем, доступных только для
+ чтения, за которым следует любое количество других параметров, могущих
+ быть нужными. Часто используемым параметром является опция
+ для файловых систем, которые обычно
+ не монтируются во время загрузки. Другие параметры описаны на
+ странице справочника по &man.mount.8;.
+
+ dumpfreq определяет количество дней для
+ обязательного создания архивной копии файловой системы, а
+ passno задает номер прохода, при котором
+ файловая система была смонтирована во время процесса загрузки.
+
+
+
+ Команда mount
+
+ Команда &man.mount.8; является тем, что необходимо использовать
+ для монтирования файловых систем.
+
+ В ее самой простой форме она используется так:
+
+
+
+&prompt.root; mount devicemountpoint
+
+
+
+ Как отмечено на справочной странице по команде &man.mount.8;, она
+ имеет массу параметров, но наиболее часто используются
+ следующие:
+
+
+ Параметры команды mount
+
+
+
+
+
+ Смонтировать все файловые системы, перечисленные в файле
+ /etc/fstab, с модификациями по параметру
+ , если он задан.
+
+
+
+
+
+
+
+ Сделать все, кроме собственно монтирования файловой
+ системы.
+
+
+
+
+
+
+
+ Принудительно смонтировать файловую систему.
+
+
+
+
+
+
+
+ Смонтировать файловую систему в режиме только для
+ чтения.
+
+
+
+
+
+ fstype
+
+
+ Смонтировать указанную файловую систему как файловую
+ систему указанного типа, или смонтировать файловые системы
+ только указанного типа, если задан параметр
+ .
+
+ По умолчанию используется тип файловой системы
+ ufs.
+
+
+
+
+
+
+
+ Обновить параметры монтирования файловой системы.
+
+
+
+
+
+
+
+ Выдавать подробный журнал.
+
+
+
+
+
+
+
+ Смонтировать файловую систему в режиме доступа как для
+ чтения, так и для записи.
+
+
+
+
+ Опция принимает список разделенных запятыми
+ параметров, включая следующее:
+
+
+
+ nodev
+
+
+ Не обрабатывать специальные устройства в файловой системе.
+ Опция, полезная с точки зрения обеспечения безопасности.
+
+
+
+
+ noexec
+
+
+ Запретить выполнение бинарных файлов на этой файловой
+ системе. Опция, полезная с точки зрения обеспечения
+ безопасности.
+
+
+
+
+ nosuid
+
+
+ Не обрабатывать флаги установки выполнения файлов с
+ привилегиями их владельцев и групп в этой файловой системе.
+ Опция, полезная с точки зрения обеспечения безопасности.
+
+
+
+
+
+
+ Команда umount
+
+ Команда umount воспринимает в качестве параметра либо точку
+ монтирования, либо имя устройства, либо параметры
+ или .
+
+ Все формы воспринимают параметр для
+ принудительного размонтирования и для вывода
+ подробного журнала.
+
+ Флаги и используются для
+ размонтирования всех смонтированных файловых систем, возможно с
+ учетом типов файловых систем, перечисленных после
+ . Однако при использовании опции
+ не будет предприниматься попытка размонтировать
+ корневую файловую систему.
+
+
+
+
+ Добавление дисков
+
+ Изначальный текст предоставил &a.obrien; 26 апреля
+ 1998 года
+
+ Предположим, что мы хотим установить новый диск SCSI на машину,
+ имеющую в данный момент только один диск. Сначала выключим компьютер и
+ установим диск в компьютер согласно инструкциям к компьютеру,
+ контроллеру и от производителя диска. Из-за большого разнообразия
+ этих процедур их рассмотрение выходит за рамки этого документа..
+
+ Войдите в систему как пользователь root.
+ После того, как вы установили диск, просмотрите файл
+ /var/run/dmesg.boot, чтобы убедиться, что новый
+ диск был найден. Продолжая наш пример, только что добавленный диск
+ будет называться da1 и мы хотим смонтировать его
+ в каталог /1 (если вы добавляете диск IDE, он
+ будет называться wd1 в системах, предшествующих
+ 4.0, и ad1 в большинстве систем 4.X).
+
+ Так как FreeBSD работает на IBM-PC совместимых компьютерах, она
+ должна принимать во внимание разделы PC BIOS. В этом заключается
+ отличие от традиционных разделов BSD. Диск PC может иметь до четырех
+ записей разделов BIOS. Если диск на самом деле будет использоваться
+ исключительно под FreeBSD, вы можете использовать режим
+ dedicated. В противном случае FreeBSD будет
+ располагаться в одном из разделов PC BIOS. Во FreeBSD разделы PC BIOS
+ называются слайсами, чтобы не путать их с
+ традиционными разделами BSD. Вы также можете использовать слайсы и с
+ диском, предназначенным исключительно для FreeBSD, однако используемым
+ в компьютере, на котором имеется дополнительная операционная система.
+ Это нужно для того, чтобы не было путаницы с утилитой
+ fdisk другой операционной системы.
+
+ В случае слайсов диск будет добавлен как
+ /dev/da1s1e. Это интерпретируется следующим
+ образом: диск SCSI, устройство номер 1 (второй диск SCSI), слайс 1
+ (раздел PC BIOS 1), и раздел BSD e. В случае
+ использования в выделенном режиме диск будет добавлен просто как
+ /dev/da1e.
+
+
+ Использование утилиты sysinstall
+
+ Вы можете использовать простые меню утилиты
+ /stand/sysinstall для разбиения на разделы и
+ разметки нового диска. Войдите как пользователь
+ root или воспользуйтесь командой
+ su. Запустите команду
+ /stand/sysinstall и войдите в меню
+ Configure. Внутри FreeBSD Configuration
+ Menu, пролистайте и выберите пункт
+ Partition. После этого должен быть выдан список
+ установленных в вашей системе дисков. Если вы не увидите в списке
+ da1, то вам нужно повторно проверить физическое
+ подключение и посмотреть вывод команды dmesg в
+ файле /var/run/dmesg.boot.
+
+ Выберите da1, чтобы войти в Редактор
+ разделов FDISK. Выберите A для того,
+ чтобы использовать под FreeBSD полностью весь диск. Когда будет
+ задан вопрос о том, хотите ли вы сохранить совместимость с
+ другими возможными операционными системами в будущем,
+ ответьте YES. Запишите изменения на диск при
+ помощи команды W. А теперь выйдите из редактора
+ FDISK при помощи команды q. В этот момент вам
+ будет задан вопрос о главной загрузочной записи. Так как вы
+ добавляете диск к уже работающей системе, выберите
+ None.
+
+ После этого войдите в меню Disk Label Editor.
+ Здесь вы создадите традиционные разделы BSD. На диске может быть
+ до восьми разделов, имеющих метки a-h. Некоторые из меток разделов
+ имеют особый смысл. Раздел a используется для
+ размещения корневого раздела (/). По этой
+ причине только ваш системный диск (например, тот, с которого
+ происходит загрузка), должен иметь раздел a.
+ Раздел b используется под раздел подкачки, и вы
+ можете иметь много дисков с разделами подкачки. Раздел
+ c используется для доступа ко всему диску в
+ режиме эксклюзивного использования или ко всему слайсу FreeBSD при
+ работе в режиме с использованием слайсов. Остальные разделы имеют
+ обычное предназначение.
+
+ Редактор метки диска программы sysinstall использует раздел
+ e для некорневого раздела и не для раздела
+ подкачки. Внутри редактора метки диска создайте отдельную файловую
+ систему при помощи команды C. Когда будет задан
+ вопрос о том, будет ли это раздел с файловой системой (FS) или
+ это будет раздел подкачки, выберите FS и укажите
+ точку монтирования (например, /mnt). При
+ добавлении диска после установки системы, программа sysinstall не
+ будет автоматически создавать записи в файле
+ /etc/fstab, поэтому точка монтирования не так уж
+ и важна.
+
+ Теперь вы готовы записать новую метку на диск и создать на нем
+ файловую систему. Сделайте это, нажав клавишу W.
+ Проигнорируйте ошибки от sysinstall о невозможности смонтировать
+ новый раздел. Полностью выйдите из редактора метки диска и из
+ программы sysinstall.
+
+ Последний шаг заключается в редактировании файла
+ /etc/fstab и добавлении записи для вашего нового
+ диска.
+
+
+
+ Использовании утилит командной строки
+
+
+ * Использование слайсов
+
+
+
+
+
+ Выделенный режим
+
+ Если вы не будете использовать новый диск совместно с другой
+ операционной системой, то вы можете использовать режим
+ эксклюзивного использования. Отметьте, что этот
+ режим может ввести в заблуждение операционные системы от Microsoft;
+ однако информацию они не разрушат. А вот OS/2 от фирмы IBM будет
+ забирать себе любой раздел, который она найдет и не
+ сможет распознать.
+
+
+&prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1
+&prompt.root; disklabel -Brw da1 auto
+&prompt.root; disklabel -e da1 # create the `e' partition
+&prompt.root; newfs -d0 /dev/rda1e
+&prompt.root; mkdir -p /1
+&prompt.root; vi /etc/fstab # add an entry for /dev/da1e
+&prompt.root; mount /1
+
+
+ Альтернативный метод заключается в следующем:
+
+
+&prompt.root; dd if=/dev/zero of=/dev/rda1 count=2
+&prompt.root; disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin
+&prompt.root; newfs /dev/rda1e
+&prompt.root; mkdir -p /1
+&prompt.root; vi /etc/fstab # add an entry for /dev/da1e
+&prompt.root; mount /1
+
+
+
+
+
+
+ Виртуальные диски: сетевые, файловые системы в памяти и на основе
+ файлов
+ Network, Memory, and File-Based Filesystems
+
+ Кроме дисков, которые вы физически устанавливаете в ваш компьютер;
+ дискеты, компакт-диски, винчестеры и так далее, FreeBSD воспринимает и
+ другие типы дисков - виртуальные диски.
+
+ Сюда могут быть отнесены сетевые файловые системы, такие, как
+ Network Filesystem и Coda, а также файловые
+ системы с организацией в памяти, такие, как md и файловые системы, созданные в файле с
+ помощью vnconfig.
+
+
+ vnconfig: файловая система в файле
+
+ &man.vnconfig.8; конфигурирует и позволяет использовать дисковые
+ устройства на основе псевдо-устройств vnode.
+ vnode представляет собой файл и отвечает за
+ работу с файлом. Это означает, что &man.vnconfig.8; использует файлы
+ для создания и работы с файловой системой. Одним из возможных
+ способов использования является монтирование образов дискет или
+ образов компакт-дисков, сброшенных в файлы.
+
+ Чтобы смонтировать имеющийся образ файловой системы:
+
+
+ Использование vnconfig для монтирования имеющегося образа
+ файловой системы
+
+
+&prompt.root; vnconfig vn0diskimage
+&prompt.root; mount /dev/vn0c /mnt
+
+
+
+ Для создания нового образа файловой системы с помощью
+ vnconfig:
+
+
+ Создание нового диска в файле с помощью vnconfig
+
+
+&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
+5120+0 records in
+5120+0 records out
+&prompt.root; vnconfig -s labels -c vn0newimage
+&prompt.root; disklabel -r -w vn0 auto
+&prompt.root; newfs vn0c
+Warning: 2048 sector(s) in last cylinder unallocated
+/dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
+ 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
+super-block backups (for fsck -b #) at:
+ 32
+&prompt.root; mount /dev/vn0c /mnt
+&prompt.root; df /mnt
+Filesystem 1K-blocks Used Avail Capacity Mounted on
+/dev/vn0c 4927 1 4532 0% /mnt
+
+
+
+
+
+ md: Файловая система в памяти
+
+ md это простой и эффективный способ создания файловых систем в
+ оперативной памяти.
+
+ Просто возьмите файловую систему, которую вы приготовили при
+ помощи, скажем, &man.vnconfig.8; и:
+
+
+ Диск md в памяти
+
+
+&prompt.root; dd if=newimage of=/dev/md0
+5120+0 records in
+5120+0 records out
+&prompt.root; mount /dev/md0c/mnt
+&prompt.root; df /mnt
+Filesystem 1K-blocks Used Avail Capacity Mounted on
+/dev/md0c 4927 1 4532 0% /mnt
+
+
+
+
+
+ Квотирование дискового пространства
+
+ Квоты - это опциональная возможность операционной системы, которая
+ позволяет ограничивать объем дискового пространства и/или количество
+ файлов для конкретного пользователя или членов определенной группы
+ в рамках одной файловой системы. Чаще всего эта возможность
+ используется в системах разделения времени, когда желательно ограничить
+ количество ресурсов, которые может использовать один пользователь или
+ группа пользователей. Это позволит не допустить ситуации, когда
+ один пользователь заполняет все доступное дисковое пространство.
+
+
+ Настройка вашей системы на использование дисковых квот
+
+ Перед тем, как попытаться использовать дисковые квоты, необходимо
+ убедиться, что квоты включены в вашем ядре. Это делается добавлением
+ следующей строки в конфигурационный файл вашего ядра:
+
+
+options QUOTA
+
+
+ В стандартном ядре GENERIC это по умолчанию
+ не включено, так что для использования дисковых квот вам нужно будет
+ настроить, откомпилировать и установить собственное ядро.
+ Пожалуйста, обратитесь к разделу Настройка ядра FreeBSD за
+ дополнительной информацией о настройке ядра.
+
+ Затем вам потребуется включить квотирование дисков в файле
+ /etc/rc.conf. Это делается добавление такой
+ строчки:
+
+
+enable_quotas=YES
+
+
+ Для более полного контроля над запуском квотирования имеется
+ дополнительная переменная для настройки. Как правило, при загрузке
+ целостность квот каждой файловой системы проверяется программой
+ quotacheck. При работе программы
+ quotacheck проверяется точное соответствие данных
+ в базе данных квот данным в файловой системе. Это весьма долгий
+ процесс, что отражается на времени загрузки системы. Если вам
+ захочется пропустить этот шаг, то для этого предназначена специальная
+ переменная:
+
+
+check_quotas=NO
+
+
+ Если вы работаете с FreeBSD версий до 3.2-RELEASE, то настройка
+ делается проще, и она состоит только из одной переменной. Задайте
+ следующее в вашем файле /etc/rc.conf:
+
+
+check_quotas=YES
+
+
+ Наконец, вам потребуется отредактировать файл
+ /etc/fstab для включения дисковых квот на
+ уровне файловых систем. Это то место, где вы можете включить квоты
+ для пользователей, для групп или для обеих этих категорий для всех
+ ваших файловых систем.
+
+ Для включения пользовательских квот для файловой системы,
+ добавьте параметр userquota в поле параметров
+ файловой системы, на которой вы хотите включить квотирование, в файле
+ /etc/fstab. Например:
+
+
+/dev/da1s2g /home ufs rw,userquota 1 2
+
+
+ Подобным же образом для включения квотирования на уровне групп,
+ воспользуйтесь параметром groupquota вместо
+ ключевого слова userquota. Чтобы включить
+ квотирование как для пользователей, так и для групп, измените
+ строчку следующим образом:
+
+
+/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
+
+
+ По умолчанию файлы квот хранятся в корневом каталоге файловой
+ системы в файлах с именами quota.user и
+ quota.group соответственно для пользовательских
+ и групповых квот. Для получения подробной информации обратитесь к
+ команде man fstab. Хотя эта страница справочника
+ утверждает, что вы можете указать другое местоположение файлов с
+ квотами, этого делать не рекомендуется, потому что различные утилиты
+ для работы с квотами не могут нормально работать в такой
+ ситуации.
+
+ На этом этапе вы должны перезагрузить вашу систему с новым ядром.
+ Скрипт /etc/rc автоматически запустит
+ соответствующие команды для создания начальных файлов для всех квот,
+ которые вы создали в файле /etc/fstab, так что
+ нет нужды вручную создавать никаких файлов квот нулевой длины.
+
+ При нормальной работе вам не потребуется вручную запускать
+ программы quotacheck, quotaon
+ или quotaoff. Однако вам нужно хотя бы прочесть
+ страницы справочника просто чтобы ознакомиться с их функциями.
+
+
+
+ Установка квот
+
+ Как только вы настроили вашу систему на использование квот,
+ проверьте, что они действительно были задействованы. Простым
+ способом сделать это является запуск такой команды:
+
+
+&prompt.root; quota -v
+
+
+ Вы должны увидеть однострочную информацию, отражающую
+ использование диска и текущие ограничения для каждой файловой
+ системы, на которой включено квотирование.
+
+ Теперь вы действительно готовы задавать ограничения при помощи
+ команды edquota.
+
+ У вас есть несколько вариантов того, как приводить в действие
+ ограничения по объему дискового пространства, который могут занимать
+ пользователь или группа, а также по количеству файлов, которые они
+ могут создать. Вы можете ограничивать размещение ресурсов на основе
+ объема дискового пространства (квотирование блоков), количества
+ файлов (квотирование inode) или их комбинации. Каждое из этих
+ ограничений, в свою очередь, делится на две категории; мягкие и
+ жесткие ограничения.
+
+ Жесткое ограничение не может быть превышено. Как только
+ пользователь достиг своих ограничений, ресурсы соответствующей
+ файловой системы ему больше выделяться не будут. Например, если
+ пользователь имеет жесткое ограничение в 500 блоков на файловой
+ системе и в текущий момент он использует 490 блоков, то
+ пользователь может получить дополнительно еще 10 блоков. Попытка
+ получить еще 11 блоков окончится неудачно.
+
+ С другой стороны, мягкие ограничения могут быть превышены в
+ течении некоторого периода времени. Этот период времени также
+ называют периодом отсрочки, который по умолчанию равен одной неделе.
+ Если пользователь превышает свое мягкое ограничение в течении периода
+ времени, превышающего отсрочку, то это мягкое ограничение становится
+ жестким и последующее выделение ресурсов будет запрещено. Когда
+ пользователь вернется обратно к отметке, меньшей, чем мягкое
+ ограничение, то период отсрочки будет сброшен.
+
+ Далее приводится пример того, что вы можете наблюдать при
+ запуске команды edquota. Когда вызывается команда
+ edquota, вы оказываетесь в редакторе, заданном
+ переменной переменной окружения EDITOR, или в
+ редакторе vi, если переменная
+ EDITOR не задана, и можете редактировать квоты.
+
+
+&prompt.root; edquota -u test
+
+
+
+Quotas for user test:
+/usr: blocks in use: 65, limits (soft = 50, hard = 75)
+ inodes in use: 7, limits (soft = 50, hard = 60)
+/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
+ inodes in use: 0, limits (soft = 50, hard = 60)
+
+
+ Для каждой файловой системы, на которой включено квотирование,
+ вы должны увидеть две строки. В одной строке приведены ограничения
+ на блоки, а в другой на количество inode. Например, чтобы увеличить
+ ограничения на количество блоков для пользователей с мягкого
+ ограничения в 50 и жесткого ограничения в 75, на мягкое ограничение
+ в 500 и жесткое ограничение в 600, измените:
+
+
+/usr: blocks in use: 65, limits (soft = 50, hard = 75)
+
+
+ на:
+
+
+/usr: blocks in use: 65, limits (soft = 500, hard = 600)
+
+
+ Новые ограничения вступят в силу после выхода из
+ редактора.
+
+ Иногда желательно установить ограничения квот на некоторый
+ диапазон идентификаторов пользователей. Это можно сделать при
+ помощи параметра в команде
+ edquota. Во-первых, установите желаемое
+ ограничение для пользователя, а затем запустите команду
+ edquota -p protouser startuid-enduid. Например,
+ если пользователь test имеет желаемые
+ ограничения, то для дублирования этих ограничений на пользователей с
+ идентификаторами от 10000 до 19999 может быть использована такая
+ команда:
+
+
+&prompt.root; edquota -p test 10000-19999
+
+
+ Обратитесь к man edquota за более подробной
+ информацией.
+
+
+
+ Проверка ограничений и использования диска
+
+ Для проверки квот и использования дисков вы можете использовать
+ команды quota или repquota.
+ Команда quota может быть использована для проверки
+ квот отдельных пользователей, групп, а также использования дисков.
+ Только администратор системы может проверять квоты и использование
+ диска другими пользователями и группами. Команду
+ repquota можно использовать для получения
+ суммарной статистики всех квот и использования дисков для файловых
+ систем с включенными квотами.
+
+ Далее приведен пример вывода команды quota -v
+ для пользователя, который имеет ограничения на двух файловых
+ системах.
+
+
+Disk quotas for user test (uid 1002):
+ Filesystem blocks quota limit grace files quota limit grace
+ /usr 65* 50 75 5days 7 50 60
+ /usr/var 0 50 75 0 50 60
+
+
+ В этом примере для файловой системы /usr
+ пользователь превысил свое мягкое ограничение в 50 блоков на 15
+ блоков и имеет 5 дней до истечения отсрочки. Отметьте знак
+ звездочки *, который указывает на превышение
+ пользователем своего ограничения.
+
+ Как правило, файловые системы, на которых пользователь не
+ занимает дискового пространства, не показываются в выводе команды
+ quota, даже если они ему выделена квота на
+ этой файловой системе. При использовании параметра
+ эти файловые системы выводятся, как, например,
+ файловая система /usr/var в примере выше.
+
+
+
+ Квоты в NFS NFS
+
+ Квоты определяются подсистемой квот на сервере NFS. Даемон
+ &man.rpc.rquotad.8; предоставляет информацию о квотах для программы
+ &man.quota.1; на клиентах NFS, позволяя пользователям на этих машинах
+ смотреть свою статистику о квотах.
+
+ Включите rpc.rquotad в файле
+ /etc/inetd.conf следующим образом:
+
+
+rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
+
+
+ Теперь перезапустите inetd:
+
+
+&prompt.root; kill -HUP `cat /var/run/inetd.pid`
+
+
+
+
+
+
diff --git a/ru_RU.KOI8-R/books/handbook/install/chapter.sgml b/ru_RU.KOI8-R/books/handbook/install/chapter.sgml
index b125a5f85f..1f902d5504 100644
--- a/ru_RU.KOI8-R/books/handbook/install/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/install/chapter.sgml
@@ -1,1623 +1,1623 @@
Инсталляция FreeBSD
- Реструктурировано, исправлено и частично переписано
+ Реструктурировал, исправил и частично переписал
&a.jim;, январь 2000 г.Краткий обзорВ этой главе будет рассказано о том, как установить FreeBSD на
Вашу систему. В зависимости от того, где находится дистрибутив, с
которого Вы собираетесь устанавливать FreeBSD, возможна установка по
сети (анонимный FTP, NFS), с компакт-дисков, дискет, магнитных лент,
или с MS-DOS раздела Вашего жесткого диска.Какой бы метод Вы ни выбрали, Вам нужно будет создать
инсталляционные дискеты, как описано в следующей секции. Загрузившись в
инсталлятор FreeBSD, даже если Вы не планируете устанавливать систему
прямо сейчас, можно определить совместимость с Вашим оборудованием,
чтобы в дальнейшем Вы точно знали, какие инсталляционные опции для Вас
доступны. Это также поможет Вам решить потенциальные проблемы, с
которыми Вы можете столкнуться позже.Если Вы хотите установить FreeBSD через анонимный FTP, Вам
понадобятся только установочные
дискеты. Все остальное сделает программа инсталляции.За дополнительной информацией по приобретению FreeBSD обратитесь к
соответствующей секции
Приложения.Вам, наверное, интересно, что же Вы должны сделать дальше.
Продолжайте читать, и Вы узнаете.Инструкция по установкеСледующие секции помогут Вам подготовиться и собственно установить
FreeBSD. Если Вы считаете, что мы что-либо упустили, сообщите нам об
этом, послав email на &a.doc;.Подготовка к инсталляцииНиже перечислены некоторые моменты, которые полезно иметь ввиду
при установке (для каждого типа инсталляции).В первую очередь Вы должны удостовериться, что Ваше
оборудование поддерживается FreeBSD. В этом Вам поможет список
поддерживаемого оборудования.
Если у Вас есть какие-либо
необычные платы расширения, типа SCSI контроллеров,
сетевых и звуковых плат и т.д., хорошо бы составить список
используемых ими ресурсов (IRQ и адресов портов
ввода-вывода).Создание загрузочных дискетПеред тем как продолжить, прочтите информацию
об образах загрузочных дискет. Чтобы создать
инсталляционные дискеты, сделайте следующее:Прежде всего скачайте файлы с образами загрузочных дискет,
например, отсюда
или с зеркала, который ближе всего к Вам.
- Если Вы хотите инсталлировать с MS-DOS-партиции, то сначала скачайте программу
+ Если Вы хотите инсталлировать с MS-DOS раздела, то сначала скачайте программу
fdimage.exe
(при установке с компакт-диска она лежит в директории
tools\) и запустите ее со следующими
параметрами:E:\>tools\fdimage floppies\kern.flp a:Программа fdimage отформатирует
- дискету в дисководеA: и затем
+ дискету в дисководе A: и затем
перенесет на нее kern.flp
(предполагается, что Вы находитесь непосредственно в
директории в дистрибутивом FreeBSD и образа дискет лежат в
floppies). Обратите внимание,
что Вы не можете просто скопировать
kern.flp на отформатированную дискету
средствами DOS, так как это не обычный файл в понятии файловой
системы FAT.Если же Вы используете UNIX-подобную операционную систему
для создания загрузочных дискет, сделайте следующее:&prompt.root; dd if=kern.flp of=disk_device bs=1kdisk_device это файл устройства
в директории /dev соответствующий
дисководу. Если система FreeBSD, то
/dev/rfd0 для диска
A: и /dev/rfd1
для диска B:.Убедитесь, что диск с kern.flp вставлен в
дисковод и перезагрузите компьютер. Через некоторое время Вам нужно
будет вставить дискету с mfsroot.flp, после
чего можно будет продолжить процедуру инсталляции.Прежде чем инсталлировать с компакт-дисковЕсли Ваш CDROM не поддерживается (по крайней мере на стадии
инсталляции), то перейдите к секции Подготовка к инсталляции из-под MS-DOS.Если Вы устанавливаете FreeBSD с компакт-дисков,
распространяемых Walnut Creek
CDROM's, то никаких специальных действий перед
непосредственно инсталляцией производить не придется (диски других
производителей тоже должны работать, однако мы не можем этого
гарантировать, так как наверняка не известно, как образом они были
созданы). Можно сразу перейти к установке с компакт-диска из-под
MS-DOS, запустив install.bat, или приготовить
загрузочные дискеты посредством команды
makeflp.bat.Если же Ваша система поддерживает загрузку с компакт-дисков, и
компакт-диск является загрузочным в соответствии со стандартом El
Torito (обратите внимание, что многие старые системы
- НЕ) поддерживают загрузку с CDROM), то просто
+ НЕ поддерживают загрузку с CDROM), то просто
вставьте первый из набора дисков с FreeBSD в привод CDROM и
перезагрузите Ваш компьютер. Вы попадете в меню инсталляции
непосредственно с компакт-диска.Если Вы проводите инсталляцию с MS-DOS раздела жесткого диска,
и у Вас есть соответствующие драйверы для Вашего CDROM, запустите
командный файл install.bat с компакт-диска,
чтобы начать процедуру инсталляции из-под DOS.Обратите внимание, что все вышеперечисленное нужно выполнять
из-под "чистого" DOS; DOS-сессии Windows и прочие эмуляторы не
подойдут.Самым простым здесь будет набрать команду
view (под DOS). В меню Вы увидите все
возможные опции установки.Если Вы собираетесь создавать загрузочные диски под
UNIX-подобной системой, просмотрите примеры в секции Создание загрузочных дискет
.В любом случае, после того, как Вы загрузились либо с дискет,
либо из-под DOS, выберите CDROM в качестве носителя дистрибутива и
продолжайте инсталляцию. Больше Вам ничего не потребуется.После того, как инсталляция полностью завершена и Вы
перегрузили компьютер (на этот раз с жесткого диска, где у Вас
установлена FreeBSD), Вы можете в любое время примонтировать
CDROM, набрав:&prompt.root; mount /cdromПрежде чем вытащить компакт-диск из привода CDROM, его
необходимо отмонтировать. Это делается при помощи следующей
команды:&prompt.root; umount /cdromПросто так вытащить диск из привода нельзя!Перед тем как начать установку, убедитесь, что компакт-диск
вставлен, и инсталлятор правильно определил Ваш привод CDROM,
даже если Вы не устанавливаете FreeBSD непосредственно с компакт
диска, но хотите, чтобы CDROM поддерживался в базовой
конфигурации системы во время инсталляции.Наконец, если Вы хотите, чтобы другие люди имели возможность
устанавливать FreeBSD по FTP с Вашего компакт-диска, Вам нужно
будет (после того, как инсталляция завершена) добавить следующую
строчку в файл учетных записей пользователей (используя команду
vipw):
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistentТеперь любой, кто имеет доступ к сети, может выбрать установку
по FTP и набрать ftp://ваша
машина, выбрав Другой
(Other) в качестве FTP сервера при инсталляции.Прежде чем инсталлировать с дискетЕсли Вам требуется установить FreeBSD с дискет (чего мы Вам
очень НЕ рекомендуем делать), либо по той
причине, что у Вас неподдерживаемое оборудование, либо потому, что
Вам просто необходимо идти сложным путем, придется сначала
соответствующим образом приготовить дискеты для
инсталляции.Как минимум, Вам понадобится столько 1.44MB или 1.2MB дискет,
чтобы вместить все файлы в директории bin.
Все дискеты должны быть отформатированы
стандартной командой DOS FORMAT. Если Вы
используете Windows, можно воспользоваться опцией format из
Windows File Manager.НЕ доверяйте заводскому форматированию
дискет. Лучше отформатируйте их сами, чтобы быть уверенными в том,
что они не дефектные. Многие проблемы, о которых нам сообщали
наши пользователи, возникали из-за неправильно отформатированных
дискет.Даже если Вы создаете дискеты на компьютере под управлением
FreeBSD, стоит их переформатировать. Правда, в этом случае Вам не
придется размечать их под FAT (файловую систему DOS). Можно
создать на них файловую систему UFS (стандартную для FreeBSD) при
помощи команд disklabel и
newfs, например, так (для 3.5" 1.44MB
диска):&prompt.root; fdformat -f 1440 fd0.1440
&prompt.root; disklabel -w -r fd0.1440 floppy3
&prompt.root; newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0Для 5.25" 1.2MB дисков, нужно заменить
fd0.1440 на fd0.1200 и
floppy3 на floppy5 в
предыдущем примере.Теперь их можно примонтировать и использовать как любую другую
файловую систему.После того, как Вы отформатировали дискеты, необходимо
перенести на них соответствующие файлы. Дистрибутив разбит на
множество кусочков, каждый размером, достаточным для того, чтобы
пять таких кусочков свободно поместились на обычную 1.44MB дискету.
Таким образом нужно скопировать все файлы дистрибутива, чтобы
каждый файл лежал в соответствующей директории на дискете,
например a:\bin\bin.aa,
a:\bin\bin.ab и так далее.Теперь во время установки в секции Media нужно будет выбрать
Floppy.Прежде чем инсталлировать из-под MS-DOSДля установки с MS-DOS раздела жесткого диска нужно создать
директорию (например c:\FreeBSD) и
скопировать туда дистрибутив (сохранив структуру каталогов),
например, командой DOS xcopy. Если Вы
копируете дистрибутив FreeBSD с компакт-диска:C:\>md c:\FreeBSDC:\>xcopy /s e:\bin c:\FreeBSD\bin\C:\>xcopy /s e:\manpages c:\FreeBSD\manpages\Предполагается что на диске C: у Вас
достаточно свободного места, а диск E:
соответствует Вашему приводу CDROM.Имейте ввиду, что на диске должно быть достаточно места и
каждая дистрибуция должна лежать в своей поддиректории в созданном
Вами каталоге; для минимальной установки требуется только
дистрибуция BIN.Прежде чем инсталлировать с QIC/SCSI лентыУстановка с магнитной ленты является одним из самых легких
способов поставить FreeBSD. Инсталлятор ожидает, что файлы
дистрибутива просто за'tar'ены на ленту, например, таким
образом:&prompt.root; cd /freebsd/distdir
&prompt.root; tar cvf /dev/rwt0 dist1 ... dist2Перед началом инсталляции убедитесь, что у Вас есть достаточно
свободного места в какой-нибудь временной директории (у Вас будет
возможность ее выбрать), чтобы вместить все
содержимое магнитной ленты. Так как доступ к информации на ленте
последовательный, этот метод требует значительного свободного
пространства, в зависимости от объема информации на ленте.Убедитесь, что лента вставлена в привод до
того, как Вы начнете грузиться с дискет, иначе
инсталлятор может ее не продетектить.Прежде чем инсталлировать по сетиСуществует три типа сетевой установки: через последовательный
порт (по протоколам SLIP или PPP), через параллельный порт (PLIP
(laplink кабель)), или Ethernet (через стандартный ethernet
контроллер (включая некоторые PCMCIA устройства)).SLIP интерфейс достаточно примитивный и используется в
основном для соединения через последовательные каналы, например
между портативными компьютерами. Вообще, лучше использовать PPP,
так как это более совершенный протокол (в частности, SLIP не
поддерживает дозванивание).Если Вы пользуетесь модемом, то скорее всего Вашим выбором
будет PPP. Убедитесь, что у Вас есть вся информация,
предоставленная Вашим провайдером, так как она Вам понадобится на
самой раннем этапе установки. Вам также необходимо знать, как
дозваниваться до Вашего провайдера при помощи
AT-команд, специфичных для Вашего модема, так как
PPP знает как эмулировать только самый простой терминал. Если Вы
используете PAP или CHAP, Вам нужно будет набрать необходимые
команды set authname и set
authkey, прежде чем воспользоваться командой
term. Обратитесь к соответствующему руководству по ppp и FAQ за дополнительной информацией.
Если у Вас возникли проблемы, можно воспользоваться командой
set log local ....Если Ваш компьютер подсоединен к другой машине под управлением
FreeBSD (2.0-R или более поздней), Вы можете выбрать установку
через laplink кабель для параллельного порта.
Скорость передачи данных в этом случае значительно выше, чем у
обычного последовательного соединения, и может достигать 50
килобайт в секунду, что заметно ускоряет процесс установки.Но самой высокой скорости можно достичь, используя ethernet
адаптер. FreeBSD поддерживает большинство популярных PC ethernet
карт, полный перечень которых (с указанием требуемых параметров)
можно найти в списке поддерживаемого
оборудования. Если у Вас одна из PCMCIA ethernet карточек,
которая поддерживается FreeBSD, проследите, чтобы она была
- воткнута прежде чем Вы включите свой
+ вставлена прежде чем Вы включите свой
компьютер. К сожалению, в настоящее время FreeBSD не поддерживает
вставку PCMCIA карточек на лету.Вам также потребуется знать сетевой IP адрес, маску подсети и
доменное имя Вашего компьютера. Если Вы пользуетесь
PPP-соединением, то скорее всего, IP адрес Вам выделяется
провайдером динамически. Ваш системный администратор должен
сообщить Вам всю необходимую информацию. Если Вы пользуетесь
доменными именами вместо IP адресов, также потребуется адрес DNS
сервера (обычно это сетевой адрес Вашего провайдера). Мы
настоятельно рекомендуем Вам выяснить всю необходимую информацию
у Вашего системного администратора перед тем,
как начинать процесс инсталляции.Прежде чем инсталлировать по NFSNFS инсталляция тоже довольно простая. Просто скопируйте
файлы дистрибутива FreeBSD на любой компьютер, способный быть
NFS сервером, и выберите тип установки по NFS, указав в качестве
сервера машину, где лежит дистрибутив FreeBSD.Если NFS сервер работает только через
привелегированный порт (это верно по умолчанию для
рабочих станций Sun), Вам понадобится указать это в меню Опции
перед тем, как продолжить инсталляцию.Если у Вас не очень качественная сетевая карточка, и
скорость передачи данных очень низкая, установите
соответствующую опцию.Имейте ввиду, что для NFS инсталляции требуется, чтобы
сервер позволял монтировать подкаталоги, например, если Ваш
дистрибутив FreeBSD расположен
в:ziggy:/usr/archive/stuff/FreeBSD, то хост
ziggy должен позволять монтировать
/usr/archive/stuff/FreeBSD, а не только
/usr или
/usr/archive/stuff.В FreeBSD эта возможность контролируется опцией
в конфигурационном файле
/etc/exports, В других системах это может
быть не так. Если сервер Вам отвечает permission
denied, то скорее всего данная возможность отключена или
NFS неправильно сконфигурирована.Прежде чем инсталлировать по FTPУстановить по FTP можно с любого зеркала, содержащего одну
из последних версий FreeBSD. Вы можете выбрать сервер из списка
официальных зеркал, расположенных в разных точках
планеты.Если Вы не хотите устанавливать FreeBSD ни с одного из
перечисленных серверов, или в случая, когда Ваш DNS сервер
неправильно сконфигурирован, у Вас есть возможность явно указать
инсталлятору (в меню
Другой (Other)) имя или IP адрес (в
случае отсутствия DNS сервера) FTP сервера, где лежит
дистрибутив FreeBSD:ftp://165.113.121.81/pub/FreeBSD/&rel.current;-RELEASEСуществуют два типа установки по FTP, из которых Вы можете
выбрать: активный или пассивный FTP.Активный FTPДля всех FTP транзакций используйте
Активный режим. Этот метод на позволяет
устанавливать соединения через брандмауэры, но зато можно
работать с FTP серверами, которые не поддерживают пассивный
режим. Если соединение не устанавливается при работе в
пассивном режиме (по умолчанию), попробуйте активный
режим!Пассивный FTPДля всех FTP транзакций используйте
Пассивный режим. В этом случае можно
работать через брандмауэры, которые не разрешают
соединения на случайные порты.Заметьте, что активный и пассивный режимы это не то же
самое, что и соединение через proxy, когда
прокси сервер слушает и перенаправляет FTP запросы!При использовании прокси, обычно нужно указать имя FTP
сервера как часть адреса, передаваемого прокси, после символа
@. Работа с FTP сервером будет выглядеть точно
также, как если бы Вы общались с ним напрямую.
Например, если дистрибутив FreeBSD лежит на ftp.FreeBSD.org, и Вы используете прокси
сервер foo.bar.com, порт
1024.В этом случае, в меню опций укажите пользователя FTP
ftp@ftp.FreeBSD.org с Вашим email адресом в качестве пароля.
Укажите носитель: FTP (или пассивный FTP, если это
поддерживается прокси сервером) и адрес сервера
ftp://foo.bar.com:1234/pub/FreeBSD.Директория /pub/FreeBSD на ftp.FreeBSD.org видна как директория на
foo.bar.com, и когда Вы указываете
в качестве сервера foo.bar.com, инсталлятор
обращается к нему, который в свою очередь скачивает файлы с
ftp.FreeBSD.org.Установка FreeBSDТеперь, когда все приготовления завершены, можно начинать
установку FreeBSD!Несмотря на то, что Вы не должны столкнуться с какими-либо
неприятностями, случается всякое. В таких ситуациях бывает полезно
вернуться на несколько шагов назад и внимательно проанализировать
Ваши действия (возможно, заглядывая в данное руководство). Если у
Вас проблемы с оборудованием, или FreeBSD вообще отказываться
загружаться, обратитесь к документации на загрузочной
дискете.Инсталляционные дискеты FreeBSD содержат всю необходимую
документацию, которая может понадобиться Вам в процессе установки.
Если Вам кажется, что чего-то не хватает, дайте нам знать, что и
каким образом надо улучшать. Посылайте свои замечания и пожелания
на &a.doc;. Мы стремимся сделать инсталлятор (программу
/stand/sysinstall) достаточно документированным, чтобы отпала
необходимость в какой-либо дополнительной литературе
Возможно, нам потребуется некоторое время, чтобы осуществить
задуманное, но в любом случае, мы не собираемся отказываться от этой
цели :-)Возможно, Вам поможет следующая типичная последовательность
установки:Загрузитесь с kern.flp дискеты и, когда
увидите приглашение вставить дискету
mfsroot.flp, вставьте вторую дискету и
нажмите ввод. По истечении некоторого промежутка
времени (от 30 секунд до 3-х минут, в зависимости от Вашей
конфигурации) Вы увидите меню с основными опциями. Если у Вас
по какой-либо причине не получилось загрузиться, обратитесь к
секции Вопросы и ответы.Нажмите клавишу F1. Вы увидите инструкцию с описанием
основных средств навигации и системы меню вообще. Если Вам
раньше не приходилось устанавливать FreeBSD,
пожалуйста, внимательно прочитайте
инструкцию.В меню Опции (Options) можно изменить некоторые
специфические настройки в соответствии с Вашими
предпочтениями.Выберите Простой (Novice), Специальный (Custom) или Быстрый
(Express) тип установки, в зависимости от того, хотите ли Вы
получать подсказки по ходу инсталляции, иметь полный контроль
над происходящим, или как можно скорее получить работоспособную
систему. Если Вы впервые имеете дело с FreeBSD, мы рекомендуем
Вам первый вариант.В заключении, Вам будет предоставлена возможность
сконфигурировать только что установленную систему посредством
меню, обеспечивающих доступ к различным параметрам FreeBSD.
Обратите особое внимание на сетевые настройки, так как если Вы
инсталлировали FreeBSD с компакт-дисков, дискет или магнитной
ленты, Вам скорее всего не понадобилось настраивать сеть на
этапе инсталляции. Лучше сделать это сейчас, тогда уже после первой
загрузки FreeBSD c Вашего жесткого диска Вы получите
полноценный доступ к сети.Поддерживаемое оборудованиеFreeBSD в настоящее время поддерживает широкий спектр систем с
ISA, VLB, EISA и PCI шинами, начиная с 386SX и заканчивая машинами
класса PentiumPro (однако 386SX не рекомендуется). Также
поддерживаются большинство IDE и ESDI дисковых систем, различные SCSI
контроллеры, сетевые адаптеры и проч.Для нормальной работы FreeBSD рекомендуется иметь по крайней мере
8 мегабайт оперативной памяти, однако Вам может потребоваться 16 и
более мегабайт в зависимости от Вашего оборудования и
конфигурации.Ниже перечислены всевозможные устройства, которые поддерживаются
FreeBSD. Весьма вероятно, что оборудование, явно не указанное с этом
списке, также будет работать; в список включено лишь то железо,
которое гарантированно поддерживается.Дисковые контроллерыWD1003 (любой стандартный MFM/RLL)WD1007 (любой стандартный IDE/ESDI)IDEATAAdaptec 1535 ISA SCSI контроллерыAdaptec 154X ISA SCSI контроллерыAdaptec 174X EISA SCSI контроллеры в обычном и
улучшенном режимахAdaptec 274X/284X/2920C/294X/2950/3940/3950
(Narrow/Wide/Twin) EISA/VLB/PCI SCSI контроллерыAdaptec AIC-7850, AIC-7860, AIC-7880, AIC-789X on-board SCSI
контроллерыAdaptec 1510 ISA SCSI контроллеры (не для устройств,
поддерживающих загрузку)Adaptec 152X ISA SCSI контроллерыAdaptec AIC-6260 и AIC-6360 платы, включая AHA-152X и
SoundBlaster SCSI платыAdvanSys SCSI контроллеры (все режимы)BusLogic MultiMaster хост-адаптеры серии W
включая BT-948, BT-958, BT-9580BusLogic MultiMaster хост-адаптеры серии C
включая BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C,
BT-757C, BT-757CD, BT-545C, BT-540CFBusLogic MultiMaster хост-адаптеры серии S
включая BT-445S, BT-747S, BT-747D, BT-757S, BT-757D,
BT-545S, BT-542D, BT-742A, BT-542BBusLogic MultiMaster хост-адаптеры серии A
включая BT-742A, BT-542BAMI FastDisk контроллеры, которые являются истинными клонами
BusLogic MultiMaster также поддерживаются.BusLogic/Mylex Flashpoint адаптеры пока НЕ
поддерживаются.DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III,
SmartCACHE IV и SmartRAID IV SCSI/RAID поддерживаются. DPT
SmartRAID/CACHE V еще не поддерживается.Compaq Intelligent контроллеры дисковых массивов: IDA,
IDA-2, IAES, SMART, SMART-2/E, Smart-2/P, SMART-2SL, Integrated
Array и Smart Arrays 3200, 3100ES, 221, 4200, 4200,
4250ES.SymBios (раньше NCR) 53C810, 53C810a, 53C815, 53C820,
53C825a, 53C860, 53C875, 53C875j, 53C885 и 53C896 PCI SCSI
контроллеры включая ASUS SC-200, Data Technology DTC3130 (все
модификации), Diamond FirePort (all), NCR платы (все), SymBios
платы (все), Tekram DC390W, 390U и 390F, Tyan S1365QLogic 1020, 1040, 1040B и 2100 SCSI и Fibre
Channel AdaptersDTC 3290 EISA SCSI контроллер в режиме 1542Для всех поддерживаемых SCSI контроллеров, полностью
функционирует любая SCSI-I и SCSI-II периферия, включая жесткие
диски, оптические диски, ленточные накопители (DAT и 8mm Exabyte),
сменники носителей, процессорные устройства и CDROM приводы. К WORM
устройствам, поддерживающим команды CDROM, можно получить доступ в
режиме "только для чтения" посредством драйвера CDROM. Поддержка
записи для WORM/CD-R/CD-RW устройств обеспечивается программой
cdrecord, которую можно найти в дереве портов.Следующие типы CD-ROM систем поддерживаются в настоящее
время:cd - SCSI интерфейс (включает
ProAudio Spectrum и SoundBlaster SCSI)matcd - интерфейс
Matsushita/Panasonic (Creative Soundblaster, модели
562/563)scd - интерфейс Sony
(все модели)wcd - ATAPI IDE интерфейсНижеперечисленные драйверы поддерживались для старой SCSI
подсистемы, по ПОКА ЕЩЕ НЕ поддерживаются для новой CAM SCSI
подсистемы:NCR5380/NCR53400 (ProAudio Spectrum) SCSI
контроллерUltraStor 14F, 24F и 34F SCSI контроллерыSeagate ST01/02 SCSI контроллерыFuture Domain 8XX/950 SCSI контроллерыWD7000 SCSI контроллерВ настоящее время переписывается драйвер UltraStor для
новой SCSI подсистемы CAM, но пока неизвестно, когда работа
будет закончена.Не сопровождаемые более драйверы; могут работать или не работать
на Вашей системе:Ленточные устройства (Colorado/Mountain/Insight)mcd - CD-ROM стандарта Mitsumi (все
модели)Сетевые картыAdaptec Duralink PCI fast ethernet адаптеры, основанные на
Adaptec AIC-6195 fast ethernet чипе (контроллере), включая
следующие:ANA-62011 64-битный однопортовый 10/100baseTX
адаптерANA-62022 64-битный двухпортовый 10/100baseTX
адаптерANA-62044 64-битный четырехпортовый 10/100baseTX
адаптерANA-69011 32-битный однопортовый 10/100baseTX
адаптерANA-62020 64-битный однопортовый 100baseFX
адаптерAllied-Telesyn AT1700 и RE2000 картыAlteon Networks PCI гигабитный ethernet сетевые адаптеры, основанные на
Tigon 1 и Tigon 2 чипсетах, включая Alteon AceNIC (Tigon 1 и 2),
3Com 3c985-SX (Tigon 1 и 2), Netgear GA620 (Tigon 2), Silicon
Graphics Gigabit Ethernet, DEC/Compaq EtherWORKS 1000, NEC
Gigabit EthernetAMD PCnet/PCI (79c970 и 53c974 или 79c974)RealTek 8129/8139 fast ethernet адаптеры, включая
следующие:Allied-Telesyn AT2550Allied-Telesyn AT2500TXGenius GF100TXR (RTL8139)NDC Communications NE100TX-EOvisLink LEF-8129TXOvisLink LEF-8139TXNetronix Inc. EA-1210 NetEther 10/100KTX-9130TX 10/100 Fast EthernetAccton Cheetah EN1027D (MPX 5030/5038;
RealTek 8139 клон?)SMC EZ Card 10/100 PCI 1211-TXLite-On 98713, 98713A, 98715 и 98725 fast ethernet
адаптеры, включая LinkSys EtherFast LNE100TX, NetGear
FA310-TX Rev. D1, Matrox FastNIC 10/100, Kingston
KNE110TXMacronix 98713, 98713A, 98715, 98715A и 98725 fast
ethernet адаптеры, включая NDC Communications SFA100A
(98713A), CNet Pro120A (98713 или 98713A), CNet Pro120B
(98715), SVEC PN102TX (98713)Macronix/Lite-On PNIC II LC82C115 fast ethernet адаптеры,
включая LinkSys EtherFast LNE100TX версии 2Winbond W89C840F fast ethernet адаптеры, включая
Trendware TE100-PCIEVIA Technologies VT3043 Rhine I и
VT86C100A Rhine II fast ethernet адаптеры, включая
Hawking Technologies PN102TX и D-Link DFE-530TXSilicon Integrated Systems SiS 900 и SiS 7016 PCI fast
ethernet адаптерыSundance Technologies ST201 PCI fast ethernet адаптеры,
включая D-Link DFE-550TXSysKonnect SK-984x PCI гигабитные ethernet адаптеры, включая
SK-9841 1000baseLX (одномодовое волокно, однопортовый),
SK-9842 1000baseSX (многомодовое волокно, однопортовый),
SK-9843 1000baseLX (одномодовое волокно, двухпортовый) и
SK-9844 1000baseSX (многомодовое волокно, двухпортовый).Texas Instruments ThunderLAN PCI сетевые адаптеры, включая
Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100
Dual-Port, 10/100 TX Embedded UTP, 10 T PCI UTP/Coax и
10/100 TX UTP, Compaq NetFlex 3P, 3P Integrated и 3P
w/BNC, Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX
UTP и Racore 8165 10/100baseTX и 8148
10baseT/100baseTX/100baseFX много-personality картыADMtek AL981 и AN985 PCI fast ethernet сетевые
адаптерыASIX Electronics AX88140A PCI сетевые адаптеры, включая Alfa
Inc. GFC2204 и CNet Pro110BDEC EtherWORKS III сетевые адаптеры (DE203, DE204 и
DE205)DEC EtherWORKS II сетевые адаптеры (DE200, DE201, DE202 и
DE422)DEC DC21040, DC21041 или DC21140 сетевые адаптеры (SMC
Etherpower 8432T, DE245 и др.)DEC FDDI (DEFPA/DEFEA) сетевые адаптерыEfficient ENI-155p ATM PCIFORE PCA-200E ATM PCIFujitsu MB86960A/MB86965AHP PC Lan+ адаптеры (моделей 27247B и 27252A)Intel EtherExpress (не рекомендуются из-за нестабильности
драйвера)Intel EtherExpress Pro/10Intel EtherExpress Pro/100B PCI Fast EthernetIsolan AT 4141-0 (16 бит)Isolink 4110 (8 бит)Novell NE1000, NE2000, and NE2100 Ethernet
сетевые адаптерыPCI сетевые адаптеры, эмулирующие NE2000, включая
RealTek 8029, NetVin 5000, Winbond W89C940, Surecom NE-34, VIA
VT86C9263Com 3C501, 3C503 Etherlink II, 3C505 Etherlink/+, 3C507
Etherlink 16/TP, 3C509, 3C579, 3C589 (PCMCIA),
3C590/592/595/900/905/905B/905C PCI и EISA (Fast) Etherlink
III / (Fast) Etherlink XL, 3C980/3C980B Fast Etherlink XL
server адаптер, 3CSOHO100-TX OfficeConnect адаптерToshiba ethernet адаптерыPCMCIA ethernet адаптеры от IBM и National Semiconductor
также поддерживаютсяUSB периферияFreeBSD поддерживает довольно широкий список USB оборудования.
Так как (внутри определенного класса) USB устройства достаточно
похожи, Ваше оборудование скорее всего поддерживается, даже если оно
явно не перечислено ниже.USB клавиатурыUSB мышиUSB принтеры и USB-параллельные
кабели-преобразователиUSB хабыЧипсеты материнских платALi Aladdin-VIntel 82371SB (PIIX3) и 82371AB и EB (PIIX4)
чипсетыNEC uPD 9210 хост-контроллерVIA 83C572 USB хост-контроллерлюбые другие UHCI или OHCI совместимые чипсеты (исключения
не известны).PCI plug-in USB хост-контроллерыADS Electronics PCI plug-in карта (2 выхода)Entrega PCI plug-in карта (4 выхода)Некоторые специфические USB устройства:Agiler мышь 29UOAndromeda хабApple iMac мышь и клавиатураATen адаптер для параллельного принтераBelkin F4U002 адаптер для параллельного принтера и Belkin
мышьBTC BTC7935 клавиатура в выходом для мышиCherry G81-3504Chic мышьCypress мышьEntrega USB-to-parallel адаптер для принтераGenius Niche мышьIomega USB Zip 100 MBKensington Mouse-in-a-BoxLogitech M2452 клавиатураLogictech wheel мышь (3 кнопки)Logitech PS/2 / USB мышь (3 кнопки)MacAlly mouse (3 buttons)MacAlly хаб (автономное питание, 4 выхода)Microsoft Intellimouse (3 кнопки)Microsoft клавиатураNEC хабTrust Ami мышь (3 кнопки)ISDN (Европейский протокол DSS1 [Q.921/Q.931])Asuscom I-IN100-ST-DV (экспериментальный, возможно
работает)Asuscom ISDNlink 128KAVM A1AVM Fritz!Card обычныйAVM Fritz!Card PCIAVM Fritz!Card PCMCIAAVM Fritz!Card PnPCreatix ISDN-S0/8Creatix ISDN-S0/16Creatix ISDN-S0 PnPDr.Neuhaus Niccy 1008Dr.Neuhaus Niccy 1016Dr.Neuhaus Niccy GO@ (ISA PnP)Dynalink IS64PH (сопровождение прекращено)ELSA 1000pro ISAELSA 1000pro PCIELSA PCC-16ITK ix1 microITK ix1 micro V.3Sagem Cybermod (ISA PnP, возможно работает)Sedlbauer Win SpeedSiemens I-Surf 2.0Stollman Tina-pp (в процессе разработки)Teles S0/8Teles S0/16Teles S0/16.3 (c версии — например
&16.3c mdash; на поддерживаются!)Teles S0 PnP (экспериментальный, возможно работает)3Com/USRobotics Sportster ISDN TA intern (не-PnP
версия)Прочие устройстваAST последовательный адаптер (4 выхода), используется
разделяемое IRQARNET последовательный адаптер (8 выходов), используется
разделяемое IRQARNET (теперь Digiboard) Sync 570/i высокоскоростной
последовательный адаптерBoca BB1004 последовательная плата (4 выхода, модемы НЕ
поддерживаются)Boca IOAT66 последовательная плата (6 выходов, с поддержкой
модемов)Boca BB1008 последовательная плата (8 выходов, модемы НЕ
поддерживаются)Boca BB2016 последовательная плата (16 выходов, с поддержкой
модемов)Cyclades Cyclom-y последовательная платаSTB плата (4 выхода), используется разделяемое IRQSDL Communications RISCom/8 последовательная платаSDL Communications RISCom/N2 и N2pci высокоскоростные
синхронные последовательные платыSpecialix SI/XIO/SX многоканальные последовательные платы,
как со старыми SIHOST2.x, так и с новыми
улучшенными (основанными на транспьютерах, или
JET) хост-картами; поддерживаются ISA, EISA и PCIStallion многоканальные последовательные платы: EasyIO,
EasyConnection 8/32 и 8/64, ONboard 4/16 и BrumbyAdlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum,
Gravis UltraSound и Roland MPU-401 звуковые платыConnectix QuickCamMatrox Meteor Video плата захвата изображенияCreative Labs Video Spigot плата захвата изображенияCortex1 плата захвата изображенияРазличные платы захвата изображения на чипах Brooktree Bt848
и Bt878HP4020, HP6020, Philips CDD2000/CDD2660 и Plasmon CD-R
приводыBus мышиPS/2 мышиСтандартный PC джойстикX-10 power контроллерыGPIB и Transputer приводыGenius и Mustek ручные сканерыНакопители на магнитных лентах (только некоторые довольно
старые модели, так как драйвер достаточно устаревший)Lucent Technologies WaveLAN/IEEE 802.11 PCMCIA и ISA
стандартной скорости (2Mb/c) и скоростные (6Mb/с) беспроводные
сетевые адаптеры и подобные им (NCR WaveLAN/IEEE 802.11,
Cabletron RoamAbout 802.11 DS)ISA варианты этих адаптеров являются PCMCIA картами в
комбинации с ISA/PCMCIA преобразователем, так что оба типа
устройств должны работать с одним и тем же драйвером.FreeBSD в настоящее время НЕ поддерживает шину IBM microchannel
(MCA).Поиск и устранение неисправностейЭта секция посвящена обсуждению наиболее распространенных проблем,
возникающих у пользователей, и путей их решения. Также обсуждаются
вопросы, которые могут возникнуть у пользователей, практикующих
двойную загрузку FreeBSD/MS-DOS.Если что-то не так...Из-за всевозможных ограничений, накладываемых архитектурой PC,
невозможно гарантировать правильность определения различных устройств
на 100%. Тем не менее, вот несколько несложных рекомендаций,
которые могут Вам помочь в решении потенциальных проблем.Сверьтесь со списком поддерживаемого
оборудования и удостоверьтесь, что Ваше железо
поддерживается FreeBSD.Если Ваше оборудование поддерживается, но Вы все равно
сталкиваетесь с зависаниями или конфликтами, перезагрузите компьютер,
и выберите опцию визуальной конфигурации ядра. Это даст Вам
возможность изменить настройки для каждого устройства в Вашей
системе. По умолчанию, в ядре установлены заводские значения для
IRQ, каналов DMA и портов ввода-вывода. Часто оказывается, что эти
установки не соответствуют действительности.Бывает так, что два или более устройств конфликтуют между собой
(вне зависимости от настроек). В этом случае придется запретить
одно из устройств, чтобы инсталлятор не пытался его
определить.Не следует запрещать устройства, которые гарантированно
понадобятся Вам при установке, например, драйвер экрана
(sc0). Если инсталлятор заклинивает
(виснет), скоре всего в процессе конфигурирования Вы ошибочно
изменили параметры какого-либо устройства. Перезагрузите систему
и попробуйте снова.Находясь в режиме конфигурации, Вы можете:Просмотреть список устройств, поддерживаемых ядром.Поменять драйверы устройств, которые отсутствуют в Вашей
системе.Поменять IRQ, DMA и адреса портов ввода-вывода для
конкретного устройства.После того, как Вы настроили ядро под свое оборудование,
наберите команду Q чтобы загрузиться с новыми
настройками. Когда процесс установки завершится, все сделанные Вами
изменения останутся в силе, и Вам не придется повторять это после
каждой перезагрузки. Тем не менее, Вам скорее всего захочется
скомпилировать свое, специализированное
ядро.Вопросы и ответы для пользователей MS-DOSМногие хотят установить FreeBSD на машины, на которых уже стоит
MS-DOS. Ниже приведено несколько часто задаваемых вопросов, которые
могут возникнуть в процессе инсталляции и эксплуатации таких
систем.Помогите, у меня нет свободного места! Мне придется
сперва все удалить?Если на Вашем компьютере уже установлена MS-DOS, и на Вашем диске
мало или совсем нет свободного места, не все еще потеряно!
Возможно, Вам поможет утилита FIPS, находящаяся в каталоге
tools на компакт-диске или каталоге FTP сервера с
дистрибутивом FreeBSD.FIPS позволит Вам разбить существующий раздел MS-DOS на
два, сохранив оригинальный и дав возможность установить
FreeBSD на место второго. Сначала дефрагментируйте MS-DOS
раздел при помощи стандартной для DOS 6.XX утилиты DEFRAG или
Norton Disk Tools, затем запустите FIPS и введите остальную
необходимую информацию. Теперь Вы можете перезагрузить машину
и установить FreeBSD на новый освободившийся слайс.
Обратитесь к меню Дистрибуции
(Distributions) чтобы оценить, сколько дискового
пространства понадобится для выбранной Вами установки.Смогу ли я достучаться до сжатых разделов MS-DOS
из FreeBSD?Нет. Если Вы используете динамическое сжатие дисков,
обеспечиваемое утилитами Stacker(tm) или DoubleSpace(tm),
FreeBSD будет иметь доступ к информации только на тех дисках,
которые Вы не сжимали. Остальная часть файловой системы
представляет собой один большой файл (созданный и
обрабатываемый Вашей программой динамического сжатия дисков).
Ни к коем случае не следует удалять этот файл, иначе
Вы об этом горько пожалеете!Лучше создать специальный несжатый раздел MS-DOS и
использовать его для обмена информацией между MS-DOS и
FreeBSD.Смогу ли я монтировать логические диски MS-DOS?Да. Логические диски DOS видны под FreeBSD как
дополнительные слайсы (slices) жесткого диска,
например, Ваш диск D: может
соответствовать устройству /dev/sd0s5,
диск E: устройству
/dev/da0s6 и так далее. В этом примере
предполагается, что логические диски находятся на нулевом SCSI
диске. Для IDE дисков, подставьте wd
вместо da соответственно. Таким образом,
логические диски монтируются как любые другие разделы DOS,
например:&prompt.root; mount -t msdos /dev/sd0s5 /dos_d
diff --git a/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml b/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml
index 013b04ebd6..2f596f2a48 100644
--- a/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/introduction/chapter.sgml
@@ -1,721 +1,721 @@
Введение
- Исправлено, реорганизовано и переписано
+ Исправил, реорганизовал и частично переписал
&a.jim;, 17 января 2000.Краткий обзор
- Спасибо Вам за ваш интерес к FreeBSD! Следующая глава
- рассказывает о некоторых аспектах проекта FreeBSD, таких как история,
+ Мы благодарим Вас за Ваш интерес к FreeBSD! Следующая глава
+ расскажет Вам о некоторых аспектах проекта FreeBSD, таких как история,
цели, модель разработки, и прочее.FreeBSD, базирующаяся на операционной системе 4.4BSD-Lite2,
выпускается для архитектуры Intel (x86), а также для систем на
базе DEC Alpha. Портирование на другие платформы также ведётся.
Для краткого обзора FreeBSD, взгляните на следующую главу. Вы также можете
прочитать об истории FreeBSD,
и о текущей версии. Если вы хотите
чем-нибудь помочь (кодом, оборудованием, чем-то другим) проекту,
смотрите главу Содействие FreeBSD.
- Добро пожаловать в FreeBSD!
+ Добро пожаловать во FreeBSD!Если Вы до сих пор читаете это, возможно Вы хотите узнать что
такое FreeBSD и что это может сделать для Вас. Если Вы впервые
столкнулись с FreeBSD, прочитайте нижеследующую информацию.Что такое FreeBSD?Итак, FreeBSD это великолепная операционная система,
основанная на 4.4BSD-Lite2. Она работает на компьютерах с архитектурой
Intel (x86) и DEC Alpha.FreeBSD используется на огромнейших сайтах в Internet,
включая:Yahoo!HotmailApacheBe, Inc.Blue Mountain
ArtsPair
NetworksWhistle
CommunicationsWalnut Creek
CDROMи многих других.Что может делать FreeBSD?FreeBSD имеет заслуживающие внимания особенности. Некоторые из
них:Приоритетная многозадачность с
динамическим регулированием приоритетов, плавно и правильно
приспособится и учтиво распределит ресурсы компьютера между
приложениями и пользователями, даже при тяжелейших нагрузках.
Многопользовательская доступность которая
позволяет множеству людей использовать FreeBSD совместно для ряда
задач. Это значит, например, что системная периферия, такая как
принтеры и ленточные устройства правильно распределены между
пользователями в системе или сети и что лимиты каждого ресурса
могут быть выданы пользователям или группам пользователей
защищая критические системные ресурсы от перегрузок.Мощный TCP/IP стек с поддержкой
промышленных стандартов, таких как SLIP, PPP, NFS, DHCP и NIS.
Это говорит о том, что ваша FreeBSD может легко функционировать
с другими системами предприятия, предоставляя жизненно важные
функции, такие как NFS (удалённый доступ к файлам) и услуги
электронной почты и представить вашу организацию в Internet с услугами
WWW, FTP, маршрутизацией и брандмауэром (сетевая безопасность).
Защита памяти гарантирует что
приложения (или пользователи) не смогут чинить препятствия
друг другу. Фатальная ошибка в выполнении одного приложения
не скажется на работоспособности всей системы.FreeBSD 32-х битная операционная система
(64 бита на Alpha) была создана
именно такой.Промышленный стандарт X Window System
(X11R6) предоставит графический интерфейс пользователя (GUI) для
большинства VGA карт и мониторов и поставляется с полными исходными
текстами.Двоичная совместимость с большинством
программ, созданных для Linux, SCO, SVR4, BSDI и NetBSD.Тысячи готовых к использованию
приложений доступны из FreeBSD коллекций
портов и пакетов.
Зачем нужен нужно искать что-то в сети, когда Вы можете найти
всё прямо здесь?Тысячи других
легко-адаптируемых приложений доступны в
Internet. FreeBSD в исходных текстах совместима с большинством
популярных коммерческих Unix систем и таким образом большинство
приложений требуют несколько достаточно мелких, если требуют,
изменений для сборки.Виртуальная память с поддержкой
сброса неиспользуемых страниц по требованию и
обьедененный VM/буферный кэш спроектированы
так, чтоб максимально эффективно удовлетворить приложения с
огромными аппетитами к памяти, и в то же время сохранить
интерактивность остальных пользователей.Поддержка SMP для машин с
несколькими процессорами (только для Intel).Полный комплект инструментов для разработчика:
C, C++,
Fortran и Perl.
Множество дополнительных языков для прочих исследований
и разработки также доступны из коллекций портов и пакетов.Исходные тексты всей системы
означают, что Вы имеете великолепную возможность контролировать
Ваше окружение. Зачем выбирать закрытые решения и уповать на милость
производителя, когда вы можете иметь по-настоящему Открытую
Систему?Обширная on-line
документация.И многое-многое другое!FreeBSD основана на 4.4BSD-Lite от Computer
Systems Research Group (CSRG) Калифорнийского Университета, Беркли,
и имеет в себе характерные черты модели развития BSD-систем.
В дополнении к прекрасной работе предоставленной
CSRG, Проект FreeBSD тратит многие тысячи часов для
тонкой настройки системы для максимальной производительности и надёжности
в условиях максимально приближенным к боевым. Когда большинство
коммерческих гигантов только борятся за рынок операционных систем для PC,
FreeBSD может предложить такие особенности, производительность и надёжность
прямо сейчас!Применение FreeBSD в действительности ограничено только Вашими
фантазиями. От разработки программного обеспечения до автоматизации
производства, от контроля за качеством товара до
коррекции азимутов удалённых спутниковых антен; эти задачи можно
решить и с помощью коммерческих UNIX-систем, но более правильно
решить эти задачи с помощью FreeBSD! FreeBSD столь же многогранно
полезна, как и буквально тысячи высококачественных приложений разработанных
исследовательскими центрами и университетами во всём мире, доступные
за минимальную цену или даже бесплатно. Коммерческие приложения также доступны
и появляются в больших количествах ежедневно.Исходя из того, что исходные тексты FreeBSD всегда доступны,
система может быть использована в едва известных проектах
для специальных приложений или проектов, а это, в большинстве
своём, невозможно используя операционные системы от большинства
коммерческих производителей. Вот несколько примеров того, как люди
используют FreeBSD:Internet Сервисы: мощнейший TCP/IP
стек делает FreeBSD идеальной платформой для большинства
Internet приложений таких как:FTP серверыWorld Wide Web серверы (как стандартные, так и безопасные
[SSL])Серверы фильтрации пакетов и серверы-посредники NAT
(IP маскарадинг).Серверы электронной почтыСерверы новостей USENET и BBSи многое другое...Вы можете начать своё знакомство с FreeBSD, используя недорогую
машину класса 386 PC, а впоследствии увеличить её мощь до сервера масштаба
предприятия с четырьмя процессорами Xeon и RAID контроллером.Образование: Вы студент и ваше
образование связано с компьютерами или другими инженерными
расчётами? Нет лучшего пути, чем начать изучение операционных
систем, архитектуры компьютера и работы в сети, чем покорить
вершины FreeBSD. Количество доступных CAD, математических
и графических пакетов также делают её наиболее используемой
первопричиной заставить компьютер выполнять
другую не менее важную работу.Исследования: С исходными текстами,
которые доступны для всех систем, FreeBSD превосходная платформа
как для исследования операционных систем, так и исследования
других областей компьютерных наук. Широкое распространение FreeBSD
предоставляет возможность удалённым группам сотрудничать, обмениваться
идеями и совместными разработками не беспокоясь
о наличии специальных лицензий или ограничений,
которые могут обсуждаться в открытых форумах.Работа в сети: Нужен новый маршрутизатор?
Сервер имён (DNS)? Брандмауэр, защищающий от проникновения
извне в вашу сеть? FreeBSD может превратить давно списанный и
пылящийся в углу 386й или 486й PC в мощный маршрутизатор
с возможностью фильтрации пакетов.Рабочая станция X Window: FreeBSD прекрасный
выбор если вам нужен недорогой X-терминал. Можно использовать
свободно распространяемый XFree86 сервер или один из
коммерческих серверов, поставляемых X Inside. В отличии от
X терминала, на FreeBSD можно запускать множество приложений
локально, если желаете, таким образом перенеся часть нагрузки
с центрального сервера. FreeBSD может быть загружена на бездисковой
станции, что рабочую станцию более дешёвой и
простой в администрировании.Разработка программного обеспечения: Базовая
поставка FreeBSD распространяется с полным набором инструментов для
разработки, включая знаменитые компилятор GNU C/C++ и
отладчик.FreeBSD доступна как в исходных текстах, так и в бинарном виде
на CDROM и через анонимный доступ к FTP. Смотрите
Получение FreeBSD для уточнений.О Проекте FreeBSDВ следующей части рассказывается о том, что из себя представляет проект,
включая краткую историю, цели проекта и модель разработки
проекта.Краткая история FreeBSDРассказывает &a.jkh;.Проект FreeBSD возник в первой половине 1993 года,
частично как результат развития Неофициального комплекта
заплат к 386BSD (patchkit) , последними 3-мя координаторами
этого проекта: Nate Williams, Rod Grimes и мною.Нашей главной задачей было привести промежуточный
снэпшот 386BSD в порядок, исправив множество проблем, которые
механизм patchkit не мог решить. Некоторое из вас возможно помнят
раннее название этого проекта: 386BSD 0.5 или
386BSD Interim.386BSD была операционной системой Била Джоилца, который
- на тот момент находился строго говоря в состоянии полного
+ на тот момент находился строго говоря, в состоянии полного
пренебрежения к ней. Так как patchkit разрастался и его
поддержание становилось более неудобным день от дня, мы
пришли к единодушному соглашению что что-то нужно делать
и решили помочь Билу путем предоставления промежуточных
очистных снэпшотов. Эти планы были невежливо
оборваны, когда Билл внезапно решил забрать его санкции
у проекта без любых ясных комментариев, что должно быть
сделано вместо этого.
- Нам не потребовалось много времени, чтоб прийти к решению
+ Нам потребовалось немного времени, чтоб прийти к решению
продолжать следовать той цели, даже без поддержки Била,
и мы приняли имя FreeBSD приобретенное Дэвидом
Гринмэном. Наши начальные цели были установлены после консультаций
с пользователями существовавшей системы, и как только стало
понятно, что проект на пути к тому чтобы стать реальностью, я
связался с Walnut Creek CDROM с мыслью о путях последующего
улучшения каналов распространения FreeBSD для множества
невезучих без доступа к Internet. Walnut Creek CDROM не только
поддержал идею распространения FreeBSD на CD, но также пошел
далеко вперед и предоставил проекту компьютер для работы
и быстрый доступ к Internet. Без почти беспрецедентной веры
Walnut Creek CDROM, в то время полностью неизвестный проект,
вряд ли FreeBSD зашел далеко и так быстро, как сегодня.
- Первым дистрибутивом, распространяемым как на CDROM, как и в сети,
+ Первым дистрибутивом, распространяемым как на CDROM, так и в сети,
стал FreeBSD 1.0, выпущенный в декабре 1993 года. Эта версия была
выполнена на основе ленты 4.3BSD-Lite (Net/2)
из Калифорнийского Университета в Беркли, с многочисленными
добавлениями из проекта 386BSD и Фонда Свободного Программного
Обеспечения. Это был довольно внушительный успех для
первого предложения, и мы закрепили его с выходом FreeBSD
1.1 RELEASE в мае 1994 года.В это же время, на небе сгустились тучи в связи с назревающим
скандалом между Novell и Калифорнийским Университетом, Беркли.
Это был вяло-текущий судебный процесс о легальности версии
Net/2 из Беркли. Обстоятельства тяжбы с Калифорнийским Университетом
заключались в том, что большие куски Net/2 были загромождены
кодом, права на который принадлежат Novell, которая в свою очередь,
получила их (права на код) ранее от AT&T. Чтоб вернуть
благославление Novell, Беркли выпустил версию 4.4BSD-Lite, который
был обьявлен полностью свободным незагроможденым и
всем пользователям Net/2 было рекомендовано переключится на ее
использование. Это также касалось FreeBSD, и проекту было дано
время до конца Июля 1994 года для прекращения распространения его
продукта базирующегося на Net/2. На этих условиях проекту было
разрешено выпустить последний релиз до окончания срока, это
был FreeBSD 1.1.5.1.Тогда FreeBSD приступил к сложной задаче буквально
полному изобретению себя из абсолютно новой и довольно
неполной системы 4.4BSD-Lite. Lite был
в прямом смысле light (легким) потому, что CSRG удалил
большие куски кода необходимого для создания реально
загружающейся системы (по причине различных лицензионных
требований) и фактически порт 4.4BSD для платформы Intel
был очень неполным. Проекту потребовалось вермя почти до
Ноября 1994 года для того чтоб выполнить этот переход и
на этом этапе FreeBSD 2.0 была опубликована в сети и
на CDROM (в конце Декабря). Несмотря на множество недотесаных
углов в этой версии она пользовалась значительным успехом
и была продолжена более устойчивой и простой для установки
FreeBSD 2.0.5 выпущенной в Июне 1995 года.Мы выпустили FreeBSD 2.1.5 в августе 1996, и она стала достаточно
популярной среди большого количества ISP и коммерческих производителей, но
- и другие версии из ветки 2.1-STABLE также заслуживаю этого. Это была
+ и другие версии из ветки 2.1-STABLE также заслуживают этого. Это была
FreeBSD 2.1.7.1, вышедшая в феврале 1997 и завершившая главную
нить разработки 2.1-STABLE. Сейчас в режиме поддержки, только
безопасные расширения и прочие критические исправления ошибок
включаются в эту ветку (RELENG_2_1_0).FreeBSD 2.2 была выведена из разработки
(-CURRENT) в ноябре 1996 как ветка RELENG_2_2,
а первая полная версия (2.2.1) появилась в апреле 1997.
Последующие версии ветки 2.2 появлялись летом и в конце '97,
а последняя версия (2.2.8) вышла в ноябре 1998.
Первая официальная версия 3.0 была подготовлена к выходу в
октябре 1998, завершив развитие ветки 2.2 Третье ветвление произошло 20 января 1999 года, разделив
ветки 4.0-CURRENT и 3.X-STABLE. Из ветки 3.X-STABLE были получены: 3.1 -
15 февраля 1999, 3.2 - 15 мая 1999, 3.3 - 16 сентября 1999,
3.4 - 20 декабря 1999, 3.5 - 24 Июня 2000, за которым последовал
через несколько дней немного обновленный 3.5.1, который содержал
несколько фиксов в области безопасности Kerberos. Это был последний
релиз из ветки 3.x.Последнее на данный момент ветвление было произведено 13 Марта, 2000
в результате которого появились ветки 4.X-STABLE и 5.0-CURRENT.
Единственный релиз из этой ветки на данный момент это
&rel.current;-RELEASE.Долговременные разработки и проекты продолжаются в ветке
- 5.0-CURRENT, и по ходу разработки будут доступны СНЭПшот релизы
+ 5.0-CURRENT, и по ходу разработки будут доступны снэпшот-релизы
5.0 на CDROM (и, конечно, в сети).Цели Проекта FreeBSDПредоставлено &a.jkh;.Целью Проекта FreeBSD является предоставление программного
обеспечения, которое может быть использовано для любых целей
и без дополнительных ограничений. Многие из нас вносят внушительные
взносы в код (и проект) и совершенно не требуют за это
небольшой финансовой компенсации сейчас и в последствии, и мы
определенно не собираемся настаивать на этом. Мы верим, что первая
и основная наша задача предоставить код для всех
кому он необходим, и для любых целей, поэтому этот код становится
все более и более распространен и предоставляет самые широкие
выгоды. Это, я верю, является одной из основных целей Свободного
Програмного Обеспечения и той которую мы с энтузиазмом
поддерживаем.Тот код в нашем дереве исходных текстов, который подпадает
под Общую Публичную Лицензию GNU (GPL) или Общую Публичную
Лицензию Библиотек GNU (LGPL) предоставляется с дополнительными
ограничениями, хотя и это только со стороны предоставления
доступа, а не просто противоположность. По причине дополнительных
сложностей, которые могут появится при коммерческом использовании GPL
продуктов, мы предпочитаем ПО предоставленное под более свободной
лицензией BSD, когда это возможно.Модель Разработки FreeBSDПредоставлено &a.asami;.Разработка FreeBSD это очень открытый и гибкий процесс,
FreeBSD литературно выражаясь создан из кода предоставленного
сотнями людей со всего мира, в чем Вы можете убедится взглянув
на список этих людей. Мы постоянно
ищем новых разработчиков и новые идеи, и те кто заинтересованы
в более тесном взаимодействии и хочет принять участие в проекте
должны просто связаться с нами в &a.hackers;. Для тех кто
желает использовать FreeBSD в различных областях для работы и
не только доступен &a.announce;.Полезными вещами, о которых стоит знать, если Вы интересуетесь
FreeBSD и процессом разработки, независимо или тесно сотрудничая
с нами, являются:CVS РепозиторийГлавное дерево исходных текстов FreeBSD поддерживается
с помощью
CVS
(Concurrent Version System), свободно доступной системой
контроля исходных текстов, который поставляется встроенным
в FreeBSD. Основной
CVS
репозиторий располагается на компьютере находящемся
в городе Конкорд, Калифорния (США) откуда и распространяется
на множество зеркал по всему миру. Дерево CVS, а также деревья
-CURRENT и -STABLE, которые извлекаются из него,
могут быть легко скопированы на Ваш локальный компьютер.
Обратитесь к секции Синхронизация
Вашего дерева исходных текстов для информации об этом
процессе.Список коммиттеровКоммиттеры
это люди, которые имеют доступ на запись
к главному дереву CVS, и имеют право вносить изменения
в главное дерево исходных текстов FreeBSD (термин
коммиттер появился от названия одной из
команд &man.cvs.1; commit, которая
используется для внесения изменений в CVS репозиторий).
Лучший способ для предоставления Ваших изменений на
рассмотрение коммиттеров - это использование команды
&man.send-pr.1;, или если что-то произошло, то Вы можете
достучаться до них посылкой письма по адресу
cvs-committers@FreeBSD.org.CORE группа FreeBSD CORE группа FreeBSD
могла бы быть эквивалентом Совета Директоров, если бы
Проект FreeBSD был бы компанией. Главная задача CORE группы
создавать уверенность, что проект в целом в хорошем состоянии
и движется в правильном направлении. Приглашение выделенных
или ответственных разработчиков присоединится к группе
коммиттеров одна из функций CORE группы, также как приглашение
новых членов в CORE группу по мере того, как другие уходят.
Большинство нынешних членов CORE группы начинали
как Коммиттеры и чья склонность к проекту взяла верх над ними.
Некоторые члены CORE группы имеют особенные области ответственности, что
означает, что они являются ответственными за то, чтобы
большая часть системы работала как необходимо.Большинство членов CORE группы являются волонтерами
и не получают никакой финансовой выгоды от участи в проекте,
поэтому Вы не должны рассматривать их работу как
гарантированную поддержку. Аналогия с
не очень аккуратна и вероятно гораздо
корректнее сказать, что это люди которые отдали свои жизни
в пользу FreeBSD вместо их лучшей жизни!
;-)Внешняя помощьПоследней, но однозначно не единственной, наибольшей
группой разработчиков являются пользователи, которые
предоставляют комментарии и исправления ошибок нам на почти
постоянной основе. Основной путь участвовать в
не централизованной разработке это подписаться на &a.hackers;
(смотри информацию о списках
рассылки), где обсуждаются подобные вещи.Список
тех, кто предоставил что-либо попавшее в наше дерево
исходных текстов, очень длинный и постоянно растет, поэтому
почему бы Вам не присоединится к нему предоставив что-нибудь
FreeBSD сегодня ?:-)Предоставление кода не единственный способ помочь
проекту; для более-менее полного списка вещей, которые
необходимо сделать пожалуйста обратитесь к секции как помочь этого руководства.В завершении, наша модель разработки организована как неточный
набор концентрированных колец. Централизованная модель разработана
для удобства пользователей FreeBSD, которые
таким образом получают простую систему контроля за одной
центральной базой кода, и позволяет не оставить за бортом проекта
потенциальных помошников! Мы желаем предоставить стабильную
операционную систему с большим количеством когерентных
прикладных программ, которые
пользователи смогут легко установить и использовать, и эта модель
работает очень хорошо для выполнения всего этого.Мы все приглашаем тех кто хотел бы присоединится к нам, как
разработчик FreeBSD выделить немного времени и привнести свой взнос
в постоянный успех FreeBSD!Текущая Версия FreeBSDFreeBSD - это свободно доступная, базирующаяся на 4.4BSD-Lite
релизе для компьютерных систем основанных на Intel i386, i486,
Pentium, Pentium Pro, Celeron, Pentium II, Pentium III
(или совместимых) и DEC Alpha. В основном она базируется на
программном обеспечении от группы CSRG, U.C. Berkley, с некоторым
дополнениями из NetBSD, OpenBSD, 386BSD и Free Software
Foundation.Со времен FreeBSD версии 2.0 в конце 94, производительность,
возможности, и стабильность FreeBSD выросла многократно. Самое
большое изменение это полное обновление системы виртуальной памяти
с обьедененным VM/файловым буферизированым кэшем, который не только
увеличивает производительность, но и уменьшает количество
используемой памяти, делая 5MB конфигурацию более доступным
минимумом. Другие улучшения включают в себя полную поддержку NIS
(клиент и сервер), поддержка транзакций TCP, поддержка
"звонка-по-запросу" в PPP, встроенная поддержка DHCP, улучшеная
субсистема SCSI, поддержка ISDN, ATM, FDDI, Fast и Gigabit Ethernet
(1000Mbit) адаптеров, улучшеная поддержка последних версий
контролеров Adaptec и сотни исправленных ошибок.Мы также приняли комментарии и предложения множества наших
пользователей близко к сердцу и попытались предоставить, то что
мы считаем более нормальным и простым для понимания инсталляционным
процессом. Ваши отзывы об этом (постоянно развивающемся) процессе
особенно приветствуются!В дополнение к базовой системе, FreeBSD предоставляет
коллекцию портированого ПО включающую в себя тысячи популярных
программ. На середину января 2000 года она включала в себя
почти 3000 портов! В коллекцию входят множество програм от
http (WWW) серверов, до игр, языков программирования, текстовых
редакторов и все что между ними. Полная коллекция портов
требует приблизительно 50Мб дискового пространства, потому что
порт представляет собой дельты от оригинальных
исходных текстов. Это сильно упрощает нам процесс обновления
портов, и очень сильно уменьшает количество занимаемого
дискового места по сравнению со старой 1.0 коллекцией портов.
Для того чтоб скомпилировать и проинсталлировать программу которую
Вы хотите, Вам необходимо всего лишь войти в директорию порта
программы, набрать make install и дать
системе сделать все остальное. Исходные тексты для каждого порта,
который Вы инсталлируете отыскиваются динамически с CDROM'a или
локального FTP сервера, поэтому Вам нужно только дисковое
пространство для сборки тех портов каких Вы хотите. Почти каждый
порт также предоставляется как пред-компилированый
пакадж, который может быть проинсталирован с помощью
простой команды (pkg_add) теми кто не хочет компилировать порты
из исходных текстов.Множество дополнительных документов которые Вы можете найти
очень полезными в процессе инсталляции и использования FreeBSD
могут быть найдены в директории /usr/share/doc
на любой машине работающей под управлением FreeBSD 2.1 и выше. Вы
можете в просматривать локально установленные документы с помощью
любого браузера понимающего HTML используя следующие URLи:Справочник FreeBSDfile:/usr/share/doc/handbook/index.htmlЧаВО о FreeBSD (Часто задаваемые Вопросы и Ответы)file:/usr/share/doc/faq/index.htmlВы также можете посмотреть главные (и наиболее часто обновляемые)
копии на http://www.FreeBSD.org/.
diff --git a/ru_RU.KOI8-R/books/handbook/kerneldebug/chapter.sgml b/ru_RU.KOI8-R/books/handbook/kerneldebug/chapter.sgml
new file mode 100644
index 0000000000..d5515e0e73
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/kerneldebug/chapter.sgml
@@ -0,0 +1,682 @@
+
+
+
+ Отладка ядра
+
+ Текст предоставили &a.paul; и &a.joerg;
+
+
+ Отладка аварийных образов ядра при помощи
+ kgdb
+
+ Вот некоторые указания по работе с отладкой ядра с аварийными
+ образами памяти. При этом предполагается, что у вас достаточно места
+ на разделе подкачки для аварийного образа памяти. Если у вас есть
+ несколько разделов подкачки и первый слишком мал для размещения образа
+ памяти, вы можете настроить ядро на использование другого устройства
+ для сброса образа памяти (в строке config kernel или
+ указать его при помощи команды &man.dumpon.8;. Лучше всего
+ использовать &man.dumpon.8;, задав переменную
+ dumpdev в файле /etc/rc.conf.
+ Как правило, вам нужно будет задать одно из устройств подкачки,
+ перечисленных в файле /etc/fstab. Сброс образов
+ памяти на устройства, не являющиеся устройствами подкачки, напрмер,
+ ленты, в данный момент не поддерживаются. Настройте ваше ядро при
+ помощи команды config -g. Обратитесь к разделу
+ Настройка ядра за более подробной
+ информацией о настройке ядра FreeBSD.
+
+ Используйте команду &man.dumpon.8; для указания ядру места, куда
+ нужно помещать образ памяти (отметьте, что это будут сделано после
+ настройки соответствующего раздела как раздел подкачки через
+ &man.swapon.8;). Обычно это делается через
+ /etc/rc.conf и /etc/rc.
+ Либо вы можете задать устройство для сброса образа памяти явно через
+ параметр dump в строке config
+ конфигурационного файла вашего ядра. Такой способ использовать не
+ рекомендуется и он должен использоваться, только если вы хотите
+ получать аварийные образы памяти ядра, которое аварийно завершает свою
+ работу при загрузке.
+
+
+ Далее термин kgdb означает утилиту
+ gdb, которая запущена в режиме отладки
+ ядра. Этот режим достигается либо при запуске
+ gdb с параметром , либо
+ компоновкой и запуском его под именем kgdb. По
+ умолчанию этого, однако, не делается и эта идея, в общем-то, не
+ поддерживается, потому что разработчикам GNU не нравится, когда их
+ утилиты работают по-другому, будучи вызванными по другому имени. В
+ будущих релизах такая возможность может исчезнуть.
+
+
+
+ Если вы используете FreeBSD версии 3 или более раннюю, вы должны
+ выполнить усечение отладочного ядра командой strip, а не
+ устанавливать большое отладочное ядро:
+
+
+&prompt.root; cp kernel kernel.debug
+&prompt.root; strip -g kernel
+
+
+ Этот шаг не так уж и необходим, но рекомендуем. (Во FreeBSD 4
+ и более поздних релизах этот шаг выполняется автоматически в конце
+ процесса построения ядра make.) Когда ядро
+ усечено, автоматически или при помощи команд выше, вы можете
+ установить его обычным образом, набрав make
+ install.
+
+ Заметьте, что в старых версиях FreeBSD (до 3.1, не включая этот
+ релиз), используется ядра в формате a.out, поэтому их таблицы
+ символов должны располагаться постоянно в памяти. С большой таблицей
+ символов в не усеченном отладочном ядре это излишняя трата. Последние
+ релизы FreeBSD используют ядра в формате ELF, где это не является
+ проблемой.
+
+
+ Если вы тестируете новое ядро, скажем, набирая имя нового ядра в
+ приглашении загрузчика, но вам нужно загружать и работать с другим
+ ядром, чтобы снова вернуться к нормальному функционированию, загружайте
+ его только в однопользовательском режиме при помощи флага
+ , указываемого при загрузке, а затем выполните такие
+ шаги:
+
+
+&prompt.root; fsck -p
+&prompt.root; mount -a -t ufs # so your file system for /var/crash is writable
+&prompt.root; savecore -N /kernel.panicked /var/crash
+&prompt.root; exit # ...to multi-user
+
+
+ Эта последовательность указывает программе &man.savecore.8; на
+ использование другого ядра для извлечения символических имен. Иначе
+ она будет использовать ядро, работающее в данный момент и, скорее
+ всего, ничего не сделает, потому что аварийный образ памяти и символы
+ ядра будут отличаться.
+
+ А теперь, после сброса аварийного дампа, перейдите в каталог
+ /sys/compile/WHATEVER и запустите команду
+ kgdb. Из программы kgdb сделайте
+ вот что:
+
+
+symbol-file kernel.debug
+exec-file /var/crash/kernel.0
+core-file /var/crash/vmcore.0
+
+
+ и вуаля - вы можете отлаживать аварийный дамп, используя исходные
+ тексты ядра точно также, как вы это делаете с любой другой
+ программой.
+
+ Вот журнал команд сеанса работы kgdb,
+ иллюстрирующий эту процедуру. Длинные строки были разорваны для
+ улучшения читабельности и для удобства строки были пронумерованы.
+ Все остальное является трассировкой ошибки, реально возникнувшей во
+ время работы над драйвером консоли pcvt.
+
+
+ 1:Script started on Fri Dec 30 23:15:22 1994
+ 2:&prompt.root; cd /sys/compile/URIAH
+ 3:&prompt.root; kgdb kernel /var/crash/vmcore.1
+ 4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel
+...done.
+ 5:IdlePTD 1f3000
+ 6:panic: because you said to!
+ 7:current pcb at 1e3f70
+ 8:Reading in symbols for ../../i386/i386/machdep.c...done.
+ 9:(kgdb)where
+10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767)
+11:#1 0xf0115159 in panic ()
+12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
+13:#3 0xf010185e in db_fncall ()
+14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073)
+15:#5 0xf0101711 in db_command_loop ()
+16:#6 0xf01040a0 in db_trap ()
+17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
+18:#8 0xf019d2eb in trap_fatal (...)
+19:#9 0xf019ce60 in trap_pfault (...)
+20:#10 0xf019cb2f in trap (...)
+21:#11 0xf01932a1 in exception:calltrap ()
+22:#12 0xf0191503 in cnopen (...)
+23:#13 0xf0132c34 in spec_open ()
+24:#14 0xf012d014 in vn_open ()
+25:#15 0xf012a183 in open ()
+26:#16 0xf019d4eb in syscall (...)
+27:(kgdb)up 10
+28:Reading in symbols for ../../i386/i386/trap.c...done.
+29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
+30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
+31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
+32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
+33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
+34:ss = -266427884}) (../../i386/i386/trap.c line 283)
+35:283 (void) trap_pfault(&frame, FALSE);
+36:(kgdb)frame frame->tf_ebp frame->tf_eip
+37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
+38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
+39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
+40:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
+41:(kgdb)list
+42:398
+43:399 tp->t_state |= TS_CARR_ON;
+44:400 tp->t_cflag |= CLOCAL; /* cannot be a modem (:-) */
+45:401
+46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
+47:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
+48:404 #else
+49:405 return ((*linesw[tp->t_line].l_open)(dev, tp, flag));
+50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
+51:407 }
+52:(kgdb)print tp
+53:Reading in symbols for ../../i386/i386/cons.c...done.
+54:$1 = (struct tty *) 0x1bae
+55:(kgdb)print tp->t_line
+56:$2 = 1767990816
+57:(kgdb)up
+58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
+59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
+60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
+61:(kgdb)up
+62:#2 0xf0132c34 in spec_open ()
+63:(kgdb)up
+64:#3 0xf012d014 in vn_open ()
+65:(kgdb)up
+66:#4 0xf012a183 in open ()
+67:(kgdb)up
+68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
+69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
+70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
+71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
+72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
+73:673 error = (*callp->sy_call)(p, args, rval);
+74:(kgdb)up
+75:Initial frame selected; you cannot go up.
+76:(kgdb)quit
+77:&prompt.root; exit
+78:exit
+79:
+80:Script done on Fri Dec 30 23:18:04 1994
+
+
+ Комментарии к вышеприведенному журналу:
+
+
+
+ строка 6:
+
+
+ Это дамп, взятый при помощи DDB (смотри ниже), поэтому
+ комментарий к аварийному останову имеет именно вид because
+ you said to! и трассировка стека глубока; однако
+ изначальной причиной перехода в DDB была аварийная остановка при
+ возникновению ошибки страницы памяти.
+
+
+
+
+ строка 20:
+
+
+ Это местонахождение функции trap() в
+ трассировке стека.
+
+
+
+
+ строка 36:
+
+
+ Принудительное использование новой границы стека; теперь это
+ не нужно. Теперь предполагается, что границы стека указывают на
+ правое расположение, даже в случае аварийного останова. (У меня
+ нет под рукой новый аварийный дамп <g>, с моим ядром
+ аварийная ситуация не случалась давно.) Глядя на строку
+ исходного кода 403, можно сказать, что весьма вероятно, что либо
+ виноват доступ по указателю tp, либо был выход за
+ границы массива.
+
+
+
+
+ строка 52:
+
+
+ Похоже, что виноват указатель, но он является допустимым
+ адресом.
+
+
+
+
+ строка 56:
+
+
+ Однако, очевидно, что он указывает на мусор, так что мы нашли
+ нашу ошибку! (Для тех, кто не знаком с этой частью кода:
+ tp->t_line служит для хранения режима
+ канала консольного устройства, и это должно быть достаточно
+ маленькое целое число.)
+
+
+
+
+
+
+ Отладка аварийного дампа с помощью DDD
+
+ Возможно также и исследование аварийного дампа ядра при помощи
+ такого графического отладчика, как ddd. Добавьте
+ флаг к командной строке ddd,
+ которую вы обычно используете для его вызова. Например;
+
+
+&prompt.root; ddd -k /var/crash/kernel.0 /var/crash/vmcore.0
+
+
+ После этого у вас должно получиться исследование аварийного дампа
+ при помощи графического интерфейса ddd.
+
+
+
+ Посмертный анализ дампа
+
+ Что делать, если ядро аварийно завершает работу, хотя этого вы не
+ хотели и поэтому командой config -g его не
+ компилировали? Здесь не все еще потеряно. Не паникуйте!
+
+ Конечно, вам нужно включить создание аварийных дампов. Смотрите
+ выше, что вы должны для этого сделать.
+
+ Перейдите в каталог конфигурации ядра
+ (/usr/src/sys/arch/conf)
+ и отредактируйте ваш конфигурационный файл. Раскомментируйте (или
+ добавьте, если она не существует) такую строку
+
+
+makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
+
+
+ Перестройте ядро. Из-за изменения метки времени в Makefile будут
+ перестроены некоторые другие объектные файлы, например,
+ trap.o. К некоторому счастью, добавление опции
+ не изменит все и вся в генерируемом коде, так что
+ в конце концов вы получите новое ядро с тем же кодом, что и сбоящее
+ ядро, за исключением наличия отладочной информации. По крайней мере,
+ вы можете сравнить старый и новый размеры ядер командой &man.size.1;.
+ Если они не совпадают, то вам придется отказаться от вашей
+ затеи.
+
+ Исследуйте дамп так, как это описано выше. Отладочной информации
+ может не хватать в некоторых местах, как это можно видеть в трассировке
+ стека примера выше, когда некоторые функции выводятся без номеров строк
+ и списка аргументов. Если вам нужно больше отладочной информации,
+ удалите соответствующие объектные файлы и повторите сеанс работы с
+ kgdb, пока не получите достаточно подробную
+ информацию.
+
+ Не гарантируется, что все это будет работать, однако в большинстве
+ случаев все работает прекрасно.
+
+
+
+ Отладка ядра в режиме реального времени с помощью DDB
+
+ Хотя kgdb является отладчиком не реального
+ времени с высокоуровневым пользовательским интерфейсом, есть несколько
+ вещей, которые он сделать не сможет. Самыми важными из них являются
+ точки останова и пошаговое выполнение кода ядра.
+
+ Если вам нужно выполнять низкоуровневую отладку вашего ядра, то на
+ этот случай имеется отладчик реального времени, который называется DDB.
+ Он позволяет устанавливать точки останова, выполнять функции ядра по
+ шагам, исследовать и изменять переменные ядра и прочее. Однако он не
+ может использовать исходные тексты ядра и имеет доступ только к
+ глобальным и статическим символам, а не ко всей отладочной информации,
+ как kgdb.
+
+ Чтобы отконфигурировать ваше ядро для включения DDB, добавьте
+ строчку с параметром
+
+
+options DDB
+
+
+ в ваш конфигурационный файл, и перестройте ядро. (Обратитесь к разделу
+ о конфигурации ядра для выяснения
+ деталей конфигурации ядра FreeBSD.
+
+
+ Заметьте, что, если у вас устаревшая версия загрузочных блоков,
+ то отладочная информация может оказаться не загруженной. Обновите
+ блоки загрузки; самые новые загружают символы для DDB
+ автоматически.)
+
+
+ После того, как ядро с DDB запущено, есть несколько способов войти
+ в DDB. Первый, и самый простой, способ заключается в наборе флага
+ загрузки прямо в приглашении загрузчика. Ядро
+ будет запущено в режиме отладки и войдет в DDB до выполнения процедуры
+ распознавания каких бы то ни было устройств. Поэтому вы можете
+ выполнить отладку даже функций распознавания/присоединения
+ устройств.
+
+ Второй способ - это особая комбинация клавиш на клавиатуре, как
+ правило, Ctrl-Alt-ESC. Для системной консоли syscon это может быть
+ переопределено; некоторые из поставляемых раскладок это выполняют, так
+ что присмотритесь. Для последовательных консолей имеется параметр,
+ позволяющий использовать последовательность BREAK на канале консоли для
+ входа в DDB (options BREAK_TO_DEBUGGER в
+ конфигурационном файле ядра). По умолчанию этого не делается, так как
+ существует множество паршивых последовательных адаптеров, которые
+ генерируют последовательность BREAK, к примеру, при вытягивании
+ кабеля.
+
+ Третий способ заключается во входе в DDB при возникновении
+ любой аварийной ситуации, если ядро его использует. По этой причине
+ не очень умно конфигурировать ядро с DDB для машины, которая работает
+ без присмотра.
+
+ Команды DDB примерно повторяют некоторые команды
+ gdb. Первым делом вам, наверное, нужно задать точку
+ останова:
+
+
+b function-name
+b address
+
+
+ Значения по умолчанию воспринимаются в шестнадцатиричном виде, но
+ чтобы отличать их от имен символов; шестнадцатиричные числа,
+ начинающиеся с букв a-f, должны предваряться
+ символами 0x (это опционально для других чисел).
+ Разрешены простые выражения, например:
+ function-name + 0x103.
+
+ Чтобы продолжить работу прерванного ядра, просто наберите:
+
+ c
+
+ Чтобы получить трассировку стека, задайте:
+
+ trace
+
+
+ Заметьте, что при входе в DDB по специальной комбинации, ядро
+ в данный момент обслуживает прерывание, так что трассировка стека
+ может не дать много информации.
+
+
+ Если вы хотите убрать точку останова, введите
+
+
+del
+del address-expression
+
+
+ В первом варианте команда будет исполнена сразу же по достижении
+ точки останова, а текущая точка останова будет удалена. Во второй
+ форме можно удалить любую точку останова, однако вам нужно будет
+ указать ее точный адрес; его можно получить из:
+
+ show b
+
+ Чтобы выполнить один шаг ядра, попробуйте:
+
+ s
+
+ При этом будет осуществляться пошаговое выполнение функций, однако
+ вы можете трассировать их с помощью DDB, пока не будет достигнуто
+ соответствие возвращаемому значению:
+
+ n
+
+
+ Это отличается от команды next отладчика
+ gdb; это похоже на команду gdb
+ finish.
+
+
+ Чтобы выводить значения в памяти, используйте, (к примеру):
+
+
+x/wx 0xf0133fe0,40
+x/hd db_symtab_space
+x/bc termbuf,10
+x/s stringbuf
+
+
+ для доступа к данным типа слово/полуслово/байт и вывода в
+ шестнадцатиричном/десятичном/символьном виде. Число после запятой
+ означает счетчик объектов. Чтобы вывести следующие 0x10 объектов,
+ просто укажите:
+
+ x ,10
+
+ Подобным же образом используйте
+
+ x/ia foofunc,10
+
+ для дизассемблирования и вывода первых 0x10 инструкций функции
+ foofunc вместе с их адресом относительно
+ начала foofunc.
+
+ Чтобы изменить значения в памяти, используйте команду write:
+
+
+w/b termbuf 0xa 0xb 0
+w/w 0xf0010030 0 0
+
+
+ Модификатор команды
+ (b/h/w)
+ указывает на размер записываемых данных, первое следующее за ним
+ выражение является адресом для записи, а оставшаяся часть
+ интерпретируется как данные для записи в доступные области
+ памяти.
+
+ Если вам нужно узнать текущее содержимое регистров,
+ используйте:
+
+ show reg
+
+ Альтернативно вы можете вывести содержимое одного регистра по
+ команде, скажем,
+
+ p $eax
+
+ и изменить его по:
+
+ set $eax new-value
+
+ Если вам нужно вызвать некоторую функцию ядра из DDB, просто
+ укажите:
+
+ call func(arg1, arg2, ...)
+
+ Будет выведено возвращаемое значение.
+
+ Для вывода суммарной статистики по всем работающим процессам в
+ стиле команды &man.ps.1; воспользуйтесь такой командой:
+
+ ps
+
+ Теперь вы узнали, почему ядро работает с ошибками и хотите
+ выполнить перезагрузку. Запомните, что в зависимости от влияния
+ предыдущих ошибок, не все части ядра могут работать так, как ожидается.
+ Выполните одно из следующих действий для закрытия и перезагрузки вашей
+ системы:
+
+ panic
+
+ Это приведет к созданию дампа ядра и перезагрузке, так что позже
+ вы можете проанализировать дамп на более высоком уровне при помощи
+ kgdb. Как правило, эта команда должна следовать за другой командой
+ continue.
+
+ call boot(0)
+
+ Это может оказаться хорошим способом для корректного закрытия
+ работающей системы, sync() для всех дисков и
+ напоследок перезагрузка. Пока интерфейсы диска и файловой системы
+ в ядре не повреждены, это может быть самым правильным способом закрытия
+ системы.
+
+ call cpu_reset()
+
+ самый последнее средство при аварии и практически то же самое, что
+ нажатие Большой Красной Кнопки.
+
+ Если вам нужен краткий справочник по командам, просто
+ наберите:
+
+ help
+
+ Однако настоятельно рекомендуем отпечатать копию страницы
+ справочника по &man.ddb.4; при подготовке к сеансу отладки. Помните,
+ что трудно читать онлайновое руководство при пошаговом выполнении
+ ядра.
+
+
+
+ Отладка ядра в режиме реального времени при помощи удаленного
+ GDB
+
+ Эта возможность поддерживается во FreeBSD начиная с версии 2.2,
+ и она на самом деле очень удобна.
+
+ В GDB уже давно имеется поддержка удаленной
+ отладки. Это делается при помощи весьма простого протокола
+ по последовательному каналу. В отличие от других методов, описанных
+ выше, для этого вам требуется наличие двух машин. Одна из них является
+ хостом, предоставляющим ресурсы для отладки, включая все исходные
+ тексты и копию ядра со всеми символами в нем, а другая является целевой
+ машиной, на которой запущена та же копия того же ядра (но без
+ отладочной информации).
+
+ Вы должны настроить исследуемое ядро при помощи команды
+ config -g, включить в
+ конфигурацию и откомпилировать его обычным образом. Это даст большой
+ объем получаемого бинарного файла из-за отладочной информации.
+ Скопируйте это ядро на целевую машину, усеките отладочную информацию
+ командой strip -x и загрузите это ядро с
+ использованием параметра загрузки . Подключите
+ последовательный канал целевой машины, имеющий установленные флаги
+ "flags 080" на соответствующем устройстве sio к любому
+ последовательному каналу отладочного хоста. А теперь на отладочной
+ машине перейдите в каталог компиляции целевого ядра и запустите
+ gdb:
+
+
+&prompt.user; gdb -k kernel
+GDB is free software and you are welcome to distribute copies of it
+ under certain conditions; type "show copying" to see the conditions.
+There is absolutely no warranty for GDB; type "show warranty" for details.
+GDB 4.16 (i386-unknown-freebsd),
+Copyright 1996 Free Software Foundation, Inc...
+(kgdb)
+
+
+ Проинициализируйте сеанс удаленной отладки (предполагается, что
+ используется первый последовательный порт) такой командой:
+
+
+(kgdb)target remote /dev/cuaa0
+
+
+ Теперь на целевом хосте (тот, который перешел в DDB даже до
+ начала процесса обнаружения устройств) наберите:
+
+
+Debugger("Boot flags requested debugger")
+Stopped at Debugger+0x35: movb $0, edata+0x51bc
+db>gdb
+
+
+ DDB ответит следующим:
+
+ Next trap will enter GDB remote protocol mode
+
+ Каждый раз, когда вы будете набирать gdb, режим
+ будет меняться между удаленным GDB и локальным DDB. Чтобы немедленно
+ вызвать следующее прерывание, просто наберите s
+ (step). Ваш хостирующий GDB получит управление над целевым
+ ядром:
+
+
+Remote debugging using /dev/cuaa0
+Debugger (msg=0xf01b0383 "Boot flags requested debugger")
+ at ../../i386/i386/db_interface.c:257
+(kgdb)
+
+
+ Вы можете работать в этом сеансе точно также, как и в любом другом
+ сеансе GDB, включая полный доступ к исходным текстам, запуск его в
+ режиме gud-mode внутри окна Emacs (что дает вам автоматический вывод
+ исходного кода в другом окне Emacs) и тому подобное.
+
+ Удаленный GDB также может использоваться для отладки модулей LKM.
+ Сначала откомпилируйте LKM с отладочной информацией:
+
+
+&prompt.root; cd /usr/src/lkm/linux
+&prompt.root; make clean; make COPTS=-g
+
+
+ Затем установите эту версию модуля на целевой машине, загрузите его
+ и воспользуйтесь командой modstat для определения
+ того, куда он был загружен:
+
+
+&prompt.root; linux
+&prompt.root; modstat
+Type Id Off Loadaddr Size Info Rev Module Name
+EXEC 0 4 f5109000 001c f510f010 1 linux_mod
+
+
+ Возьмите адрес загрузки модуля и добавьте к нему 0x20 (для размера
+ заголовка a.out). Получится адрес, куда был перемещен код модуля.
+ Воспользуйтесь командой add-symbol-file в GDB для
+ указания отладчику на модуль:
+
+
+(kgdb)add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020
+add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
+text_addr = 0xf5109020? (y or n) y
+(kgdb)
+
+
+ Теперь вы имеете доступ ко всем символам в LKM.
+
+
+
+ Отладка драйвера консоли
+
+ Так как для работы DDB вам требуется драйвер консоли, то в случае
+ неисправностей самого драйвера консоли все становится гораздо сложнее.
+ Вы можете вспомнить об использовании последовательной консоли (либо с
+ исправленными загрузочными блоками, либо при указании флага
+ в приглашении Boot:) и подключить
+ обычный терминал к первому последовательному порту. DDB работает с
+ любым отконфигурированным драйвером консоли, в том числе, конечно же,
+ и с последовательной консолью.
+
+
+
+
diff --git a/ru_RU.KOI8-R/books/handbook/kernelopts/chapter.sgml b/ru_RU.KOI8-R/books/handbook/kernelopts/chapter.sgml
new file mode 100644
index 0000000000..8f2ea2e584
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/kernelopts/chapter.sgml
@@ -0,0 +1,177 @@
+
+
+
+ Добавление новых параметров конфигурации ядра
+
+ Предоставил &a.joerg;
+
+
+ Перед тем, как читать этот раздел, вы должны усвоить материал
+ раздела о конфигурации ядра.
+
+
+
+ Что же такое параметр ядра, в конце
+ концов?
+
+ Использование параметров ядра в основном описано в разделе о конфигурации ядра. Там же
+ имеется описание устаревших и параметров в новом
+ стиле. Конечной целью является постепенный перевод всех
+ поддерживаемых параметров ядра к новому стилю, так чтобы для тех, кто
+ корректно выполняют команду make depend в каталоге
+ компиляции ядра после запуска &man.config.8;, процесс построения
+ автоматически принимал модифицированные параметры и
+ перекомпилировал только те файлы, которые необходимы. Удаление старого
+ каталога компиляции при каждом перезапуске &man.config.8;, как это
+ еще происходит сейчас, затем может быть убрано.
+
+ В своей основе параметр ядра является не более чем определение
+ макроса препроцессора C для процесса компиляции ядра. Чтобы сделать
+ построение полностью настраиваемым через опции процессом,
+ соответствующая часть исходных текстов ядра (или файла
+ .h ядра) должна быть написана с упором на
+ концепцию параметров, то есть чтобы значения, используемые по
+ умолчанию, могли быть переопределены параметрами конфигурации. Это
+ обычно делается примерно так:
+
+
+#ifndef THIS_OPTION
+#define THIS_OPTION (некоторое значение по умолчанию)
+#endif /* THIS_OPTION */
+
+
+ Этим способом администратор, задающий другое значение для параметра
+ в своем конфигурационном файле, избегает использования значения по
+ умолчанию и заменяет его новым значением. Более того, новое значение
+ будет подставлено в исходный код во время работы препроцессора, так что
+ это должно быть правильное выражение языка C в контексте использования
+ значения по умолчанию.
+
+ Также возможно создание параметров, которые не принимают
+ определенного значения, а просто включают или выключают некоторую часть
+ кода, обрамляя его в
+
+
+#ifdef THAT_OPTION
+
+[здесь ваш код]
+
+#endif
+
+
+ Простое упоминание THAT_OPTION в
+ конфигурационном файле (со значением или без него) приведет к включению
+ соответствующего кода.
+
+ Те, кто знаком с языком C, могут сказать, что все может считаться
+ как config option, там где есть по крайней мере одна
+ строчка #ifdef... Однако вряд ли многие будут
+ писать
+
+
+options notyet,notdef
+
+
+ в своих конфигурационных файлах и потом удивляться, почему
+ компиляция ядра не проходит. :-)
+
+ Более точно, использование уникальных имен для параметров делает
+ очень трудным отслеживание их использования в дереве исходных текстов
+ ядра. В использовании схемы параметров в новом
+ стиле имеется рациональное зерно, когда каждый параметр
+ помещается в отдельный файл .h в каталоге
+ компиляции ядра, который по соглашению называется
+ opt_foo.h. Таким
+ образом, могут быть применены обычные зависимости в Makefile, и утилита
+ make может определить, что нужно перекомпилировать
+ при изменении определенного параметра.
+
+ Параметры при использовании механизма в старом стиле имеют одно
+ преимущество для локальных изменений или для экспериментальных
+ параметров, которые имеют короткий срок жизни: так как весьма легко
+ добавить новую строку #ifdef к исходному коду ядра,
+ то это уже превращается в параметр конфигурации ядра. В таком случае
+ администратор, использующий параметры таким образом, несет
+ ответственность за знание влияния этого параметра (и может быть, за
+ принудительную перекомпиляцию вручную частей ядра). Как только перевод
+ всех поддерживаемых опций будет сделан, программа &man.config.8; будет
+ выдавать предупреждение о не поддерживаемой опции, появившейся в
+ конфигурационном файле, однако она будет включать ее в файл Makefile
+ ядра.
+
+
+
+ И что я должен для этого сделать?
+
+ Во-первых, отредактируйте файл
+ sys/conf/options (или
+ sys/<arch>/conf/options.<arch>,
+ например sys/i386/conf/options.i386), и выберите
+ файл opt_foo.h,
+ в котором лучше всего поместить вашу новую опцию.
+
+ Если имеется что-то, уже похожее на предназначение новой опции,
+ выберите это. Например, опции, изменяющие общее поведение подсистемы
+ SCSI, могут быть помещены в
+ opt_scsi.h. По умолчанию простое упоминание опции
+ в соответствующем файле опций, скажем, FOO, приводит
+ к тому, что ее значение помещается в соответствующий файл
+ opt_foo.h. Это может быть переопределено в
+ правой части правила указанием другого имени файла.
+
+ Если файла
+ opt_foo.h для
+ предполагаемой новой опции еще нет, придумайте новое имя. Сделайте его
+ значимым и прокомментируйте новый раздел в файле
+ options[.<arch>].
+ Утилита &man.config.8; автоматически воспримет изменения и создаст
+ этот файл при следующем своем запуске. Большинство опций должно
+ оказаться в заголовочном файле..
+
+ Размещение слишком большого количества опций в одном файле
+ opt_foo.h приведет к
+ перестроению слишком большого количества файлов ядра при изменении
+ одной из опций в конфигурационном файле.
+
+ Наконец, определите, какие файлы ядра зависят от новой опции. Если
+ только вы не только что придумали вашу опцию и она еще нигде не
+ упоминается, то команда
+
+&prompt.user; find /usr/src/sys -type f | xargs fgrep NEW_OPTION
+
+ вам поможет ее найти. Сделайте это и отредактируйте все эти файлы, а
+ также добавьте #include "opt_foo.h"
+ вверху до всех строк
+ #include <xxx.h>. Эта последовательность
+ очень важна, так как опции могут переопределять значения по умолчанию
+ из обычных включаемых файлов, если эти значения по умолчанию даются в
+ форме #ifndef NEW_OPTION #define NEW_OPTION (что-то)
+ #endif в обычном заголовке.
+
+ Добавление опции, которая переопределяет что-то в системном
+ заголовочном файле (то есть файле, находящемся в каталоге
+ /usr/include/sys/), практически всегда ошибочно.
+ opt_foo.h не может быть
+ включен в те файлы, потому что это изменит заголовки более серьезно,
+ но если он не включен, то в местах его включения может получиться
+ рассогласованность значений для этой опции. Да, такие прецеденты имеют
+ место и сейчас, но это их не оправдывает.
+
+
+
+
\ No newline at end of file
diff --git a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
index e4a39b38c5..fb41c9163b 100644
--- a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
@@ -1,739 +1,739 @@
Работа с приложениями, написанными для Linux
- Реструктурировано, и частично дополнено &a.jim;, 22 марта
+ Реструктурировал и частично дополнил &a.jim;, 22 марта
2000. Оригинальная версия &a.handy; и &a.rich;Краткий обзорВ этой главе будет рассказано о том, каким образом можно запускать
приложения, изначально написанные для Linux, под FreeBSD и что нужно
для этого сделать.Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
с приложениями, написанными для Linux. Ответ на этот вопрос достаточно
прост: многие компании и разработчики производят программное
обеспечение только для Linux, так как эта операционная система очень
быстро завоевала огромную популярность в компьютерном мире.
Пользователям же FreeBSD приходится обращаться к этим компаниям и
разработчикам с просьбами выпустить версии своих программ специально
для FreeBSD. Проблема в том, что большинство производителей
программного обеспечения не осознают, насколько бы увеличился их рынок
сбыта, выпускай они FreeBSD версии наряду с Linux версиями, и
продолжают разрабатывать только под Linux. Что же делать
пользователям FreeBSD? В этой ситуации на помощь приходит Linux
эмуляция.Вкратце, FreeBSD позволяет Вам работать с 90% приложений для
Linux без каких-либо модификаций последних. Среди них: Star Office,
Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare,
Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что
в некоторых ситуациях эти Linux программы показывали более высокую
производительность при работе под FreeBSD, чем под Linux.Конечно, существует некоторые особенности Linux, которые (пока) не
поддерживаются в полной мере FreeBSD. Например, так обстоят дела с
приложениями Linux, использующими файловую систему
/proc, так как реализация последней сильно
отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему:
в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему).
Существуют также системные вызовы, специфичные для i386, как,
например, переключение в режим V86.О том, как установить поддержку запуска Linux программ, читайте в
следующей секции.ИнсталляцияНачиная с 3.0-RELEASE, больше нет необходимости указывать
options LINUX или options
COMPAT_LINUX в Вашем файле конфигурации ядра.Поддержка Linux приложений осуществляется посредством специального
модуля ядра (KLD объекта, Kernel LoaDable object), то
есть его можно загрузить/выгрузить на лету, без
необходимости перезагрузки. Вам потребуется убедиться в наличии
следующей строки в файле /etc/rc.conf:linux_enable=YESЭто, в свою очередь, повлияет на выполнение следующего кода в
файле /etc/rc.i386:
# Start the Linux binary compatibility if requested.
#
case ${linux_enable} in
[Yy][Ee][Ss])
echo -n ' linux'; linux > /dev/null 2>&1
;;
esacЕсли Вы хотите проверить, загружен ли модуль, это можно сделать
при помощи команды kldstat:&prompt.user; kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.koЕсли по какой-либо причине Вы не хотите или не можете загрузить
KLD, то Вы можете статически включить поддержку Linux в ядро
посредством опции options LINUX в файле
конфигурации ядра. Затем соберите и проинсталлируйте новое ядро,
следуя описанию в секции, посвященной конфигурации ядра.Установка необходимых Linux библиотекУстановить все требуемые библиотеки можно двумя путями: либо
используя порт linux_base,
либо установив их вручную.Установка с помощью порта linux_baseЭтот метод является самым простым, и мы рекомендуем
воспользоваться именно им. Процесс аналогичен установке любого
другого порта из коллекции портов.
Просто выполните следующие команды:&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make install distcleanТеперь Вы можете работать с приложениями для Linux. Некоторые
программы, возможно, будут сообщать о несоответствии подверсий
некоторых системных библиотек. Однако, практически, это не
вызывает каких-либо неудобств.Установка библиотек вручнуюЕсли у Вас нет установленной коллекции портов, то можно
установить требуемые библиотеки вручную Вам понадобятся
разделяемые библиотеки для Linux, которые нужны программам, и
runtime-компоновщик. Вам также потребуется создать теневой
корень: директорию /compat/linux, где
будут расположены Linux библиотеки. Если нужно загрузить
какую-либо разделяемую библиотеку, FreeBSD сперва будет пытаться
найти ее в этом дереве. Так, если программа загружает, например,
/lib/libc.so, FreeBSD попытается открыть
/compat/linux/lib/libc.so, и если такого
файла не существует, будет пытаться открыть
/lib/libc.so. Разделяемые библиотеки должны
находиться в теневом дереве, а не в пути, сообщаемым командой
Linux ld.so.По мере работы с различными Linux программами, у Вас будет
накапливаться некий базовый набор библиотек, которого будет
достаточно для большинства существующих Linux приложений.Как установить дополнительные разделяемые библиотекиЧто, если при установленном linux_base
порте Ваше приложение все равно сообщает об отсутствии необходимой
библиотеки? Как узнать, какая именно нужна библиотека и где ее
взять? В принципе, есть два способа. Вам необходимо иметь
привилегии суперпользователя для их осуществления.Если у Вас есть доступ к машине, на которой установлен Linux,
узнайте, какие библиотеки использует Linux приложение, и просто
скопируйте из на свою машину. Например:Допустим, Вы скачали по FTP Linux версию Doom'а (на Linux
машине). Вы можете узнать, какие разделяемые библиотеки нужны
Doom'у при помощи команды ldd linuxdoom:&prompt.user; ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29Вам потребуются все файлы, перечисленные в последней
колонке. Скопируйте их в директорию
/compat/linux на Вашей системе, а также
создайте символические ссылки на эти файлы, с именами ссылок из
первой колонки соответственно. В итоге у Вас на машине должны
быть следующие файлы:/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Заметьте, что если у Вас уже есть какая-либо из
перечисленных библиотек, то ее не нужно копировать заново.
Однако, у Вас может быть более старая версия. В этом
случае, лучше все-таки скопировать библиотеку поздней
версии, изменив соответственно ссылку на нее. Предыдущую
версию библиотеки можно удалить. Например, пусть у Вас есть
следующие библиотеки:/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27и какое-либо приложение требует библиотеку более поздней
версии, судя по команде ldd:libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Если подверсии немного отличаются, копировать
/lib/libc.so.4.6.29 необязательно, так
как программа, скорее всего, будет нормально работать и с
устаревшей версией. Тем не менее, Вы можете заменить
libc.so:/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Символические ссылки важны только
для Linux программ. Runtime-компоновщик FreeBSD
самостоятельно подберет правильные номера версий библиотек,
и Вам не нужно об этом беспокоиться.
Настройка Linux ELF-исполняемых файловДля ELF-программ иногда требуется сделать так называемый
branding. Если при попытке запустить ELF-файл, Вы
получаете следующее сообщение об ошибке:&prompt.user; ./linux-elf-программа
ELF binary type not known
Abortто нужно изменить тип исполняемого файла, чтобы ядро FreeBSD
правильно определило, что это Linux программа. Это можно сделать
при помощи утилиты &man.brandelf.1;:&prompt.user; brandelf -t Linux linux-elf-программаСледует отметить, что программы, для которых необходим
branding, встречаются все реже и реже, и в недалеком
будущем Вы вряд ли прибегнете к нему вообще.Распознавание доменных именЕсли DNS не настроен или недоступен, или Вы получаете это
сообщение:resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keywordто Вам нужно создать (модифицировать) файл
/compat/linux/etc/host.conf, содержащий:
order hosts, bind
multi onТаким образом, Вы указываете, то сначала производится поиск в
файле /etc/hosts, а только затем запрашивается
DNS. Когда файл /compat/linux/etc/host.conf
отсутствует, Linux приложения находят файл
/etc/host.conf для FreeBSD и сообщают о
несовместимом синтаксисе. Если Вы не настраивали сервер имен
(/etc/resolv.conf), уберите
bind из файла
/compat/linux/etc/host.conf.Установка пакета MathematicaОбновлено для Mathematica версии 4.0 Murray Stokely
murray@cdrom.com и объединено с работой Bojan
Bistrovic bojanb@physics.odu.edu.Ниже описано, как установить Linux версию пакета Mathematica 4.0
на FreeBSD систему.Linux версия Mathematica отлично работает под FreeBSD, однако
исполняемые файлы должны быть модифицированы утилитой
&man.brandelf.1;.Linux версия пакета Mathematica или Mathematica для Студентов
может быть заказана непосредственно через Wolfram по адресу http://www.wolfram.com/.Модификация исполняемых файловИсполняемые файлы пакета Mathematica находятся в директории
Unix на компакт диске с дистрибутивом.
Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш
жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;)
исполняемые файлы перед инсталляцией:&prompt.root; mount /cdrom
&prompt.root; cp -rp /cdrom/Unix/ /localdir/
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*
&prompt.root; cd /localdir/Installers/Linux/
&prompt.root; ./MathInstallerПароль к пакету MathematicaВам необходимо зарегистрировать свою копию пакета Mathematica и
получить от Wolfram специальный пароль, соответствующий
идентификатор машины.После того, как Вы установили необходимые библиотеки и
распаковали файлы Mathematica, получите идентификатор
машины, запустив программу mathinfo в
инсталляционной директории. Идентификатор машины зависит от
MAC-адреса Вашей первой ethernet-карточки.&prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux
&prompt.root; mathinfo
disco.example.com 7115-70839-20412При регистрации, либо по телефону или факсу, либо по
электронной почте, Вы сообщаете Ваш идентификатор
машины, а в ответ получаете пароль, состоящий из нескольких
чисел. Введите этот пароль при первом запуске Mathematica.Внешний интерфейс пакета MathematicaMathematica использует специальные шрифты для отображения
некоторых символов, которые отсутствуют в стандартных шрифтах
(символы интегралов, сумм, греческий алфавит и другие). Протокол X
требует, чтобы эти шрифты были установлены
локально. Это означает, что Вы должны
скопировать эти шрифты с компакт диска или сетевого узла на Ваш
жесткий диск. Обычно, все шрифты должны находиться в каталоге
/cdrom/Unix/Files/SystemFiles/Fonts компакт
диска или
/usr/local/mathematica/SystemFiles/Fonts на
винчестере. Собственно файлы со шрифтами находятся в подкаталогах
Type1 и X. О том, как их
использовать, читайте ниже.Можно просто скопировать их в один из существующих подкаталогов
в директории /usr/X11R6/lib/X11/fonts. В этом
случае, Вам потребуется отредактировать файл
fonts.dir, добавив в него названия шрифтов и
изменив число шрифтов в первой строке. Или Вы можете запустить
программу mkfontdir, находясь в том каталоге,
куда Вы скопировали шрифты.Есть альтернативный способ: скопировать директории в каталог
/usr/X11R6/lib/X11/fonts:&prompt.root; cd /usr/X11R6/lib/X11/fonts
&prompt.root; mkdir X
&prompt.root; mkdir MathType1
&prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts
&prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X
&prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; cd /usr/X11R6/lib/X11/fonts/X
&prompt.root; mkfontdir
&prompt.root; cd ../MathType1
&prompt.root; mkfontdirТеперь добавьте каталоги с новыми шрифтами в путь к
шрифтам:&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X
&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; xset fp rehashЕсли Вы используете XFree86, то можно просто прописать эти
каталоги в файле XF86Config.Если на Вашем компьютере нет каталога
/usr/X11R6/lib/X11/fonts/Type1, то замените
MathType1 на Type1 в
предыдущем примере.Установка OracleАвтор Marcel Moolenaar
marcel@cup.hp.comВведениеНиже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1
Enterprise Edition для Linux на систему с FreeBSD.Настройка Linux окруженияУдостоверьтесь, что порты linux_base и
linux_devtools установлены на Вашей системе.
Они появились в коллекции портов после выхода FreeBSD 3.2. Если Вы
используете FreeBSD 3.2 или более раннюю, обновите коллекцию портов.
Нелишним будет и апгрейд до более поздней версии FreeBSD. Если у
Вас возникнут трудности с linux_base-6.1 или
linux_devtools-6.1, воспользуйтесь версией 5.2
этих пакетов.Если Вы хотите использовать intelligent agent, Вам также
понадобится TCL пакет от Red Hat:
tcl-8.0.3-20.i386.rpm. Для этого
воспользуйтесь следующей командой:&prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm packageУстановка этого пакета должна пройти без каких-либо ошибок.Настройка окружения OracleПрежде чем Вы сможете установить Oracle, Вам необходимо
обеспечить нужное окружение. Ниже описывается, что
конкретно нужно сделать, чтобы успешно запускать
Oracle для Linux под FreeBSD. За общими сведениями обратитесь к
фирменному руководству по инсталляции Oracle.Настройка ядраКак описывается в руководстве по инсталляции, необходимо
установить максимальный размер разделяемой памяти. Не используйте
SHMMAX под FreeBSD. SHMMAX
высчитывается, исходя из SHMMAXPGS и
PGSIZE. Следовательно, нужно задавать
SHMMAXPGS. За информацией о прочих опциях
обратитесь к фирменному руководству:options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61Установите эти опции в зависимости от того, как и для чего
Вы будете использовать Oracle.Не забудьте добавить следующие строки в файл конфигурации
ядра:options SYSVSHM # разделяемая память SysV
options SYSVSEM # семафоры SysV
options SYSVMSG # межпроцессное взаимодействие SysVOracle аккаунтВам нужно создать специальный Oracle аккаунт, как и любой
другой аккаунт. Единственное отличие в том, что Вы должны указать
для него командный интерпретатор Linux:
/compat/linux/bin/bash. Не забудьте добавить
/compat/linux/bin/bash в файл
/etc/shells.Переменные окруженияКроме стандартных переменных окружения, таких как
ORACLE_HOME и ORACLE_SID, Вам нужно
будет установить следующие дополнительные переменные:ПеременнаяЗначениеLD_LIBRARY_PATH$ORACLE_HOME/libCLASSPATH$ORACLE_HOME/jdbc/lib/classes111.zipPATH/compat/linux/bin
/compat/linux/sbin
/compat/linux/usr/bin
/compat/linux/usr/sbin
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
$ORACLE_HOME/binЖелательно устанавливать их в файле
.profile. Вот реальный пример:ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin
export PATHИнсталляция OracleИз-за небольшой несовместимости с Linux эмулятором, Вам нужно
будет создать подкаталог .oracle в директории
/var/tmp прежде чем можно будет начать
инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо
поставьте права на запись для всех. Если Вы все сделали правильно,
то инсталляция должна пройти без проблем. Если какие-либо трудности
все же возникли, проверьте еще раз все конфигурационные файлы и
целостность дистрибутива. После окончания установки, приложите
патчи (смотрите следующие две секции).Одна из часто возникающих проблем — неправильно
установленный TCP адаптер. В результате, невозможно запустить TCP
сервисы. Вот решение проблемы:&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk ntcontab.o
&prompt.root; cd $ORACLE_HOME/lib
&prompt.root; ar r libnetwork.a ntcontab.o
&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk installНе забудьте повторно запустить root.sh!Модификация root.shИнсталлируя Oracle, необходимо выполнить некоторые действия
(имея при этом привилегии суперпользователя). Фактически это
сводится к выполнению скрипта root.sh,
который находится в директории orainst.
Перед запуском, приложите к нему следующий патч (исправляет
местонахождение утилиты chown), либо запускайте его в командном
интерпретаторе Linux.*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this scriptЕсли Вы инсталлируете Oracle не с компакт диска, то можно
модифицировать файл rthd.sh, который
находится в директории orainst.Модификация genclntshСкрипт genclntsh используется для того, чтобы создать единую
разделяемую клиентскую библиотеку. Приложите следующий патч,
чтобы закомментировать определение переменной PATH:*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lstЗапуск и использование OracleТеперь, если Вы все сделали правильно, то можете использовать
Oracle так же, как если бы Вы поставили его на Linux систему.Дополнительные сведенияЕсли Вы интересуетесь, как работает Linux эмуляция, эта секция для
Вас. Большинство материала взято из электронного письма, адресованного
&a.chat; by Terry Lambert tlambert@primenet.com (ID
письма: <199906020108.SAA07001@usr09.primenet.com>).Как все это устроено?FreeBSD поддерживает абстракцию, называемую загрузчик
исполнимых классов, который фактически является первой
стадией системного вызова &man.execve.2;.На самом деле, FreeBSD имеет несколько загрузчиков вместо
одного, который, в случае неудачи, выполняет программу как
сценарий (скрипт).Исторически сложилось, что единственный загрузчик в UNIX
системах проверял магическое число (чаще всего первые
4 или 8 байт файла), чтобы определить, известен ли формат
исполняемого файла системе, и если да, то вызвал соответствующий
загрузчик.Если файл не опознавался системой как исполнимый, &man.execve.2;
возвращал ошибку, и текущий командный интерпретатор начинал
выполнять файл как скрипт.Позднее, &man.sh.1; был модифицирован, так, чтобы проверять
первые два символа в файле, и если они оказывались
:\n, то файл выполнялся как сценарий для
&man.csh.1; (утверждается, что SCO были первыми, кто сделал
эту модификацию).FreeBSD ведет себя по-другому: пробегает по списку загрузчиков,
включая специальный #! загрузчик, который
вызывает нужный интерпретатор или /bin/sh, если
не нашел подходящего.Формат исполняемого файла FreeBSD определяет по
магическому числу. На этой стадии пока не
различается, для какой операционной системы предназначен файл
(Linux, Solaris, или любой другой, использующей ELF-формат
исполняемых файлов).Далее, ELF-загрузчик определяет марку
(специальный комментарий; отсутствует в исполняемых файлах
SVR4/Solaris) исполняемого файла, то есть для какой операционной
системы он предназначен.Соответственно, Linux программы должны быть
маркированы для Linux (например, с
помощью утилиты &man.brandelf.1;):&prompt.root; brandelf -t Linux fileКогда ELF-загрузчик находит маркуLinux, он заменяет соответствующий указатель в
структуре proc. Все системные вызовы
индексируются через этот указатель (в традиционной UNIX системе, это
массив sysent[], содержащий системные вызовы).
Некоторые особые ситуации и системные вызовы обрабатываются
специальным модулем ядра поддержки Linux.Плюс ко всему, Linux эмулятор динамически изменяет
корень файловой системы при поиске файлов (фактически делая
то же самое, что и опция union при монтировании
файловых систем (не путать с unionfs!)). Сперва, файл ищется в
директории
/compat/linux/original-path
и только затем, в случае неудачи, в
/original-path. Это
дает возможность Linux программам выполнять FreeBSD команды, если не
найдется соответствующих Linux команд. Например, скопировав FreeBSD
&man.uname.1; в каталог /compat/linux/bin/,
можно заставить Linux программы сообщать, что они
запускаются под FreeBSD.На самом деле, ядра FreeBSD и Linux во многом похожи: системные
операции, виртуальная память, система сигналов и сообщений,
межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD
программы обращаются к системным вызовам FreeBSD, Linux программы
соответственно к системным вызовам Linux. Во многих операционных
системах прошлого адреса системных вызовов были
зашиты в статический глобальный массив
sysent[], вместо обращения по указателю в
структуре proc, который инициализируется
динамически, позволяя таким образом запускать программы, написанные
для разных операционных систем.В чем же разница между системными вызовами Linux и FreeBSD?
Фактически никакой. Единственное различие (на данный момент, в
будущем все может и, вероятно, изменится), пожалуй, в том, что
функции системных вызовов FreeBSD зашиты в ядро, а для Linux они
могут быть либо в ядре, либо в динамически загружаемом
модуле.Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор
(или симулятор) отсутствует. В таком случае, почему же тогда
говорят Linux эмуляция? Чтобы
насолить FreeBSD?! 8-). На самом
деле, это вопрос терминологии: не существовало слова, которое бы
точнее описывало этот процесс. Нельзя сказать, что FreeBSD
запускает приложения Linux (без перекомпиляции или загрузки
соответствующего модуля ядра). Тогда и придумали термин
Linux эмуляция.
diff --git a/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml b/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml
new file mode 100644
index 0000000000..d16fd451d7
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/mail/chapter.sgml
@@ -0,0 +1,473 @@
+
+
+
+ Электронная почта
+
+ Переписал &a.jim;, 2 декабря 1999 г. Оригинальная
+ версия: &a.wlloyd;.
+
+
+ Краткий обзор
+
+ Электронная почта является на сегодняшний день одним из самых
+ популярных средств связи. Миллионы людей используют ее каждый день, и
+ их число растет. И если Вы читаете этот текст, то, вероятно, тоже
+ пользуетесь услугами электронной почты, и у Вас даже не один почтовый
+ ящик.
+
+ Настройке электронной почты посвящено немало страниц многочисленных
+ системных руководств, так что у
+ Вас не должно возникнуть проблем с настройкой почтового сервера.
+
+ Возможно, при настройке сервера Вам понадобится также настроить
+ сервер доменных имен (Domain Name Server, DNS). В этом случае,
+ обязательно прочитайте файл /etc/namedb и
+ страницу руководства по команде &man.named.8;.
+
+
+
+ Использование электронной почты
+
+ За отправку/получение почты отвечают четыре программы (сервиса):
+ пользовательский почтовый клиент,
+ почтовый сервер (демон), сервер DNS, POP
+ или IMAP демон.
+
+
+ Пользовательский почтовый клиент
+
+ Обычно, это программа типа mutt,
+ pine, elm, и
+ mail, а также программы с графическим
+ интерфейсом, такие, как balsa или
+ xfmail, или интегрированные приложения
+ (например, какой-либо WWW браузер типа Netscape). Все эти программы
+ общаются с локальным почтовым
+ сервером, вызывая какой-либо демон, или напрямую по протоколу
+ TCP.
+
+
+
+ Почтовый демон
+
+ Обычно это sendmail (поставляется
+ вместе с FreeBSD), однако, им может быть любая из нижеперечисленных
+ программ: qmail,
+ postfix или
+ exim. Остальные менее
+ распространены.
+
+ Почтовый демон выполняет только две функции: принимает входящую
+ почту и отправляет исходящую. Чтобы забирать/отправлять почту по
+ протоколам POP или IMAP, нужен специальный дополнительный демон.
+
+ Имейте ввиду, что старые версии
+ sendmail имели серьезные проблемы с
+ безопасностью, поэтому старайтесь всегда использовать последнюю
+ версию. Это правило, кстати, справедливо в отношении практически
+ любых программных продуктов.
+
+
+
+ Email и DNS
+
+ Служба имен доменов (Domain Name System, DNS) и соответствующий
+ ей демон named играют важную роль в доставке
+ почты. DNS содержит базу данных соответствия между именем домена и
+ IP адресом, и между именем домена и почтовым сервером. IP адрес
+ задается в записи A. Запись MX (Mail eXchanger) указывает
+ компьютер, который обрабатывает корреспонденцию для данного домена.
+ Если для Вашего хоста запись MX отсутствует, почта будет
+ доставляться непосредственно на Ваш хост.
+
+
+
+ Получение почты
+
+ Полученную корреспонденцию почтовый сервер сохраняет для
+ последующего чтения. Вы можете читать почту непосредственно на
+ сервере, или забирать ее по протоколам POP или IMAP.
+
+ Чтобы настроить POP или IMAP сервер, нужно сделать две
+ вещи:
+
+
+
+ Поставить POP или IMAP сервер из коллекции портов.
+
+
+
+ Прописать в файле /etc/inetd.conf
+ POP или IMAP демон.
+
+
+
+
+
+
+ Поиск и устранение неисправностей
+
+ Вот несколько часто задаваемых вопросов и ответов на них, взятых,
+ в основном, из FAQ.
+
+
+
+
+ Почему я должен использовать FQDN для хостов вне моей подсети?
+
+
+
+ Вы, видимо, обнаружили, что хост, к которому Вы обратились,
+ оказался на самом деле в другом домене; например, если Вы
+ находитесь в домене foo.bar.edu и
+ хотите обратиться к хосту mumble в домене bar.edu, то должны указать его полное
+ доменное имя, mumble.bar.edu, а не
+ просто mumble.
+
+ Традиционно, ресолверы (распознаватели) BSD BIND позволяли это
+ делать. Однако, текущая версия BIND,
+ поставляемая с FreeBSD, больше не добавляет имена доменов,
+ отличающихся от того, в котором Вы находитесь, для не полностью
+ указанных имен хостов. То есть, имя mumble будет
+ опознан как mumble.foo.bar.edu или
+ будет искаться в корневом домене.
+
+ Это отличается от предыдущего поведения, при котором поиск
+ продолжался в доменах mumble.bar.edu и mumble.edu. Если Вам интересны причины
+ объявления такого поведения плохой практикой и даже ошибкой в
+ безопасности, обратитесь к RFC 1535.
+
+ Хорошим решением будет поместить строку
+
+
+search foo.bar.edu bar.edu
+
+ вместо ранее используемой:
+
+
+domain foo.bar.edu
+
+ в файл /etc/resolv.conf. Однако
+ удостоверьтесь, что порядок поиска не нарушает границ
+ полномочий между локальным и внешним администрирования, в
+ терминологии RFC 1535.
+
+
+
+
+
+ Sendmail выдает ошибку mail loops back to
+ myself
+
+
+
+ В FAQ по sendmail дан следующий ответ:
+
+
+* Выдаются сообщения Local configuration error, например:
+
+553 relay.domain.net config error: mail loops back to myself
+554 <user@domain.net>... Local configuration error
+
+Как можно решить эту проблему?
+
+Согласно записям MX, почта для домена domain.net перенаправляется на хост
+relay.domain.net, однако последний не распознается как
+domain.net. Добавьте domain.net в файл
+/etc/sendmail.cw (если Вы используете
+FETURE(use_cw_file)) или добавьте Cw domain.net в файл
+/etc/sendmail.cf.
+
+ Текущая версия этого FAQ больше не поставляется вместе с
+ sendmail. Однако, этот документ регулярно помещается в
+ конференциях comp.mail.sendmail, comp.mail.misc, comp.mail.smail,
+ comp.answers и news.answers. Вы можете получить копию по
+ электронной почте, послав запрос, содержащий команду send
+ usenet/news.answers/mail/sendmail-faq в теле письма, по
+ адресу mail-server@rtfm.mit.edu.
+
+
+
+
+
+ Как работать с электронной почтой при коммутируемом соединении
+ с Интернет?
+
+
+
+ Вы можете подключить к Интернет FreeBSD машину в локальной
+ сети, которая будет промежуточным звеном в доставке
+ Вашей почты. Для этого существует по крайней мере два способа.
+ Или, в качестве альтернативы, Вы можете воспользоваться
+ UUCP.
+
+ Прежде всего, Вам необходимо убедиться, что провайдер
+ обеспечивает дополнительный MX-сервис для Вашего домена,
+ например:
+
+
+bigco.com. MX 10 bigco.com.
+ MX 20 smalliap.com.
+
+ Только один хост должен быть указан в качестве последнего
+ получателя (добавьте запись Cw bigco.com в файл
+ /etc/sendmail.cf на машине
+ bigco.com).
+
+ Когда программа sendmail (со стороны
+ отправителя) захочет доставить почту, она
+ попытается установить Интернет-соединение через модем. Скорее
+ всего, ей это не удастся (в произвольный момент времени Вы,
+ вероятнее всего, не будете подключены к Интернет), и она
+ автоматически перейдет ко второму серверу, т.е. Вашему провайдеру
+ Интернет, который, в свою очередь, будет пытаться установить
+ соединение в Вашим компьютером каждые (sendmail_flags =
+ -bd -q15m в файле /etc/rc.conf) 15
+ минут, чтобы доставить почту.
+
+ Вы можете воспользоваться следующим сценарием, чтобы забирать
+ почту каждый раз, когда Вы входите в систему.
+
+
+#!/bin/sh
+# Put me in /usr/local/bin/pppbigco
+( sleep 60 ; /usr/sbin/sendmail -q ) &
+/usr/sbin/ppp -direct pppbigco
+
+ Если же Вы хотите написать отдельный пользовательский скрипт,
+ лучше воспользоваться командой sendmail
+ -qRbigco.com вместо вышеприведенного сценария, так как в
+ этом случае вся почта в очереди для хоста
+ bigco.com будет обработана немедленно.
+
+ Рассмотрим эту ситуацию подробнее.
+
+ Вот пример сообщения от &a.isp;.
+
+
+
+> мы предоставляем вторичный MX для наших клиентов. Вы соединяетесь
+> с нашим сервером несколько раз в день чтобы забрать почту для Вашего
+> первичного (главного) MX (мы не соединяемся с ним каждый раз, когда
+> приходит новая почта для его доменов). Далее, sendmail отправляет
+> почту, находящуюся в очереди каждые 30 минут, и клиент должен быть
+> подключен к Интернет в течении 30 минут, чтобы удостовериться, что
+> вся почта ушла на основной MX-сервер.
+>
+> Может быть, есть какая-либо команда, которая заставит sendmail
+> немедленно отправить все почту, находящуюся в очереди? Естественно,
+> пользователи не обладают какими-либо повышенными привилегиями на
+> нашем сервере.
+
+В секции privacy flags файла
+sendmail.cf, определяется опция
+
+
+Уберите restrictqrun, чтобы разрешить рядовым
+пользователям инициировать работу с очередью. Вам также может понадобиться
+изменить порядок MX-серверов. Так, если Вы являетесь первым (основным) MX-сервером, укажите:
+
+# If we are the best MX for a host, try directly instead of generating
+# local config error.
+OwTrue
+
+Таким образом, удаленный хост будет доставлять почту непосредственно к Вам,
+не пытаясь установить соединение с клиентом. Затем уже Вы, в свою очередь,
+отсылаете ее клиенту. Удостоверьтесь, что в DNS есть записи про
+customer.com и hostname.customer.com. Просто
+добавьте запись A в DNS для customer.com.
+
+
+
+
+
+
+ Настройка почтового сервера для обслуживания всего домена
+
+
+ Базовая конфигурация
+
+ Изначально, Вы можете отправлять почту во внешний
+ мир если у Вас правильно составлен файл
+ /etc/resolv.conf или у Вас запущен свой сервер
+ имен. Если Вы хотите, чтобы почта, предназначенная для хоста в
+ Вашем домене, доставлялась по назначению, есть два пути:
+
+
+
+ Запустите свой собственный сервер DNS, тем самым организовав
+ собственный домен, например, FreeBSD.org
+
+
+
+ Удостоверьтесь, что Вы получаете почту, предназначенную для
+ Вашего хоста. То есть, почта должна приходить на доменное имя
+ Вашей машины. Например, example.FreeBSD.org.
+
+
+
+ В любом случае, чтобы почта всегда приходила на Ваш хост, Вам
+ нужно иметь постоянный (статический) IP адрес (а не, например,
+ PPP-соединение). Если Вы находитесь за брандмауэром, то последний
+ должен пропускать SMTP-пакеты.
+
+ Если Вы хотите, чтобы почта приходила непосредственно на Ваш
+ хост:
+
+
+
+ Удостоверьтесь, что запись MX в DNS соответствует IP адресу
+ Вашего хоста хоста.
+
+
+
+ Или для Вашего хоста вообще отсутствует MX-запись.
+
+
+
+ Выполнение любого из перечисленных условий обеспечит доставку
+ почты для Вашего хоста.
+
+ Попробуйте это:
+
+ &prompt.root; hostname
+example.FreeBSD.org
+&prompt.root; host example.FreeBSD.org
+example.FreeBSD.org has address 204.216.27.XX
+
+ Если Вы это видите, то можно без проблем посылать почту на
+ yourlogin@example.FreeBSD.org.
+
+ Однако, если Вы видите это:
+
+ &prompt.root; host example.FreeBSD.org
+example.FreeBSD.org has address 204.216.27.XX
+example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org
+
+ то вся почта, посланная на example.FreeBSD.org будет собираться на
+ hub (для того же пользователя), вместо того, чтобы
+ быть отосланной непосредственно на Ваш хост.
+
+ Эта информация обрабатывается Вашим DNS сервером. Соответствующая
+ запись DNS, указывающая, через какой хост будет проходить Ваша
+ почта, называется MX (от англ. Mail
+ eXchanger). Если для хоста отсутствует такая
+ запись, почта будет прихоть прямо на этот хост.
+
+ Допустим, что запись MX для хоста freefall.FreeBSD.org в какой-то момент
+ выглядела так:
+
+
+freefall MX 30 mail.crl.net
+freefall MX 40 agora.rdrop.com
+freefall MX 10 freefall.FreeBSD.org
+freefall MX 20 who.cdrom.com
+
+ Вы видите, что для хоста freefall существуют
+ несколько MX-записей. Запись с наименьшим номером соотвествует
+ хосту, на который в конце-концов попадет почта для
+ freefall; другие будут временно сохранять почту для
+ freefall, если тот по какой-либо причине
+ недоступен.
+
+ Чтобы альтернативные MX-хосты использовались наиболее
+ эффективно, они должны быть независимо подключены к Интернет. Ваш
+ провайдер (или дружественный сайт) скорее всего без проблем сможет
+ оказать подобные услуги.
+
+
+
+ Почта для Вашего домена
+
+ Вам может понадобиться создать почтовый сервер, который будет
+ перехватывать почту, адресованную рабочим станциям в
+ Вашем домене. Затем пользователи будут забирать почту либо
+ непосредственно с сервера, либо по протоколам POP или IMAP.
+
+ Чтобы облегчить себе (и другим) жизнь, создайте на обеих машинах
+ аккаунты с одинаковыми именами пользователей, например, с помощью
+ команды adduser.
+
+ Сервер, который Вы будете использовать в качестве почтового,
+ должен быть объявлен таковым для каждой машины в домене. Вот
+ фрагмент примерной конфигурации:
+
+
+example.FreeBSD.org A 204.216.27.XX ; Рабочая станция
+ MX 10 hub.FreeBSD.org ; Почтовый шлюз
+
+ Таким образом, вся корреспонденция, адресованная рабочей
+ станции, будет обрабатываться Вашим почтовым сервером, независимо от
+ того, что указано в A-записи.
+
+ Все это можно реализовать только в том случае, если Вы
+ используете сервер DNS. Если Вы по каким-либо причинам не имеете
+ возможности установить свой собственный сервер имен, Вам нужно
+ поговорить с Вашим провайдером услуг Интернет о предоставлении
+ сервиса DNS для Вас.
+
+ Если Вы хотите поддерживать несколько виртуальных почтовых
+ серверов, Вам может пригодиться следующая информация. Допустим, что
+ Ваш клиент зарезервировал домен, например, customer1.org, и Вам требуется, чтобы
+ почта, предназначенная для customer1.org приходила на Ваш хост,
+ например, mail.myhost.com. В таком
+ случае, DNS должен выглядеть так:
+
+
+customer1.org MX 10 mail.myhost.com
+
+ Заметьте, что если Вам требуется только получать почту для
+ домена, соответствующая A-запись не
+ нужна.
+
+
+ Помните, что если Вы попытаетесь каким-либо образом обратиться
+ к хосту customer1.org, у Вас
+ вряд ли что-либо получится, если нет A-записи для этого
+ хоста.
+
+
+ Последнее, что Вы должны сделать – это сказать программе
+ sendmail, для каких доменов и/или хостов
+ она должна принимать почту. Это можно сделать несколькими
+ способами:
+
+
+
+ Добавьте названия этих хостов в файл
+ /etc/sendmail.cw, если Вы используете
+ FEATURE(use_cw_file). Если у Вас sendmail
+ версии 8.10 или выше, то можно отредактировать файл
+ /etc/mail/local-host-names.
+
+
+
+ Добавьте строку Cwyour.host.com в файл
+ /etc/sendmail.cf или
+ /etc/mail/sendmail.cf (если у Вас sendmail
+ версии 8.10 или более поздней).
+
+
+
+
+
diff --git a/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml b/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml
index 05a51400fe..ed8d54858a 100644
--- a/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml
@@ -1,1619 +1,1666 @@
Где достать FreeBSDПроизводители CD-ROMFreeBSD доступен на CD-ROM от Walnut Creek CDROM:
Walnut Creek CDROM4041 Pike Lane, Suite FConcordCA, 94520USA
Телефон: +1 925 674-0783
Факс: +1 925 674-0821
Email: info@cdrom.com
WWW: http://www.cdrom.com/FTP СервераОфициальные исходные тексты и дистрибутивы доступны посредством
анонимного FTP c:
ftp://ftp.FreeBSD.org/pub/FreeBSD/.
База Данных
по зеркалам FreeBSD более аккуратна, чем этот список Зеркал
в Руководстве, так как ее информация формируется на основе DNS,
а не базируясь на статическом списке сайтов.В дополнение, FreeBSD доступна со следующих FTP Зеркал. Если Вы
хотите получить FreeBSD посредством анонимного FTP, пожалуйста
воспользуйтесь ближайшим к Вам зеркалом.Аргентина,
Авcтралия,
Бразилия,
Канада,
Китай,
Чешская республика,
Дания,
Эстония,
Финляндия,
Франция,
Germany,
Гон Конг,
Ирландия,
Израиль,
Япония,
Корея,
Нидерланды,
Новая Зеландия,
Польша,
Португалия,
Россия,
Саудовская Аравия,
Южная Африка,
Испания,
Словацкая Республика,
Словения,
Швеция,
Тайвань,
Таиланд,
Англия,
Украина,
США.АргентинаВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@ar.FreeBSD.org этого домена.ftp://ftp.ar.FreeBSD.org/pub/FreeBSD/АвстралияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@au.FreeBSD.org этого домена.ftp://ftp.au.FreeBSD.org/pub/FreeBSD/ftp://ftp2.au.FreeBSD.org/pub/FreeBSD/ftp://ftp3.au.FreeBSD.org/pub/FreeBSD/ftp://ftp4.au.FreeBSD.org/pub/FreeBSD/БразилияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@br.FreeBSD.org этого домена.ftp://ftp.br.FreeBSD.org/pub/FreeBSD/ftp://ftp2.br.FreeBSD.org/pub/FreeBSD/ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ftp://ftp4.br.FreeBSD.org/pub/FreeBSD/ftp://ftp5.br.FreeBSD.org/pub/FreeBSD/ftp://ftp6.br.FreeBSD.org/pub/FreeBSD/ftp://ftp7.br.FreeBSD.org/pub/FreeBSD/КанадаВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@ca.FreeBSD.org этого домена.ftp://ftp.ca.FreeBSD.org/pub/FreeBSD/КитайВ случае проблем, пожалуйста свяжитесь с хостмастером
phj@cn.FreeBSD.org этого домена.ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/Чешская РеспубликаВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@cz.FreeBSD.org этого домена.ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ Contact: calda@dzungle.ms.mff.cuni.czДанияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@dk.FreeBSD.org этого домена.ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ЭстонияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@ee.FreeBSD.org этого домена.ftp://ftp.ee.FreeBSD.org/pub/FreeBSD/ФинляндияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@fi.FreeBSD.org этого домена.ftp://ftp.fi.FreeBSD.org/pub/FreeBSD/ФранцияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@fr.FreeBSD.org этого домена.ftp://ftp.fr.FreeBSD.org/pub/FreeBSD/ftp://ftp2.fr.FreeBSD.org/pub/FreeBSD/ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD/ГерманияВ случае проблем, пожалуйста свяжитесь с хостмастером
de-bsd-hubs@de.FreeBSD.org этого домена.ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ftp://ftp3.de.FreeBSD.org/pub/FreeBSD/ftp://ftp4.de.FreeBSD.org/pub/FreeBSD/ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ftp://ftp6.de.FreeBSD.org/pub/FreeBSD/ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/Гон Конгftp://ftp.hk.super.net/pub/FreeBSD/ Контактный адрес: ftp-admin@HK.Super.NET.ИрландияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@ie.FreeBSD.org этого домена.ftp://ftp.ie.FreeBSD.org/pub/FreeBSD/ИзраильВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@il.FreeBSD.org этого домена.ftp://ftp.il.FreeBSD.org/pub/FreeBSD/ftp://ftp2.il.FreeBSD.org/pub/FreeBSD/ЯпонияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@jp.FreeBSD.org этого домена.ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/ftp://ftp5.jp.FreeBSD.org/pub/FreeBSD/ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD/КореяВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@kr.FreeBSD.org этого домена.ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ftp://ftp2.kr.FreeBSD.org/pub/FreeBSD/ftp://ftp3.kr.FreeBSD.org/pub/FreeBSD/ftp://ftp4.kr.FreeBSD.org/pub/FreeBSD/ftp://ftp5.kr.FreeBSD.org/pub/FreeBSD/ftp://ftp6.kr.FreeBSD.org/pub/FreeBSD/НидерландыВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@nl.FreeBSD.org этого домена.ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/Новая ЗеландияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@nz.FreeBSD.org этого домена.ftp://ftp.nz.FreeBSD.org/pub/FreeBSD/ПольшаВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@pl.FreeBSD.org этого домена.ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ПортугалияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@pt.FreeBSD.org этого домена.ftp://ftp.pt.FreeBSD.org/pub/FreeBSD/ftp://ftp2.pt.FreeBSD.org/pub/FreeBSD/РоссияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@ru.FreeBSD.org этого домена.ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ftp://ftp3.ru.FreeBSD.org/pub/FreeBSD/ftp://ftp4.ru.FreeBSD.org/pub/FreeBSD/Саудовская АравияВ случае проблем, пожалуйста свяжитесь с
ftpadmin@isu.net.saftp://ftp.isu.net.sa/pub/mirrors/ftp.freebsd.org/Южная АфрикаВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@za.FreeBSD.org этого домена.In case of problems, please contact the hostmaster
hostmaster@za.FreeBSD.org for this domain.ftp://ftp.za.FreeBSD.org/pub/FreeBSD/ftp://ftp2.za.FreeBSD.org/pub/FreeBSD/ftp://ftp3.za.FreeBSD.org/FreeBSD/Словацкая РеспубликаВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@sk.FreeBSD.org этого домена.ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/СловенияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@si.FreeBSD.org этого домена.ftp://ftp.si.FreeBSD.org/pub/FreeBSD/ИспанияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@es.FreeBSD.org этого домена.ftp://ftp.es.FreeBSD.org/pub/FreeBSD/ШвецияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@se.FreeBSD.org этого домена.ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ftp://ftp3.se.FreeBSD.org/pub/FreeBSD/ТайваньВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@tw.FreeBSD.org этого домена.ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ftp://ftp3.tw.FreeBSD.org/pub/FreeBSD/ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/Таиландftp://ftp.nectec.or.th/pub/FreeBSD/ Контактный адрес: ftpadmin@ftp.nectec.or.th.Украинаftp://ftp.ua.FreeBSD.org/pub/FreeBSD/ Контактный адрес: freebsd-mnt@lucky.net.АнглияВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@uk.FreeBSD.org этого домена.ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD/ftp://ftp3.uk.FreeBSD.org/pub/FreeBSD/ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/
+
+
+ ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/
+ СШАВ случае проблем, пожалуйста свяжитесь с хостмастером
hostmaster@FreeBSD.org этого домена.ftp://ftp.FreeBSD.org/pub/FreeBSD/ftp://ftp2.FreeBSD.org/pub/FreeBSD/ftp://ftp3.FreeBSD.org/pub/FreeBSD/ftp://ftp4.FreeBSD.org/pub/FreeBSD/ftp://ftp5.FreeBSD.org/pub/FreeBSD/ftp://ftp6.FreeBSD.org/pub/FreeBSD/Последние версии ограниченных к экспорту исходных текстов для FreeBSD
(2.0 или позднее) (eBones и secure) доступны со следующих сайтов.
Если Вы живете не в США или Канаде, пожалуйста получите secure (DES)
и eBones (Kerberos) с одного из следующих зарубежных сайтов:Южная АфрикаХостмастер этого домена
hostmaster@internat.FreeBSD.org.ftp://ftp.internat.FreeBSD.org/pub/FreeBSD/ftp://ftp2.internat.FreeBSD.org/pub/FreeBSD/БразилияХостмастер этого домена
hostmaster@br.FreeBSD.org.ftp://ftp.br.FreeBSD.org/pub/FreeBSD/Финляндияftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt/ Контактный адрес: count@nic.funet.fi.CTM СервераCTM/FreeBSD доступно посредством
анонимного FTP с нижеприведенных зеркал. Если Вы хотите получать
CTM посредством анонимного FTP, пожалуйста попытайтесь использовать
ближайшее к Вам зеркало.В случае проблем, пожалуйста свяжитесь с &a.phk;Калифорния, Bay Area, официальный серверftp://ftp.FreeBSD.org/pub/FreeBSD/development/CTM/Германия, Триерftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM/Южная Африка, резервный сервер для старых дельтftp://ftp.internat.FreeBSD.org/pub/FreeBSD/CTM/Тайвань, Чияиftp://ctm.tw.FreeBSD.org/pub/FreeBSD/CTM/ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/CTM/ftp://ctm3.tw.FreeBSD.org/pub/freebsd/CTM/Если Вы не нашли зеркало достаточно близкое к Вам или список
зеркал неполон, попробуйте FTP
Поиск с http://ftpsearch.ntnu.no/ftpsearch.
FTP Поиск -- это отличный, бесплатный archie сервер в Трондхемие,
Норвегия.CVSup СервераCVSup сервера для FreeBSD работают на
следующих сайтах:Аргентинаcvsup.ar.FreeBSD.org (ответственный
msagre@cactus.fi.uba.ar)Австралияcvsup.au.FreeBSD.org (ответственный
dawes@xfree86.org)Австрияcvsup.at.FreeBSD.org (ответственный
postmaster@wu-wien.ac.at)Бразилияcvsup.br.FreeBSD.org (ответственный
cvsup@cvsup.br.FreeBSD.org)cvsup2.br.FreeBSD.org (ответственный
tps@ti.sk)cvsup3.br.FreeBSD.org (ответственный
camposr@matrix.com.br)Канадаcvsup.ca.FreeBSD.org (ответственный
dan@jaded.net)Китайcvsup.cn.FreeBSD.org (ответственный
phj@cn.FreeBSD.org)Чешская Республикаcvsup.cz.FreeBSD.org (ответственный
cejkar@dcse.fee.vutbr.cz)Данияcvsup.dk.FreeBSD.org (ответственный
jesper@skriver.dk)Эстонияcvsup.ee.FreeBSD.org (ответственный
taavi@uninet.ee)Финляндияcvsup.fi.FreeBSD.org (ответственный
count@key.sms.fi)cvsup2.fi.FreeBSD.org (ответственный
count@key.sms.fi)Францияcvsup.fr.FreeBSD.org (ответственный
hostmaster@fr.FreeBSD.org)Германияcvsup.de.FreeBSD.org (ответственный
wosch@FreeBSD.org)cvsup2.de.FreeBSD.org (ответственный
petzi@FreeBSD.org)cvsup3.de.FreeBSD.org (ответственный
ag@leo.org)Исландияcvsup.is.FreeBSD.org (ответственный
adam@veda.is)Японияcvsup.jp.FreeBSD.org (ответственный
cvsupadm@jp.FreeBSD.org)cvsup2.jp.FreeBSD.org (ответственный
max@FreeBSD.org)cvsup3.jp.FreeBSD.org (ответственный
shige@cin.nihon-u.ac.jp)cvsup4.jp.FreeBSD.org (ответственный
cvsup-admin@ftp.media.kyoto-u.ac.jp)cvsup5.jp.FreeBSD.org (ответственный
cvsup@imasy.or.jp)cvsup6.jp.FreeBSD.org (ответственный
cvsupadm@jp.FreeBSD.org)Кореяcvsup.kr.FreeBSD.org (ответственный
cjh@kr.FreeBSD.org)Нидерландыcvsup.nl.FreeBSD.org (ответственный
xaa@xaa.iae.nl)cvsup2.nl.FreeBSD.org (ответственный
cvsup@nl.uu.net)Норвегияcvsup.no.FreeBSD.org (ответственный
Per.Hove@math.ntnu.no)Польшаcvsup.pl.FreeBSD.org (ответственный
Mariusz@kam.pl)Португалияcvsup.pt.FreeBSD.org (ответственный
jpedras@webvolution.net)Россияcvsup.ru.FreeBSD.org (ответственный
ache@nagual.pp.ru)cvsup2.ru.FreeBSD.org (ответственный
dv@dv.ru)cvsup3.ru.FreeBSD.org (ответственный
fjoe@iclub.nsu.ru)Словацкая Республикаcvsup.sk.FreeBSD.org (ответственный
tps@tps.sk)cvsup2.sk.FreeBSD.org (ответственный
tps@tps.sk)Словенияcvsup.si.FreeBSD.org (ответственный
blaz@si.FreeBSD.org)Южная Африкаcvsup.za.FreeBSD.org (ответственный
markm@FreeBSD.org)cvsup2.za.FreeBSD.org (ответственный
markm@FreeBSD.org)Испанияcvsup.es.FreeBSD.org (ответственный
jesusr@FreeBSD.org)Швецияcvsup.se.FreeBSD.org (ответственный
pantzer@ludd.luth.se)Тайваньcvsup.tw.FreeBSD.org (ответственный
jdli@freebsd.csie.nctu.edu.tw)cvsup2.tw.FreeBSD.org (ответственный
ycheng@sinica.edu.tw)cvsup3.tw.FreeBSD.org (ответственный
foxfair@FreeBSD.org)Украинаcvsup2.ua.FreeBSD.org (ответственный
freebsd-mnt@lucky.net)cvsup3.ua.FreeBSD.org (ответственный
ftpmaster@ukr.net), Kievcvsup4.ua.FreeBSD.org (ответственный
phantom@cris.net)Англияcvsup.uk.FreeBSD.org (ответственный
joe@pavilion.net)cvsup2.uk.FreeBSD.org (ответственный
brian@FreeBSD.org)cvsup3.uk.FreeBSD.org (ответственный
ftp-admin@plig.net)СШАcvsup1.FreeBSD.org (ответственный
skynyrd@opus.cts.cwu.edu), штат
Вашингтонcvsup2.FreeBSD.org (ответственный
jdp@FreeBSD.org), Калифорнияcvsup3.FreeBSD.org (ответственный
wollman@FreeBSD.org), Масачусесcvsup4.FreeBSD.org (ответственный
rgrimes@FreeBSD.org), Орегонcvsup5.FreeBSD.org (ответственный
mjr@blackened.com), Аризонаcvsup6.FreeBSD.org (ответственный
jdp@FreeBSD.org), Флоридаcvsup7.FreeBSD.org (ответственный
jdp@FreeBSD.org), штат Вашингтон
+
+
+ cvsup8.FreeBSD.org (maintainer
+ hostmaster@bigmirror.com), Washington
+ state
+ Ограниченный к экспорту исходный код FreeBSD (eBones и secure)
доступны посредством CVSup с
нижеприведенного международного репозитория. Пожалуйста используйте
этот сайт для получения ограниченных к экспорту кодов, если Вы живете
за пределами США или Канады.Южная Африкаcvsup.internat.FreeBSD.org (ответственный
markm@FreeBSD.org)Учитывая, что этот сервер обычно сильно загружен, Вы можете
использовать одно из его зеркал для получения кодов ограниченных
к экспорту из США.
+
+ Дания
+
+
+
+
+ cvsup.dk.FreeBSD.org (ответственный
+ jesper@skriver.dk)
+
+
+
+
+
Германияcvsup.de.FreeBSD.org (ответственный
wosch@FreeBSD.org)cvsup3.de.FreeBSD.org (ответственный
ag@leo.org)
+
+
+ United Kingdom
+
+
+
+
+ cvsup.uk.FreeBSD.org (maintainer
+ joe@pavilion.net)
+
+
+
+ cvsup2.uk.FreeBSD.org (maintainer
+ brian@FreeBSD.org)
+
+
+
+ cvsup3.uk.FreeBSD.org (maintainer
+ ftp-admin@plig.net)
+
+
+
+ Следующие CVSup сервера специально
предназначены для пользователей CTM.
В отличии от других CVSup зеркал, этот сервер обновляется посредством
CTM. Это означает, что если Вы
будете обновляться посредством CVSup с
release=cvs с этого сайта, Вы получите версию
репозитория (включая неизбежный файл .ctm_status),
которая подходит для обновления с использованием
CTMcvs-cur дельт. Это
позволит пользователям, кто следит за всем cvs-all
деревом перейти от CVSup к
CTM без необходимости перестраивать Ваш
репозиторий с самого начала используя свежие базовые дельты
CTM.Эта особенность поддерживается только для
cvs-all дистрибуции с релиз тэгом
cvs. Обновление посредством
CVSup любой другой
дистрибуции и/или релиза даст вам указанную дистрибуцию, но не
приспособленную для обновления посредством
CTM.Учитывая, что CTM не сохраняет
время и дату создания файлов (timestamps), то время и дата создания
файлов на этом зеркале будут отличаться от других зеркал. Переключение
между этим и другими зеркалами не рекомендуется. Это будет работать
абсолютно корректно, но будет очень неэффективно.Германияctm.FreeBSD.org (ответственный
blank@fox.uni-trier.de)AFS СервераAFS сервера для FreeBSD работают на следующих сайтах:ШвецияПуть к файлам:
/afs/stacken.kth.se/ftp/pub/FreeBSD/
stacken.kth.se # Stacken Computer Club, KTH, Sweden
130.237.234.43 #hot.stacken.kth.se
130.237.237.230 #fishburger.stacken.kth.se
130.237.234.3 #milko.stacken.kth.seОтветственный ftp@stacken.kth.se
diff --git a/ru_RU.KOI8-R/books/handbook/pgpkeys/chapter.sgml b/ru_RU.KOI8-R/books/handbook/pgpkeys/chapter.sgml
index 55eafc4387..9104455007 100644
--- a/ru_RU.KOI8-R/books/handbook/pgpkeys/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/pgpkeys/chapter.sgml
@@ -1,786 +1,1646 @@
Ключи PGPВ случае если Вам необходимо проверить подпись или послать зашифрованное
электронное письмо одному из офицеров безопасности или члену core группы
- FreeBSD ряд PGP ключей представлены здесь для Вашего удобства.
+ FreeBSD ряд PGP ключей представлены здесь для Вашего удобства.
+ &a.wollman; яыляется мэйнтейнером полного
+ списка ключей пользователей FreeBSD.org для просты скачки.
ОфицерыОфицер безопасности FreeBSD
security-officer@FreeBSD.org
FreeBSD Security Officer <security-officer@FreeBSD.org>
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----
-
- &a.imp;
-
-
-Warner Losh <imp@village.org>
- aka <imp@FreeBSD.org>
-Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.2
-
-mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
-V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
-EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
-tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
-c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
-C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
-5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
-MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
-BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
-a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
-YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
-icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
-dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
-k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
-RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
-rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
-3gTYx+Nlo6xqjR+J2NnBYU8p
-=7fQV
------END PGP PUBLIC KEY BLOCK-----
-
- Члены Core Группы
+ Члены Core группы&a.asami;
Satoshi Asami <asami@cs.berkeley.edu>
aka <asami@FreeBSD.org>
Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----
+
+ &a.jkh;
+
+
+Jordan K. Hubbard <jkh@FreeBSD.org>
+Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3ia
+
+mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
+jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
+tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
+tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
+j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
+ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
+laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
+5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
+VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
+GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
+AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
+uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
+utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
+f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
+U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
+csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
+AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
+oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
+LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
+BiMRuaw=
+=C/Jw
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.imp;
+
+
+Warner Losh <imp@village.org>
+ aka <imp@FreeBSD.org>
+Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.2
+
+mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
+V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
+EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
+tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
+c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
+C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
+5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
+MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
+BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
+a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
+YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
+icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
+dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
+k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
+RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
+rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
+3gTYx+Nlo6xqjR+J2NnBYU8p
+=7fQV
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.peter;
+
+
+Peter Wemm <peter@FreeBSD.org>
+ aka <peter@spinner.dialix.com>
+ aka <peter@haywire.dialix.com>
+ aka <peter@perth.dialix.oz.au>
+Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3ia
+
+mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
+W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
+kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
+tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
+cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
+9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
+eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
+AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
+4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
+YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
+AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
+lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
+xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
+/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
+/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
+SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
+brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
+4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
+UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
+hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
+TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
+kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
+=gv+h
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+
+
+ Разработчики
+
&a.jmb;
Jonathan M. Bresler <jmb@FreeBSD.org>
f16 Fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
/2ls4QSBZZlb
=zbCw
-----END PGP PUBLIC KEY BLOCK-----&a.ache;
Andrey A. Chernov <ache@FreeBSD.org>
aka <ache@nagual.pp.ru>
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
+6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
+uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
EB33OunazFcfZFRIcXk1sfyLDvYE
=1ahV
-----END PGP PUBLIC KEY BLOCK-----
-
+
- &a.jkh;
-
+ &a.green;
+
-Jordan K. Hubbard <jkh@FreeBSD.org>
-Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
+pub 1024D/773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org>
+sig 773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org>
+sub 2048g/D2009B98 2000-09-02
+sig 773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
-
-mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
-jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
-tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
-tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
-j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
-ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
-laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
-5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
-VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
-GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
-AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
-uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
-utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
-f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
-U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
-csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
-AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
-oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
-LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
-BiMRuaw=
-=C/Jw
+Version: GnuPG v1.0.2 (FreeBSD)
+Comment: For info see http://www.gnupg.org
+
+mQGiBDmwog8RBAC+zE0IpGNV1naZh9os6S//ct1MfEMBoHH2TQhajIfLVraWA1I9
+AbOTuYYsPgxqK44ZnPUnNLmgIRBeVJXklXsdvjtMrh7QMj7evAGneT4vVdVj/9aY
+7mEBuQephgvE4bUM7RPvOc/paiY08+HANljrvxcmMhygDTP5SEp/QJn7zwCghB66
+YVHI5u4xBAcHiHbyJWShmekEAIUWEIL4I33C9/yuenYogKLLS2/wmMYMCM5uMTkF
+jls9KtfW/TQz8M8ZU6xdVBQjvDpw9G96l78amjiMN9Gm32C8m3HJaN0V+4SGJjiQ
+fL07gu60LG0phnk1CtWLVQnH0LuIyB8jJeoaeYmS2Xv0rLLeMQ/hgUcQB8xu61Z4
+n1shBACf1w7B9ivEhBGWBsjuX2gTfW2eS4Mprs7FD1/8f/wbdvhitMdjZOFjOIO8
+yi/2W6B6T3suTcUgdC2qFmXkiWUun5kpGp/KRvrYm2eKpfveOL0HgD7juEZtBJcT
+zV4oMel8TlZidIjIgLUeTbGfxbYPm0gONEGZHsymlZg9/7sDS7QtQnJpYW4gRnVu
+ZGFrb3dza2kgRmVsZG1hbiA8Z3JlZW5ARnJlZUJTRC5vcmc+iFYEExECABYFAjmw
+og8ECwoEAwMVAwIDFgIBAheAAAoJELVSsEN3OQXWVdUAnR13DerFrFdS3xufFox/
+m9T+VKs6AJ0Y7mgJalqPTTalJB3fbWUeIsZBsLkCDQQ5sKJfEAgA5LI3C4rGWWbG
+cGZMLDhuBhjcoSFeWnrVVVZAPEm92+LcrfoT1Slp/2+KcKTJN/uQA0EpNmgUFBYr
+3vSoVoVm10xBxBIX0zP7uPQNYKoJX3gLBiRZ3xOo4A6VqEpRbo5yjj3rshN4IO9B
+T9zqx0ZoHSSsCds0Ax/m+0eSTghl+Shle1tbJstgcoxf6peKa6XcOAJWtQ+r6hZB
+Z1tpjmIrfaeG/26da858C4TcogNhi1cpbyfQTZA7070JBnpRjhcQpELT4hRsJV2G
+BX0dZn2hJOb5J5zl2M0N0Yx2BHM6mVT+oUc4EvfRn6fuhVRwIuckxwXaA31vWNPh
+v+S9VD5BqwADBQgAjOXR9HNAh/teG0p4ynOlWx5G+tBWSfqWAKOSpi9SKb2Zipjg
+bVNjmO4zNYhdAK6YbyQgrDrwUVPWoc8OieUACujklkY11eg8QFGr+tJow7iCMOPL
+ES5vW1sBUl7dN+4tf5QTg5q9EGHL2rTndEVeutFbcKPR8YQXdu/U5hdO9zha5fd0
+RWjG7zLTaukO4mT2bTuojgCrnsvZ4D0XRW+SUcfXZrbKcsoFiU3q+EvlOuWg0W5b
+FcFfAXSAzC2CpZlQV3hhSDkgeM3cbnb0hv7feSIizFpqFbNyOgarqymZIU07HcX5
+c44etbO++GQ/tMI7oCPUb9a5jIt/YqPvIvmPDohGBBgRAgAGBQI5sKJfAAoJELVS
+sEN3OQXWr4MAnjpZdSq11IEN34VjwhD+eBMcxjqaAJ4yDvFd8u5ehurCY+KjWSXo
+uPPUsA==
+=EiNZ
-----END PGP PUBLIC KEY BLOCK-----
+
+ &a.jmg;
+
+
+Type bits/keyID Date User ID
+pub 1024/3F9951F5 1997/02/11 John-Mark Gurney <gurney_j@efn.org>
+ Key fingerprint = B7 EC EF F8 AE ED A7 31 96 7A 22 B3 D8 56 36 F4
+ John-Mark Gurney <johnmark@gladstone.uoregon.edu>
+ John-Mark Gurney <jmg@cs.uoregon.edu>
+ John-Mark Gurney <gurney_j@resnet.uoregon.edu>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.2
+
+mQCNAzL/8IwAAAEEANuX7fcIa0S5fVATYQCGwgBJo9DxRr0m/QjrP4dJh/JEIjmv
+h37FMs9qsMPtyAZWlRSnbVFyQiz5ptFuL1irClW2UHzlLvd5s+pKMfIkJWDTnrvp
+0jFebYQt0chZeLcKT9s5sSo9ua+fUumOfaWyubUZPIqmDYqy98Em7wI/mVH1AAUR
+tCNKb2huLU1hcmsgR3VybmV5IDxndXJuZXlfakBlZm4ub3JnPokAlQMFEDMBDfTB
+Ju8CP5lR9QEBmnsEALAS5dZyQXxsDAROz+yHizsbgV1Ok9vFwE5en7QnOGcSkQX9
+pE7MzzlbpP63toF9zWLF75dbXE5X0yYLoB0pvNi1NXhXqA0YbDeAi1Ed6uBXbomW
+MDdm0s+O0Y1NfuS0uKiFiJUDOjdBrgEbnmPZM/77dhr5UbmAtQUHFftaQfY6tDFK
+b2huLU1hcmsgR3VybmV5IDxqb2hubWFya0BnbGFkc3RvbmUudW9yZWdvbi5lZHU+
+iQCVAwUQMwF753W7bjh2o/exAQGjjwP+MKiFH9EfOGS7yr5NQ4+vWXuHe1N6fi9N
+jJsFfzT/RCM/wo/dNG/xhTgdCoCWRt0gKkv3SLEPYGDPDtC3Nf7HV/66wOiYYnxD
+3cmjgpLn5u/Ju0oS5xxNb5Ly8EZnfz967lIHjp/qhbZ9o7kO7Nkb7bUgozNqBaRy
+9Yo81fVAtrOJAJUDBRAzARCXwSbvAj+ZUfUBAeUyBACKoIXfYBpsKqmmnTg944Tw
+5t8lAFZ8qJz42Fjw+hswC6c+7b87imwaH3AjPnFmsA6f1ES7xDHG8RQleDtKsyik
+gHc9Yos/neVqwfrr4zSV1PdNPPpG5uNT/jI1k1M3pH8kwYdKiwaIHQb5+sGUQsO1
+ZoxCdzT7HJq4jJtBGVIRULQlSm9obi1NYXJrIEd1cm5leSA8am1nQGNzLnVvcmVn
+b24uZWR1PokAlQMFEDMBEHfBJu8CP5lR9QEBak8D/2V+1pP6zA1dvhRLcO2pGldn
+Q/dcVAAtZIZ7AUUap1pKXZF/Tt4gWKMtAHj01xUbwU1fmI6DF1p4AVjDqOxJDnoZ
+RD9gv0RiZXdUesXL2UBNHc/7f+amAJgmXNrP/m70ejgzPluniR5hQm76fKYjkxV1
+opRhhchTjhrFndoQ9nvQtC5Kb2huLU1hcmsgR3VybmV5IDxndXJuZXlfakByZXNu
+ZXQudW9yZWdvbi5lZHU+iQCVAwUQMwEQWsEm7wI/mVH1AQHxMgP8D7VM+qUo0qGM
+uFUKqxoQcDPVKt2W1X6wWTHdj9cxo3oW1tlLEZ24Y2v5v1pzonvseaTjsse134dP
+a9qjcwXjs/zxXzHoQs3B9BZB2qXaR4T3YeuCjq2qIXGwsrrY5fkoch4OLg0/FOui
+dmNbFjVQkIma2rIRPa8GhXZJtGl+UEk=
+=bUtb
+-----END PGP PUBLIC KEY BLOCK-----
+
+
&a.phk;
Poul-Henning Kamp <phk@FreeBSD.org>
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
+RSA 1024 0x0358FCBD 1995/08/01 Poul-Henning Kamp <phk@FreeBSD.org>
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
+Version: PGP 6.5.1i
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
-e3jh8w62JsLBWry/YMWRMnI=
-=A1Tu
+e3jh8w62JsLBWry/YMWRMnKJAJUDBRA5r4KrpZDsojuazKUBAWpxA/97mQ6bH6q7
+32rASSvClNbOl+mAaXUG4SwoMhGTpU6ajuh6C13yTNGMv5LY5SBRYD2XqLi5RexM
+lYgPOo85zyLa8j8596Wcoga7+5Nn8DYDPxXv7qGE+Ehn4kdnd6nmtN377j5LIIUt
+daIKXw2ZDB2GYmmxZS0dq8SwLc0GBb7msw==
+=GFOn
-----END PGP PUBLIC KEY BLOCK-----
+
+ &a.joe;
+
+
+pub 1024D/E6B15016 2000-10-19 Josef Karthauser <joe@tao.org.uk>
+uid Josef Karthauser <joe@FreeBSD.org>
+uid Josef Karthauser <joe@uk.FreeBSD.org>
+uid Josef Karthauser <joe@pavilion.net>
+sub 2048g/1178B692 2000-10-19
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.3 (FreeBSD)
+Comment: For info see http://www.gnupg.org
+
+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
+2wQAl15HhtwPGwzC7RtkJZhdu/Rm3kNGQRtx6I8k81G5NCOp5TOcnkvf0gZFlnls
+ZFmYCA4TehVrkThfVYdYyK52dMIoVorSFbMrR3cBE+DJX2IdLB/uxltc1IvLMosh
+jwnfPcwS9xFbNvKSbPm7Sv5A9gxkJEVh2TewbjS29MjN/0eIRgQQEQIABgUCOe6X
++QAKCRCI4Xsd/OVlYcOuAKDWloqHTKm80hgbNV6f+pg6+67IjwCeOmwJnY3s5Mkw
+wts+n2ugc4faOHaIRgQQEQIABgUCOe8i7wAKCRAY9QOAJMJ4ArajAKDHV0d9rtFi
+HwBO5nt/grnF9BjQEACfXWhAVozW0/lZUUPyXNYiHcUgcR60JUpvc2VmIEthcnRo
+YXVzZXIgPGpvZUB1ay5GcmVlQlNELm9yZz6IVgQTEQIAFgUCOe5dsAQLCgMEAxUD
+AgMWAgECF4AACgkQXVIcjOaxUBaVvACeL56tzrJ95N3oJ64sQVgyo18bEX0An3Gd
+CM9mg6dAunhroSuY+73Y6ZGriEYEEBECAAYFAjnuhicACgkQc4fikq0QxsSzVACg
+nCcE565FTv9LhGJmmxjNZi4jNzUAnAkJn9QVDkwFp54Vtl921duYZQX5iQCVAwUQ
+Oe6KFU1WKCF5BQwRAQEUagQAiJqlq1zf+IrjiffxGzKP1vcCkeaXRiPyBHkS0yCS
+y6OBxPhdUsvOzT93qgRUqPGBB4Q7jM7abSuM99gZW9uQN59nwbBFzWRKK/Cz8xHM
+lEWIdMZHUXupWUTDBHdHERaj4NaZvE6RXgAdk4saIRT1IFLeWejpaBvLMN8XQXHL
+3XGIRgQQEQIABgUCOe6X+QAKCRCI4Xsd/OVlYY8eAJ40vquX/AaE+KslwUBVTBmN
+pQo/UwCgvAbcnU4rzYZ+TCBB4ZRUW+MpdhOIRgQQEQIABgUCOe8i7wAKCRAY9QOA
+JMJ4ApoRAKC5Wcxx1y8Dr9u4ePt0SA9IhZ22sgCfTOrGFzNJcy5nI2qDz1VoZPVJ
+QOu0I0pvc2VmIEthcnRoYXVzZXIgPGpvZUBwYXZpbGlvbi5uZXQ+iFYEExECABYF
+AjnuXcMECwoDBAMVAwIDFgIBAheAAAoJEF1SHIzmsVAWrvEAnA25W9/TOnsEaoTm
+teZSGg2KAIFvAJ0V7c6OGojBe8ctGclnLH7ICP8lKYhGBBARAgAGBQI57oYnAAoJ
+EHOH4pKtEMbEcBIAoMOq/6CtvThjqojHvSEGavUE3sgKAKDUmArUdbawnzF8Q74V
+KZ/CmrCmfIhGBBARAgAGBQI57pf5AAoJEIjhex385WVhUPIAoILrCWnWobHn9O7b
+zn54Aui/GG6aAJ9W7fRe+mAOsUEmKfT04zKSQmQK84hGBBARAgAGBQI57yLvAAoJ
+EBj1A4AkwngCYkoAoOdHEQmEnl5pwQj0f6/boXE/YprVAJ99rpmTV5i/8l3H14O2
+185LvwykibkCDQQ57li6EAgAy6eLPS6a6scj08nvURMX5xkuzKRgMExOdSKtSgGT
+95Ekvad+Pg0FsKVMsNPbEJQ4fJpsMS0xh25vON+z3Y3rIJEri/7fXxtPt3pcwcbo
+Hm8EcJwyFLs7SW41fT31LrTk1ZEX4bbkHe/SimYnqnmGycJ+wQ6pd7mDxiiqqXjK
+Ns4VUzcveB/GD0vS0ZLrXRWrH9mccXWt3kEGWYQ763RTcUxYeJ2cQwEQTjZ4oDjd
+TUOqY5Q8d4ijjpSKkZUBE7uxbxQ3R1EpJ/EvBlASJi+YxMAERHUdSL4f/QzU3Qhg
+UypDyGl+OhyxlQ1h9wKhuVugJq5eTJsH+AsBRFNqlhnSRwADBQgAjDFwDsZTWbFg
+hjW4DhZGOkZ9PjDSpFJuic7lb6kln9OYz7Vy6p7hB60B77ann31MtySKwO/PXtnE
+Gcxmzdp3GvXwLyg8OVOBF6p5VjRQD+vvYAv6LQ9dKuIW6wPcAfdjCxKY18Xjypnh
+Fql1lRY8Y7wv1M3Lt5PPTusPZaunSQOeD28YF4ww0YZvJOelgd1I1bmZ/f7ZVPvQ
+cDNHXTm/xwECfjDHjrJA8Qg15NZeew1tjLoR8naJUDI0CetBbvs0mEUGwjySDzov
+1Lz+jZQUJJcQcCx3u4RcE8sneb4jADy2F7LpzMKbmLym59FEK95MlQE+wnkixZcu
+ta1JwVq7zIhGBBgRAgAGBQI57li6AAoJEF1SHIzmsVAWGx4AoN0XDe6xdktWsoej
+fSw+/aM108z5AJ9GqM/+F/Exr5OnknWCPjFbKSBO4A==
+=BvSg
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+pub 768R/7EBDECB1 1996-12-19 Josef L. Karthauser <joe@pavilion.net>
+uid Josef L. Karthauser <joe@tao.org.uk>
+uid Josef L. Karthauser <joe@uk.FreeBSD.org>
+uid Josef L. Karthauser <joe@FreeBSD.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.3 (FreeBSD)
+Comment: For info see http://www.gnupg.org
+
+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
+=dREe
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.bmah;
+
+
+Type Bits/KeyID Date User ID
+pub 1024/23EC263D 1997/03/12 Bruce A. Mah <bmah@cisco.com>
+ Bruce A. Mah <bmah@freebsd.org>
+ Bruce A. Mah <bmah@employees.org>
+ Bruce A. Mah <bmah@ca.sandia.gov>
+ Bruce A. Mah <bmah@ieee.org>
+ Bruce A. Mah <bmah@acm.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 5.0i for non-commercial use
+
+mQCNAzMl/sEAAAEEAJbQArJB1mbsGAc0eiv6XmoBPdjXDy9wWYbFdTSKcR88iZUB
+o/lie1eIyfqOFp/bbOVuCuhuCB1L/y9iS1x+rcmQgMbzelF9EbyyAoIvD3kPy5wa
+/dgE7L8fAHzHzmLP8uHccXu1eGMmY93of2s7BKvrboWjVCUbaqjOOi0j7CY9AAUR
+tCFCcnVjZSBBLiBNYWggPGJtYWhAY2Euc2FuZGlhLmdvdj6JAJUDBRAzJf79qM46
+LSPsJj0BAbKLA/9ei7MJSASsyBm8AyC4xLSYI/ftiYBPeuHH3f4t6Hb4Uu99iZRx
++TG88DMg3ZHQZNMrvn+iMojWlvPlExFbpb0FRDX1JksB1gaadsEH6b22Tv2Uc6bd
+6iYe4rav6JR5ZnDtgCAzNiaeTEZc/Tn47vM3KDqnz6gUl+zTN+8/ujHp6YkAVQMF
+EDMl/4Q8L1TZGfd8EQEB9YoB/36khd19cZLdhLcaGDnbbPqRIjXC+Ha0LD9QEiK8
+p4TzPhQu/QIQTlKMOm+dMUZfabiJG07QUM7/aoDFF6VoJHyJANUDBRAzJf9iWGPT
+gxP/0IkBAR89BgDSitVdHQvjjV5UtbaJ34CYNz+KB2r7/08U5yeN5ZSQiqAW6PiS
+SXujzHnB/kxUlG93bCq75ljwvozSomSE/n+1QKM5j+WNB8judbIuesAlKVlnej05
+X2hLXfsAcJuGmG9jwlchd5uhSEBnrhpQEQh+44BKdSc5Jp/rtUeHwuu+rqvNECR8
+MSIpY3IFREANAv8TVqVBxbEHGjyKR1f3iwo+KGFgcNcE9w7eWCW9FOTOe1iI550/
+r/CounwRTVarkVWJAJUDBRA0BgS1YDZyE/6Ll60BAUY3A/9bVICm3lamaA/hkvL9
+mMfIlgqJVG1iv6ghiTgJJN9eRSNStPB8ho4sfekYmsJOj8Dsnmgw3Z876TiAeeG8
+KBDYrB2CeirciqgEvki1tof36NVrTlNfyjMe7DuRdIGwlMsysCTGQ91sjdTvQ1gW
+qCOCMPq2hbUiy3O1H2lSAFWZN4kAlQMFEDNqQB+G+HorH0Oa6QEB6xsD/jlw33WI
+8LNxVgySQ9IEX7F0+cFsto1iTnxc5xRTKqcNfD3h1N89noVJHZa+4Y0/EqgexPda
+ADARba+e0bomsOKaGuK4thiO/UVKf+que9JmNwIW+bmvbfwQhRwaT5tXHGJDbP8U
+DOhIIbfd3N6VpxmcH6azvvCBAhRpb5vW8VXxiQCVAwUQNRn9lvRZcafORvxJAQF5
+bgQAmpEu9wcVqJa+P1I6iSivnY0nJJDBiXTHnGep9zwdCODRa7rZwgZptqn4naXr
+rK/jAr6Vdj73b5TbwLtLiWR/MwortPFp80M+6Ff15lsO6viynMWgLFSBli2WcxIU
+pnjlnt8sLs1opDV+nwoSlFCeXGMbPSal3FOA7oIdmDBbG1CJAJUDBRA57prdfEtn
+baAOFWMBAc8zBACltXDpn23WLpy6jp37uZuijhGt2B8wksTv8J9ZRaUbEbpRwNe8
+v0RsxqQ7NbwFUIMeVdswnF6smXPpp55SOHOa+TKOnjdJwk6jZWewRTRV43ZQ+F5I
+Vt1rGWB4zXu9/umAWXvVy4cVcfvOLoYYvMucNHgawWby3qiEwsWMuukmY4kAlQMF
+EDnumuHW4KH+T74q3QEBcQ4D+gK7LMHp/gktEuOFhqKHdLxbocqyKL6Nm/R1lKP/
+5iJ60IWCBhz4OV4xU6Vm6T+JcMYnewdfsxuxbQndN5lhzQCFwEVrkj5/ibsCqAiD
+v3Z4IOIVWOwESCM5nJVleieNZ8D8Y33UICCh/kqLzDF97PpD+kGROWi1sSNXlQIr
+VdQttBxCcnVjZSBBLiBNYWggPGJtYWhAaWVlZS5vcmc+iQCVAwUQNTUXEKjOOi0j
+7CY9AQGGuQP/fDgRCZ0Nq7P+IkNq1cxxHEjYJoIXbiESK5gtdWelJuxVDaZ3XbL4
+/yoSIN5ZnVHZMi04P3Khgqequjwr3/rae/a4MmVQdtNrCFMSY+8d/l8bXkG8tuky
+5b+Qd9ZOBVw8zbq3xB1o89qf0D07bTX2EC1glvrU3g6VV300BaHpvimJAJUDBRA5
+7prdfEtnbaAOFWMBAZnhBADMxh5KVEBKn5L5ZOuXJdi1EIAk0L8bq7xbxUZ1MKTD
+oWlfc1xxBxs3xfMIJFjAv5CRzrGg8y3EUBRLgaN6KzMbvmA8FQ77PIM3x/lc3jHa
+nIQPlWWdCSq6WZEFtq/rOFi8WhATlCBPehwMV7gNEDh4bIhG/5jY0cA2kmfJqo06
+TokAlQMFEDnumuHW4KH+T74q3QEBTj8D/i5VjPmPkOz7cKEaK2NbUnTM7bKvyKWX
+7qprmjkmeunVA4LY3M68SG1NcMmEWbM4p4yl5xDvR3r7WChPKZE/5Kzvvzo76V6L
+CSqy4L9pwFlAw9xZOjhRtJTrEE2HsoDeN2nvWrPpeXJtGCpZ+d9WTg4I6mxfyrp9
+qK9Mj6XJKc0FtBtCcnVjZSBBLiBNYWggPGJtYWhAYWNtLm9yZz6JAJUDBRA1NRbM
+qM46LSPsJj0BAQ3oA/9Bxqn1Kll1R6+bRbz2VKOCijC8iooYriFF1MBC38PsvBXN
+epnXsbAkRrvwzAiY7f+aaxYOLbyG3VOTtEwGlQ8WSfc4BcHBmC8CK3G+jXn8Hk4Z
+iZQ0s+khhAlIbr0Wpxvk5Prazzv417dBCIHzk0dxaDJ5dolvxA9NK2po/oTDzYkA
+lQMFEDnumt58S2dtoA4VYwEBgtoD/jAqZt89XHmtWtMzJIOft9z8dXyvXXwmkuOx
+91P2egetX69Ru3XzqPays/uvdFkaVgo09nHRLPGXPQ0GbgUuc8mPa0H3jn/OA+Tn
+KxeB9rKY2fPr6vccP6OSeOk4nbHqPqfz7/U/edbHZ88kNu4iqiH+dDB0L7QNGK9p
+l8Zpd5TOiQCVAwUQOe6a4dbgof5PvirdAQGDDgP/SdujS5XMRbqKMe41f5P0TMAm
+VeGplK1mdX4WRmB+wvdV0ddIiEgSQIklmNM5nIwYzRGNLZrRBQNDArOO4826Amvu
+lntP6+LmN+vl+lmOA6kEbVYFnADkNGP3jVmwJ/ni4luKDWevMHpxfHTGoKKaKA9P
+A4WaT+49RRX1RSGkWU+0HUJydWNlIEEuIE1haCA8Ym1haEBjaXNjby5jb20+iQCV
+AwUQOUVroKjOOi0j7CY9AQHdzAQAiq+kDC2WEAG3gglnEIG0oIp292a2qhrDIu1P
+d+xUxXoPs8OzqHe1D4RaJiEhDMmQ1t6kJbUdzTKENzjyT84KbaHBgYujgcLsGqmx
+nVDxkVC6YlTXOngI4y96sw9k2HRELWTEGfAUFCPmAQOWH/ftDEPCvAZHXrTJaRSr
+nkK80NuJAJUDBRA57prdfEtnbaAOFWMBASUzA/47C9vbfPB4sqLpT+PSZ6cOkPXp
+Wn4ddvYC7iTCE8Jn9E4V4v86wUqWScXK00OO6suFERj8b8gFsWhR+ud1a8lTMuKt
+lmdJw6S2XWFadTQCDUPoOul4WlUwEbhWSohSoTu/FFJ8AMgI6q2Umeo/MANga69L
+SXnYuG31GxEZPEknkokAlQMFEDnumuDW4KH+T74q3QEBXw8D/j4k+AzvQg9rY3Pm
+R2qUtjPm2JBw1206J3XCf7CYwmhuMKiLC3EMqfwu7U43+sD1xgIjOV5Y5VFz6zQ/
+cZ/DkRexCIJYe6hXhqx+VVBRCRUsQnCDkrCr/sX14EsgQoFluIKfuCstxtLe6F/g
+OCAoHM0QG34Z2IrThLWSo/oIhNBstCFCcnVjZSBBLiBNYWggPGJtYWhAZW1wbG95
+ZWVzLm9yZz6JAJUDBRA5RWu3qM46LSPsJj0BAQrYBACUnUQn0t6tnxAJMQxgje/L
+kNGkZOzGNMazfrFPe8+iDCq9nnJ7zkh2OtSNTiS/VJqJjT/2iDjCxWG4Cqn4eBUD
+1d8GW1klKeK3yUIFlfAsMAfQshhPQ47865UlHWvuePLS/0L2rLofu/++7reTzYW+
+4mnzeXfj+UKAqr5LlzlFxIkAlQMFEDnumt18S2dtoA4VYwEBnGYEAMc2YVJk8YsW
+RJjU9zKtsbfMabifvNUYvvkIi42du1t+brnCXf5aFnFjAAO3sGbEoTRCEbT8SRPU
+hbk76R++bG02XmCYepWX5iS3I0LUzVpqas1t0H/luc4mUgOYDUhsPWuBtNmYuuxD
+uMSCgL1ZUPb+S5ZLmYMk5hxpKQEEO94FiQCVAwUQOe6a4dbgof5PvirdAQHZXwP+
+INhyMrT6qLG6+fjYWZ3hu9nvXO11MtPtNObo7VqIERSRqccvhQO1ut04VXb5Na+h
+AO8kTnqS6+43TZUWtAkKLmcZakgb7juFXxnM/BJP+UmMr08LMkB5Yf3VNfrdthbt
+GyFh4tY7kYJFa+1K7CngPvRoBbd1iHO419O6MiLusoa0H0JydWNlIEEuIE1haCA8
+Ym1haEBmcmVlYnNkLm9yZz6JAJUDBRA5sD/kqM46LSPsJj0BAaWJA/9kzr2n26NW
+NE2PscqmABhyXXDZptY7t6NRAc6yXgPnbXs5AlAkiL+P0FLs1P9MMnw7PCd2TAXd
+MYLhPecx1dWJAiaRNmoJBaPknnr4rqNKM45XbPfkJAvvSVGNi52VHcmrnmFdSX6L
+hUwJzVha6TT4Vel5y1DEPYIUK3FJllTBQYkAlQMFEDnumt18S2dtoA4VYwEBNh8D
+/Rdov1S+koATxQAb/8uLK8rYnmDL3PfoAhogrpQgz+9G8O5mwJtzoHJVYGGVEzTV
+3L/okFn6UlX4Hms0RR2JYlcwaL+D4aZKV6vhgVh23yh3xaV+wPwzHqtjPxyWKapO
+g153Fn/UquFaX62DzzWcRxtd3Fi9tiGtdyOVmQQlaV4qiQCVAwUQOe6a4dbgof5P
+virdAQH7XQP+JI0HzuV4ycNw2rnLU4iNrINsC4ur5hTW48CQcX8/HFkTuygzFKVn
+AlrKEytdfJPaFMt6UAqUPB+NPJ6fwtJkU0cNsjCsZIGBh8AumyT560BWYm3iIac4
+Zn/9dKslg+SRJZU0T/A+Iip+3oFz8cl7BrkPgI1mLvUTOuBj4Kre/7k=
+=aSn9
+-----END PGP PUBLIC KEY BLOCK-----
+
+Type Bits KeyID Created Expires Algorithm Use
+sec+ 1024 0x5BA052C3 1997-12-08 ---------- DSS Sign & Encrypt
+f20 Fingerprint20 = F829 B805 207D 14C7 7197 7832 D8CA 3171 5BA0 52C3
+sub 2048 0xB4E60EA1 1997-12-08 ---------- Diffie-Hellman
+f20 Fingerprint20 = EF87 710B A12A 93F0 3529 E578 173D A3CD B4E6 0EA1
+uid Bruce A. Mah <bmah@ca.sandia.gov>
+uid Bruce A. Mah <bmah@acm.org>
+uid Bruce A. Mah <bmah@ieee.org>
+uid Bruce A. Mah <bmah@cisco.com>
+uid Bruce A. Mah <bmah@employees.org>
+uid Bruce A. Mah <bmah@freebsd.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 5.0i for non-commercial use
+
+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
+AKCOQUeC622jsKntTOR5R9Vv4wyyKQ==
+=L8Lf
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
&a.rich;
Rich Murphey <rich@FreeBSD.org>
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----
+
+
+ &a.obrien;
+
+
+Type Bits KeyID Created Expires Algorithm Use
+sec+ 1024 0x34F9F9D5 1995-04-23 ---------- RSA Sign & Encrypt
+f16 Fingerprint16 = B7 4D 3E E9 11 39 5F A3 90 76 5D 69 58 D9 98 7A
+ David E. O'Brien <obrien@NUXI.com>
+ David E. O'Brien <obrien@FreeBSD.org>
+ David E. O'Brien <obrien@cs.ucdavis.edu>
+ David E. O'Brien <dobrien@seas.gwu.edu>
+ David E. O'Brien <obrien@elsewhere.roanoke.va.us>
+ David E. O'Brien <whois Do38>
+
+sec+ 1024 0x7F9A9BA2 1998-06-10 ---------- DSS Sign & Encrypt
+f20 Fingerprint20 = 02FD 495F D03C 9AF2 5DB7 F496 6FC8 DABD 7F9A 9BA2
+sub 3072 0xBA32C20D 1998-06-10 ---------- Diffie-Hellman
+f20 Fingerprint20 = 0700 6058 CE6C 1C51 D0A3 45E6 26E1 A405 BA32 C20D
+ "David E. O'Brien" <obrien@NUXI.com>
+ "David E. O'Brien" <obrien@FreeBSD.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 5.0i for non-commercial use
+
+mQGiBDV+M04RBADXKeFCmXsTfVxqwiVHv7MWoP9uzUuILtt7QIDGLyEWdhDkqUXq
+Ux9yrH6B1y4q38XI7Z2OFh6KEXDDZyOR9ntsA0RF9+h+e92RfN6Co6F3SOyTuBuA
+Q+jV+Hl0mbh7Sqjl5SjTMjT3AvHnKM21Zac0zmjhhXFprSSILcMp1HBchwCg/7hP
+kuoubQUxdH5SjVKrsystWf0D+wWQ5PxKzz4lLDG2TZAgCD5C+a/IaXnGYvXjOfc2
+ktLChwVIxf7Z9cEARDOWEHPfwkjn0OEhtX7teUiOx34h3/wIVPN5IfqhHVCcEUQT
+R+ZwYAYACqfihfyYdzttVDGvHMmUwUgu2zr19N2olREqPA25hls7w7F6UlN4d+PF
+zljWA/wMHDG25k9UnDibKbCXQOhDARusL6YoFN3JneA4y/TM3rgoUQpBkk99218v
+LlaSz2TXH7ne+nxldX8IigN/SG9u6K6eWJ/LKSUuLyeo1r4oxGafCzteQSaBBOuQ
+hXbpX2xEK3wQ64NdnXlBZfBy5JEa+3SWpTO2iQC7JNtI0nLjm7QkIkRhdmlkIEUu
+IE8nQnJpZW4iIDxvYnJpZW5ATlVYSS5jb20+iQBLBBARAgALBQI1fjNOBAsDAQIA
+CgkQb8javX+am6LP8gCfXYmb3/0O/9viAhq4mXOMRM7GEygAoJCRiRmhfz84yCC7
+GSY/Li2Bi63TiQCVAwUQNX4zzWVgqaw0+fnVAQF21wP+PK9MlfIcaOAuQVMgQhsD
+Wqlj/DdxtsxT1GOnlHp3JGxdThyxdBDrxmiU22a6216s01fN5Ac25USeKRCcSVyG
+0+G/Xd3VfWDCEQCLNBwblAGKW9BEZfJhS1xOuTEYxgbmuvrlLTdvWm+MwPetv8ka
+yhD1LM4rVovMxenaPYUub2S0JyJEYXZpZCBFLiBPJ0JyaWVuIiA8b2JyaWVuQEZy
+ZWVCU0Qub3JnPokASwQQEQIACwUCNmOeXQQLAwECAAoJEG/I2r1/mpuiv3oAoOBm
+ZIDRolksEb0iNP46X96pRsU8AJ9nTPnCjxfj9oP0wQBslElAS8awfIkAlQMFEDZj
+ny5lYKmsNPn51QEBkUcEALYsZckj5fs7uUzjSgyzF/2RrHJ5gGrpNBwikiy1+wdZ
+6bz8CQ6kcYC3Dap3iHSc9KWTn6sK5ZvYXcYD9k7is8V8zuitUrrSGWpY96qmNsCT
+vPSwfwIcyhYSIJYjdqmv4EnKo2mwkY3zqOV9DT1ABFLSI9Eyy8ILeuhrm9jWEXs0
+tCoiRGF2aWQgRS4gTydCcmllbiIgPG9icmllbkBjcy51Y2RhdmlzLmVkdT6JAEsE
+EBECAAsFAjZjnroECwMBAgAKCRBvyNq9f5qbopXDAJ9VboPXKbLDYCS2jYZg+X7Z
+or1ZOQCfV+u96L4zxj10Z5bHhpJXaXsq1Aq5Aw0ENX4zUBAMAMwdd1ckOErixPDo
+jhNnl06SE2H22+slDhf99pj3yHx5sHIdOHX79sFzxIMRJitDYMPj6NYK/aEoJguu
+qa6zZQ+iAFMBoHzWq6MSHvoPKs4fdIRPyvMX86RA6dfSd7ZCLQI2wSbLaF6dfJgJ
+Co1+Le3kXXn11JJPmxiO/CqnS3wy9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlL
+OCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N
+286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/
+RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2O
+u1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqV
+DNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6UwybwACAgwAm1JzkDnM
+N7PqTh/hWMfxpsl1WzwQ0LecB/15UEKvqUZeRFcTCPh/6lVvJL64K2O4mVwTUnX4
+9EYDjccK/DQQEpEJ3XfOt/vMGFQXXO8frj4ulxeSQAaodmrJsfBexeLIatFidkHy
+5pN+5dpnQZhcoRrjpbK+mdu9gW4oImUKInFV7mIpVFK2sYQlkP52WZuPwXtkWjoa
+l+43oD7vGZpIdT6iqCI/hwF64bP6NtbVRaI3mbXOn+S2qdLf5YRROBavVa7yvBrZ
+7lOp71aGb9TjpOpxPWoISvKj9uzhFtuzh+k8ABv0hPNyF3iKaBWaeNEVpYlR3hOu
+ojcLG+6+X/GTbFbcFxeybbajkcksIs1oNSpRaNqHVpgBsbN59w7Tmva62bLz2R5U
+XhbmRuqvQujAwT2+6PcD1Ra/QG1QNyoM/leLhLjOjQGZ+SvlxDhDsgX+W3Y1QXX3
+e2Ual4c1K6itgvR02hKOR+IOl+IFB6dsd47cjyh0xuhKpjsEsE36aFk1iQA/AwUY
+NX4zUG/I2r1/mpuiEQIDyQCeOvK/V0VRBNZNAYknb2GfVTKVJWYAoMXeTJABkMDL
+P7bUxAmeYnY7l0UmmQCNAy+ZtI0AAAEEAMPph+5fYQ4pUXUCgsXGqWi1LuxtqSP3
+WC/20zlqOUq35T2e/3dEqFXB1Rbzz7rhI8hraDyGybexiO9OcQMbxSKBha+BnMyq
+hoTM7bmzSZCRSWtIQ3ugC5Q0O6RUkrHL3k88h/Q/9IrqCXIesMaeeWOIit7tJ9dY
+gWVgqaw0+fnVAAURtChEYXZpZCBFLiBPJ0JyaWVuIDxvYnJpZW5AY3MudWNkYXZp
+cy5lZHU+iQCVAwUQNHYnL6v/B7RG8yEtAQE2QwP/blDA0lFO0AH1/Dhvlc1ylPEG
+mQw0FDldz40N4ni5e3gRPdTy03AWrCDQMX7xLJ5Zd9HOA+IiPkDkj8OQkA9WUrPh
+HhAUMy2yh2PSnt2mIJ8dv4M5eH4H6IJPjMu6z08UvkKdXlpd9Ku2aRgyshV9dHFV
+ikMCMLTdk/i3RIApY0iJAJUDBRAykexbym8rg/wMAtUBAQSRA/9zHA9hUeLO2nVm
+d37pndP40JYiklLyw9mapz4xHQ8bsEVdERXQ6MdVNPa46j1RM1VdZMI7fBlK9aX+
+c7GW6swzEFC1eWtVnzeMMh46MEQLkAoYVOFRWkXH9hzGdEVcaJn9sSuoQ+KiFu72
+LVNg7KJI6v48CuWKep0H47nhuKPwbokAlQMFEDH/SvU/2TrIQc4JiQEBl88D/1d/
+WSV3W6RwZQUnbSp1GELg5knB87imzxf3t328/vzRRFUgAeB9qcW9fYRwdhZDs4ff
+UASm2fXSbXocnRdGDJMKaFZooJpYK95vZFc0irLhI92w2RjLH1tF/W0TCopWMLN4
+KuqYX3PLMzQEcj08w3BcwWXwD0UuVD91d4WeljRZiQCVAwUQMZSmW2Vgqaw0+fnV
+AQEkAwP8Dre9osgnIJLvVQlPLbuSExdrG8+m9mae8vaZVuFJFgo1x372oaZok0Vx
+ZHOkulspC6Mo0B8cPCI7BkfyfthHHZwh83Fr+MNfwjiG/JQEobvaTok+aU3cwQjz
+anQkBQZX/f0tYxTx7/tTWxMeR35CW7sIYgAsutBhKSPGC4VAe82JAJUDBRAx9B35
+V0EEo6SepNkBAT6YBACwTyfKQ019/Qgg04I0gEtJCiV2xa1ms7xpOVQj0TF/rzfN
+Z45BzbOKOtolsSGP72ddjqpgjsZ/7g3Z4VG83c+QDJVwEBpUe1D9DX8cEKMTBjZO
+JTTmGS0FIRrszddnLLf5gqNCWPYlImq8DR8Mjsy/vGsotkSLfKs7sdnzE7o0k7Qy
+RGF2aWQgRS4gTydCcmllbiA8ZGVmdW5jdCAtIG9icmllbkBTZWEuTGVnZW50LmNv
+bT6JAJUDBRAzZsMkZWCprDT5+dUBAcE/BACFUS0dN3dp6+sYxhTav9QfqOpWb/ay
+hwcUKoxuo/4c1IUDZ8sCkANIRLnFUjC8irF0oND67KNU2vZWRaqwJ6ghQIkrfRHf
+wUHRWAcoE1AFypHgOnE/KXuwmqkqHFmE4xpn0Ozpdcwc+KOSUFjToBgpAIwcZfIG
+3e8o1e0dj4PJD7QnRGF2aWQgRS4gTydCcmllbiA8ZG9icmllbkBzZWFzLmd3dS5l
+ZHU+iQCVAwUQMPa62j/ZOshBzgmJAQGY5gP/ZXM8VadFIywFzN43xK0L9nc6SwwI
+k0FaddKYvmvJgMz1Qp5gn3DcuH0CWyJwH3uRQvIMQXvQ57Iy3x4eb5WcwxwDaW6u
+TzC1uQtooAaAINCJuEaXrw4Q+uuGYGIAeh1x4TwUgdxmmq56cfkeiaXwwaJUoOga
+IiDd6vpM37ZU2gyJAHUDBRAv5F+Q0/I/Qidq6hEBAThXAwCnHV6THDI8Prkg8DXN
+KYzhGJH56WlujCpzqNKm8AC5rkp/5dtfiXsqadZK/VXlip/bXFB7nAR8k87MMXrt
+tYyPylFCEc7kLLqYJ6KeS8jTa6Q48W0LzbogSF/owFUL8bGJAJUDBRAvpRUNx4uq
+hJJkHpkBAWiSA/0b3F9ZwqMLFsSv1MAQOwoiw2QpAoQWV+oa4CNJVY4GoQjIbRZv
+WlkRAocjfv1oQr2dU1KxDmZCT8TolG9gQ232rm4n2anr7A9RVi3zdgvu6/VgklLL
+vzy12vV6y62CIB4s2Y0yY6BHDe/PyIpgmjOZLINIr8fAdLvNnZD0rmGkMIkAlQMF
+EC+ga/DKbyuD/AwC1QEBMWMD/2HyNJHmnL3A/LpaSOxhBuaXwHZ9WOwvOhBswj5v
+kgVh4ORFgtOdIskrO4rzMefVoV5ciEPQJFjk8L2MwC7zgjn2IT3TH3m4s8AfTStI
+lqbaASo+i9FhyKcAOW6K85NcYCfmo31sqWZ2wU0swgWz+uiGcgVpvvAbf636L7xh
+hjZgiQCVAwUQL5rlIWVgqaw0+fnVAQH+0QQAspRF9vtjuZ60MfHmhXkvJtbJXxxM
+kog1SWVfwcOfPrNlDtsxiVDSqypGoQgMykyTW2iNP78cji17bW5bRP8UJ6Z2buV5
+kzqDfw17fnwvyNj/fiLPRsgV5mMPMug4pbkLzC0b83zy+iITSCtVHd6IUSa3BZPm
+VFpX4OYphDiRfEC0MURhdmlkIEUuIE8nQnJpZW4gPG9icmllbkBlbHNld2hlcmUu
+cm9hbm9rZS52YS51cz6JAJUDBRAyZskiZWCprDT5+dUBAQ1RA/4ml0nJM5iZkpYu
+BJd/kUMLCsv3k+ApsMxB/ZBZWCfqmGBN7SBu6FTIgZCjC4/eUJPcLdMTF6NTbA+D
+7BQziV38lHCfo5d48Bq2hq6Fb7ti2/9FIgvalz5jSnmKKUAq7MHceRFJAJi1wOJY
+Hz0tYBHhD0EFSmzHNgwV4VA7m6m3c7QxRGF2aWQgRS4gTydCcmllbiA8ZGVmdW5j
+dCAtIG9icmllbkBtZWRpYS5zcmEuY29tPokAlQMFEDNmwwtlYKmsNPn51QEBphkE
+AK70I7FWzJfGMmtej7gN1rMliBxsfxxmy1DZVSVP0T7xkniIvgfmoiq+2Sn14iJl
+2Lb+i+/3ADS5XQxl09LciSq6YqvPhQZvAuRj5UxMO0nC4zO1+Jr6pxXH8cu5kx+5
+MAH9/K4ktbmL2RvtffJRJuv/0nyn7h1rRHVgyP+Yq6x6tB1EYXZpZCBFLiBPJ0Jy
+aWVuIDx3aG9pcyBEbzM4PokAlQMFEDHR+5BlYKmsNPn51QEBzMAD/R+ridxhjUWo
+JKpAfecs7rSTPq+ajwiVMjtykv97nbVOpFM4roctdiudUEjj0P6g331MsZOVST6M
+6sdztj+OzQhEtmQpw1SyXclUgaK2HsA9opIWQxU0XsGsiOochbPI+4ezXDvPeHgG
+YVRNDuFzb1BiVbauATXaq/HB6xDsHagdiQCVAwUQNmQ33T/ZOshBzgmJAQGrCwP+
+NNVRnjjcNo41qkTsRW8bhqhbHrHBOlAfq+3kT/gM1xUAcYsQOKurgBGNMAr3wew8
+ApsUz7QgatFLTgxBNX/vS6/7hUuqNJhBAwpCG6i4lUFmJKONY9YND9tP6VhNMdBL
+F76yUhxORPu4vcxPOqchN/Jgkevjf9ONnIYDeV/hySm0IkRhdmlkIEUuIE8nQnJp
+ZW4gPG9icmllbkBOVVhJLmNvbT6JAJUDBRA0didEq/8HtEbzIS0BAf5oA/43tqeI
+pgkuyKvCg28bX0YtQBSJo64ohFsSgQN2FANfpghH8dhfQt3/AXH3jOisHA7ESTNx
+ZT8yxPl3T4ZhZ3VILlldeuAM4g1U/ZDS+IPJMu7Rzwt4XYy725X+fLVeWoPIuIgp
+vX8+8hc7v6NkV2nwBMgbRGoblAzas2K79skXvIkAlQMFEDMWkrZD7IadE0shMQEB
+PbAD/06rmYrMb/Q/arblxzZ9DOpwuksv9ColF/vheexCLPzBcqtqxQ2li6f02CWA
+RH34P23gC5m2wUj7I5+5LvMOg1SFimSrlmvg8ZhgfKIvFjwbPG/g5rVq0/lcyNGQ
+/lTPJAsREBwcnBhkr9oT/BeRS7uoWykN4NM01dnx12upXvX0iQCVAwUQMpEBMWVg
+qaw0+fnVAQHeawP+M7BdBFis4zNe7H51+BA0i35yRoy1efj7bS7QBqPes+oxTpAi
+hO+wxwbXjurdNjCruldi926NCls+MLcSsGczWCHhe+o+Gp/xppjN9QX7SvHBVtSH
+nlUucwLpgdj4rOMcPjVIwLkH95JwaiDW2iO876rGuLbcn7oGT+3Ww1psEDGJAJUD
+BRA2ZDeVP9k6yEHOCYkBAfVdBACNSHeqQjRkeX2pP1woHSW4AD77buMHma5bno2F
+yChsCN7ZPdAlGixiscnwd41+nxuxiK2x/EyIuzs+9EYVtiikWeQCkR8ajGH0xXOK
+H+W8Mun1RtN9S8HtJWxX5Pfz8LHOziT6Y+HwJmncAIIbY3N+Yhbvd9XAl2l6OQ8c
+uSrrBIkAlQMFEDa+UHHKbyuD/AwC1QEBULYD/RgnK84Wf37e+5WGQbHgzUkrXXxz
+fFpRTEV0owBSK5KA7+qlGVQVFZJ/Qz4dEwU0EAHj72uaxVuYAa+fCaOzD/G6VOv+
+4r9zout8dxPYfK1RLPMg/5hn0Jqf2Ce733ibK8NUYtjMY5z0F5wjEdiieSsLIsT9
+J4dB2ZODT2Hfe7brtCVEYXZpZCBFLiBPJ0JyaWVuIDxvYnJpZW5ARnJlZUJTRC5v
+cmc+iQCVAwUQNHYnV6v/B7RG8yEtAQEkHgP7BSvndsqWiSDosBrnuD0R94ItlJKU
+sCt/vu/AuhosrOx2hYtD3TxU2ZBlBtS3mS3c7Qe13H/NFM+SrNXa0pbRoDsPlcNY
+nK/WV8G6/WDwLXrazm+iIwrPpbILKc/yfnWdGVdpIe3FaqUsEFDcgjMlcZ3gB6RA
+YGdzHyjZdJh1DIuJAJUDBRAyxHKdZWCprDT5+dUBAenWA/93EfJZx5fuarjQ7AnQ
+iPAjAi95v3Rlh13+N9vC34+C7RMi9pIj6B6PnWTNbVhg8RY8S6hB91J6GrN0KVLD
+8yDpY6+U08Yc47fOfSWhPopNDfqgviGw7ONmc2QCWEKpcH4c1VD2jJIr7iewfVgJ
+AiKdEB8kQhrutuQNDNNX1dCSCYkAlQMFEDWRdmGzWmLrWZ8yPQEBwswEAIRV9oAL
+x9Ow9ZDtG/TLfae29TBSYEinPj/6n8d+hQDiX41rQ4nLGCLcdgBtINKfeQ6WUcBW
+tWB9KqxdaV105QUhcEUpqMwK5U6DZBDipjuy4i6w7Ml0BLWtl/fANc33IPlnFAdD
+oP6s3oHtoRLNW0ryDk4g5bfFnMzF/X9hZdTLiQCVAwUQNmQ4Kj/ZOshBzgmJAQHb
+ZQP/Qs/Zefw9qxqrUihncZRIQbbnLsor4a0n2lH9cNTsSKU0H4a8rDlqYva+PFA1
+umFvVOon90dqoq8C6cykts4xRRKrPNnfiis+otwHgsKrzDIONyHWxnM9Ic/EjbOs
+AHcBCBtLwxczFegWNgWbEy0FIVlzcmquRxO+7woxeW5MEHiJAJUDBRAzaSRDV0EE
+o6SepNkBAfCOA/9e2DhVo6geSpWjdIXiv0yQC2Abv2TunPt2UiUxpgYkHzt+Ubk+
+k8cj2j723FZAfi+R7FobNSx7P4mCdrf2WEzaHdWLt6REr61rvqUc5ir/oHgUP1Ok
+tgAUhy6TJUMklyzENkPRZG2hiQbfPQYVEh5m1Xmcp3Gel0eiinWui2Iv/okAlQMF
+EDa+UHnKbyuD/AwC1QEB8CAD/2gYTjkPFcktVKkTX7w2O0Q3o7yLzbo9Y/USRsm+
+gVMMZjZ7QiiO1LGl6IIiKRtJIXi45PcHtYgSZlXKflqPHhEIrOhFwpV+C7uL5jnv
+ATGhlLHxWuNLTlPAVD5FsdJdOHI7UdkJh19JpphV+usu/mihMFEfM/kOVJeTXed1
+0E4T
+=Qwmg
+-----END PGP PUBLIC KEY BLOCK-----
+
+ &a.jdp;
John D. Polstra <jdp@polstra.com>
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----
-
- &a.peter;
-
-
-Peter Wemm <peter@FreeBSD.org>
- aka <peter@spinner.dialix.com>
- aka <peter@haywire.dialix.com>
- aka <peter@perth.dialix.oz.au>
-Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
-
-mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
-W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
-kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
-tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
-cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
-9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
-eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
-AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
-4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
-YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
-AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
-lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
-xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
-/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
-/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
-SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
-brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
-4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
-UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
-hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
-TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
-kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
-=gv+h
------END PGP PUBLIC KEY BLOCK-----
-
-
-
- &a.joerg;
-
-
-Type Bits/KeyID Date User ID
-pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
- Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
- Joerg Wunsch <joerg_wunsch@interface-business.de>
- Joerg Wunsch <j@uriah.heep.sax.de>
- Joerg Wunsch <j@interface-business.de>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
-
-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
-=97h7
------END PGP PUBLIC KEY BLOCK-----
-
-
-
-
- Разработчики
-
-
- &a.joe;
-
-
-Type Bits/KeyID Date User ID
-pub 768/7EBDECB1 1996/12/19 Josef L. Karthauser <joe@pavilion.net>
- joe@tao.org.uk
- joe@uk.freebsd.org
- joe@FreeBSD.org
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
-
-mQBtAzK5TJQAAAEDAKlRtbnhuBNWwq+hkYyubUzCYZu60ZFtwdkCgyBurSzTmfMG
-1ylVOdwzpgFL8JHRAGhzugRvZqRiCrCl+CvYaeW2+ee3Yw+brl6YEqLMxy0ap2kD
-NbpZ7LIO7AMffr3ssQAFEbQmSm9zZWYgTC4gS2FydGhhdXNlciA8am9lQHBhdmls
-aW9uLm5ldD6JAJUDBRA3DNxYDu2852ZqdCEBAXrwBACTRn6uz+uFHxi9nj8qdg14
-m3SvBJ58i82IdyhuD5m04/Rgc3Bwk1VDY2eKHuILcgDInd94EePpHTxMvjblfImn
-No9yqKYQw+V2zbsa8idTVDb5eNWGdRmVndjY95ZVKuhhIlwqLJELvKKbYZjjSabl
-ijn+lvEEl+gO4avcQZnOjIkAlQMFEDRSgYdv0qcS0gZ4vQEBq/cD+gJsogBSFwYl
-otle1JGgq1lkIq46uJWS8h61QL9+wnKQ3l19VElXK3/s/HUqBZagKyrF7QSs1dhg
-T/RKSr/kdG0dPhLhqESgzii9CS6MgHM8CnmP7oDP78i1yAkVL9bJ/a22Il+YZNlt
-r+XOn9EivaFojjHFQy5a+7e/HEXbgtwMiQD2AwUQMxRrf6ZKZnTBjNYdAQENIgcH
-RcYYGiOYT0FAqSvAlHPunpPhO+9TBKD5FP307YtUTHdI19Y+LgFT599ond3wfArR
-K3ue6D1G6//kbemfLZVxOJ+PRpJ0jIqZQ//7mKAI3VGu4vGO0EGQLkzIfwiVaCwa
-8jZh5406CaqE7DkXVypvcVkL3hdqD8o16qht8Y23rjrEUgRYIIWUGftCAHWMZEq3
-NqU/nqzgIv72PMEC3jBjdPld84GOiX9e3XjOSur6uLMRj87e9qce73sYUsGb2/cf
-ypx8Hy/FN/FVUKbW4/ddHOeW75vBGgtIwY0R+eDW1wWXiQB1AwUQMrlMlA7sAx9+
-veyxAQFftQL/T64Xc63YXllDIVGw0ZQtM0cdolYzP5OAu2Pvb0iWiJia6SkxePJo
-FyNuWEO0obBpeP/QuapnceYUBNiheT4gRccEO1+VjFRuAiZb7+Huwh4FXrRbhJte
-3FmOE07jacQ9tA5qb2VAdGFvLm9yZy51a4kAdQMFEDgPy5gO7AMffr3ssQEBYGsC
-/iIslOxLXMgz9BSw1ndflqYOImPtn4OQJAG+eyZInVKfZDhyEHtO6ID7zRNx+0wh
-fAgEU760e8V5rEFea9U0/qY7QneanDRGI+rP81V/fnP3wdZBCGXDNMCM6ofcuTP6
-MbQSam9lQHVrLmZyZWVic2Qub3JniQB1AwUQOA/Lgg7sAx9+veyxAQHeXgL8DJQ1
-xeeFLQOrg4vI5nfQOjPJqaZ4xpPv1k5wIjPRElGj7QACZVX5L/bEzhK+7fggSXxB
-b4cmEhiDOIFOBR6HWL/RnMimoGtC53OHKRrA43/eqB/saCbTfN4+KAypw1WatA9q
-b2VARnJlZUJTRC5vcmeJAHUDBRA4D8tRDuwDH3697LEBAZU6Av0e8n+hesovDEkn
-ox3JKhC1L33jXu0nOQZ/2Yz6jY1icghgy/L2KO57+T2YBV6DGpk4IlY9jZJRRKti
-KCHSMahng7whIHNSugWqzLNanK+YPfXC2CsUI02w1srjFcDurBg=
-=O/Rl
------END PGP PUBLIC KEY BLOCK-----
-
-
-
- &a.cpiazza;
-
-
-Type Bits/KeyID Date User ID
-pub 2048/FB722BE5 1996/04/07 Chris Piazza <cpiazza@jaxon.net>
- Chris Piazza <cpiazza@home.net>
- Chris Piazza <cpiazza@FreeBSD.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
-
-mQENAzFnIKcAAAEIANA6TShD9jrbc0IODhZooybcqM04h94IOaX5HPcYo/5FHSFB
-ezBuea19iBB/spGQUfpDAuGuqsz1DCCtL0OBz1cn4r74OMqrY4bQHKunCF8hUL8H
-hRVn33B5KmljTHo8jFQAV/8QwvU6OUaLgM4CoZsMdrgfSaAxGNGu+RAK2xbm9KX7
-BykXX+MIYRbJHpxA+25o8OZTOEC0Sa3kg94F9lT+iL1zB5s3dTPrQPzOFZCD0PdK
-ByEnGt+GoFNV1j7nO26vNa0fQZTSL+bNmnO54NPE0u8gtaqhGqRN+EHbo90eJ487
-XqDOI0b+XHK98y2T1lEGYmjuSLmA9xHAr/tyK+UABRG0IENocmlzIFBpYXp6YSA8
-Y3BpYXp6YUBqYXhvbi5uZXQ+iQEVAwUQOD+czfcRwK/7civlAQGdqggAnDjRfVCG
-QLCCncva1yLPQY2OUBz4SW4NfR4RSPbmDTs+kDJpqAN4/w76LwOry3B6Hp4MnrZP
-Iv0DDzePM+5hs535wDNcU6KQwbZEyv7e9Q+dpWW6vj8hEynZYp5Vcb0VbejU9NJf
-rHuSIx0cIKfztxM11csTYqPHGZcHUPy3w7BtB03ATioWt0/Ybj3vtLj36JHI1csk
-yzgeHJrQ17yvcoNGno2Aqrdbf+PJ7lO/Wiy+40r6jyJmt9o5neT1kOgVvXGVOp7R
-dbOQXGAZay2nxRcQALrRD7VF/ugpJke2MykL0GebFYmSOVWRjVkmLlXl/AXLS/Vw
-FJ0MTMDOOq7MCbQfQ2hyaXMgUGlhenphIDxjcGlhenphQGhvbWUubmV0PokBFQMF
-EDg/nOT3EcCv+3Ir5QEBc8sIAKz1sxByTTiwj8+FKKb1lFYgxXYfqUzp1dl31eFy
-fTXv6thrGvBzmBtMRLVOymvBBy7VP3cLN7rtyyS3jKR+UdDZcJBKM1bF5lBCWF7T
-DmpvHR79Od79pgWTiU7bkHM7LBXOEhahO9Q6SAIaIhw85LfVRV/oh2ZB+PocvyLe
-iJhKehe6W+ao0ZSUDm5tlG8wrgvjKEkEAOHh/pCCxFh2zQmUwyxFljy8/OooTE37
-tBaTTaVx98dQUtm59u8ITFpbmPX5mIlKu8H9R3oY1Ur6DPtHV7OTVewTBCjuatyw
-FwbGcP7DLEAmmYhICwtYQOa62+ORNh2/v/GHTt+ZxHFGHuW0IkNocmlzIFBpYXp6
-YSA8Y3BpYXp6YUBGcmVlQlNELm9yZz6JARUDBRA3a0Oi9xHAr/tyK+UBARC7B/9+
-CaKMlF11O8TpP3FfWUpwMwdMynaebd3Xx3U01DleHqnqfy8PwhZY9jwcvgggaXSN
-7FUUzRocsTTEbFj7hZHAYRfNH+KcXr3EmB5b82M10NHeqWIFF8vcpEwM6lvFIbne
-Mve1eVw4S2Vl0yHQJvoVUqAvlFpN3dgFOg69qBPe6qWsaNDPN+dwUorWckV613EP
-Gbxp9cs2j3awBnENjP16jkmEKuQPcAnl6l6XgP1X27PKICkPUTLO+CKfRq15Qs9p
-evhyqAaUMNU/GYMqs5sceDQq1PUpmE1syGCZUQmvYfXfRmujHdZnDRDl+afN4UoH
-hrCuygxmOl22RDH3aEXi
-=JxBt
------END PGP PUBLIC KEY BLOCK-----
-
-
&a.guido;
Guido van Rooij <guido@gvr.win.tue.nl>
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
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
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----
+
+ &a.wosch;
+
+
+Type Bits/KeyID Date User ID
+pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
+ Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3ia
+
+mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
+Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
+vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
+tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
+AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
+pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
+2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
+JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
+jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
+bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
+sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
+b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
+sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
+U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
+xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
+UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
+Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
+CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
+/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
+5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
+UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
+aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
+cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
+3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
+gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
+=3V1R
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.gshapiro;
+
+
+Type Bits KeyID Created Expires Algorithm Use
+sec+ 1024 0x4FBE2ADD 2000-10-13 ---------- RSA Sign & Encrypt
+f16 Fingerprint16 = 56 D5 FF A7 A6 54 A6 B5 59 10 00 B9 5F 5F 20 09
+uid Gregory Neil Shapiro <gshapiro@gshapiro.net>
+uid Gregory Neil Shapiro <gshapiro@FreeBSD.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 5.0i for non-commercial use
+
+mQCNAznnjPsAAAEEAL5gfaY7RP5vm89lqmjGAJRBFLM/qzHJKrYkRVDASeLZ0/JI
+Bfypd8N1vQz80tnqzOh7aLgAskgluyx0O9EuZXTJUwm+ew6wA8vh8JA0kpI5g3N5
+wjXQNWPxSCeNIz1hbgAPtRunVLXXoaxxCQziU38bd2RvzlvgQdbgof5PvirdAAUR
+tCxHcmVnb3J5IE5laWwgU2hhcGlybyA8Z3NoYXBpcm9AZ3NoYXBpcm8ubmV0PokA
+lQMFEDnnjRPW4KH+T74q3QEBKlED/1F8UjkufYD0G9eV7X5ujAVffIBl6nvHVw4+
+/m+lXxnUmOInk8AUmHIxK62BJ9CPWHegf91BsGNMVA7cQiF+atdz8Yy4h1Snt7FB
+OsL2Ak0g2WUrIDfB+N5SB/EjdK0BdURsccYbORGVIveveUNmxuW4jUZWcInCkDx4
+FTGRxzAFiQCVAwUQOeevO3xLZ22gDhVjAQHAVAP+NWdTbxipCQANnRf4BNl492mG
+VN51MBZnlsy/lyMu2yckR3eacaXmp3zKardwex7Ajle5XC6sJ1H3twYv8g63eqJ4
+XuxC9Uxmer2mj7wibcO2srtwv2hgLMNVjJrClALolQ6WT7/6L1YENP0Ef26eJXnw
+pwXdfaXurbwnv4tyOOGJAJUDBRA556+fvdqP1j/qff0BAVUtA/94+oMC9pJgXi+0
+tbwUsAu/pJqHByjCjO+LscH+gtqb4VhfxdEllHTVj5Cju7o+HcYZdtTRdggx2FqV
+zaCp2kq1kbEGuQCJzwNHkG10I8C5YlyXUaYGwX1gEPImzTpOI0C3Any0UvK4KQsl
+Crj0UmRARVwzulGYE7hxknivvkdbw7QrR3JlZ29yeSBOZWlsIFNoYXBpcm8gPGdz
+aGFwaXJvQEZyZWVCU0Qub3JnPokAlQMFEDnnjPvW4KH+T74q3QEBMeYD/03sPgJ0
+QKQXzSRGyiVZBkZ4frsFj6nH2IP9+zCTRUlX0uyo6f1Z2RC3a++MbaKFR/LUmdZ8
+DkOfOTcvsoIQJ6BOQO1/XpOkppvhrYRUU7a6C9wM7ptWEJvx5IcmWk5oWxmx373e
+cPb5MkhiXK85/NRxhlS5PG5kcz2ajJ7imYnuiQCVAwUQOeevZnxLZ22gDhVjAQGn
+2AQAta7mxgLMyGKhq9msyQ2rITAhEvhoYM47OeOgyq5FKx0b0rEmIjC+sDx3YOsb
+auw/Z5bAYzZnUmhe65KKA76eITqlnMt1ykaDu0jQLGKczXjuLCMCDT/JCZStoyt6
+XhG9R+R8PnXk80PtZlTJjHuJyghBq5fzrIKs0k2G7eVchnKJAJUDBRA556+nvdqP
+1j/qff0BAWVdA/9m5bMpkhnxDcfApaDp6mF2hEdacuHXrMXOzsrTuFiFoJhByXfM
+bMDM1T8Hq3FU8TJ3BQ/ydgoeiuvWJ5j0clBegCbxS7tH/FvlnZBikNeARFTD0m5H
+hmG+vzIwhe2sjh7/0dqaj1RMwLPxrQVyukHGnzyFodjcDJy1jWEl1Onytw==
+=i+mc
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.gshapiro;
+
+
+Type Bits KeyID Created Expires Algorithm Use
+sec+ 1024 0xFCE56561 2000-10-14 2001-10-14 DSS Sign & Encrypt
+f20 Fingerprint20 = 42C4 A87A FD85 C34F E77F 5EA1 88E1 7B1D FCE5 6561
+sub 1024 0x285DC8A0 2000-10-14 2001-10-14 Diffie-Hellman
+f20 Fingerprint20 = 69AB 26D1 A244 51E3 2B6C 7091 BD19 FA76 285D C8A0
+uid Gregory Neil Shapiro <gshapiro@gshapiro.net>
+uid Gregory Neil Shapiro <gshapiro@FreeBSD.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 5.0i for non-commercial use
+
+mQGiBDnnrJwRBACXxbriCa+0S4JY8rFJe9U160xXZ0hqJsvfIZtokLGDjC21G83K
+4pTJRhdWlWa04HrehUtMIdT/EXKfUJCFl7vk/WGWT3/1H3xxEUQzxKu3xAJWQXJs
+8t2r+Dkj0csrpLJvRyuZ5+mzzFbzFSIaWohlY8Q1Ou+39jORfyVPkGjizwCg5Czr
+VDcXH2oTF3vMHsw/Bhfz3bMD/AhY8q/jmUiV09hCKb7XG6f0C+qpmBeByk5G/JFm
+TRv5T34MkWQJodaUOhJtzoOsOjKQSect3c+XncIMADAGCnGPGP/6sxfuyLOgsuV6
+TXSxUvxi+E99zKTmKPFRTBuJCVATrTmHHAiLEqTZzE8DeJ6wK9kT1fRVnCKs4ycz
+I7diA/44Ay2OW4PAuri2lJm7yXsiP54lNCP0eMXOQ8RSWBZhHKQl66o/pm+FsT9G
+K5XloJrFa7+2XuiVoyNiva18dZkCFJzychda9pwfkkHjtidMRI97ACdUCPPQFVMB
+7Dqr4wXp+qQ+tXScnZT3LMeotFwuiSfDl4VeNOswEw+F9ObCUbQsR3JlZ29yeSBO
+ZWlsIFNoYXBpcm8gPGdzaGFwaXJvQGdzaGFwaXJvLm5ldD6JAFwEExECABwFAjnn
+rJwFCQHhM4AECwoDBAMVAwIDFgIBAheAAAoJEIjhex385WVhDocAnjzccU2v9ekk
+oUZZHoV7Bugs1npLAKDAmgzpoU3sU6zXwEQVEVq+wPpZD4kARgQQEQIABgUCOeet
+DgAKCRAY9QOAJMJ4AkNKAJ93IfPLKQoBCm3TEkoQQeJWYNcRwwCdEzokbdvw/ZJw
+xivyMefPJ3br/2+0K0dyZWdvcnkgTmVpbCBTaGFwaXJvIDxnc2hhcGlyb0BGcmVl
+QlNELm9yZz6JAFwEExECABwFAjnnrPwFCQHhM4AECwoDBAMVAwIDFgIBAheAAAoJ
+EIjhex385WVhktIAoMvD+IjOrWx+dJ3xmV+dVm+Bnu0aAJ0bSPAcx4cPpR/peHQF
+JNrZgswER4kARgQQEQIABgUCOeetEgAKCRAY9QOAJMJ4AoxaAJ9OZYEXRzSmnbDo
+Vukf+j5LB/fA2gCgpOQ8p/cw15Dmd27gDJ58DkTpyRi5AQ0EOeesnhAEAO9L5G1l
+A3oDYFq62bifXtKS/zM2aiKND8yONxRaEuhcSqroNY5FrRy1wd4t14SA4/LzZ34D
+siuNZ2+h2HD/3KTMDQ/qE/FBblNwE5ZH9cQ44a9WwGsWFDRgtuHV/7dHlZClPpwD
++tFVI7UGufhv+PPKAG3tTfRvWY2lReqVwsc3AAMFBADlrsLDoQFnE2ieS5pn3pB/
+aiMF2Z09U6fVTY+mdAdAU43xifQFGMi9vuzHNzwFGtJosK35BhfSshHTER3cT0yN
+79HifRAAwKP+KIoxFhfgudZafG6BaaIOUlhPW8s9k+FtN04x6/jgRq9pz/E6MwVx
+W0Rf6V5XAIFWWN3xd2JH5okATAQYEQIADAUCOeesngUJAeEzgAAKCRCI4Xsd/OVl
+YeFIAKC//WKobq3b9vGn1zkBTuomGMPa3QCgm71DX+8oALnjNzj5f4+wH0CtV/iJ
+AEwEGBECAAwFAjnnrJ4FCQHhM4AACgkQiOF7HfzlZWHhSACg1QVuMlj4R1DH6avL
+pqMjQ7U7OMcAn2uyl3bEe476vV8RnKf83qQuw4uZ
+=PgGN
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.ben;
+
+
+Type Bits KeyID Created Expires Algorithm Use
+sec+ 1024 0x99392F7D 1998-08-23 ---------- RSA Sign & Encrypt
+f16 Fingerprint16 = 3D 89 87 42 CE CA 93 4C 68 32 0E D5 36 05 3D 16
+uid Ben Smithurst <ben@scientia.demon.co.uk>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: PGPfreeware 5.0i for non-commercial use
+
+mQCNAzXffuQAAAEEAKXLh1Z3Bg5yrHVrmm9bFUKcg5VwwWyiY0M2LznqHOhhKSPd
+yXkyWWaRZBSSZEa/KneVEYcUVM6CIwGrnO9h8drkxdZgPukrWqzkgwiI+zsOs8tS
+XAMnnoukIrfcSq8Vcclb6YW6/nduakPLTuHvHpJXhNwP+ITp1CsPVtiZOS99AAUR
+tChCZW4gU21pdGh1cnN0IDxiZW5Ac2NpZW50aWEuZGVtb24uY28udWs+iQCVAwUQ
+Nd9+5CsPVtiZOS99AQGVFAP9G0tcrm8PK1MP57xbztNzPoWnP6h5MJmVH3nor7wE
+dJwEHPXwGwqR92RptH4G+dHipbGSqsqWh65WyeTrzgm4pyX32Zb6AM2+Bbv+2NP0
+HdcY+qhlEYZyPsryuqySAWwUKSDxx22JD0cxQp1CDkeSdB8VBVCix5ZsPPMOm9/I
+ZO0=
+=IcyI
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.dcs;
+
+
+Type Bits/KeyID Date User ID
+pub 1024/488A2DD5 2000/06/07 Daniel C. Sobral <dcs@freebsd.org>
+ Key fingerprint = AF 90 A6 A2 B5 8D 6C 28 37 F3 F4 47 8B 31 47 DF
+ Daniel C. Sobral <dcs@newsguy.com>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: 2.6.3ia
+
+mQCNAzk+tBAAAAEEAK5EJZPGnimL5cl9lFRpl3mYboOuN6K/ne/2oHt5CNlhBTuU
+64VDPcBsM6ha+KJwSCdiO191AHnbpJSmIzNmL1VLHZunbZhJms2rf388pXO6nyu3
+GW7x2nmqg5qTTkVZAILcuqb8DF4ODF8FEwwCzDJ4ikhSxgXbsTN8YkBIii3VAAUR
+tCJEYW5pZWwgQy4gU29icmFsIDxkY3NAZnJlZWJzZC5vcmc+iQCVAwUQOUVdXVUu
+Hi5z0oilAQGl2gQAgWztCfCITJ7AF2e32Cq0FQkBSuh0jEIyEpZuGPJA9WbShDFL
+gZW2xxLezaCHLx+tIwyT5I0oMDEY1GG5bk0Hv3X7YUZBWvdlmHMtBgW4BM/iIm9b
+NHXhRecC9MEiwvUSCEXjpP6RDoP3GO3n3rraBDl/C1X89fDJMYB9gNwr+oCJAJUD
+BRA5PrQQM3xiQEiKLdUBAfUBA/4vbs1IsfssAbgzoYxoxVojgaQuuipZW6bCCBgj
+RSysFrNJiEi3Z9QsNKduFcZhSeYxhzwZxLb6bsoinqB60FJdZc9ivjho7ALaveYH
+haZSniBayp3zQLllzfmbrbGmSD/Jvn1Qwj85ZMZ1T21VVLVhN1pqssaX7InoRYzu
+oQKJVLQiRGFuaWVsIEMuIFNvYnJhbCA8ZGNzQG5ld3NndXkuY29tPokAlQMFEDk+
+vYUzfGJASIot1QEBPjAEAJMooQYQUef1jKBsYC9xh9WcvtQ45Hku+BKwU6tBlhLT
+JMIn9n0guzXey4gsVcpgJcjmZEXAq+dbgL/ps63CXQAahomlszpdea9aumbak1aU
+51eIEftheyZaqmM4stDvoC+pdQxWP5K3n2d/7itwFde19xQNuK9UD9iPjJnz2L47
+=oxOV
+-----END PGP PUBLIC KEY BLOCK-----
+
+
&a.brian;
Type Bits/KeyID Date User ID
pub 1024/666A7421 1997/04/30 Brian Somers <brian@awfulhak.org>
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
Brian Somers <brian@uk.OpenBSD.org>
Brian Somers <brian@uk.FreeBSD.org>
Brian Somers <brian@OpenBSD.org>
Brian Somers <brian@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=Tq7h
-----END PGP PUBLIC KEY BLOCK-----&a.gsutter;
-Type Bits KeyID Created Expires Algorithm Use
-sec+ 1024 0x40AE3052 1998-07-18 ---------- DSS Sign & Encrypt
-f20 Fingerprint20 = 61D4 6A28 F282 482E 1D82 D077 E31E 323D 40AE 3052
-uid Gregory S. Sutter <gsutter@pobox.com>
-uid Gregory S. Sutter <gsutter@zer0.org>
-uid Gregory S. Sutter <gsutter@daemonnews.org>
-uid Gregory S. Sutter <gsutter@freebsd.org>
+pub 1024D/845DFEDD 2000-10-10 Gregory S. Sutter <gsutter@zer0.org>
+ Key fingerprint = D161 E4EA 4BFA 2427 F3F9 5B1F 2015 31D5 845D FEDD
+uid Gregory S. Sutter <gsutter@freebsd.org>
+uid Gregory S. Sutter <gsutter@daemonnews.org>
+uid Gregory S. Sutter <gsutter@pobox.com>
+sub 2048g/0A37BBCE 2000-10-10
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGPfreeware 5.0i for non-commercial use
+Comment: ''
-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
-AW4VTHVXOY6g
-=Zu9y
+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
+z9sAn1jpwcaKsxGC0aycsTEQABKrEX0m
+=Osmp
-----END PGP PUBLIC KEY BLOCK-----
- &a.wosch;
+ &a.wollman;
+
+
+pub 1024D/0B92FAEA 2000-01-20 Garrett Wollman <wollman@FreeBSD.org>
+ Key fingerprint = 4627 19AF 4649 31BF DE2E 3C66 3ECF 741B 0B92 FAEA
+sub 1024g/90D5EBC2 2000-01-20
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.1 (FreeBSD)
+Comment: For info see http://www.gnupg.org
+
+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
+FBHY6YDvOcKAekCi
+=Ws0Y
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+ &a.joerg;
Type Bits/KeyID Date User ID
-pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
- Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
+pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
+ Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
+ Joerg Wunsch <joerg_wunsch@interface-business.de>
+ Joerg Wunsch <j@uriah.heep.sax.de>
+ Joerg Wunsch <j@interface-business.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: 2.6.3ia
+Version: PGPfreeware 5.0i for non-commercial use
-mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
-Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
-vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
-tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
-AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
-pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
-2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
-JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
-jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
-bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
-sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
-b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
-sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
-U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
-xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
-UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
-Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
-CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
-/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
-5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
-UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
-aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
-cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
-3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
-gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
-=3V1R
+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
+=grTK
-----END PGP PUBLIC KEY BLOCK-----
+
diff --git a/ru_RU.KOI8-R/books/handbook/policies/chapter.sgml b/ru_RU.KOI8-R/books/handbook/policies/chapter.sgml
new file mode 100644
index 0000000000..5dd2e86b3e
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/policies/chapter.sgml
@@ -0,0 +1,431 @@
+
+
+
+ Рекомендации и требования к исходному коду
+
+ Текст предоставил &a.phk;.
+
+ В этой главе описываются различные рекомендации и требования, которые
+ должны соблюдаться в дереве исходных текстов FreeBSD.
+
+
+ MAINTAINER в make-файлах
+
+ Июнь 1996.
+
+ Если некоторая часть дистрибутива FreeBSD поддерживается некоторым
+ человеком или группой людей, они могут сообщить об этом миру, добавив
+ строчку
+
+
+MAINTAINER= email-addresses
+
+ в файл Makefile, соответствующий этой части
+ исходного кода.
+
+ Смысл этого в следующем:
+
+ Сопровождающий владеет кодом и отвечает за него. Это означает, что
+ он несет ответственность за исправление ошибок и закрывает сообщения о
+ проблемах, имеющих отношение к этой части кода, а в случае программного
+ обеспечения, взятого из третьих источников, соответственно отвечает за
+ отслеживание новых версий.
+
+ Изменения в каталогах, для которых известен сопровождающий, прежде
+ чем они будут внесены, должны быть посланы ему на рассмотрение. Только
+ если сопровождающий не отвечает в течение достаточно большого периода
+ времени на несколько посланий по электронной почте, разрешается внести
+ изменения без участия сопровождающего. Однако рекомендуется, чтобы вы
+ попытались передать изменения на рассмотрение кому-либо еще, если это
+ вообще возможно.
+
+ Конечно же, нельзя назначать человека или группу лиц
+ сопровождающими, если они не согласны выполнять эту работу. С другой
+ стороны, необязательно это должен быть конкретный коммиттер, это может
+ быть и группа людей.
+
+
+
+ Программное обеспечение третьих сторон
+
+ Текст предоставили &a.phk; и &a.obrien;.
+
+ Июнь 1996.
+
+ Некоторые части дистрибутива FreeBSD состоят из программного
+ обечпечения, которое сопровождается вне проекта FreeBSD. По
+ историческим причинам мы называем такое программное обеспечение
+ контрибуцированным (contributed), или третьих
+ сторон. Примерами этого могут служить утилиты perl, gcc и
+ patch.
+
+ За последние несколько лет для работы с таким программным
+ обеспечением использовались различные методы, и все они имели свои
+ достоинства и недостатки. Абсолютно подходящего метода так и не
+ нашлось.
+
+ По этой причине после некоторых дебатов был выбран и признан
+ официальным один из этих методов, который необходимо
+ применять в будущем при импортировании такого рода программного
+ обеспечения. Более того, настоятельно рекомендуется с течением времени
+ перевести существующее программное обеспечение третьих сторон на этот
+ метод, так как он имеет значительные преимущества перед старым методом,
+ включая возможность легкого получения diff-файлов относительно
+ официальных версий исходных текстов кем угодно (даже
+ не имеющим доступа к cvs). Это делает данный метод гораздо проще
+ в использовании при необходимости выдачи изменений изначальным
+ разработчикам такого программного обеспечения.
+
+ В конце концов, однако, это касается тех, кто делает реальную
+ работу. Если использование этой модели в конкретном случае не подходит
+ для пакета, с которым работает человек, могут быть сделаны и
+ исключения только с согласия основной команды разработчиков и при общем
+ одобрении других разработчиков. Возможность сопровождения пакета в
+ будущем будет являться ключевым моментом при принятии решений.
+
+
+ Из-за досадных ограничений в дизайне формата файлов RCS и
+ использовании веток поставщика в CVS, мелкие, тривиальные и/или
+ косметические изменения сильно не рекомендуется
+ в файлах, которые все еще отслеживаются в ветке поставщика. Это
+ касается и исправления орфографических ошибок как
+ относящихся к категории косметических и избегаемых
+ для файлов с версиями 1.1.x.x. Рост объема хранилища, вызванный
+ изменением в один символ, может оказаться весьма большим.
+
+
+ В качестве примера того, как работает эта модель, будем
+ использовать встраиваемый язык программирования
+ TCL:
+
+ Каталог src/contrib/tcl содержит исходные
+ тексты пакета в том виде, в котором они распространяются его
+ создателями. Части, которые полностью не применимы во FreeBSD, могут
+ быть удалены. В случае Tcl подкаталоги mac,
+ win и compat были удалены
+ перед операцией импортирования
+
+ Каталог src/lib/libtcl содержит только файл
+ Makefile "в стиле bmake", который использует
+ стандартные правила bsd.lib.mk make-файла для
+ построения библиотеки и установки документации.
+
+ В каталоге src/usr.bin/tclsh размещаются
+ make-файлы в стиле bmake, которые отвечают за построение и установку
+ программы tclsh и связанных с ней справочных
+ страниц при помощи стандартных правил из
+ bsd.prog.mk.
+
+ Каталог src/tools/tools/tcl_bmake содержит
+ несколько shell-скриптов, которые могут помочь при обновлении
+ программного обеспечения tcl. Они не являются частью строящегося и
+ исталлируемого программного обеспечения.
+
+ Здесь важно то, что каталог src/contrib/tcl
+ создавался в соответствии с правилами: Предполагается, что он содержит
+ исходнве тексты в том виде, в котором они распространяются (в
+ соответствующей ветви поставщика CVS и без расширения ключевых слов
+ RCS) с максимально малым количеством изменений, специфичных для
+ FreeBSD. Утилита 'easy-import' на машине freefall поможет в
+ импортировании, но если есть сомнения по поводу выполнения этой
+ операции, то обязательно спросите совета и не действуйте слепо в
+ расчете на то, что все сработает. CVS не прощает ошибок
+ импортирования и для ликвидации последствий больших ошибок требуются
+ значительные усилия.
+
+ Из-за ранее отмеченных ограничений дизайна веток поставщиков в CVS
+ требуется, чтобы официальные патчи от разработчика
+ были сначала применены к распространяемым исходным текстам, а затем
+ результат снова импортирован в ветку поставщика. Официальные патчи
+ никогда не должны применяться к версии, извлеченной из хранилища
+ FreeBSD, а затем "коммититься", так как это привдет к рассинхронизации
+ дерева производителя и усложнит импортирование будущих версий, так как
+ возникнут конфликты.
+
+ Так как многие пакеты содержат файлы, имеющие значение при
+ обеспечении совместимости с другими, отличными от FreeBSD архитектурами
+ и окружениями, то разрешается удалять части дистрибутивного дерева,
+ не представляющие интереса для FreeBSD в целях уменьшения занимаемого
+ дискового пространства. Файлы, содержащие замечания о юридических
+ правах и информацию о релизе, касающуюся остальных файлов, удаляться
+ не должны.
+
+ Если это видится легким, то файлы Makefile в
+ стиле bmake могут быть сгенерированы из
+ дистрибутивного дерева автоматически некоторой утилитой, чем-то, что
+ позволит еще проще обновляться до новой версии. Если это будет
+ сделано, то обязательно поместите эту утилиту (если необходимо) в
+ каталог src/tools вместе с самим портом, чтобы
+ она была доступна будущим сопровождающим лицам.
+
+ В каталог src/contrib/tcl должен быть добавлен
+ файл FREEBSD-upgrade, в котором нужно перечислить
+ такие вещи:
+
+
+
+ Какие файлы были оставлены
+
+
+
+ Где был взят оригинальный дистрибутив и/или на каком основном
+ официальном сайте он находится.
+
+
+
+ Куда посылать патчи для разработчиков пакета
+
+
+
+ Возможно, обзор сделанных изменений, специфичных для
+ FreeBSD.
+
+
+
+ Однако, пожалуйста, не импортируйте
+ FREEBSD-upgrade вместе с исходными текстами
+ этого программного обеспечения. Вместо этого вы должны выполнить
+ команды cvs add FREEBSD-upgrade ; cvs ci после
+ первоначального импортирования. Ниже дается пример описания из
+ каталога src/contrib/cpio:
+
+
+This directory contains virgin sources of the original distribution files
+on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
+the files in this directory via patches and a cvs commit. New versions or
+official-patch versions must be imported. Please remember to import with
+"-ko" to prevent CVS from corrupting any vendor RCS Ids.
+
+For the import of GNU cpio 2.4.2, the following files were removed:
+
+ INSTALL cpio.info mkdir.c
+ Makefile.in cpio.texi mkinstalldirs
+
+To upgrade to a newer version of cpio, when it is available:
+ 1. Unpack the new version into an empty directory.
+ [Do not make ANY changes to the files.]
+
+ 2. Remove the files listed above and any others that don't apply to
+ FreeBSD.
+
+ 3. Use the command:
+ cvs import -ko -m 'Virgin import of GNU cpio v<version>' \
+ src/contrib/cpio GNU cpio_<version>
+
+ For example, to do the import of version 2.4.2, I typed:
+ cvs import -ko -m 'Virgin import of GNU v2.4.2' \
+ src/contrib/cpio GNU cpio_2_4_2
+
+ 4. Follow the instructions printed out in step 3 to resolve any
+ conflicts between local FreeBSD changes and the newer version.
+
+Do not, under any circumstances, deviate from this procedure.
+
+To make local changes to cpio, simply patch and commit to the main
+branch (aka HEAD). Never make local changes on the GNU branch.
+
+All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
+inclusion in the next vendor release.
+
+obrien@FreeBSD.org - 30 March 1997
+
+
+
+
+ Нежелательные файлы
+
+ Иногда может быть необходимо включить некоторый нежелатеьный для
+ нас файл в дерево исходных текстов FreeBSD. Например, если устройство
+ требует загрузки в него некоторого маленького двоичного кода перед тем,
+ как устройство заработает, и мы не имеем исходных текстов этого кода,
+ то говорится, что двоичный файл является нежелательным. Для включения
+ нежелательных файлов в дерево исходных текстов FreeBSD имеются
+ следующие соглашения.
+
+
+
+ Любой файл, интерпретируемый или выполняемый системным(и) CPU,
+ не в форме исходного кода, является нежелательным.
+
+
+
+ Любой файл с лицензией, ограничивающей более, чем BSD или GNU,
+ является нежелательным.
+
+
+
+ Файл, содержащий загружаемые двоичные данные, используемые
+ аппаратным обеспечением, не являются нежелательными, если только
+ к нему не применимы условия (1) или (2). Он должен быть сохранен в
+ нейтральном к архитектуре формате ASCII (рекомендуется применить
+ утилиты file2c или uuencode).
+
+
+
+ Люой нежелательный файл требует особое согласие со стороны
+ основной команды разработчиков до
+ того, как он будет добавлен в хранилище CVS.
+
+
+
+ Нежелательные файлы помещаются в каталог
+ src/contrib или
+ src/sys/contrib.
+
+
+
+ Части одного модуля должны храниться вместе. Нет необходимости
+ разбивать их, если только нет совместного использования с кодом,
+ не являющимся нежелательным.
+
+
+
+ Объектные файлы именуются
+ arch/filename.o.uu>.
+
+
+
+ Файлы ядра;
+
+
+
+ Должны всегда упоминаться в
+ conf/files.* (для упрощения
+ построения).
+
+
+
+ Должны всегда присутствовать в LINT,
+ но основная команда
+ разработчиков решает в каждом конкретном случае, должны
+ ли они быть раскомментированы или нет. Конечно, позже основная команда разработчиков
+ может изменить свое решение.
+
+
+
+ Вопрос о вхождении в состав релиза решается инженером, ответственным за
+ релиз.
+
+
+
+
+
+ Файлы уровня пользователя;
+
+
+
+ Основная команда
+ разработчиков решает, должен ли код стать частью
+ выполнения команды make world.
+
+
+
+ Релиз-инженер решает,
+ войдут ли они в релиз.
+
+
+
+
+
+
+
+ Динамические библиотеки
+
+ Текст предоставили &a.asami;, &a.peter;, и &a.obrien; 9
+ декабря 1996.
+
+ Если вы добавляете поддержку динамических библиотек к порту или
+ другой части программного обеспечения, которая этой возможностью не
+ обладает, то номера версий должны назначаться по нижеследующим
+ правилам. Как правило, получающиеся номера не имеют ничего общего с
+ номером релиза программного обеспечения.
+
+ При построении динамической библиотеки используются три
+ принципа:
+
+
+
+ Начинаем с 1.0
+
+
+
+ Если есть изменение, которое имеет обратную совместимость,
+ увеличиваем младший номер версии (заметьте, что системы ELF его
+ игнорируют)
+
+
+
+ Если есть изменение, не соблюдающее совместимость, увеличиваем
+ старший номер версии
+
+
+
+ К примеру, добавление функций и исправление ошибок приводит к
+ увеличению младшего номера версии, а удаление функций, изменение
+ синтаксиса вызова функции и тому подобные изменения приводят к
+ изменению старшего номера версии.
+
+ Следуйте схеме нумерации версий в форме старший.младший
+ (x.y). Наш
+ динамический загрузчик формата a.out не умеет нормально работать с
+ номерами версий в форме
+ x.y.z.
+ Любой номер версии после y (то есть третье
+ число) полностью игнорируется при сравнении номеров версий динамических
+ библиотек для определения того, с какой библиотекой осуществлять
+ компоновку. Если есть две динамические библиотеки, отличающиеся только
+ микро-номером версии, то ld.so будет
+ осуществлять компоновку с наибольшим номером. Другими словами: если
+ вы компонуете с libfoo.so.3.3.3, то компоновщик
+ запишет в заголовках только 3.3 и будет выполнять
+ компоновку с любой библиотекой, начинающейся с
+ libfoo.so.3.(все, что >=
+ 3).(наибольшее из
+ доступного).
+
+
+ ld.so всегда будет использовать наибольшую
+ младшую версию. Иными словами: он будет предпочитать
+ использовать libc.so.2.2, а не
+ libc.so.2.0, даже если программа изначально была
+ скомпонована с libc.so.2.0.
+
+
+ Вдобавок наш динамический компоновщик ELF совсем не работает с
+ младшими версиями. Однако все же нужно указывать старший и младший
+ номер версии, а наши файлы Makefile "сделают все
+ как нужно" в зависимости от типа системы.
+
+ Для библиотек не в составе портов, имеется наше соглашение на
+ изменение номера версии динамической библиотеки только один раз между
+ релизами. Кроме того, есть договоренность на изменение старшего
+ номера динамической библиотеки только один раз между главными релизами
+ ОС. А именно: X.0 на (X+1).0. Когда вы делаете изменение в системной
+ библиотеке, которое требует увеличения номера версии, посмотрите
+ журналы коммитов изменений в файле Makefile.
+ Коммиттер отвечает за то, что первое такое изменение с момента релиза
+ приведет к обновлению номера версии динамической библиотеки в файле
+ Makefile, а при других последующих изменениях
+ этого бы не делалось.
+
+
+
+
\ No newline at end of file
diff --git a/ru_RU.KOI8-R/books/handbook/security/chapter.sgml b/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
new file mode 100644
index 0000000000..f9371cd49c
--- /dev/null
+++ b/ru_RU.KOI8-R/books/handbook/security/chapter.sgml
@@ -0,0 +1,2747 @@
+
+
+
+ Безопасность
+
+ Большинство нижеизложенной информации повторяет страницы
+ &man.security.7; справочника, изначально написанного
+ &a.dillon;.
+
+
+ Краткий обзор
+
+ В этой главе мы расскажем об основных сведениях, которые
+ необходимо знать, затрагивающие общую безопасность системы, о том, как
+ подбирать хорошие пароли, и о таких вещах как S/Key, OpenSSL, Kerberos
+ и других.
+
+
+
+ Введение
+
+ Несомненно, одна из важнейших задач системного администратора
+ – обеспечивать безопасность системы. Многопользовательские
+ системы, такие как BSD UNIX, имеют некоторый базовый набор средств
+ безопасности, однако обычно этого бывает недостаточно, и, чтобы
+ построить и поддерживать безопасность системы на должном уровне,
+ администратору приходится прикладывать некоторые усилия. Безопасность
+ системы целиком и полностью находится в руках системного
+ администратора. UNIX системы способны выполнять огромное число
+ процессов одновременно, и многие из них являются серверами, то есть к
+ ним можно обращаться извне. Сегодня уже никого не удивишь компьютером
+ на рабочем столе, а с распространением и повсеместным внедрением в
+ нашу жизнь сетевых технологий проблемы безопасности становятся
+ первоочередными.
+
+ Лучше всего строить модель безопасности, основываясь на
+ уровневом подходе. В двух словах, это означает создание
+ неких эшелонов, колец защиты, и бдительное
+ наблюдение за состоянием каждого уровня. Имейте в виду, что слишком
+ перегруженная система безопасности может скорее
+ помещать, нежели помочь предотвращению атаки. Например, не стоит
+ устанавливать schg-флаги (см. &man.chflags.1;) на каждый выполняемый
+ системный файл, так как это, возможно, и предотвратит
+ несанкционированные модификации Ваших файлов, но, в то же время, может
+ лишить Вас легко детектируемых следов пребывания хакера, что ему
+ только на руку.
+
+ Пречислим ключевые действия, которые имеют непосредственное
+ отношение к безопасности любой компьютерной системы:
+
+
+
+ Атаки типа отказ от обслуживания (D.o.S.).
+
+
+
+ Получение пользовательского аккаунта.
+
+
+
+ Получение прав суперпользователя (root) через доступные
+ сервисы.
+
+
+
+ Получение прав суперпользователя (root) через пользовательские
+ аккаунты.
+
+
+
+ Создание люков (задних дверей, черных
+ ходов).
+
+
+
+ При атаке на отказ от обслуживания машина лишается необходимых
+ ресурсов для выполнения требуемых запросов. Наиболее типичными
+ атаками этого типа являются механизмы так называемой грубой
+ силы (brute-force), которые направлены на выведение из строя
+ отдельных серверов или сети в целом. Иногда для достижения цели
+ используются обнаруженые ошибки в сетевом стеке, когда даже одного
+ специальным образом составленного пакета достаточно, чтобы вывести
+ машину из строя. Обычно ошибки такого рода исправляются путем
+ прикладывания соответствующих патчей к ядру. Разумно
+ также тщательно подбирать сетевые опции, чтобы не допустить перегрузки
+ серверов при работе с очень высоким потоком данных (например,
+ каким-либо образом ограничивать этот поток). Если же Вашу систему
+ атакуют методом грубой силы, бороться с этим сложнее.
+ Например, если машину забрасывают специальным образом
+ сгенерированными пакетами, то часто бывает, что практически невозможно
+ остановить атакующего, кроме как полностью отключив компьютер от сети.
+ Даже в этом случае, хотя Ваша машина не будет затронута, сетевой
+ трафик будет сильно нарушен.
+
+ Атаки, нацеленные на аккаунты рядовых пользователей распространены
+ еще больше, чем атаки на отказ от обслуживания. Многие системные
+ администраторы все еще достаточно часто используют стандартные
+ сервисы, такие как telnetd, rlogind, rshd и ftpd. Эти демоны, по
+ умолчанию, не используют шифрование передаваемых по сети данных при
+ своей работе. В результате, если у Вас достаточно большое число
+ пользователей системы, весьма вероятно, что кто-нибудь из них
+ рано или поздно засветит свой пароль. Поэтому
+ внимательный администратор всегда должен анализировать файлы системных
+ журналов на предмет попыток зайти на машину
+ с необычных адресов, и тем более в случае успеха таких попыток.
+
+ Всегда важно помнить, что если атакующий имеет доступ к
+ пользовательскомуц аккаунт, то потенциально он может получить и права
+ суперпользователя. Однако, на самом деле, на правильно и умело
+ сконфигурированной и регулярно проверяемой машине, наличие
+ пользовательского аккаунта вовсе не означает, что атакующий сможет
+ сломать ее. Разница между типичным пользовательским
+ аккаунтом и аккаунтом суперпользователя в том, что во втором случае
+ атакующий может сделать с системой что угодно, в то же время, без
+ привилегий суперпользователя, можно лишь модифицировать или удалить
+ файлы, принадлежащие данному пользователю, или в худшем случае
+ завесить машину. Случаи, когда атакующий получает
+ (неавторизованно) пользовательские права, весьма нередки, так как
+ обычно рядовые пользователи не принимают всех необходимых мер
+ предосторожности, и часто в задачу системного администратора входит
+ принятие этих мер.
+
+ Системный администратор всегда должен иметь ввиду, что существует
+ множество потенциальных путей, которыми атакующих может проникнуть в
+ систему. Например, он может знать пароль суперпользователя,
+ воспользоваться ошибкой в программном обеспечении, выполняющимся с
+ повышеными привилегиями, сетевом или локальном. Если атакующий нашел
+ способ проникнуть в систему (получить привелегии суперпользователя),
+ то чаще всего он попытается оставить так называемый люк,
+ чтобы в следующий раз ему не пришлось проделывать всю грязную работу
+ заново (и затем убирать за собой). Это дает Вам удобную возможность
+ обнаружить взломщика (так как ему придется произвести кое-какие
+ изменения в системе). Если же хакер смог установить люк, это может
+ губительно сказаться на безопасности Вашей системы, так как сильно
+ снижаются шансы, что кто-нибудь еще попытаеся взломать ее тем же
+ способом, что и в первый раз, и, таким образом, дырка в системе
+ останется открытой.
+
+ Как уже было сказано ранее, лучше всего строить модель безопасности,
+ основываясь на уровневом подходе. Перечислим основные
+ моменты:
+
+
+
+ Обеспечивание безопасности служебных аккаунтов и аккаунта суперпользователя.
+
+
+
+ Безопасность серверов, выполняющихся с повышенными привилегиями, и исполнимых файлов, использующих SUID/SGID механизм.
+
+
+
+ Обеспечивание безопасности пользовательских аккаунтов.
+
+
+
+ Защита файлов, содержащих пароли.
+
+
+
+ Защита ядра операционной системы, raw устройств и файловых
+ систем.
+
+
+
+ Быстрое обнаружение подозрительных изменений в системе.
+
+
+
+ Паранойя.
+
+
+
+ В следующей секции все перечисленные пункты будут рассмотрены в
+ подробностях.
+
+
+
+ Обеспечиваем безопасность FreeBSD
+
+ В этой секции мы расскажем об основных методах защиты и
+ обеспечивания безопасности Вашей системы FreeBSD, которые были
+ упомянуты в предыдущей секции
+ этой главы.
+
+
+ Защита аккаутнов суперпользователя и служебного
+ персонала
+
+ В первую очередь нужно обеспечить безопасность
+ суперпользовательского аккаунта, и уже после принимать аналочичные
+ меры в отношении прочих привелигированных аккаунтов. Во многих
+ системах аккаунт суперпользователя защищен паролем. Имейте в виду,
+ что этот пароль крайне важен, а поэтому нелишним будет относиться к
+ нему с очень большой осторожностью. Прежде всего, желательно
+ не использовать его кроме как за консолью, даже применяя команду
+ &man.su.1;. В частности, удостоверьтесь, что терминалы, перечисленные
+ в файле /etc/ttys, помечены как insecure
+ (небезопасные), чтобы запретить прямой доступ посредством команд
+ telnet или rlogin. При
+ использовании других сервисов, таких, например, как
+ sshd, также следует запретить
+ непосредсвенный вход в систему с правами суперпользователя.
+ Проверьте все возможные подступы к системе – сервисы типа
+ FTP чато оказываются подверженными атакам. Непосредственный
+ вход в систему с правами суперпользователя следует разрешить
+ только с консоли.
+
+ Конечно, Вам как системному администратору необходимо иметь
+ возжожность получить права суперпользователя, поэтому несколько
+ путей все же есть. Однако, очень важно защитить их использование
+ дополнительными паролями. Один из способов дать какому-либо
+ пользователю повышенные привилегии – это перечислить его
+ в группе wheel (в файле
+ /etc/group). Пользователь, входящий в эту
+ группу, может вызвать su для получения прав
+ суперпользователя. Не следует включать всех членов служебного
+ персонала в группу wheel, задавая ее как основную
+ группу пользователя в файле паролей. Вместо этого, нужно включить
+ их в специальную группу staff, и затем, только
+ в случае необходимости, некоторых из них включить в группу
+ wheel, сделав соответсвующую запись в файле
+ /etc/group. Также возможно, при использовании
+ методов аутентикации типа kerberos, использовать файл
+ .k5login для того, чтобы разрешить получение
+ привилегий супервозователя посредствеом команды &man.ksu.1; без
+ необходимости включать кого-либо в группу wheel.
+ Это может оказаться лучшим решением, так как предыдущий метод
+ позволяет хакеру получить права суперпользователя, если ему удастся
+ получить доступ к служебному акканту. Тем не менее, все это лучше,
+ чем ничего.
+
+ Аккаунт суперпользователя можно защитить косвенным путем,
+ посредством использования альтернативных методов аутентикации и
+ замены хэшированных паролей служебных аккаунтов на символ
+ * в файле паролей (/etc/passwd). В этом случае,
+ даже если взломщик получит этот файл, он не сможет извлечь оттуда
+ пароли, включая пароль суперпользователя. Сотрудники служебного
+ персонала будут сходить в систему при помощи защищенного механизма
+ аутентикации, например, &man.kerberos.1; или &man.ssh.1;, используя
+ специальную пару ключей (приватный/публичный). При использовании
+ систем типа kerberos, Вам потребуется обеспечить безопасность
+ kerberos-серверов и Вашей рабочей станции. При использовании
+ механизма публичного/приватного ключей, например, при работе с
+ ssh, Вам необходимо обеспечить
+ безопасность машины, с которой Вы будете
+ заходить в систему (обычно это Ваша рабочая станция), но можно также
+ обеспечить себе дополнительную безопасность, защитив пару ключей
+ паролем в момент ее генерации (&man.ssh-keygen.1;). Возможность
+ заменять реальные хэши паролей на символ * в
+ файле паролей (это особенно важно для аккаунтов служебного
+ персонала, обладающего повышенными привилегиями по сравнению с
+ обычными пользователями) также гарантирует, что они будут
+ пользоваться только безопасными методами аутентикации, которые Вы
+ предварительно настроили. Это хорошо тем, что закрывает наиболее
+ часто используемую взломщиками дыру – прослушивание
+ (сниффинг) сети с менее защищенной машины (на которой
+ у него уже есть все необходимые привилегии).
+
+ Еще стоит обратить внимание на следующие моменты: если Ваш
+ основной сервер предоставляет всевозможные сетевые сервисы, то на
+ Вашей рабочей станции по возможности максимальное число сетевых
+ служб должно быть отключено (а в идеале – все), и нелишним
+ будет использование хранителя экрана, защищенного паролем. Конечно,
+ если у злоумышленника есть физический доступ к машине, то
+ практически никакие методы защиты не помогут (хотя и могут
+ значительно увеличить время взлома), однако большинство атак все же
+ происходят снаружи, по сети, когда у атакующего нет
+ непосредственного доступа к системе.
+
+ При использовании систем аутентикации типа kerberos, у Вас есть возможность централизованно менять пароли или блокировать доступ пользователей. Это очень полезно при подозрении, что пароль какого-либо (например, администраторского) аккаунта стал известен постороннему лицу – в этом случае можно очень быстро запретить вход на все машины, где был заведен данный пользователь. Представьте себе, насколько труднее и дольше было бы менять пароли на каждой из N машин отдельно! Kerberos предосталяет и другие возможности (принудительная смена пароля по истечении определенного промежутка времени, например).
+
+
+
+ Безопасность серверов, выполняющихся с повышенными привилегиями, и исполнимых файлов, использующих SUID/SGID механизм
+
+ Осторожный системный администратор конфигурирует систему так, чтобы запущены были только самые необходимые сервисы. Не больше, не меньше. Стоит с особой осторожностью отновиться
+ tHE prudent sysadmin only runs the servers he needs to, no more, no less. Be aware that third party servers are often the
+ most bug-prone. For example, running an old version of imapd or
+ popper is like giving a universal root ticket out to the entire
+ world. Never run a server that you have not checked out
+ carefully. Many servers do not need to be run as root. For
+ example, the ntalk,
+ comsat, and
+ finger daemons can be run in special
+ user sandboxes. A sandbox isn't perfect unless
+ you go to a large amount of trouble, but the onion approach to
+ security still stands: If someone is able to break in through
+ a server running in a sandbox, they still have to break out of the
+ sandbox. The more layers the attacker must break through, the
+ lower the likelihood of his success. Root holes have historically
+ been found in virtually every server ever run as root, including
+ basic system servers. If you are running a machine through which
+ people only login via sshd and never
+ login via telnetd or
+ rshd or
+ rlogind, then turn off those
+ services!
+
+ FreeBSD now defaults to running
+ ntalkd,
+ comsat, and
+ finger in a sandbox. Another program
+ which may be a candidate for running in a sandbox is &man.named.8;.
+ The default rc.conf includes the arguments
+ necessary to run namedin a sandbox in a
+ commented-out form. Depending on whether you are installing a new
+ system or upgrading an existing system, the special user accounts
+ used by these sandboxes may not be installed. The prudent
+ sysadmin would research and implement sandboxes for servers
+ whenever possible.
+
+ There are a number of other servers that typically do not run
+ in sandboxes: sendmail,
+ popper,
+ imapd, ftpd,
+ and others. There are alternatives to some of these, but
+ installing them may require more work then you are willing to
+ perform (the convenience factor strikes again). You may have to
+ run these servers as root and rely on other mechanisms to detect
+ break-ins that might occur through them.
+
+ The other big potential root hole in a system are the
+ suid-root and sgid binaries installed on the system. Most of
+ these binaries, such as rlogin, reside
+ in /bin, /sbin,
+ /usr/bin, or /usr/sbin.
+ While nothing is 100% safe, the system-default suid and sgid
+ binaries can be considered reasonably safe. Still, root holes are
+ occasionally found in these binaries. A root hole was found in
+ Xlib in 1998 that made
+ xterm (which is typically suid)
+ vulnerable. It is better to be safe then sorry and the prudent
+ sysadmin will restrict suid binaries that only staff should run to
+ a special group that only staff can access, and get rid of
+ (chmod 000) any suid binaries that nobody uses.
+ A server with no display generally does not need an
+ xterm binary. Sgid binaries can be
+ almost as dangerous. If an intruder can break an sgid-kmem binary
+ the intruder might be able to read /dev/kmem
+ and thus read the crypted password file, potentially compromising
+ any passworded account. Alternatively an intruder who breaks
+ group kmem can monitor keystrokes sent through
+ pty's, including pty's used by users who login through secure
+ methods. An intruder that breaks the tty group can write to
+ almost any user's tty. If a user is running a terminal program or
+ emulator with a keyboard-simulation feature, the intruder can
+ potentially generate a data stream that causes the user's terminal
+ to echo a command, which is then run as that user.
+
+
+
+ Securing User Accounts
+
+ User accounts are usually the most difficult to secure. While
+ you can impose Draconian access restrictions on your staff and
+ * out their passwords, you may not be able to
+ do so with any general user accounts you might have. If you do
+ have sufficient control then you may win out and be able to secure
+ the user accounts properly. If not, you simply have to be more
+ vigilant in your monitoring of those accounts. Use of
+ ssh and kerberos for user accounts is
+ more problematic due to the extra administration and technical
+ support required, but still a very good solution compared to a
+ crypted password file.
+
+
+
+ Securing the Password File
+
+ The only sure fire way is to * out as many
+ passwords as you can and use ssh or
+ kerberos for access to those accounts. Even though the crypted
+ password file (/etc/spwd.db) can only be read
+ by root, it may be possible for an intruder to obtain read access
+ to that file even if the attacker cannot obtain root-write
+ access.
+
+ Your security scripts should always check for and report
+ changes to the password file (see Checking file integrity
+ below).
+
+
+
+ Securing the Kernel Core, Raw Devices, and
+ Filesystems
+
+ If an attacker breaks root he can do just about anything, but
+ there are certain conveniences. For example, most modern kernels
+ have a packet sniffing device driver built in. Under FreeBSD it
+ is called the bpf device. An intruder
+ will commonly attempt to run a packet sniffer on a compromised
+ machine. You do not need to give the intruder the capability and
+ most systems should not have the bpf device compiled in.
+
+ But even if you turn off the bpf device, you still have
+ /dev/mem and /dev/kmem
+ to worry about. For that matter, the intruder can still write to
+ raw disk devices. Also, there is another kernel feature called
+ the module loader, &man.kldload.8;. An enterprising intruder can
+ use a KLD module to install his own bpf device or other sniffing
+ device on a running kernel. To avoid these problems you have to
+ run the kernel at a higher secure level, at least securelevel 1.
+ The securelevel can be set with a sysctl on
+ the kern.securelevel variable. Once you have
+ set the securelevel to 1, write access to raw devices will be
+ denied and special chflags flags, such as schg,
+ will be enforced. You must also ensure that the
+ schg flag is set on critical startup binaries,
+ directories, and script files – everything that gets run up
+ to the point where the securelevel is set. This might be overdoing
+ it, and upgrading the system is much more difficult when you
+ operate at a higher secure level. You may compromise and run the
+ system at a higher secure level but not set the
+ schg flag for every system file and directory
+ under the sun. Another possibility is to simply mount
+ / and /usr read-only.
+ It should be noted that being too draconian in what you attempt to
+ protect may prevent the all-important detection of an
+ intrusion.
+
+
+
+ Checking File Integrity: Binaires, Configuration Files,
+ Etc.
+
+ When it comes right down to it, you can only protect your core
+ system configuration and control files so much before the
+ convenience factor rears its ugly head. For example, using
+ chflags to set the schg bit
+ on most of the files in / and
+ /usr is probably counterproductive because
+ while it may protect the files, it also closes a detection window.
+ The last layer of your security onion is perhaps the most
+ important – detection. The rest of your security is pretty
+ much useless (or, worse, presents you with a false sense of
+ safety) if you cannot detect potential incursions. Half the job
+ of the onion is to slow down the attacker rather then stop him in
+ order to give the detection side of the equation a chance to catch
+ him in the act.
+
+ The best way to detect an incursion is to look for modified,
+ missing, or unexpected files. The best way to look for modified
+ files is from another (often centralized) limited-access system.
+ Writing your security scripts on the extra-secure limited-access
+ system makes them mostly invisible to potential hackers, and this
+ is important. In order to take maximum advantage you generally
+ have to give the limited-access box significant access to the
+ other machines in the business, usually either by doing a
+ read-only NFS export of the other machines to the limited-access
+ box, or by setting up ssh keypairs to
+ allow the limit-access box to ssh to
+ the other machines. Except for its network traffic, NFS is the
+ least visible method – allowing you to monitor the
+ filesystems on each client box virtually undetected. If your
+ limited-access server is connected to the client boxes through a
+ switch, the NFS method is often the better choice. If your
+ limited-access server is connected to the client boxes through a
+ hub or through several layers of routing, the NFS method may be
+ too insecure (network-wise) and using
+ ssh may be the better choice even with
+ the audit-trail tracks that ssh
+ lays.
+
+ Once you give a limit-access box at least read access to the
+ client systems it is supposed to monitor, you must write scripts
+ to do the actual monitoring. Given an NFS mount, you can write
+ scripts out of simple system utilities such as &man.find.1; and
+ &man.md5.1;. It is best to physically md5 the client-box files
+ boxes at least once a day, and to test control files such as those
+ found in /etc and
+ /usr/local/etc even more often. When
+ mismatches are found relative to the base md5 information the
+ limited-access machine knows is valid, it should scream at a
+ sysadmin to go check it out. A good security script will also
+ check for inappropriate suid binaries and for new or deleted files
+ on system partitions such as / and
+ /usr.
+
+ When using ssh rather then NFS,
+ writing the security script is much more difficult. You
+ essentially have to scp the scripts to the client box in order to
+ run them, making them visible, and for safety you also need to
+ scp the binaries (such as find) that those
+ scripts use. The ssh daemon on the
+ client box may already be compromised. All in all, using
+ ssh may be necessary when running over
+ unsecure links, but it's also a lot harder to deal with.
+
+ A good security script will also check for changes to user and
+ staff members access configuration files:
+ .rhosts, .shosts,
+ .ssh/authorized_keys and so forth…
+ files that might fall outside the purview of the
+ MD5 check.
+
+ If you have a huge amount of user disk space it may take too
+ long to run through every file on those partitions. In this case,
+ setting mount flags to disallow suid binaries and devices on those
+ partitions is a good idea. The nodev and
+ nosuid options (see &man.mount.8;) are what you
+ want to look into. I would scan them anyway at least once a week,
+ since the object of this layer is to detect a break-in whether or
+ not the break-in is effective.
+
+ Process accounting (see &man.accton.8;) is a relatively
+ low-overhead feature of the operating system which I recommend
+ using as a post-break-in evaluation mechanism. It is especially
+ useful in tracking down how an intruder has actually broken into
+ a system, assuming the file is still intact after the break-in
+ occurs.
+
+ Finally, security scripts should process the log files and the
+ logs themselves should be generated in as secure a manner as
+ possible – remote syslog can be very useful. An intruder
+ tries to cover his tracks, and log files are critical to the
+ sysadmin trying to track down the time and method of the initial
+ break-in. One way to keep a permanent record of the log files is
+ to run the system console to a serial port and collect the
+ information on a continuing basis through a secure machine
+ monitoring the consoles.
+
+
+
+ Паранойя
+
+ A little paranoia never hurts. As a rule, a sysadmin can add
+ any number of security features as long as they do not effect
+ convenience, and can add security features that do effect
+ convenience with some added thought. Even more importantly, a
+ security administrator should mix it up a bit – if you use
+ recommendations such as those given by this document verbatim, you
+ give away your methodologies to the prospective hacker who also
+ has access to this document.
+
+
+
+ Denial of Service Attacks
+
+ This section covers Denial of Service attacks. A DOS attack
+ is typically a packet attack. While there is not much you can do
+ about modern spoofed packet attacks that saturate your network,
+ you can generally limit the damage by ensuring that the attacks
+ cannot take down your servers.
+
+
+
+ Limiting server forks.
+
+
+
+ Limiting springboard attacks (ICMP response attacks, ping
+ broadcast, etc.).
+
+
+
+ Kernel Route Cache.
+
+
+
+ A common DOS attack is against a forking server that attempts
+ to cause the server to eat processes, file descriptors, and memory
+ until the machine dies. Inetd (see &man.inetd.8;) has several
+ options to limit this sort of attack. It should be noted that
+ while it is possible to prevent a machine from going down it is
+ not generally possible to prevent a service from being disrupted
+ by the attack. Read the inetd manual page carefully and pay
+ specific attention to the , ,
+ and options. Note that spoofed-IP attacks
+ will circumvent the option to inetd, so
+ typically a combination of options must be used. Some standalone
+ servers have self-fork-limitation parameters.
+
+ Sendmail has its
+ option which tends to work
+ much better than trying to use sendmail's load limiting options
+ due to the load lag. You should specify a
+ MaxDaemonChildren parameter when you start
+ sendmail high enough to handle your
+ expected load but no so high that the computer cannot handle that
+ number of sendmails without falling on
+ its face. It is also prudent to run sendmail in queued mode
+ () and to run the daemon
+ (sendmail -bd) separate from the queue-runs
+ (sendmail -q15m). If you still want realtime
+ delivery you can run the queue at a much lower interval, such as
+ , but be sure to specify a reasonable
+ MaxDaemonChildren option for that sendmail to
+ prevent cascade failures.
+
+ Syslogd can be attacked directly
+ and it is strongly recommended that you use the
+ option whenever possible, and the option
+ otherwise.
+
+ You should also be fairly careful with connect-back services
+ such as tcpwrapper's reverse-identd,
+ which can be attacked directly. You generally do not want to use
+ the reverse-ident feature of
+ tcpwrappers for this reason.
+
+ It is a very good idea to protect internal services from
+ external access by firewalling them off at your border routers.
+ The idea here is to prevent saturation attacks from outside your
+ LAN, not so much to protect internal services from network-based
+ root compromise. Always configure an exclusive firewall, i.e.,
+ firewall everything except ports A, B,
+ C, D, and M-Z. This way you can firewall off all of your
+ low ports except for certain specific services such as
+ named (if you are primary for a zone),
+ ntalkd,
+ sendmail, and other internet-accessible
+ services. If you try to configure the firewall the other way
+ – as an inclusive or permissive firewall, there is a good
+ chance that you will forget to close a couple of
+ services or that you will add a new internal service and forget
+ to update the firewall. You can still open up the high-numbered
+ port range on the firewall to allow permissive-like operation
+ without compromising your low ports. Also take note that FreeBSD
+ allows you to control the range of port numbers used for dynamic
+ binding via the various net.inet.ip.portrange
+ sysctl's (sysctl -a | fgrep
+ portrange), which can also ease the complexity of your
+ firewall's configuration. I usually use a normal first/last range
+ of 4000 to 5000, and a hiport range of 49152 to 65535, then block
+ everything under 4000 off in my firewall (except for certain
+ specific internet-accessible ports, of course).
+
+ Another common DOS attack is called a springboard attack
+ – to attack a server in a manner that causes the server to
+ generate responses which then overload the server, the local
+ network, or some other machine. The most common attack of this
+ nature is the ICMP ping broadcast attack.
+ The attacker spoofs ping packets sent to your LAN's broadcast
+ address with the source IP address set to the actual machine they
+ wish to attack. If your border routers are not configured to
+ stomp on ping's to broadcast addresses, your LAN winds up
+ generating sufficient responses to the spoofed source address to
+ saturate the victim, especially when the attacker uses the same
+ trick on several dozen broadcast addresses over several dozen
+ different networks at once. Broadcast attacks of over a hundred
+ and twenty megabits have been measured. A second common
+ springboard attack is against the ICMP error reporting system.
+ By constructing packets that generate ICMP error responses, an
+ attacker can saturate a server's incoming network and cause the
+ server to saturate its outgoing network with ICMP responses. This
+ type of attack can also crash the server by running it out of
+ mbuf's, especially if the server cannot drain the ICMP responses
+ it generates fast enough. The FreeBSD kernel has a new kernel
+ compile option called ICMP_BANDLIM which limits the effectiveness
+ of these sorts of attacks. The last major class of springboard
+ attacks is related to certain internal inetd services such as the
+ udp echo service. An attacker simply spoofs a UDP packet with the
+ source address being server A's echo port, and the destination
+ address being server B's echo port, where server A and B are both
+ on your LAN. The two servers then bounce this one packet back and
+ forth between each other. The attacker can overload both servers
+ and their LANs simply by injecting a few packets in this manner.
+ Similar problems exist with the internal chargen port. A
+ competent sysadmin will turn off all of these inetd-internal test
+ services.
+
+ Spoofed packet attacks may also be used to overload the kernel
+ route cache. Refer to the net.inet.ip.rtexpire,
+ rtminexpire, and rtmaxcache
+ sysctl parameters. A spoofed packet attack
+ that uses a random source IP will cause the kernel to generate a
+ temporary cached route in the route table, viewable with
+ netstat -rna | fgrep W3. These routes
+ typically timeout in 1600 seconds or so. If the kernel detects
+ that the cached route table has gotten too big it will dynamically
+ reduce the rtexpire but will never decrease it to less then
+ rtminexpire. There are two problems:
+
+
+
+ The kernel does not react quickly enough when a lightly
+ loaded server is suddenly attacked.
+
+
+
+ The rtminexpire is not low enough for
+ the kernel to survive a sustained attack.
+
+
+
+ If your servers are connected to the internet via a T3 or
+ better it may be prudent to manually override both
+ rtexpire and rtminexpire
+ via &man.sysctl.8;. Never set either parameter to zero (unless
+ you want to crash the machine :-). Setting both
+ parameters to 2 seconds should be sufficient to protect the route
+ table from attack.
+
+
+
+ Access Issues with Kerberos and SSH
+
+ There are a few issues with both kerberos and
+ ssh that need to be addressed if you
+ intend to use them. Kerberos V is an excellent authentication
+ protocol but the kerberized telnet and
+ rlogin suck rocks. There are bugs that
+ make them unsuitable for dealing with binary streams. Also, by
+ default kerberos does not encrypt a session unless you use the
+ option. ssh
+ encrypts everything by default.
+
+ ssh works quite well in every
+ respect except that it forwards encryption keys by default. What
+ this means is that if you have a secure workstation holding keys
+ that give you access to the rest of the system, and you
+ ssh to an unsecure machine, your keys
+ becomes exposed. The actual keys themselves are not exposed, but
+ ssh installs a forwarding port for the
+ duration of your login and if a hacker has broken root on the
+ unsecure machine he can utilize that port to use your keys to gain
+ access to any other machine that your keys unlock.
+
+ We recommend that you use ssh in
+ combination with kerberos whenever possible for staff logins.
+ ssh can be compiled with kerberos
+ support. This reduces your reliance on potentially exposable
+ ssh keys while at the same time
+ protecting passwords via kerberos. ssh
+ keys should only be used for automated tasks from secure machines
+ (something that kerberos is unsuited to). We also recommend that
+ you either turn off key-forwarding in the
+ ssh configuration, or that you make use
+ of the from=IP/DOMAIN option that
+ ssh allows in its
+ authorized_keys file to make the key only
+ useable to entities logging in from specific machines.
+
+
+
+
+ DES, MD5, and Crypt
+
+ Parts rewritten and updated by &a.unfurl;, 21 March
+ 2000.
+
+ Every user on a UNIX system has a password associated with their
+ account, obviously these passwords need to be known only to
+ the user and the actual operating system. In order to keep
+ these passwords secret, they are encrypted with what is known
+ as a 'one-way hash', that is, they can only be easily encrypted
+ but not decrypted. The only way to get the password is by
+ brute force searching the space of possible passwords.
+ Unfortunately the only secure way to encrypt passwords when
+ UNIX came into being was based on DES, the Data Encryption
+ Standard. This is not such a problem for users that live in
+ the US, but since the source code for DES cannot be exported
+ outside the US, FreeBSD had to find a way to both comply with
+ US law and retain compatibility with all the other UNIX
+ variants that still use DES.
+
+ The solution was to divide up the encryption libraries
+ so that US users could install the DES libraries and use
+ DES but international users still had an encryption method
+ that could be exported abroad. This is how FreeBSD came to
+ use MD5 as it's default encryption method.
+
+
+ Recognizing your crypt mechanism
+
+ It is pretty easy to identify which encryption method
+ FreeBSD is set up to use. Examining the encrypted passwords in
+ the /etc/master.passwd file is one way.
+ Passwords encrypted with the MD5 hash are longer than those with
+ encrypted with the DES hash and also begin with the characters
+ $1$. DES password strings do not
+ have any particular identifying characteristics, but they are
+ shorter than MD5 passwords, and are coded in a 64-character
+ alphabet which does not include the $
+ character, so a relatively short string which does not begin with
+ a dollar sign is very likely a DES password.
+
+ Identifying which library is being used by the programs on
+ your system is easy as well. Any program that uses crypt is linked
+ against libcrypt which for each type of library is a symbolic link
+ to the appropriate implementation. For example, on a system using
+ the DES versions:
+
+ &prompt.user; ls -l /usr/lib/libcrypt*
+lrwxr-xr-x 1 root wheel 13 Mar 19 06:56 libcrypt.a -> libdescrypt.a
+lrwxr-xr-x 1 root wheel 18 Mar 19 06:56 libcrypt.so.2.0 -> libdescrypt.so.2.0
+lrwxr-xr-x 1 root wheel 15 Mar 19 06:56 libcrypt_p.a -> libdescrypt_p.a
+
+ On a system using the MD5-based libraries, the same links will
+ be present, but the target will be libscrypt
+ rather than libdescrypt.
+
+
+
+
+ S/Key
+
+ S/Key is a one-time password scheme based on a one-way hash
+ function. FreeBSD uses the MD4 hash for compatibility but other
+ systems have used MD5 and DES-MAC. S/Key has been part of the
+ FreeBSD base system since version 1.1.5 and is also used on a
+ growing number of other operating systems. S/Key is a registered
+ trademark of Bell Communications Research, Inc.
+
+ There are three different sorts of passwords which we will talk
+ about in the discussion below. The first is your usual UNIX-style or
+ Kerberos password; we will call this a UNIX password.
+ The second sort is the one-time password which is generated by the
+ S/Key key program and accepted by the
+ keyinit program and the login prompt; we will
+ call this a one-time password. The final sort of
+ password is the secret password which you give to the
+ key program (and sometimes the
+ keyinit program) which it uses to generate
+ one-time passwords; we will call it a secret password
+ or just unqualified password.
+
+ The secret password does not have anything to do with your UNIX
+ password; they can be the same but this is not reccomended. S/Key
+ secret passwords are not limted to 8 characters like UNIX passwords,
+ they can be as long as you like. Passwords of six or seven word
+ long phrases are fairly common. For the most part, the S/Key system
+ operates completely independently of the UNIX password
+ system.
+
+ Besides the password, there are two other pieces of data that
+ are important to S/Key. One is what is known as the
+ seed or key and consists of two letters
+ and five digits. The other is what is called the iteration
+ count and is a number between 1 and 100. S/Key creates the
+ one-time password by concatenating the seed and the secret password,
+ then applying the MD4 hash as many times as specified by the
+ iteration count and turning the result into six short English words.
+ These six English words are your one-time password. The
+ login and su programs keep
+ track of the last one-time password used, and the user is
+ authenticated if the hash of the user-provided password is equal to
+ the previous password. Because a one-way hash is used it is
+ impossible to generate future one-time passwords if a sucessfully
+ used password is captured; the interation count is decremented after
+ each sucessfull login to keep the user and the login program in
+ sync. When the iteration count gets down to 1 S/Key must be
+ reinitialized.
+
+ There are four programs involved in the S/Key system which we
+ will discuss below. The key program accepts an
+ iteration count, a seed, and a secret password, and generates a
+ one-time password. The keyinit program is used
+ to initialized S/Key, and to change passwords, iteration counts, or
+ seeds; it takes either a secret password, or an iteration count,
+ seed, and one-time password. The keyinfo program
+ examines the /etc/skeykeys file and prints out
+ the invoking user's current iteration count and seed. Finally, the
+ login and su programs contain
+ the necessary logic to accept S/Key one-time passwords for
+ authentication. The login program is also
+ capable of disallowing the use of UNIX passwords on connections
+ coming from specified addresses.
+
+ There are four different sorts of operations we will cover. The
+ first is using the keyinit program over a secure
+ connection to set up S/Key for the first time, or to change your
+ password or seed. The second operation is using the
+ keyinit program over an insecure connection, in
+ conjunction with the key program over a secure
+ connection, to do the same. The third is using the
+ key program to log in over an insecure
+ connection. The fourth is using the key program
+ to generate a number of keys which can be written down or printed
+ out to carry with you when going to some location without secure
+ connections to anywhere.
+
+
+ Secure connection initialization
+
+ To initialize S/Key for the first time, change your password,
+ or change your seed while logged in over a secure connection
+ (e.g., on the console of a machine or via ssh), use the
+ keyinit command without any parameters while
+ logged in as yourself:
+
+ &prompt.user; keyinit
+Adding unfurl:
+Reminder - Only use this method if you are directly connected.
+If you are using telnet or rlogin exit with no password and use keyinit -s.
+Enter secret password:
+Again secret password:
+
+ID unfurl s/key is 99 to17757
+DEFY CLUB PRO NASH LACE SOFT
+
+ At the Enter secret password: prompt you
+ should enter a password or phrase. Remember, this is not the
+ password that you will use to login with, this is used to generate
+ your one-time login keys. The ID line gives the
+ parameters of your particular S/Key instance; your login name, the
+ iteration count, and seed. When logging in with S/Key, the system
+ will remember these parameters and present them back to you so you
+ do not have to remember them. The last line gives the particular
+ one-time password which corresponds to those parameters and your
+ secret password; if you were to re-login immediately, this
+ one-time password is the one you would use.
+
+
+
+ Insecure connection initialization
+
+ To initialize S/Key or change your secret password over an
+ insecure connection, you will need to already have a secure
+ connection to some place where you can run the
+ key program; this might be in the form of a
+ desk accessory on a Macintosh, or a shell prompt on a machine you
+ trust. You will also need to make up an iteration count (100 is
+ probably a good value), and you may make up your own seed or use a
+ randomly-generated one. Over on the insecure connection (to the
+ machine you are initializing), use the keyinit
+ -s command:
+
+ &prompt.user; keyinit -s
+Updating unfurl:
+Old key: to17758
+Reminder you need the 6 english words from the key command.
+Enter sequence count from 1 to 9999: 100
+Enter new key [default to17759]:
+s/key 100 to 17759
+s/key access password:
+
+ To accept the default seed (which the
+ keyinit program confusingly calls a
+ key), press return. Then before entering an
+ access password, move over to your secure connection or S/Key desk
+ accessory, and give it the same parameters:
+
+ &prompt.user; key 100 to17759
+Reminder - Do not use this program while logged in via telnet or rlogin.
+Enter secret password: <secret password>
+CURE MIKE BANE HIM RACY GORE
+
+ Now switch back over to the insecure connection, and copy the
+ one-time password generated by key over to the
+ keyinit program:
+
+ s/key access password:CURE MIKE BANE HIM RACY GORE
+ID unfurl s/key is 100 to17759
+CURE MIKE BANE HIM RACY GORE
+
+ The rest of the description from the previous section applies
+ here as well.
+
+
+
+ Generating a single one-time password
+
+ Once you've initialized S/Key, when you login you will be
+ presented with a prompt like this:
+
+&prompt.user; telnet example.com
+Trying 10.0.0.1...
+Connected to example.com
+Escape character is '^]'.
+
+FreeBSD/i386 (example.com) (ttypa)
+
+login: <username>
+s/key 97 fw13894
+Password:
+
+ As a side note, the S/Key prompt has a useful feature
+ (not shown here): if you press return at the password prompt, the
+ login program will turn echo on, so you can see what you are
+ typing. This can be extremely useful if you are attempting to
+ type in an S/Key by hand, such as from a printout. Also, if this
+ machine were configured to disallow UNIX passwords over a
+ connection from my machine, the prompt would have also included
+ the annotation (s/key required), indicating
+ that only S/Key one-time passwords will be accepted.
+
+ At this point you need to generate your one-time password to
+ answer this login prompt. This must be done on a trusted system
+ that you can run the key command on. (There
+ are versions of the key program from DOS,
+ Windows and MacOS as well.) The key program
+ needs both the iteration count and the seed as command line
+ options. You can cut-and-paste these right from the login prompt
+ on the machine that you are logging in to.
+
+ On the trusted system:
+
+ &prompt.user; key 97 fw13894
+Reminder - Do not use this program while logged in via telnet or rlogin.
+Enter secret password:
+WELD LIP ACTS ENDS ME HAAG
+
+ Now that you have your one-time password you can continue
+ logging in:
+
+ login: <username>
+s/key 97 fw13894
+Password: <return to enable echo>
+s/key 97 fw13894
+Password [echo on]: WELD LIP ACTS ENDS ME HAAG
+Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...
+
+ This is the easiest mechanism if you have
+ a trusted machine. There is a Java S/Key key
+ applet, The Java OTP
+ Calculator, that you can download and run locally on any
+ Java supporting browser.
+
+
+
+ Generating multiple one-time passwords
+
+ Sometimes you have have to go places where you do not have
+ access to a trusted machine or secure connection. In this case,
+ it is possible to use the key command to
+ generate a number of one-time passwords before hand to be printed
+ out and taken with you. For example:
+
+ &prompt.user; key -n 5 30 zz99999
+Reminder - Do not use this program while logged in via telnet or rlogin.
+Enter secret password: <secret password>
+26: SODA RUDE LEA LIND BUDD SILT
+27: JILT SPY DUTY GLOW COWL ROT
+28: THEM OW COLA RUNT BONG SCOT
+29: COT MASH BARR BRIM NAN FLAG
+30: CAN KNEE CAST NAME FOLK BILK
+
+ The requests five keys in sequence, the
+ specifies what the last iteration number
+ should be. Note that these are printed out in
+ reverse order of eventual use. If you are
+ really paranoid, you might want to write the results down by hand;
+ otherwise you can cut-and-paste into lpr. Note
+ that each line shows both the iteration count and the one-time
+ password; you may still find it handy to scratch off passwords as
+ you use them.
+
+
+
+ Restricting use of UNIX passwords
+
+ Restrictions can be placed on the use of UNIX passwords based
+ on the host name, user name, terminal port, or IP address of a
+ login session. These restrictions can be found in the
+ configuration file /etc/skey.access. The
+ &man.skey.access.5; manual page has more info on the complete
+ format of the file and also details some security cautions to be
+ aware of before depending on this file for security.
+
+ If there is no /etc/skey.access file
+ (this is the FreeBSD default), then all users will be allowed to
+ use UNIX passwords. If the file exists, however, then all users
+ will be required to use S/Key unless explicitly permitted to do
+ otherwise by configuration statements in the
+ skey.access file. In all cases, UNIX
+ passwords are permitted on the console.
+
+ Here is a sample configuration file which illustrates the
+ three most common sorts of configuration statements:
+
+
+permit internet 192.168.0.0 255.255.0.0
+permit user fnord
+permit port ttyd0
+
+ The first line (permit internet) allows
+ users whose IP source address (which is vulnerable to spoofing)
+ matches the specified value and mask, to use UNIX passwords. This
+ should not be considered a security mechanism, but rather, a means
+ to remind authorized users that they are using an insecure network
+ and need to use S/Key for authentication.
+
+ The second line (permit user) allows the
+ specified username, in this case fnord, to use
+ UNIX passwords at any time. Generally speaking, this should only
+ be used for people who are either unable to use the
+ key program, like those with dumb terminals, or
+ those who are uneducable.
+
+ The third line (permit port) allows all
+ users logging in on the specified terminal line to use UNIX
+ passwords; this would be used for dial-ups.
+
+
+
+
+ Kerberos
+
+ Contributed by &a.markm; (based on contribution by
+ &a.md;).
+
+ Kerberos is a network add-on system/protocol that allows users to
+ authenticate themselves through the services of a secure server.
+ Services such as remote login, remote copy, secure inter-system file
+ copying and other high-risk tasks are made considerably safer and more
+ controllable.
+
+ The following instructions can be used as a guide on how to set up
+ Kerberos as distributed for FreeBSD. However, you should refer to the
+ relevant manual pages for a complete description.
+
+ In FreeBSD, the Kerberos is not that from the original 4.4BSD-Lite,
+ distribution, but eBones, which had been previously ported to FreeBSD
+ 1.1.5.1, and was sourced from outside the USA/Canada, and is thus
+ available to system owners outside those countries.
+
+ For those needing to get a legal foreign distribution of this
+ software, please do not get it from a USA or Canada
+ site. You will get that site in big trouble! A
+ legal copy of this is available from ftp.internat.FreeBSD.org, which is in South
+ Africa and an official FreeBSD mirror site.
+
+
+ Creating the initial database
+
+ This is done on the Kerberos server only. First make sure that
+ you do not have any old Kerberos databases around. You should change
+ to the directory /etc/kerberosIV and check that
+ only the following files are present:
+
+ &prompt.root; cd /etc/kerberosIV
+&prompt.root; ls
+README krb.conf krb.realms
+
+ If any additional files (such as principal.*
+ or master_key) exist, then use the
+ kdb_destroy command to destroy the old Kerberos
+ database, of if Kerberos is not running, simply delete the extra
+ files.
+
+ You should now edit the krb.conf and
+ krb.realms files to define your Kerberos realm.
+ In this case the realm will be GRONDAR.ZA and the
+ server is grunt.grondar.za. We edit or create
+ the krb.conf file:
+
+ &prompt.root; cat krb.conf
+GRONDAR.ZA
+GRONDAR.ZA grunt.grondar.za admin server
+CS.BERKELEY.EDU okeeffe.berkeley.edu
+ATHENA.MIT.EDU kerberos.mit.edu
+ATHENA.MIT.EDU kerberos-1.mit.edu
+ATHENA.MIT.EDU kerberos-2.mit.edu
+ATHENA.MIT.EDU kerberos-3.mit.edu
+LCS.MIT.EDU kerberos.lcs.mit.edu
+TELECOM.MIT.EDU bitsy.mit.edu
+ARC.NASA.GOV trident.arc.nasa.gov
+
+ In this case, the other realms do not need to be there. They are
+ here as an example of how a machine may be made aware of multiple
+ realms. You may wish to not include them for simplicity.
+
+ The first line names the realm in which this system works. The
+ other lines contain realm/host entries. The first item on a line is a
+ realm, and the second is a host in that realm that is acting as a
+ key distribution centre. The words admin
+ server following a hosts name means that host also
+ provides an administrative database server. For further explanation
+ of these terms, please consult the Kerberos man pages.
+
+ Now we have to add grunt.grondar.za
+ to the GRONDAR.ZA realm and also add an entry to
+ put all hosts in the .grondar.za
+ domain in the GRONDAR.ZA realm. The
+ krb.realms file would be updated as
+ follows:
+
+ &prompt.root; cat krb.realms
+grunt.grondar.za GRONDAR.ZA
+.grondar.za GRONDAR.ZA
+.berkeley.edu CS.BERKELEY.EDU
+.MIT.EDU ATHENA.MIT.EDU
+.mit.edu ATHENA.MIT.EDU
+
+ Again, the other realms do not need to be there. They are here as
+ an example of how a machine may be made aware of multiple realms. You
+ may wish to remove them to simplify things.
+
+ The first line puts the specific system into
+ the named realm. The rest of the lines show how to default systems of
+ a particular subdomain to a named realm.
+
+ Now we are ready to create the database. This only needs to run
+ on the Kerberos server (or Key Distribution Centre). Issue the
+ kdb_init command to do this:
+
+ &prompt.root; kdb_init
+Realm name [default ATHENA.MIT.EDU ]:GRONDAR.ZA
+You will be prompted for the database Master Password.
+It is important that you NOT FORGET this password.
+
+Enter Kerberos master key:
+
+ Now we have to save the key so that servers on the local machine
+ can pick it up. Use the kstash command to do
+ this.
+
+ &prompt.root; kstash
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+
+ This saves the encrypted master password in
+ /etc/kerberosIV/master_key.
+
+
+
+ Making it all run
+
+ Two principals need to be added to the database for
+ each system that will be secured with Kerberos.
+ Their names are kpasswd and rcmd
+ These two principals are made for each system, with the instance being
+ the name of the individual system.
+
+ These daemons, kpasswd and
+ rcmd allow other systems to change Kerberos
+ passwords and run commands like rcp,
+ rlogin and rsh.
+
+ Now let's add these entries:
+
+ &prompt.root; kdb_edit
+Opening database...
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+Principal name:passwd
+Instance:grunt
+
+<Not found>, Create [y] ?y
+
+Principal: passwd, Instance: grunt, kdc_key_ver: 1
+New Password: <---- enter RANDOM here
+Verifying password
+
+New Password: <---- enter RANDOM here
+
+Random password [y] ?y
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ?
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name:rcmd
+Instance:grunt
+
+<Not found>, Create [y] ?
+
+Principal: rcmd, Instance: grunt, kdc_key_ver: 1
+New Password: <---- enter RANDOM here
+Verifying password
+
+New Password: <---- enter RANDOM here
+
+Random password [y] ?
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ?
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name: <---- null entry here will cause an exit
+
+
+
+ Creating the server file
+
+ We now have to extract all the instances which define the services
+ on each machine. For this we use the ext_srvtab
+ command. This will create a file which must be copied or moved
+ by secure means to each Kerberos client's
+ /etc/kerberosIV directory. This file must be present on each server
+ and client, and is crucial to the operation of Kerberos.
+
+
+ &prompt.root; ext_srvtab grunt
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Generating 'grunt-new-srvtab'....
+
+ Now, this command only generates a temporary file which must be
+ renamed to srvtab so that all the server can pick
+ it up. Use the mv command to move it into place on
+ the original system:
+
+ &prompt.root; mv grunt-new-srvtab srvtab
+
+ If the file is for a client system, and the network is not deemed
+ safe, then copy the
+ client-new-srvtab to
+ removable media and transport it by secure physical means. Be sure to
+ rename it to srvtab in the client's
+ /etc/kerberosIV directory, and make sure it is
+ mode 600:
+
+ &prompt.root; mv grumble-new-srvtab srvtab
+&prompt.root; chmod 600 srvtab
+
+
+
+ Populating the database
+
+ We now have to add some user entries into the database. First
+ let's create an entry for the user jane. Use the
+ kdb_edit command to do this:
+
+ &prompt.root; kdb_edit
+Opening database...
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+Principal name:jane
+Instance:
+
+<Not found>, Create [y] ?y
+
+Principal: jane, Instance: , kdc_key_ver: 1
+New Password: <---- enter a secure password here
+Verifying password
+
+New Password: <---- re-enter the password here
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ?
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name: <---- null entry here will cause an exit
+
+
+
+ Testing it all out
+
+ First we have to start the Kerberos daemons. NOTE that if you
+ have correctly edited your /etc/rc.conf then this
+ will happen automatically when you reboot. This is only necessary on
+ the Kerberos server. Kerberos clients will automagically get what
+ they need from the /etc/kerberosIV
+ directory.
+
+ &prompt.root; kerberos &
+Kerberos server starting
+Sleep forever on error
+Log file is /var/log/kerberos.log
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+
+Current Kerberos master key version is 1
+Local realm: GRONDAR.ZA
+&prompt.root; kadmind -n &
+KADM Server KADM0.0A initializing
+Please do not use 'kill -9' to kill this job, use a
+regular kill instead
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+
+ Now we can try using the kinit command to get a
+ ticket for the id jane that we created
+ above:
+
+ &prompt.user; kinit jane
+MIT Project Athena (grunt.grondar.za)
+Kerberos Initialization for "jane"
+Password:
+
+ Try listing the tokens using klist to see if we
+ really have them:
+
+ &prompt.user; klist
+Ticket file: /tmp/tkt245
+Principal: jane@GRONDAR.ZA
+
+ Issued Expires Principal
+Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.GRONDAR.ZA@GRONDAR.ZA
+
+ Now try changing the password using passwd to
+ check if the kpasswd daemon can get authorization to the Kerberos
+ database:
+
+ &prompt.user; passwd
+realm GRONDAR.ZA
+Old password for jane:
+New Password for jane:
+Verifying password
+New Password for jane:
+Password changed.
+
+
+
+ Adding su privileges
+
+ Kerberos allows us to give each user who
+ needs root privileges their own separate
+ supassword. We could now add an id which is
+ authorized to su to root.
+ This is controlled by having an instance of root
+ associated with a principal. Using kdb_edit we can
+ create the entry jane.root in the Kerberos
+ database:
+
+ &prompt.root; kdb_edit
+Opening database...
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+Principal name:jane
+Instance:root
+
+<Not found>, Create [y] ? y
+
+Principal: jane, Instance: root, kdc_key_ver: 1
+New Password: <---- enter a SECURE password here
+Verifying password
+
+New Password: <---- re-enter the password here
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ?12 <--- Keep this short!
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name: <---- null entry here will cause an exit
+
+ Now try getting tokens for it to make sure it works:
+
+ &prompt.root; kinit jane.root
+MIT Project Athena (grunt.grondar.za)
+Kerberos Initialization for "jane.root"
+Password:
+
+ Now we need to add the user to root's .klogin
+ file:
+
+ &prompt.root; cat /root/.klogin
+jane.root@GRONDAR.ZA
+
+ Now try doing the su:
+
+ &prompt.user; su
+Password:
+
+ and take a look at what tokens we have:
+
+ &prompt.root; klist
+Ticket file: /tmp/tkt_root_245
+Principal: jane.root@GRONDAR.ZA
+
+ Issued Expires Principal
+May 2 20:43:12 May 3 04:43:12 krbtgt.GRONDAR.ZA@GRONDAR.ZA
+
+
+
+ Using other commands
+
+ In an earlier example, we created a principal called
+ jane with an instance root.
+ This was based on a user with the same name as the principal, and this
+ is a Kerberos default; that a
+ <principal>.<instance> of the form
+ <username>.root will allow
+ that <username> to su to
+ root if the necessary entries are in the .klogin
+ file in root's home directory:
+
+ &prompt.root; cat /root/.klogin
+jane.root@GRONDAR.ZA
+
+ Likewise, if a user has in their own home directory lines of the
+ form:
+
+ &prompt.user; cat ~/.klogin
+jane@GRONDAR.ZA
+jack@GRONDAR.ZA
+
+ This allows anyone in the GRONDAR.ZA realm
+ who has authenticated themselves to jane or
+ jack (via kinit, see above)
+ access to rlogin to jane's
+ account or files on this system (grunt) via
+ rlogin, rsh or
+ rcp.
+
+ For example, Jane now logs into another system, using
+ Kerberos:
+
+ &prompt.user; kinit
+MIT Project Athena (grunt.grondar.za)
+Password:
+%prompt.user; rlogin grunt
+Last login: Mon May 1 21:14:47 from grumble
+Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
+ The Regents of the University of California. All rights reserved.
+
+FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
+
+ Or Jack logs into Jane's account on the same machine (Jane having
+ set up the .klogin file as above, and the person
+ in charge of Kerberos having set up principal
+ jack with a null instance:
+
+ &prompt.user; kinit
+&prompt.user; rlogin grunt -l jane
+MIT Project Athena (grunt.grondar.za)
+Password:
+Last login: Mon May 1 21:16:55 from grumble
+Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
+ The Regents of the University of California. All rights reserved.
+FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
+
+
+
+
+ Firewalls
+
+ Contributed by &a.gpalmer; and &a.alex;.
+
+ Firewalls are an area of increasing interest for people who are
+ connected to the Internet, and are even finding applications on private
+ networks to provide enhanced security. This section will hopefully
+ explain what firewalls are, how to use them, and how to use the
+ facilities provided in the FreeBSD kernel to implement them.
+
+
+ People often think that having a firewall between your
+ internal network and the Big Bad Internet will solve all
+ your security problems. It may help, but a poorly setup firewall
+ system is more of a security risk than not having one at all. A
+ firewall can add another layer of security to your systems, but it
+ cannot stop a really determined cracker from penetrating your internal
+ network. If you let internal security lapse because you believe your
+ firewall to be impenetrable, you have just made the crackers job that
+ much easier.
+
+
+
+ What is a firewall?
+
+ There are currently two distinct types of firewalls in common use
+ on the Internet today. The first type is more properly called a
+ packet filtering router, where the kernel on a
+ multi-homed machine chooses whether to forward or block packets based
+ on a set of rules. The second type, known as a proxy
+ server, relies on daemons to provide authentication and to
+ forward packets, possibly on a multi-homed machine which has kernel
+ packet forwarding disabled.
+
+ Sometimes sites combine the two types of firewalls, so that only a
+ certain machine (known as a bastion host) is
+ allowed to send packets through a packet filtering router onto an
+ internal network. Proxy services are run on the bastion host, which
+ are generally more secure than normal authentication
+ mechanisms.
+
+ FreeBSD comes with a kernel packet filter (known as
+ IPFW), which is what the rest of this
+ section will concentrate on. Proxy servers can be built on FreeBSD
+ from third party software, but there is such a variety of proxy
+ servers available that it would be impossible to cover them in this
+ document.
+
+
+ Packet filtering routers
+
+ A router is a machine which forwards packets between two or more
+ networks. A packet filtering router has an extra piece of code in
+ its kernel which compares each packet to a list of rules before
+ deciding if it should be forwarded or not. Most modern IP routing
+ software has packet filtering code within it that defaults to
+ forwarding all packets. To enable the filters, you need to define a
+ set of rules for the filtering code so it can decide if the
+ packet should be allowed to pass or not.
+
+ To decide whether a packet should be passed on, the code looks
+ through its set of rules for a rule which matches the contents of
+ this packets headers. Once a match is found, the rule action is
+ obeyed. The rule action could be to drop the packet, to forward the
+ packet, or even to send an ICMP message back to the originator.
+ Only the first match counts, as the rules are searched in order.
+ Hence, the list of rules can be referred to as a rule
+ chain.
+
+ The packet matching criteria varies depending on the software
+ used, but typically you can specify rules which depend on the source
+ IP address of the packet, the destination IP address, the source
+ port number, the destination port number (for protocols which
+ support ports), or even the packet type (UDP, TCP, ICMP,
+ etc).
+
+
+
+ Proxy servers
+
+ Proxy servers are machines which have had the normal system
+ daemons (telnetd, ftpd, etc) replaced with special servers. These
+ servers are called proxy servers as they
+ normally only allow onward connections to be made. This enables you
+ to run (for example) a proxy telnet server on your firewall host,
+ and people can telnet in to your firewall from the outside, go
+ through some authentication mechanism, and then gain access to the
+ internal network (alternatively, proxy servers can be used for
+ signals coming from the internal network and heading out).
+
+ Proxy servers are normally more secure than normal servers, and
+ often have a wider variety of authentication mechanisms available,
+ including one-shot password systems so that even if
+ someone manages to discover what password you used, they will not be
+ able to use it to gain access to your systems as the password
+ instantly expires. As they do not actually give users access to the
+ host machine, it becomes a lot more difficult for someone to install
+ backdoors around your security system.
+
+ Proxy servers often have ways of restricting access further, so
+ that only certain hosts can gain access to the servers, and often
+ they can be set up so that you can limit which users can talk to
+ which destination machine. Again, what facilities are available
+ depends largely on what proxy software you choose.
+
+
+
+
+ What does IPFW allow me to do?
+
+ IPFW, the software supplied with
+ FreeBSD, is a packet filtering and accounting system which resides in
+ the kernel, and has a user-land control utility,
+ &man.ipfw.8;. Together, they allow you to define and query the
+ rules currently used by the kernel in its routing decisions.
+
+ There are two related parts to IPFW.
+ The firewall section allows you to perform packet filtering. There is
+ also an IP accounting section which allows you to track usage of your
+ router, based on similar rules to the firewall section. This allows
+ you to see (for example) how much traffic your router is getting from
+ a certain machine, or how much WWW (World Wide Web) traffic it is
+ forwarding.
+
+ As a result of the way that IPFW is
+ designed, you can use IPFW on non-router
+ machines to perform packet filtering on incoming and outgoing
+ connections. This is a special case of the more general use of
+ IPFW, and the same commands and techniques
+ should be used in this situation.
+
+
+
+ Enabling IPFW on FreeBSD
+
+ As the main part of the IPFW system
+ lives in the kernel, you will need to add one or more options to your
+ kernel configuration file, depending on what facilities you want, and
+ recompile your kernel. See reconfiguring
+ the kernel for more details on how to recompile your
+ kernel.
+
+ There are currently three kernel configuration options relevant to
+ IPFW:
+
+
+
+ options IPFIREWALL
+
+
+ Compiles into the kernel the code for packet
+ filtering.
+
+
+
+
+ options IPFIREWALL_VERBOSE
+
+
+ Enables code to allow logging of packets through
+ &man.syslogd.8;. Without this option, even if you specify
+ that packets should be logged in the filter rules, nothing will
+ happen.
+
+
+
+
+ options IPFIREWALL_VERBOSE_LIMIT=10
+
+
+ Limits the number of packets logged through
+ &man.syslogd.8; on a per entry basis. You may wish to use
+ this option in hostile environments in which you want to log
+ firewall activity, but do not want to be open to a denial of
+ service attack via syslog flooding.
+
+ When a chain entry reaches the packet limit specified,
+ logging is turned off for that particular entry. To resume
+ logging, you will need to reset the associated counter using the
+ &man.ipfw.8; utility:
+
+ &prompt.root; ipfw zero 4500
+ Where 4500 is the chain entry you wish to continue
+ logging.
+
+
+
+
+ Previous versions of FreeBSD contained an
+ IPFIREWALL_ACCT option. This is now obsolete as
+ the firewall code automatically includes accounting
+ facilities.
+
+
+
+ Configuring IPFW
+
+ The configuration of the IPFW software
+ is done through the &man.ipfw.8; utility. The syntax for this
+ command looks quite complicated, but it is relatively simple once you
+ understand its structure.
+
+ There are currently four different command categories used by the
+ utility: addition/deletion, listing, flushing, and clearing.
+ Addition/deletion is used to build the rules that control how packets
+ are accepted, rejected, and logged. Listing is used to examine the
+ contents of your rule set (otherwise known as the chain) and packet
+ counters (accounting). Flushing is used to remove all entries from
+ the chain. Clearing is used to zero out one or more accounting
+ entries.
+
+
+ Altering the IPFW rules
+
+ The syntax for this form of the command is:
+
+ ipfw
+ -N
+ command
+ index
+ action
+ log
+ protocol
+ addresses
+ options
+
+
+ There is one valid flag when using this form of the
+ command:
+
+
+
+ -N
+
+
+ Resolve addresses and service names in output.
+
+
+
+
+ The command given can be shortened to the
+ shortest unique form. The valid commands
+ are:
+
+
+
+ add
+
+
+ Add an entry to the firewall/accounting rule list
+
+
+
+
+ delete
+
+
+ Delete an entry from the firewall/accounting rule
+ list
+
+
+
+
+ Previous versions of IPFW used
+ separate firewall and accounting entries. The present version
+ provides packet accounting with each firewall entry.
+
+ If an index value is supplied, it used to
+ place the entry at a specific point in the chain. Otherwise, the
+ entry is placed at the end of the chain at an index 100 greater than
+ the last chain entry (this does not include the default policy, rule
+ 65535, deny).
+
+ The log option causes matching rules to be
+ output to the system console if the kernel was compiled with
+ IPFIREWALL_VERBOSE.
+
+ Valid actions are:
+
+
+
+ reject
+
+
+ Drop the packet, and send an ICMP host or port unreachable
+ (as appropriate) packet to the source.
+
+
+
+
+ allow
+
+
+ Pass the packet on as normal. (aliases:
+ pass and
+ accept)
+
+
+
+
+ deny
+
+
+ Drop the packet. The source is not notified via an
+ ICMP message (thus it appears that the packet never
+ arrived at the destination).
+
+
+
+
+ count
+
+
+ Update packet counters but do not allow/deny the packet
+ based on this rule. The search continues with the next chain
+ entry.
+
+
+
+
+ Each action will be recognized by the
+ shortest unambiguous prefix.
+
+ The protocols which can be specified
+ are:
+
+
+
+ all
+
+
+ Matches any IP packet
+
+
+
+
+ icmp
+
+
+ Matches ICMP packets
+
+
+
+
+ tcp
+
+
+ Matches TCP packets
+
+
+
+
+ udp
+
+
+ Matches UDP packets
+
+
+
+
+ The address specification is:
+
+
+ from
+ address/maskport
+ to
+ address/maskport
+ via interface
+
+
+ You can only specify port in
+ conjunction with protocols which support ports
+ (UDP and TCP).
+
+ The is optional and may specify the IP
+ address or domain name of a local IP interface, or an interface name
+ (e.g. ed0) to match only packets coming
+ through this interface. Interface unit numbers can be specified
+ with an optional wildcard. For example, ppp*
+ would match all kernel PPP interfaces.
+
+ The syntax used to specify an
+ address/mask is:
+
+ address
+
+ or
+
+ address/mask-bits
+
+ or
+
+ address:mask-pattern
+
+
+ A valid hostname may be specified in place of the IP address.
+ is a decimal
+ number representing how many bits in the address mask should be set.
+ e.g. specifying 192.216.222.1/24 will create a
+ mask which will allow any address in a class C subnet (in this case,
+ 192.216.222) to be matched.
+ is an IP
+ address which will be logically AND'ed with the address given. The
+ keyword any may be used to specify any IP
+ address.
+
+ The port numbers to be blocked are specified as:
+
+
+ port,port,port…
+
+
+ to specify either a single port or a list of ports, or
+
+
+ port-port
+
+
+ to specify a range of ports. You may also combine a single range
+ with a list, but the range must always be specified first.
+
+ The options available are:
+
+
+
+ frag
+
+
+ Matches if the packet is not the first fragment of the
+ datagram.
+
+
+
+
+ in
+
+
+ Matches if the packet is on the way in.
+
+
+
+
+ out
+
+
+ Matches if the packet is on the way out.
+
+
+
+
+ ipoptions spec
+
+
+ Matches if the IP header contains the comma separated list
+ of options specified in spec. The
+ supported list of IP options are: ssrr
+ (strict source route), lsrr (loose source
+ route), rr (record packet route), and
+ ts (timestamp). The absence of a
+ particular option may be denoted with a leading
+ !.
+
+
+
+
+ established
+
+
+ Matches if the packet is part of an already established
+ TCP connection (i.e. it has the RST or ACK bits set). You can
+ optimize the performance of the firewall by placing
+ established rules early in the
+ chain.
+
+
+
+
+ setup
+
+
+ Matches if the packet is an attempt to establish a TCP
+ connection (the SYN bit set is set but the ACK bit is
+ not).
+
+
+
+
+ tcpflags flags
+
+
+ Matches if the TCP header contains the comma separated
+ list of flags. The supported flags
+ are fin, syn,
+ rst, psh,
+ ack, and urg. The
+ absence of a particular flag may be indicated by a leading
+ !.
+
+
+
+
+ icmptypes types
+
+
+ Matches if the ICMP type is present in the list
+ types. The list may be specified
+ as any combination of ranges and/or individual types separated
+ by commas. Commonly used ICMP types are: 0
+ echo reply (ping reply), 3 destination
+ unreachable, 5 redirect,
+ 8 echo request (ping request), and
+ 11 time exceeded (used to indicate TTL
+ expiration as with &man.traceroute.8;).
+
+
+
+
+
+
+ Listing the IPFW rules
+
+ The syntax for this form of the command is:
+
+ ipfw
+ -a
+ -t
+ -N
+ l
+
+
+ There are three valid flags when using this form of the
+ command:
+
+
+
+ -a
+
+
+ While listing, show counter values. This option is the
+ only way to see accounting counters.
+
+
+
+
+ -t
+
+
+ Display the last match times for each chain entry. The
+ time listing is incompatible with the input syntax used by the
+ &man.ipfw.8; utility.
+
+
+
+
+ -N
+
+
+ Attempt to resolve given addresses and service
+ names.
+
+
+
+
+
+
+ Flushing the IPFW rules
+
+ The syntax for flushing the chain is:
+
+ ipfw
+ flush
+
+
+ This causes all entries in the firewall chain to be removed
+ except the fixed default policy enforced by the kernel (index
+ 65535). Use caution when flushing rules, the default deny policy
+ will leave your system cut off from the network until allow entries
+ are added to the chain.
+
+
+
+ Clearing the IPFW packet counters
+
+ The syntax for clearing one or more packet counters is:
+
+ ipfw
+ zero
+ index
+
+
+ When used without an index argument,
+ all packet counters are cleared. If an
+ index is supplied, the clearing operation
+ only affects a specific chain entry.
+
+
+
+
+ Example commands for ipfw
+
+ This command will deny all packets from the host evil.crackers.org to the telnet port of the
+ host nice.people.org by being forwarded
+ by the router:
+
+ &prompt.root ipfw add deny tcp from evil.crackers.org to nice.people.org 23
+
+ The next example denies and logs any TCP traffic from the entire
+ crackers.org network (a class C) to
+ the nice.people.org machine (any
+ port).
+
+ &prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org
+
+ If you do not want people sending X sessions to your internal
+ network (a subnet of a class C), the following command will do the
+ necessary filtering:
+
+ &prompt.root; ipfw add deny tcp from any to my.org/28 6000 setup
+
+ To see the accounting records:
+
+ &prompt.root; ipfw -a list
+
+ or in the short form
+
+ &prompt.root; ipfw -a l
+
+
+ You can also see the last time a chain entry was matched
+ with:
+
+ &prompt.root; ipfw -at l
+
+
+
+ Building a packet filtering firewall
+
+
+ The following suggestions are just that: suggestions. The
+ requirements of each firewall are different and I cannot tell you
+ how to build a firewall to meet your particular requirements.
+
+
+ When initially setting up your firewall, unless you have a test
+ bench setup where you can configure your firewall host in a controlled
+ environment, I strongly recommend you use the logging version of the
+ commands and enable logging in the kernel. This will allow you to
+ quickly identify problem areas and cure them without too much
+ disruption. Even after the initial setup phase is complete, I
+ recommend using the logging for of `deny' as it allows tracing of
+ possible attacks and also modification of the firewall rules if your
+ requirements alter.
+
+
+ If you use the logging versions of the accept
+ command, it can generate large amounts of log
+ data as one log line will be generated for every packet that passes
+ through the firewall, so large ftp/http transfers, etc, will really
+ slow the system down. It also increases the latencies on those
+ packets as it requires more work to be done by the kernel before the
+ packet can be passed on. syslogd with also start using up a lot
+ more processor time as it logs all the extra data to disk, and it
+ could quite easily fill the partition /var/log
+ is located on.
+
+
+ You should enable your firewall from
+ /etc/rc.conf.local or
+ /etc/rc.conf. The associated manpage explains
+ which knobs to fiddle and lists some preset firewall configurations.
+ If you do not use a preset configuration, ipfw list
+ will output the current ruleset into a file that you can
+ pass to rc.conf. If you do not use
+ /etc/rc.conf.local or
+ /etc/rc.conf to enable your firewall,
+ it is important to make sure your firewall is enabled before
+ any IP interfaces are configured.
+
+
+ The next problem is what your firewall should actually
+ do! This is largely dependent on what access to
+ your network you want to allow from the outside, and how much access
+ to the outside world you want to allow from the inside. Some general
+ rules are:
+
+
+
+ Block all incoming access to ports below 1024 for TCP. This is
+ where most of the security sensitive services are, like finger,
+ SMTP (mail) and telnet.
+
+
+
+ Block all incoming UDP traffic. There
+ are very few useful services that travel over UDP, and what useful
+ traffic there is is normally a security threat (e.g. Suns RPC and
+ NFS protocols). This has its disadvantages also, since UDP is a
+ connectionless protocol, denying incoming UDP traffic also blocks
+ the replies to outgoing UDP traffic. This can cause a problem for
+ people (on the inside) using external archie (prospero) servers.
+ If you want to allow access to archie, you'll have to allow
+ packets coming from ports 191 and 1525 to any internal UDP port
+ through the firewall. ntp is another service you may consider
+ allowing through, which comes from port 123.
+
+
+
+ Block traffic to port 6000 from the outside. Port 6000 is the
+ port used for access to X11 servers, and can be a security threat
+ (especially if people are in the habit of doing xhost
+ + on their workstations). X11 can actually use a
+ range of ports starting at 6000, the upper limit being how many X
+ displays you can run on the machine. The upper limit as defined
+ by RFC 1700 (Assigned Numbers) is 6063.
+
+
+
+ Check what ports any internal servers use (e.g. SQL servers,
+ etc). It is probably a good idea to block those as well, as they
+ normally fall outside the 1-1024 range specified above.
+
+
+
+ Another checklist for firewall configuration is available from
+ CERT at ftp://ftp.cert.org/pub/tech_tips/packet_filtering
+
+ As I said above, these are only guidelines.
+ You will have to decide what filter rules you want to use on your
+ firewall yourself. I cannot accept ANY responsibility if someone
+ breaks into your network, even if you follow the advice given
+ above.
+
+
+
+
+ OpenSSL
+
+ As of FreeBSD 4.0, the OpenSSL toolkit is a part of the base
+ system. OpenSSL
+ provides a general-purpose cryptography library, as well as the
+ Secure Sockets Layer v2/v3 (SSLv2/SSLv3) and Transport Layer
+ Security v1 (TLSv1) network security protocols.
+
+ However, some of the algorithms (specifically, RSA and IDEA)
+ included in OpenSSL are protected by patents in the USA and
+ elsewhere, and are not available for unrestricted use (in
+ particular, IDEA is not available at all in FreeBSD's version of
+ OpenSSL). As a result, FreeBSD has available two different
+ versions of the OpenSSL RSA libraries depending on geographical
+ location (USA/non-USA).
+
+
+ Source Code Installations
+
+ OpenSSL is part of the src-crypto and
+ src-securecvsup collections. See the Obtaining FreeBSD section for more
+ information about obtaining and updating FreeBSD source
+ code.
+
+
+
+ International (Non-USA) Users
+
+ People who are located outside the USA, and who obtain their
+ crypto sources from internat.FreeBSD.org (the International
+ Crypto Repository) or an international mirror site, will build a
+ version of OpenSSL which includes the native OpenSSL
+ implementation of
+ RSA, but does not include IDEA, because the latter is restricted
+ in certain locations elsewhere in the world. In the future a more
+ flexible geographical identification system may allow building of
+ IDEA in countries for which it is not restricted.
+
+ Please be aware of any local restrictions on the import, use
+ and redistribution of cryptography which may exist in your
+ country.
+
+
+
+ USA Users
+
+ As noted above, RSA is patented in the USA, with terms
+ preventing general use without an appropriate license. Therefore
+ the standard OpenSSL RSA code may not be used in the USA, and has been
+ removed from the version of OpenSSL carried on USA mirror sites.
+ The RSA patent is due to expire on September 20, 2000, at which
+ time it is intended to add the full RSA code back to
+ the USA version of OpenSSL.
+
+ However (and fortunately), the RSA patent holder (RSA Security, has
+ provided a RSA reference implementation toolkit
+ (RSAREF) which is available for certain classes of
+ use, including non-commercial use
+ (see the RSAREF license for their definition of
+ non-commercial).
+
+ If you meet the conditions of the RSAREF license and wish to
+ use it in conjunction with OpenSSL to provide RSA support, you can
+ install the rsaref port, which is located in
+ /usr/ports/security/rsaref, or the
+ rsaref-2.0 package. The OpenSSL library will
+ then automatically detect and use the RSAREF libraries. Please obtain
+ legal advice if you are unsure of your compliance with the license
+ terms.
+
+ The RSAREF implementation is inferior to the
+ native OpenSSL implementation (it is much slower,
+ and cannot be used with keys larger than 1024 bits). If you are not
+ located in the USA then you are doing yourself a disadvantage by
+ using RSAREF.
+
+ Users who have purchased an appropriate RSA source code
+ license from RSA Security may use the International version of
+ OpenSSL described above to obtain native RSA support.
+
+ IDEA code is also removed from the USA version of OpenSSL for
+ patent reasons.
+
+
+
+ Binary Installations
+
+ If your FreeBSD installation was a binary installation (e.g.,
+ installed from the Walnut Creek CDROM, or from a snapshot
+ downloaded from
+ ftp.FreeBSD.org) and you selected to
+ install the crypto collection, then the
+ sysinstall utility will automatically select
+ the correct version to install during the installation
+ process. If the international version was selected but could
+ not be installed during sysinstall (e.g. you have not
+ configured network access, and the version must be downloaded
+ from a FTP site) then you can add the international RSA library
+ after installation as a package.
+
+ The librsaintl package contains the RSA
+ code for International (non-USA) users. This is not legal for
+ use in the USA, but international users should use this version
+ because the RSA implementation is faster and more flexible. It
+ is available from ftp.internat.FreeBSD.org and does not
+ require RSAREF.
+
+
+
+
+ IPsec
+ Contributed by &a.shin;, 5 March
+ 2000.
+
+ IPsec mechanism provides secure communication either for IP
+ layer and socket layer communication. This section should
+ explain how to use them. About IPsec implementation, please
+ refer section 23.5.4.
+
+ The current IPsec implementation supports both transport mode
+ and tunnel mode. However, tunnel mode comes with some restrictions.
+ http://www.kame.net/newsletter/
+ has more comprehensive examples.
+
+
+ Transport mode example with IPv4
+
+ Let's setup security association to deploy a secure channel
+ between HOST A (10.2.3.4) and HOST B (10.6.7.8). Here we show a little
+ complicated example. From HOST A to HOST B, only old AH is used.
+ From HOST B to HOST A, new AH and new ESP are combined.
+
+ Now we should choose algorithm to be used corresponding to
+ "AH"/"new AH"/"ESP"/"new ESP". Please refer to the &man.setkey.8; man
+ page to know algorithm names. Our choice is MD5 for AH, new-HMAC-SHA1
+ for new AH, and new-DES-expIV with 8 byte IV for new ESP.
+
+ Key length highly depends on each algorithm. For example, key
+ length must be equal to 16 bytes for MD5, 20 for new-HMAC-SHA1,
+ and 8 for new-DES-expIV. Now we choose "MYSECRETMYSECRET",
+ "KAMEKAMEKAMEKAMEKAME", "PASSWORD", respectively.
+
+ OK, let's assign SPI (Security Parameter Index) for each protocol.
+ Please note that we need 3 SPIs for this secure channel since three
+ security headers are produced (one for from HOST A to HOST B, two for
+ from HOST B to HOST A). Please also note that SPI MUST be greater
+ than or equal to 256. We choose, 1000, 2000, and 3000, respectively.
+
+
+
+
+ (1)
+ HOST A ------> HOST B
+
+ (1)PROTO=AH
+ ALG=MD5(RFC1826)
+ KEY=MYSECRETMYSECRET
+ SPI=1000
+
+ (2.1)
+ HOST A <------ HOST B
+ <------
+ (2.2)
+
+ (2.1)
+ PROTO=AH
+ ALG=new-HMAC-SHA1(new AH)
+ KEY=KAMEKAMEKAMEKAMEKAME
+ SPI=2000
+
+ (2.2)
+ PROTO=ESP
+ ALG=new-DES-expIV(new ESP)
+ IV length = 8
+ KEY=PASSWORD
+ SPI=3000
+
+
+
+ Now, let's setup security association. Execute &man.setkey.8;
+ on both HOST A and B:
+
+
+
+&prompt.root; setkey -c
+add 10.2.3.4 10.6.7.8 ah-old 1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ;
+add 10.6.7.8 10.2.3.4 ah 2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ;
+add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ;
+^D
+
+
+
+ Actually, IPsec communication doesn't process until security policy
+ entries will be defined. In this case, you must setup each host.
+
+
+
+At A:
+
+&prompt.root; setkey -c
+spdadd 10.2.3.4 10.6.7.8 any -P out ipsec
+ ah/transport/10.2.3.4-10.6.7.8/require ;
+^D
+
+At B:
+
+&prompt.root; setkey -c
+spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
+ esp/transport/10.6.7.8-10.2.3.4/require ;
+spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
+ ah/transport/10.6.7.8-10.2.3.4/require ;
+^D
+
+
+ HOST A --------------------------------------> HOST E
+ 10.2.3.4 10.6.7.8
+ | |
+ ========== old AH keyed-md5 ==========>
+
+ <========= new AH hmac-sha1 ===========
+ <========= new ESP des-cbc ============
+
+
+
+
+
+ Transport mode example with IPv6
+
+ Another example using IPv6.
+
+ ESP transport mode is recommended for TCP port number 110 between
+ Host-A and Host-B.
+
+
+
+ ============ ESP ============
+ | |
+ Host-A Host-B
+ fec0::10 -------------------- fec0::11
+
+
+
+ Encryption algorithm is blowfish-cbc whose key is "kamekame", and
+ authentication algorithm is hmac-sha1 whose key is "this is the test
+ key". Configuration at Host-A:
+
+
+
+ &prompt.root; setkey -c <<EOF
+ spdadd fec0::10[any] fec0::11[110] tcp -P out ipsec
+ esp/transport/fec0::10-fec0::11/use ;
+ spdadd fec0::11[110] fec0::10[any] tcp -P in ipsec
+ esp/transport/fec0::11-fec0::10/use ;
+ add fec0::10 fec0::11 esp 0x10001
+ -m transport
+ -E blowfish-cbc "kamekame"
+ -A hmac-sha1 "this is the test key" ;
+ add fec0::11 fec0::10 esp 0x10002
+ -m transport
+ -E blowfish-cbc "kamekame"
+ -A hmac-sha1 "this is the test key" ;
+ EOF
+
+
+
+ and at Host-B:
+
+
+ &prompt.root; setkey -c <<EOF
+ spdadd fec0::11[110] fec0::10[any] tcp -P out ipsec
+ esp/transport/fec0::11-fec0::10/use ;
+ spdadd fec0::10[any] fec0::11[110] tcp -P in ipsec
+ esp/transport/fec0::10-fec0::11/use ;
+ add fec0::10 fec0::11 esp 0x10001 -m transport
+ -E blowfish-cbc "kamekame"
+ -A hmac-sha1 "this is the test key" ;
+ add fec0::11 fec0::10 esp 0x10002 -m transport
+ -E blowfish-cbc "kamekame"
+ -A hmac-sha1 "this is the test key" ;
+ EOF
+
+
+
+ Note the direction of SP.
+
+
+
+ Tunnel mode example with IPv4
+
+ Tunnel mode between two security gateways
+
+ Security protocol is old AH tunnel mode, i.e. specified by
+ RFC1826, with keyed-md5 whose key is "this is the test" as
+ authentication algorithm.
+
+
+
+ ======= AH =======
+ | |
+ Network-A Gateway-A Gateway-B Network-B
+ 10.0.1.0/24 ---- 172.16.0.1 ----- 172.16.0.2 ---- 10.0.2.0/24
+
+
+
+ Configuration at Gateway-A:
+
+
+
+ &prompt.root; setkey -c <<EOF
+ spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec
+ ah/tunnel/172.16.0.1-172.16.0.2/require ;
+ spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec
+ ah/tunnel/172.16.0.2-172.16.0.1/require ;
+ add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
+ -A keyed-md5 "this is the test" ;
+ add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
+ -A keyed-md5 "this is the test" ;
+
+ EOF
+
+
+
+ If port number field is omitted such above then "[any]" is
+ employed. `-m' specifies the mode of SA to be used. "-m any" means
+ wild-card of mode of security protocol. You can use this SA for both
+ tunnel and transport mode.
+
+ and at Gateway-B:
+
+
+
+ &prompt.root; setkey -c <<EOF
+ spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec
+ ah/tunnel/172.16.0.2-172.16.0.1/require ;
+ spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec
+ ah/tunnel/172.16.0.1-172.16.0.2/require ;
+ add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
+ -A keyed-md5 "this is the test" ;
+ add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
+ -A keyed-md5 "this is the test" ;
+
+ EOF
+
+
+
+ Making SA bundle between two security gateways
+
+ AH transport mode and ESP tunnel mode is required between
+ Gateway-A and Gateway-B. In this case, ESP tunnel mode is applied first,
+ and AH transport mode is next.
+
+
+
+ ========== AH =========
+ | ======= ESP ===== |
+ | | | |
+ Network-A Gateway-A Gateway-B Network-B
+ fec0:0:0:1::/64 --- fec0:0:0:1::1 ---- fec0:0:0:2::1 --- fec0:0:0:2::/64
+
+
+
+
+
+ Tunnel mode example with IPv6
+
+ Encryption algorithm is 3des-cbc, and authentication algorithm
+ for ESP is hmac-sha1. Authentication algorithm for AH is hmac-md5.
+ Configuration at Gateway-A:
+
+
+
+ &prompt.root; setkey -c <<EOF
+ spdadd fec0:0:0:1::/64 fec0:0:0:2::/64 any -P out ipsec
+ esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require
+ ah/transport/fec0:0:0:1::1-fec0:0:0:2::1/require ;
+ spdadd fec0:0:0:2::/64 fec0:0:0:1::/64 any -P in ipsec
+ esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require
+ ah/transport/fec0:0:0:2::1-fec0:0:0:1::1/require ;
+ add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10001 -m tunnel
+ -E 3des-cbc "kamekame12341234kame1234"
+ -A hmac-sha1 "this is the test key" ;
+ add fec0:0:0:1::1 fec0:0:0:2::1 ah 0x10001 -m transport
+ -A hmac-md5 "this is the test" ;
+ add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10001 -m tunnel
+ -E 3des-cbc "kamekame12341234kame1234"
+ -A hmac-sha1 "this is the test key" ;
+ add fec0:0:0:2::1 fec0:0:0:1::1 ah 0x10001 -m transport
+ -A hmac-md5 "this is the test" ;
+
+ EOF
+
+
+
+ Making SAs with the different end
+
+ ESP tunnel mode is required between Host-A and Gateway-A. Encryption
+ algorithm is cast128-cbc, and authentication algorithm for ESP is
+ hmac-sha1. ESP transport mode is recommended between Host-A and Host-B.
+ Encryption algorithm is rc5-cbc, and authentication algorithm for ESP is
+ hmac-md5.
+
+
+
+ ================== ESP =================
+ | ======= ESP ======= |
+ | | | |
+ Host-A Gateway-A Host-B
+ fec0:0:0:1::1 ---- fec0:0:0:2::1 ---- fec0:0:0:2::2
+
+
+
+ Configuration at Host-A:
+
+
+
+ &prompt.root; setkey -c <<EOF
+ spdadd fec0:0:0:1::1[any] fec0:0:0:2::2[80] tcp -P out ipsec
+ esp/transport/fec0:0:0:1::1-fec0:0:0:2::2/use
+ esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ;
+ spdadd fec0:0:0:2::1[80] fec0:0:0:1::1[any] tcp -P in ipsec
+ esp/transport/fec0:0:0:2::2-fec0:0:0:l::1/use
+ esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ;
+ add fec0:0:0:1::1 fec0:0:0:2::2 esp 0x10001
+ -m transport
+ -E cast128-cbc "12341234"
+ -A hmac-sha1 "this is the test key" ;
+ add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10002
+ -E rc5-cbc "kamekame"
+ -A hmac-md5 "this is the test" ;
+ add fec0:0:0:2::2 fec0:0:0:1::1 esp 0x10003
+ -m transport
+ -E cast128-cbc "12341234"
+ -A hmac-sha1 "this is the test key" ;
+ add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10004
+ -E rc5-cbc "kamekame"
+ -A hmac-md5 "this is the test" ;
+
+ EOF
+
+
+
+
+
+
+
+
diff --git a/ru_RU.KOI8-R/books/handbook/staff/chapter.sgml b/ru_RU.KOI8-R/books/handbook/staff/chapter.sgml
index e8fc32622c..3c16baaf44 100644
--- a/ru_RU.KOI8-R/books/handbook/staff/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/staff/chapter.sgml
@@ -1,1124 +1,1285 @@
Коллектив Проекта FreeBSDПроект FreeBSD контролируется и действует при участии следующих
групп людей:Core Группа FreeBSD
- Core Группа FreeBSD представляет собой “Совет
- Директоров”, ответственных за решение вопросов связанных
+ Core Группа FreeBSD представляет собой Совет
+ Директоров, ответственных за решение вопросов связанных
общими целями проекта и его руководством и руководство отдельных направлений развития проекта
FreeBSD.(в алфавитном порядке, отсортировано по фамилии):&a.asami;
-
- &a.jmb;
-
-
-
- &a.ache;
-
-
-
- &a.bde;
-
-
-
- &a.gibbs;
-
-
&a.dg;&a.jkh;
- &a.phk;
-
-
-
- &a.rich;
-
-
-
- &a.gpalmer;
+ &a.grog;
- &a.jdp;
+ &a.imp;&a.dfr;
- &a.sos;
-
-
-
- &a.peter;
+ &a.msmith;
- &a.wollman;
+ &a.rwatson;
- &a.joerg;
+ &a.peter;
+
+
Разработчики FreeBSDЭто люди, которые имеют права доступа к Главному Репозиторию
FreeBSD и занимаются основной работой над исходными текстами FreeBSD.
Члены Core Группы также являются разработчиками.
+
+ &a.akiyama;
+
+
&a.jmas;
-
+
- &a.will;
+ &a.will;
-
+
&a.ugen;
-
+
+
+ &a.toshi;
+
+
+
+ &a.babkin;
+
+
&a.dbaker;&a.jhb;
-
+
&a.mbarkah;
+
+ &a.dougb;
+
+
&a.stb;&a.pb;&a.abial;&a.jb;
-
+
&a.nbm;
+
+ &a.jmb;
+
+
&a.torstenb;
-
+
&a.wilko;
-
+
+
+ &a.jake;
+
+
&a.dburr;
+
+ &a.adrian;
+
+
&a.charnier;
+
+ &a.jon;
+
+
&a.luoqi;
+
+ &a.ache;
+
+
&a.ejc;&a.kjc;
- &a.gclarkii;
+ &a.cjh;&a.archie;
-
+
&a.chris;
-
+
&a.alc;&a.cracauer;
+
+ &a.dec;
+
+
&a.adam;&a.bsd;
-
+
+
+ &a.jwd;
+
+
&a.dillon;
-
+
&a.mdodd;
+
+ &a.gad;
+
+
&a.dufault;&a.uhclem;&a.tegge;&a.deischen;&a.eivind;&a.julian;&a.rse;&a.ru;&a.se;
+
+ &a.bde;
+
+
&a.jasone;&a.sef;
- &a.jedgar;
+ &a.jedgar;
-
+
- &a.green;
+ &a.green;
-
+
&a.fenner;
+
+ &a.lioux;
+
+
&a.jfieber;&a.jfitz;&a.scrappy;&a.lars;
- &a.dirk;
+ &a.dirk;
- &a.shige;
+ &a.shige;
-
+
&a.billf;
-
+
- &a.gallatin;
+ &a.gallatin;
-
+
&a.patrick;&a.tg;
+
+ &a.gibbs;
+
+
&a.brandon;
-
-
- &a.gioria;
-
+
+
+ &a.gioria;
+ &a.graichen;
-
+
- &a.cg;
+ &a.cg;&a.rgrimes;&a.jmg;&a.hanai;&a.roger;&a.mharo;
+
+ &a.dannyboy;
+
+
&a.thepish;&a.jhay;&a.sheldonh;&a.helbig;&a.ghelmer;&a.erich;&a.nhibma;&a.flathill;&a.pho;
+
+ &a.horikawa;
+
+
&a.hosokawa;
+
+ &a.jeh;
+
+
&a.hsu;
- &a.foxfair;
+ &a.foxfair;&a.tom;&a.mph;
-
-
- &a.imura;
-
-
+
&a.shin;&a.itojun;&a.iwasaki;&a.mjacob;
+
+ &a.keith;
+
+
&a.gj;&a.nsj;
+
+ &a.trevor;
+
+
+
+ &a.phk;
+
+
&a.joe;
+
+ &a.cokane;
+
+
&a.kato;&a.kris;
-
+
+
+ &a.kiri;
+
+
&a.andreas;&a.motoyuki;&a.jkoshy;&a.kuriyama;
- &a.reg;
+ &a.alex;
- &a.grog;
+ &a.reg;&a.jlemon;&a.truckman;&a.lile;
-
+
&a.kevlo;
-
+
- &a.imp;
+ &a.scottl;
-
+
&a.ade;&a.jmacd;&a.smace;
- &a.gehenna;
+ &a.bmah;
+
+
+
+ &a.dwmalone;&a.mckay;&a.mckusick;&a.ken;&a.hm;
- &a.tedm;
+ &a.sanpei;
+
+
+
+ &a.bmilekic;
+
+
+
+ &a.non;&a.jim;
-
+
&a.marcel;
-
+
- &a.dan;
+ &a.dan;&a.amurai;&a.markm;
+
+ &a.rich;
+
+
&a.knu;&a.nakai;&a.max;&a.newton;&a.rnordier;&a.davidn;&a.obrien;&a.danny;
+
+ &a.okazaki;
+
+
&a.ljo;
+
+ &a.onoe;
+
+
+
+ &a.marko;
+
+
+
+ &a.gpalmer;
+
+
&a.fsmp;&a.smpatel;
+
+ &a.cp;
+
+
&a.wpaul;&a.alfred;
+
+ &a.roam;
+
+
&a.wes;
-
+
&a.cpiazza;
+
+ &a.jdp;
+
+
&a.bp;&a.steve;&a.mpp;&a.jraynard;&a.darrenr;&a.csgr;&a.martin;&a.paul;&a.roberto;&a.chuckr;&a.jesusr;&a.guido;&a.groudier;&a.dima;
- &a.asmodai;
+ &a.asmodai;
-
+
- &a.ps;
+ &a.ps;
-
+
&a.sada;
-
+
+
+ &a.hrs;
+
+
&a.wsanchez;
-
+
+
+ &a.sos;
+
+
&a.nsayer;&a.wosch;&a.dick;&a.jseger;
- &a.simokawa;
+ &a.gshapiro;
+
+
+
+ &a.simokawa;&a.vanilla;
+
+ &a.shafeeq;
+
+
+
+ &a.demon;
+
+
&a.msmith;
+
+ &a.ben;
+
+
+
+ &a.benno;
+
+
&a.des;
-
+
+
+ &a.sobomax;
+
+
&a.dcs;&a.brian;&a.mks;&a.stark;
-
- &a.karl;
-
-
&a.sumikawa;
-
+
- &a.murray;
+ &a.murray;
-
+
&a.gsutter;
-
+
&a.unfurl;&a.nyan;&a.tanimura;&a.taoka;&a.mtaylor;&a.dt;&a.cwt;&a.pst;&a.ume;
+
+ &a.rv;
+
+
&a.hoek;&a.nectar;
+
+ &a.jayanth;
+
+
&a.swallace;
-
+
- &a.rwatson;
+ &a.takawata;
+
+
+
+ &a.assar;&a.dwhite;&a.nate;
+
+ &a.wollman;
+
+
+
+ &a.joerg;
+
+
+
+ &a.kbyanc;
+
+
&a.yokota;
-
+
&a.andy;
-
+
&a.phantom;
-
+
&a.jmz;
+
+
+ &a.issei;
+
+
Проект Документации FreeBSDПроект
Документации FreeBSD ответственен за большое количество
различных подпроектов, каждый подпроект контролируется отдельными
индивидумами и их делегатами (если таковые есть):Главный Архитектор Проекта Документации&a.nik;Webmaster&a.wosch;Редактор Руководства&a.jim;Редактор ЧаВО&a.faq;Редактор Новостей&a.jim;Пресс Редактор&a.jkoshy;Редактор “Очень-Быстрых” Новостей FreeBSDChris Coleman chrisc@vmunix.comРедактор Галереи FreeBSD&a.phantom;Редактор Галереи Коммерческих Разработчиков&a.phantom;
+
Редактор Списка Изменений Web сервера&a.www;
+]]>
+
Редактор списка Групп Пользователей&a.grog;Редактор списка проектов и задач FreeBSD&a.asmodai;Проект Java в FreeBSD&a.patrick;Конвертация документации из формата LinuxDoc в DocBook&a.nik;Кто за Что Ответственен
-
- Принципиальная Архитектура FreeBSD
-
-
- &a.dg;
-
-
-
Руководитель
Проекта Документации&a.nik;Загрузочные блоки&a.rnordier;, &a.jhb;Начальный загрузчик&a.dcs;
+ &a.jhb;Интернационализация&a.ache;
-
- Сетевая поддержка
-
-
- &a.wollman;
-
-
-
Postmaster&a.jmb;Координатор Релизов FreeBSD&a.jkh;Связи с Общественностью&a.jkh;Офицер
Безопасности
- &a.imp;
+ &a.kris;Менеджеры
CVS Репозитория&a.peter;Помошник: &a.jdp;
-
- Международный (Средства Шифрования): &a.markm;Менеджер
Коллекции Портов FreeBSD&a.asami;
+
+ Стандарты
+
+
+ &a.wollman;
+
+
+
Представитель XFree86 Project, Inc.&a.rich;Поддержка в Usenet&a.joerg;GNATS
Администратор&a.steve;Webmaster&a.wosch;Официальные участники Проекта Русской Документации FreeBSD
-
- .Это люди, которые имеют права доступа к Репозиторию Проекта
+
+ Это люди, которые имеют права доступа к Репозиторию Проекта
Русской Документации FreeBSD и занимаются переводом существующей
документации на русский язык.(в алфавитном порядке, отсортировано по фамилии):
- &a.ru.andy;
+ &a.ru.danfe;
-
+
- &a.ru.danfe;
+ &a.ru.ru;
-
+
- &a.ru.phantom;
+ &a.ru.andy;
-
+
- &a.ru.ru;
+ &a.ru.phantom;
+
diff --git a/ru_RU.KOI8-R/books/porters-handbook/Makefile b/ru_RU.KOI8-R/books/porters-handbook/Makefile
index 94333edca6..d912ddbb27 100644
--- a/ru_RU.KOI8-R/books/porters-handbook/Makefile
+++ b/ru_RU.KOI8-R/books/porters-handbook/Makefile
@@ -1,30 +1,30 @@
#
-# $FreeBSD: doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.1 2000/10/17 17:25:01 phantom Exp $
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.2 2000/09/17 15:15:41 phantom Exp $
+# $FreeBSD$
+# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.3 2000/11/15 17:21:30 phantom Exp $
#
# Build the FreeBSD Porter's Handbook.
#
MAINTAINER=andy@FreeBSD.org.ua
DOC?= book
FORMATS?= html-split
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
SRCS= book.sgml
# Use the local DSSSL file
DSLHTML?= ${.CURDIR}/freebsd.dsl
DSLPRINT?= ${.CURDIR}/freebsd.dsl
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/books/porters-handbook/book.sgml b/ru_RU.KOI8-R/books/porters-handbook/book.sgml
index 9ec325bb1f..5ae0ab4fa3 100644
--- a/ru_RU.KOI8-R/books/porters-handbook/book.sgml
+++ b/ru_RU.KOI8-R/books/porters-handbook/book.sgml
@@ -1,4596 +1,4597 @@
%man;
%bookinfo;
%authors;
%mailing-lists;
]>
Руководство по портированию приложений во FreeBSDThe FreeBSD Russian Documentation ProjectАпрель 20002000
The FreeBSD Documentation Project
&bookinfo.legalnotice;
Как самому сделать портИтак, теперь вас интересует, как создать собственный порт или
обновить существующий? Великолепно!Ниже находятся некоторые указания по созданию нового порта для
FreeBSD. Если вы хотите обновить существующий порт, вы должны
прочесть их, а затем .Если этот документ недостаточно подробен, вы должны обратиться к
файлу /usr/ports/Mk/bsd.port.mk, который
включается в make-файл каждого порта. Он хорошо прокомментирован, и
даже если вы не занимаетесь хаканьем make-файлов каждодневно, из него
вы сможете узнать много нового. Кроме того, конкретные вопросы можно
задать, послав письмо на адрес &a.ports;.Только часть переменных
(VAR), которые могут
быть переопределены, описаны в этом документе. Большинство (если не
все) описаны в начале файла bsd.port.mk.
В этом файле используется нестандартная настройка шага табуляции.
Emacs и Vim
должны распознать это при загрузке файла. Как vi,
так и ex могут быть настроены на использование
правильного значения выдачей команды :set tabstop=4
после загрузки файла.Быстрое портированиеВ этом разделе будет описано, как сделать порт на скорую руку.
Во многих случаях этого бывает недостаточно, но мы посмотрим.Во-первых, скачайте оригинальный tar-файл и поместите его в каталог
DISTDIR, который по умолчанию есть не что иное, как
/usr/ports/distfiles.Здесь предполагается, что программное обеспечение компилируется
без проблем как есть, то есть для работы приложения на вашей системе
FreeBSD не потребовалось абсолютно никаких изменений. Если
требовалось что-то изменить, то вам придется обратиться также и к
следующему разделу.Создание файла MakefileМинимальный Makefile будет выглядеть
примерно так:
# New ports collection makefile for: oneko
# Date created: 5 December 1994
# Whom: asami
#
# $FreeBSD$
#
PORTNAME= oneko
PORTVERSION= 1.1b
CATEGORIES= games
MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/
MAINTAINER= asami@FreeBSD.org
MAN1= oneko.1
MANCOMPRESSED= yes
USE_IMAKE= yes
.include <bsd.port.mk>
Посмотрим, сможете ли вы его понять. Не обращайте внимание на
содержимое строчки $FreeBSD$, она
будет заполнена автоматически системой CVS, когда порт будет
импортирован в наше дерево портов. Вы можете найти более подробный
пример в разделе пример
Makefile.Создание информационных файловИмеется три информационных файла, которые требуются для любого
порта, вне зависимости от того, является ли он пакаджем или нет. Это
pkg-comment, pkg-descr и
pkg-plist, и их префикс pkg-
отличает их от других файлов.pkg-commentЭто однострочное описание порта.
Пожалуйста, не включайте сюда название
пакаджа (или номер версии программного обеспечения).
Комментарий должен начинаться с заглавной буквы и не
заканчиваться точкой. Вот пример:
A cat chasing a mouse all over the screen
pkg-descrЭто более подробное краткое описание порта. От одного до
нескольких абзацев, кратко описывающих, что представляет собой
порт, будет достаточно.Это не руководство и не подробнейшее
описание того, как использовать или компилировать порт!
Пожалуйста, будьте внимательны при копировании текста
из README или страниц
справочника; слишком часто они не являются кратким
описанием порта или имеют неудобный формат (например, страницы
справочника выровнены пробелами). Если портируемое приложение
имеет официальную страничку Интернет, укажите ее здесь.
Предварите один из сайтов словом
WWW: для того, чтобы вспомогательные утилиты
работали правильно.Рекомендуется, чтобы вы указали свое имя в конце этого файла,
как здесь:
This is a port of oneko, in which a cat chases a poor mouse all over
the screen.
:
(etc.)
WWW: http://www.oneko.org/
- Satoshi
asami@cs.berkeley.edu
pkg-plistЗдесь перечисляются все файлы, устанавливаемые портом. Его
также называют “списком для упаковки”, потому что
пакадж генерируется упаковкой файлов, которые здесь указаны.
Имена путей указываются относительно установочного префикса
(обычно /usr/local или
/usr/X11R6). Если вы используете переменные
MANn (а вы должны
это делать), то указывать страницы справочника здесь не
нужно.Вот маленький пример:
bin/oneko
lib/X11/app-defaults/Oneko
lib/X11/oneko/cat1.xpm
lib/X11/oneko/cat2.xpm
lib/X11/oneko/mouse.xpm
@dirrm lib/X11/oneko
Обратитесь к странице Справочника по команде
&man.pkg.create.1; с подробным описанием формата списка
упаковки.В списке вы должны указать все файлы, но не каталоги.
Кроме того, если порт создает каталоги сам на этапе установки,
нужно добавить директивы @dirrm в подходящие
места для удаления их при удалении порта.Рекомендуется, чтобы имена файлов в этом списке были
отсортированы в алфавитном порядке. Это позволит значительно
облегчить сверку изменений при обновлении порта.Создание списка упаковки вручную может оказаться весьма
трудоёмкой задачей. Если порт устанавливает большое количество
файлов, раздел об автоматическом построении списка
упаковки может помочь сэкономить время.Создание файла с контрольной суммойПросто введите команду make makesum.
Правила утилиты make автоматически сгенерируют файл
distinfo.Тестирование портаВы должны удостовериться, что правила построения порта выполняют
именно то, что вы хотите, включая создание пакаджа для порта. Вот
те важные вещи, которые вы должны проверить.pkg-plist не содержит ничего сверх того,
что устанавливается вашим портомpkg-plist содержит абсолютно все, что
устанавливается вашим портомВаш порт может быть переустановлен множество раз с помощью
указания цели reinstallВаш порт подчищает
за собой после своего удаленияРекомендуемый порядок проверкиmake installmake packagemake deinstallpkg_add package-namemake deinstallmake reinstallmake packageПроверьте, что ни на шаге package, ни на
шаге deinstall не выдается никаких
предупреждений. После выполнения шага 3 проверьте, что все новые
каталоги были успешно удалены. Также попробуйте запустить
программное обеспечение после выполнения шага 4, чтобы убедиться, что
оно работает правильно при установке из пакаджа.Проверка вашего порта утилитой
portlintБудьте добры, пользуйтесь утилитой portlint
для проверки того, что ваш порт соответствует нашим рекомендациям.
Программа portlint является частью Коллекции
Портов. В частности, вы можете захотеть проверить, правильно ли
сформирован файл Makefile и
соответствующим ли образом наименован пакадж.Посылка портаПервым делом удостоверьтесь, что вы прочитали раздел о
том, что можно и нельзя делать.Теперь, когда вы счастливы от своего первого порта, единственное,
что осталось сделать, это включить его в основное дерево портов
FreeBSD и осчастливить этим всех остальных. Нам не нужен ни ваш
каталог work, ни пакадж
pkgname.tgz, так что удалите их прямо сейчас.
Затем просто включите вывод команды
shar `find port_dir` в сообщение об ошибке и пошлите
его с помощью программы &man.send-pr.1; (обратитесь к разделу Сообщения об ошибках
и общие замечания для получения подробной информации о программе
&man.send-pr.1;. Если размер неупакованного порта превышает 20 КБ, то
сожмите его в tar-файл и воспользуйтесь утилитой &man.uuencode.1; перед
тем, как включить его в сообщение (можно посылать такие файлы, даже если
сообщение не превышают 20КБ, но это не рекомендуется). Не забудьте
указать в сообщении категорию ports и класс
change-request (Не указывайте, что сообщение
имеет статус confidential!). Добавьте также
краткое описание программы, порт которой вы создали, в раздел
Description отправляемого PR и сам порт в виде архива
shar или архива tar, обработанного утилитой uuencode, поместив его в
раздел Fix. Последнее облегчит труд коммиттеров,
которые используют скрипты для выполнения своей работы, связанной с
портами.Повторим еще раз, что не нужно включать ни оригинальный
файл с дистрибутивом, ни каталог work,
ни пакадж, построенный вами командой
make package.В прошлом мы просили вас закачивать новые порты на ftp-сервер
(ftp.FreeBSD.org). Больше этого делать
не нужно, так как на каталог incoming/
нет доступа в режиме чтения, из-за большого количества пиратского
программного обеспечения, оказавшегося в нем.
- Мы посмотрим на ваш порт, вернет его обратно, если это будет
- нужно, и включим его в дерево. Ваше имя также появится в списке
+ Мы посмотрим на ваш порт, при необходимости вернём его обратно, а
+ затем включим порт в наше дерево. Ваше имя также появится в списке
“Людей, внесших свой вклад” в Руководстве и других
файлах. Это ли не круто?!? :-)Вы можете значительно облегчить нам работу, если будете
давать хорошее описание в поле описания проблемы при посылке. Мы
предпочитаем нечто вроде
“New port: <краткое описание порта>” в случае
нового порта и
“Update port: <category>/<port> <краткое
описание обновлений>” в случае обновления порта.
Если вы будете придерживаться этой схемы, то шансы, что кто-нибудь
вскоре взглянет на ваш PR, весьма высоки.Медленное портированиеИтак, все оказалось не так уж и просто, и порт потребовал
некоторых модификаций для того, чтобы заставить его работать. В этом
разделе мы расскажем, шаг за шагом, как его модифицировать, чтобы он
работал с нашей системой портов.Как всё это работаетВо-первых, когда пользователь дает в своем каталоге с портом
команду make, происходит целая череда событий.
Во время чтения этого текста может оказаться полезным иметь файл
bsd.port.mk открытым в другом окне, что сильно
поможет в их понимании.Но не волнуйтесь сильно, если вы не до конца понимаете, что
делается в bsd.port.mk, не так уж много людей
его понимает... :->Запускается цель fetch. Цель
fetch отвечает за то, что архив исходных
текстов имеется в наличии локально в каталоге
DISTDIR. Если цель
fetch не может найти требуемые файлы в
каталоге DISTDIR, то он будет искаться по
указателю URL MASTER_SITES, который
устанавливается в Makefile, а также на нашем основном ftp-сервере
по адресу
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/, куда
мы по возможности помещаем дистрибутивные файлы для архива.
Затем она попытается сгрузить указанный файл с помощью
FETCH, полагая, что запрашивающая машина имеет
прямое подключение к Интернет. Если файл скачается удачно, то
он будет помещен в каталог DISTDIR для
последующего использования и обработки.Выполняется цель extract. Она ищет
дистрибутивный файл порта (как правило, tar-архив gzip) в
каталоге DISTDIR и распаковывает его во
временный каталог, задаваемый переменной
WRKDIR (по умолчанию
work).Выполняется цель patch. Во-первых,
применяются все патчи, заданные переменной
PATCHFILES. Во-вторых, если какие-либо файлы с
патчами, носящие имена
patch-*, имеются в
подкаталоге PATCHDIR (по умолчанию это каталог
files), то они применяются в этот момент в
алфавитном порядке.Запускается цель configure. Здесь
может выполняться любая из многих различных вещей.Если существует скрипт
scripts/configure, то он запускается.
Если задана переменная HAS_CONFIGURE
или GNU_CONFIGURE, то запускается скрипт
WRKSRC/configure.
Если задана переменная USE_IMAKE,
то запускается команда XMKMF (по умолчанию
это xmkmf -a).Выполняется цель build. Она
отвечает за переход в собственный рабочий каталог порта
(WRKSRC) и его построение. Если задана
переменная USE_GMAKE, будет использоваться
GNU-версия утилиты make, в противном случае
будет использована системная утилита
make.Выше перечислены стандартные действия. Кроме того, вы сами
можете определить цели
pre-что-то или
post-что-то,
или создать скрипты с такими именами в подкаталоге
scripts, и они будут запущены до или после
выполнения действий по умолчанию.Например, если у вас есть цель
post-extract, определенная в вашем файле
Makefile и файл pre-build в подкаталоге
scripts, то после выполнения обычных действий по
распаковке, будет вызвана цель post-extract
а скрипт pre-build будет выполнен перед
запуском стандартных правил построения. Рекомендуется использовать
цели из Makefile, если действия достаточно
просты, потому что в дальнейшем будет проще определить, какие
нестандартные действия требует порт.Действия по умолчанию выполняются целями
do-что-то из
bsd.port.mk. Например, команды для
распаковки порта находятся в цели
do-extract. Если вам не хватает цели по
умолчанию, вы можете ее исправить, переопределив цель
do-something
в вашем файле Makefile.“Основные” цели (к примеру,
extract,
configure, и тд.) не делают ничего больше,
чем проверяют успешность завершения всех предыдущих шагов и
вызывают настоящие цели или скрипты, и их не нужно менять. Если
вам нужно изменить распаковку, исправляйте
do-extract, но никогда не трогайте
extract!Теперь вы представляете, что происходит, когда пользователь
набирает команду make, теперь давайте пройдемся
через рекомендуемые для создания настоящего порта шаги.Получение исходного кодаПолучите оригинальные исходные тексты (обычно) в виде
упакованного tar-архива
(foo.tar.gz или
foo.tar.Z)
и скопируйте его в каталог DISTDIR. Всегда
используйте исходные тексты основной ветки
разработки везде, где это возможно.Если вы не можете найти ftp/http сайт с хорошим подключением к
сети, или находите только сайты, которые имеют раздражающе
нестандартные форматы, то можете захотеть поместить копию на надежный
сервер ftp или http, который вам доступен (например, ваша домашняя
страница). Проверьте, что вы установили переменную
MASTER_SITES в значение, которое соответствует
вашему решению.Если вы не можете найти доступного и надёжного места для
помещения дистрибутивного файла, то мы сами сможем разместить его на
сервере ftp.FreeBSD.org. Дистрибутивный файл должен
быть помещён в каталог ~/public_distfiles/
одного из пользователей машины freefall. Попросите
того, кто коммиттил ваш порт, сделать это. Этот человек также задаст
переменной MASTER_SITES значение
MASTER_SITE_LOCAL, а в переменной
MASTER_SITE_SUBDIR укажет своё имя пользователя
с машины freefall.Если дистрибутивные файлы вашего порта постоянно меняются по
непонятным причинам, остается поместить дистрибутив на вашу домашнюю
веб-страницу и указать ее первой в списке
MASTER_SITES. Это позволит избежать получения
ошибок checksum mismatch у пользователей, а
также уменьшит нагрузку на людей, сопровождающих наш ftp-сервер.
Также, если у порта имеется только один основной сервер, то
рекомендуется поместить архивную копию на свой сайт и указать его в
списке MASTER_SITES вторым.Если вашему порту требуются дополнительные `патчи', доступные
в Интернет, скачайте также и их, поместив в каталог
DISTDIR. Не волнуйтесь, если они находятся не
на том же сайте, откуда взят дистрибутивный архив, мы умеем
обрабатывать такие ситуации (смотрите описание PATCHFILES ниже).Модификация портаРаспакуйте копию дистрибутивного файла в отдельный каталог и
внесите изменения, которые необходимы для того, чтобы порт
компилировался нормально в текущей версии FreeBSD.
Тщательно отслеживайте все, что вы делаете,
этот процесс вам предстоит автоматизировать. Все, включая удаление,
добавление или модификацию в файлах должны будут выполняться
автоматически с помощью скриптов или файлов патчей, когда вы
завершите работу над портом.Если вашему порту во время компиляции, установки и настройки
требуется довольно много взаимодействовать с пользователем, то
посмотрите на один из классических скриптов
Configure Лэрри Уолла (Larry Wall) и
сделайте сами что-либо подобное. Предназначение новой коллекции
портов - это сделать каждое приложение в стиле
“plug-and-play” настолько, насколько это вообще возможно
для конечного пользователя при минимальном использовании дискового
пространства.Если явно не указано обратное, то патчи, скрипты и другие
файлы, которые вы создали и предоставили для Коллекции Портов
FreeBSD, неявно подпадают под стандартные условия лицензии
BSD.Создание патчейФайлы, которые добавлялись или изменялись в процессе создания
порта, могут быть выявлены вызовом программы diff с рекурсией, а
результат работы этой программы может быть в дальнейшем передан
программе patch. Каждый набор патчей, который вы собираетесь
применить, должен быть собран в файл с именем
patch-*, где
* означает порядок, в которой будут
применяться патчи — это делается в
алфавитном порядке, то есть сначала
aa, затем ab и так далее. Если
хотите, вы можете использовать имена файлов, указывающие на имена
файлов, к которым применяются патчи, такие, как
patch-Imakefile или
patch-src-config.h. Эти файлы должны находиться в
каталоге PATCHDIR,
откуда они будут взяты автоматически. Все патчи должны быть сделаны
относительно каталога WRKSRC (как правило,
это каталог, в который распаковывается исходный архив и где будет
выполняться построение). Для упрощения внесения изменений и
обновлений вы должны избегать наличия более чем одного патча для
одного и того же файла (например, патчей
patch-aa и patch-ab, оба
меняющих файл
WRKSRC/foobar.c).КонфигурированиеПоместите все дополнительные команды, требуемые для настройки,
в ваш скрипт configure и сохраните его в
подкаталоге scripts. Как отмечено выше, вы
можете сделать это целями в файле Makefile
и/или скриптами с именами pre-configure или
post-configure.Обработка пользовательского вводаЕсли для построения, конфигурации или установки вашего порта
требуется некоторый ввод со стороны пользователя, то задайте
переменную IS_INTERACTIVE в вашем файле Makefile.
В случае “ночного построения” это позволит пропустить
ваш порт, если пользователь в своем окружении задал переменную
BATCH (и если пользователь установил переменную
INTERACTIVE, то будут строиться
только порты, которые требуют взаимодействия
с пользователем.При наличии разумных ответов на задаваемые вопросы, подходящих по
умолчанию, также рекомендуется проверять переменную
PACKAGE_BUILDING и выключать интерактивный скрипт,
если он есть. Это позволит нам строить пакаджи для помещения на
компакт-диски и ftp-серверы.Настройка файла MakefileНастройка файла Makefile достаточно проста, и мы снова
предполагаем, что перед тем, как начать, вы посмотрите на существующие
примеры. К тому же в этом руководстве имеется примерный Makefile, так что взгляните
на него и, пожалуйста, следуйте порядку переменных и разделов в этом
образце, чтобы облегчить чтение вашего порта другими людьми.Итак, расположим решаемые задачи в порядке их возникновения при
создании вашего нового файла Makefile:Оригинальные исходный кодНаходится ли он в каталоге DISTDIR в виде
стандартного упакованного архиватором gzip tar-архива с именем типа
foozolix-1.2.tar.gz? Если это так,
можно перейти к следующему шагу. Если нет, то вы должны попытаться
переопределить некоторые из переменных
DISTNAME, EXTRACT_CMD,
EXTRACT_BEFORE_ARGS,
EXTRACT_AFTER_ARGS,
EXTRACT_SUFX или DISTFILES в
зависимости от того, насколько необычен формат дистрибутивного файла.
(Самый распространённый случай - это
EXTRACT_SUFX=.tar.Z, когда tar-файл упакован
обычной утилитой compress, а не архиватором
gzip.)В худшем случае вы можете просто определить свою собственную цель
do-extract для переопределения действий по
умолчанию, хотя к этому нужно будет прибегать в очень редких случаях,
если вообще придётся.PORTNAME и
PORTVERSIONВ переменной PORTNAME вы должны указать
основную часть имени вашего порта, а в переменной
PORTVERSION - номер версии.PORTREVISION и
PORTEPOCHPORTREVISIONПеременная PORTREVISION представляет собой
монотонно увеличивающееся число, которое обнуляется при каждом
увеличении значения переменной PORTVERSION (то есть
каждый раз, когда создателями выпускается новый официальный релиз),
и добавляется к имени пакаджа, если оно не равно нулю. Значение
PORTREVISION увеличивается каждый раз, когда
в порте FreeBSD делаются изменения, которые достаточно сильно
затрагивают содержимое или структуру соответствующего пакаджа.Примеры случаев, когда значение PORTREVISION должно быть
увеличено:Добавление патчей для исправления пробелов в безопасности,
ошибок, или добавления новой функциональности в порт
FreeBSD.Изменения в файле построения порта для включения и выключения
параметров, определяемых при компиляции пакаджа.Изменения в списке упаковки или в поведении пакаджа во время
его установки (например, изменение скрипта, генерирующего
начальные данные для пакаджа, такие, как ssh-ключи для
хоста).Увеличение версии динамической библиотеки, от которой зависит
порт (в этом случае тот, кто попытается установить старый пакадж
после установки более новой версии библиотеки, не сможет этого
сделать, потому что при этом будет делаться поиск старой
библиотеки libfoo.x, а не libfoo.(x+1)).Большие функциональные изменения в дистрибутивном файле порта,
происходящие без объявлений, и приводящие к большим изменениям, то
есть изменения в дистрибутиве требуют корректировки файла
distinfo без соответствующего изменения
PORTVERSION, когда как команда
diff -ru между новой и старой версиями
показывает нетривиальные изменения в коде.Примеры изменений, которые не требуют увеличения переменной
PORTREVISION:Изменения стиля в скелете порта без функциональных изменений
в пакадже.Изменения в переменной MASTER_SITES или
другие функциональные изменения порта, которые не затрагивают
получающегося пакаджа.Тривиальные патчи к дистрибутивному файлу, такие, как
исправления опечаток, которые не так уж важны, что пользователи
пакаджа должны озаботиться обновлением.Исправления, касающиеся этапа построения, которые делают
возможным построение пакаджа, если ранее это было невозможно
сделать (пока изменения не приводят к изменению работы на любых
других платформах, на которых порт ранее строился). Так как
PORTREVISION отражает содержимое пакаджа, то
если ранее пакадж не строился, то нет нужды увеличивать
PORTREVISION для отметки изменения.Правило, которому нужно приблизительно следовать, заключается в
том, что нужно спрашивать себя, является ли вносимое в порт изменение
таким, что кто-либо и где-либо от него выиграет (в виде
усовершенствования, исправления или благодаря тому, что новый пакадж
будет реально работать). Если это так, то переменная
PORTREVISION должна быть увеличена, чтобы
автоматизированные инструменты (например,
pkg_version) смогли обнаружить факт появления
нового пакаджа.PORTEPOCHВремя от времени разработчик программного обеспечения или
создатель порта FreeBSD делают что-то не так и выпускают версию
программы, номер которой меньше предыдущей версии. Примером этого
является порт, название которого меняется с foo-20000801 на foo-1.0
(изначально это не считалось бы более новой версией, так как
20000801 численно больше, чем 1).В ситуациях, подобных этой, должно быть увеличено значение
PORTEPOCH. Если значение
PORTEPOCH не равно нулю, то оно добавляется к имени
пакаджа, как описано в разделе выше. Значение
PORTEPOCH никогда не уменьшается и не сбрасывается
в ноль, потому что это приведет к ошибке сравнения с пакаджем с
меньшим номером эпохи (то есть то, что пакадж устарел. обнаружено не
будет): номер новой версии (например, 1.0,1 в
примере выше) останется меньше, чем номер предыдущей версии
(2000801), однако суффикс ,1 интерпретируется
различными автоматизированными утилитами особым образом, и окажется
больше, чем предполагаемый суффикс ",0" более раннего пакаджа).Предполагается, что в большинстве портов переменная
PORTEPOCH использоваться не будет, но при
корректном использовании PORTVERSION может
появиться необходимость её иметь, если в будущих релизах программное
обеспечение должно изменить структуру номера версии. Однако
создателям портов нужно быть внимательными, когда разработчик
выпускает релиз без официального номера версии - эдакие
"промежуточные" релизы. Имеется соблазн пометить релиз датой его
выхода, что может вызвать проблемы, как и в примере выше, когда
будет выпущен новый "официальный" релиз.Например, если промежуточный релиз помечен датой 20000917, а
предыдущая версия программного обеспечения имела номер 1.2, то
промежуточному релизу должно быть поставлено в соответствие значение
PORTVERSION, равное 1.2.20000917 или что-то
похожее, но не 20000917, так как последующий релиз, скажем, 1.3,
должен иметь численно большее значение.Пример использования переменных PORTREVISION и
PORTEPOCHВыполнен коммит порта gtkmumble, версии 0.10, в коллекцию
портов.
PORTNAME= gtkmumble
PORTVERSION= 0.10
Значение PKGNAME станет равным
gtkmumble-0.10.Обнаружен пробел в безопасности, что потребовало создания
локального патча для FreeBSD. Соответственно было увеличено значение
переменной PORTREVISION.
PORTNAME= gtkmumble
PORTVERSIOn= 0.10
PORTREVISION= 1
PKGNAME принимает значение
gtkmumble-0.10_1Разработчиком выпущена новая версия с номером 0.2 (оказалось, что
под номером 0.10 автор имел в виду
0.1.0, а не то, что будет выпущено после
версии 0.9 - извините, теперь уже поздно). Так как новый
младший номер версии 2 по значению меньше, чем
номер предыдущей версии 10, то должно быть
увеличено значение PORTEPOCH для того, чтобы
заставить распознавать вновь создаваемый пакадж как "более новый".
Так как это новый релиз программы, то PORTREVISION
обнуляется (или удаляется из make-файла).
PORTNAME= gtkmumble
PORTVERSION= 0.2
PORTEPOCH= 1
PKGNAME принимает значение
gtkmumble-0.2,1Следующий релиз имеет номер версии 0.3. Так как значение
переменной PORTEPOCH никогда не уменьшается, что
переменные, определяющие версии, теперь выглядят так:
PORTNAME= gtkmumble
PORTVERSION= 0.3
PORTEPOCH= 1
PKGNAME принимает значение
gtkmumble-0.3,1Если значение PORTEPOCH этим
обновлением было бы сброшено в 0, то кто-нибудь,
имеющий установленный пакадж gtkmumble-0.10_1, не смог бы распознать
пакадж gtkmumble-0.3 как более новый, так как 3
было бы меньше, чем 10.Переменные PKGNAMEPREFIX
и PKGNAMESUFFIXДве необязательные переменные, PKGNAMEPREFIX и
PKGNAMESUFFIX, объединяются со значениями
PORTNAME и
PORTVERSION для формирования
PKGNAME в форме
${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}.
Добейтесь того, чтобы это соответствовало нашим рекомендациям по правильному выбору названий
для пакаджей. В частности, в переменной
PORTVERSION не разрешается использование дефиса
(-). Кроме того, если в имени пакаджа
присутствует часть language- или
compiled.specifics, то используйте
переменные PKGNAMEPREFIX и
PKGNAMESUFFIX, соответственно. Не делайте их
частью значения переменной PORTNAME.DISTNAMEВ переменной DISTNAME указывается имя порта так,
как назвали его создатели программного обеспечения. Значение
DISTNAME по умолчанию совпадает с
${PORTNAME}-${PORTVERSION}, так что переопределите
её значение в случае
необходимости. DISTNAME используется только в двух
местах. Во-первых, список дистрибутивных файлов
(DISTFILES) по умолчанию состоит из
${DISTNAME}${EXTRACT_SUFX}. И
во-вторых, предполагается, что дистрибутивный файл будет распакован в
подкаталог с именем WRKSRC, значение которого по
умолчанию есть не что иное, как
work/${DISTNAME}.Значения переменных PKGNAMEPREFIX
и PKGNAMESUFFIX не влияют на значение
DISTNAME. Заметьте также, что значение
WRKSRC равно
work/${PORTNAME}-${PORTVERSION},
и в случае, когда оригинальный архив называется по имени, отличном от
${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX},
скорее всего, вы должны оставить DISTNAME
как есть— лучше переопределить DISTFILES,
чем задавать значения как
DISTNAME, так и WRKSRC
(и, возможно, ещё и EXTRACT_SUFX).CATEGORIESВ процессе создания пакаджа он помещается в каталог
/usr/ports/packages/All, а в одном или более
подкаталогов из /usr/ports/packages
создаются на него ссылки. Имена этих подкаталогов определяются
переменной CATEGORIES. Такая схема нужна для
облегчения жизни пользователя, когда он сталкивается с массой
пакаджей на ftp-сервере или компакт-диске. Пожалуйста, посмотрите на
список существующих категорий и выберите те из них,
которые более всего подходят к вашему порту.Этот список также определяет, куда в дереве портов будет помещен
порт. Если вы укажете здесь более одной категории, то
предполагается, что файлы порта будут помещены в подкаталог с именем
первой категории. Посмотрите раздел о категориях для получения
подробной информации о том, как правильно выбрать категории.Если ваш порт действительно относится к чему-то, что абсолютно
не имеет отношения ни к одной из существующих категорий, вы можете
даже создать новую категорию. В этом случае, пожалуйста, пошлите
письмо с вашим предложением на адрес &a.ports;.MASTER_SITESСодержит часть с каталогом ftp/http-URL, которая указывает на
оригинальный архив на сервере MASTER_SITES. Не
забудьте лидирующий слэш (/)!Макрос команды make будет пытаться
воспользоваться этой переменной для получения дистрибутивного файла
с помощью программы FETCH, если он не будет найден
в системе.Рекомендуется помещать в список много сайтов, предпочтительно с
разных континентов. Это поможет при наличии проблем с мировой сетью,
и мы даже планируем добавить поддержку автоматического определения
ближайшего сайта и сгрузки файлов оттуда!Если оригинальный архив находится на одном из таких популярных
серверов, как X-contrib, GNU или Perl CPAN, то указывайте эти сайты в
простой форме при помощи
MASTER_SITE_*
(к примеру, MASTER_SITE_XCONTRIB или
MASTER_SITE_PERL_GNU). Просто укажите в переменной
MASTER_SITES одно из этих значений, а в
переменной MASTER_SITE_SUBDIR задайте путь к архиву.
Вот пример:
MASTER_SITES= ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applications
Эти переменные пределены в файле
/usr/ports/Mk/bsd.sites.mk. Всё время добавляются
новые сайты, так что обращайтесь к последней версии этого файла перед
тем, как послать нам свой порт.Пользователь может также задать значения переменных
MASTER_SITE_* в файле
/etc/make.conf для того, чтобы переопределить
выбранные нами варианты, и использовать вместо них свои любимые
зеркала этих популярных архивов.PATCHFILESЕсли вашему порту требуются некоторых дополнительные патчи,
которые доступны по ftp или http, задайте имена этих файлов в
переменной PATCHFILES, а в переменной
PATCH_SITES укажите URL того каталога, в котором
они содержатся (формат такой же, как
для MASTER_SITES).Если патч не относится к самому верху дерева исходных текстов
(то есть WRKSRC), потому что он содержит некоторые
дополнительные пути, установите соответственно значение переменной
PATCH_DIST_STRIP. В частности, если все имена
путей в патче имеют дополнительный путь
foozolix-1.0/ перед именем файла, то задайте
PATCH_DIST_STRIP=-p1.Не волнуйтесь, если патчи упакованы; они будут распакованы
автоматически, если имена файлов оканчиваются на
.gz или .Z.Если патч распространяется вместе с какими-то другими файлами,
такими, как документация, в виде tar-архива gzip, вы не можете просто
использовать PATCHFILES. Если это ваш случай,
добавьте имя и местоположение архива с патчем к
DISTFILES и MASTER_SITES.
Затем воспользуйтесь переменной EXTRA_PATCHES для
указания этих файлов, и bsd.port.mk автоматически
применит эти патчи. В частности, не копируйте
файлы с патчами в каталог PATCHDIR—этот
каталог может быть недоступным для записи.Отметьте, что архив будет распакован вне исходного кода, как
обычно, и к тому же его не нужно явно распаковывать, если
это обычный архив gzip или compress. Если вы сделаете последнее,
приложите дополнительные усилия для того, чтобы не перезаписать
что-либо, уже существующее в этом каталоге. Также не забудьте
добавить команду для удаления скопированного патча в цели
pre-clean.MAINTAINERУкажите здесь ваш адрес электронной почты. Пожалуйста.
:-)Подробное описание того, за что отвечает лицо, поддерживающее
порт, даётся в главе MAINTAINER в
Makefiles.ЗависимостиМногие порты зависят от других портов. Имеется пять переменных,
которые вы можете использовать для обеспечения того, что все
требуемое находится на машине пользователя. Имеется также несколько
предопределенных переменных, отражающих зависимости для общих
случаев, плюс еще несколько для управления поведением
зависимостей.LIB_DEPENDSЭта переменная указывает, от каких совместно используемых
библиотек зависит порт. Это список пар
lib:dir:target
где lib - это имя библиотеки,
dir - это каталог, в котором можно ее
найти в случае, если ее нет на машине, и
target - это цель, которую нужно вызвать
в этом каталоге. Например, LIB_DEPENDS=
jpeg.9:${PORTSDIR}/graphics/jpeg:install
проверит наличие библиотеки jpeg со старшим номером версии 9 и
перейдет в подкаталог graphics/jpeg вашего
дерева портов для ее построения и установки, если библиотека
отсутствует. Часть target может быть
опущена, если она равна DEPENDS_TARGET
(по умолчанию install).Часть lib - это аргумент, который
передается команде ldconfig -r | grep -wF. В
этой переменной не должно быть регулярных выражений.Зависимость проверяется дважды, один раз внутри цели
extract, а затем из цели
install. Кроме того, имя зависимости
помещается в пакадж, так что pkg_add будет
автоматически его устанавливать, если его нет на пользовательской
системе.RUN_DEPENDSВ этой переменной перечисляются выполнимые файлы или файлы, от
которых зависит работа порта. Это список пар вида
path:dir:target
где path - это имя программы или файла,
а dir - каталог, в котором можно найти
порт в случае, если его нет в системе, и
target - это цель, которую нужно вызвать
в этом каталоге. Если path начинается
со слэша (/), он воспринимается как файл и его
существование проверяется командой test -e; в
противном случае предполагается, что это выполнимый файл и
для определения того, имеется ли программа в пути поиска
пользователя, используется команда
which -s.Например,
RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \
wish8.0:${PORTSDIR}/x11-toolkits/tk80
проверит, существует ли файл или каталог
/usr/local/etc/innd и построит и установит его
из подкаталога news/inn дерева портов, если он
не будет найден. Он также проверит, имеется ли выполнимый файл с
именем wish8.0 в вашем пути поиска, перейдет в
подкаталог x11-toolkits/tk80 вашего дерева
портов для его построения и установки, если он не будет
найден.В приведенном примере innd является
выполнимым файлом; если выполнимый файл находится в необычном для
пользовательского маршрута поиска файлов месте, вы должны указать
полный путь к файлу.Зависимость проверяется внутри цели
install. Кроме того, имя зависимости
помещается в пакадж, так что программа pkg_add
будет автоматически его устанавливать, если он не будет найден
в пользовательской системе. Часть
target может быть опущена, если она
совпадает с DEPENDS_TARGET.BUILD_DEPENDSВ этой переменной перечисляются выполнимые или обычные файлы,
которые требуются порту для его построения. Как и
RUN_DEPENDS, это список пар
path:dir:target
Например, BUILD_DEPENDS=
unzip:${PORTSDIR}/archivers/unzip будет проверять
наличие выполнимого фала с именем unzip и
перейдет в подкаталог archivers/unzip вашего
дерева портов для его построения и установки, если последний не
будет найден.Под “построением” здесь понимается все от
распаковки до компиляции. Зависимость проверяется из цели
extract. Часть
target может быть опущена, если она
совпадает с DEPENDS_TARGET.FETCH_DEPENDSВ этой переменной перечисляются выполняемые файлы или просто
файлы, которые требуются порту для сгрузки. Как и предыдущие две
переменные, это список пар
path:dir:target
Например, FETCH_DEPENDS=
ncftp2:${PORTSDIR}/net/ncftp2 будет проверять
наличие выполняемого файла с именем ncftp2 и
перейдет в каталог net/ncftp2 вашего дерева
портов для его построения и установки, если тот не будет
найден.Зависимость проверяется при выполнении цели
fetch. Часть
target может быть опущена, если она
совпадает с DEPENDS_TARGET.DEPENDSЕсли имеется зависимость, которая не подпадает ни под одну из
вышеперечисленных четырех категорий, или ваш порт требует наличия
исходных текстов другого порта в распакованном виде кроме того,
что этот порт должен быть установлен, то воспользуйтесь этой
переменной. Это список пар
dir:target,
потому что, в отличие от предыдущих случаев, ничего не
проверяется. Часть target может
быть опущена, если она совпадает с
DEPENDS_TARGET.Переменные зависимостей общего видаОпределите переменную USE_XLIB=yes, если ваш
порт для установки требует X Window System (что подразумевается при
использовании переменной USE_IMAKE). Определите
переменную USE_GMAKE=yes, если ваш порт требует
вместо стандартной для BSD утилиты make ее
GNU-аналог. Задайте USE_AUTOCONF=yes, если
порту для работы требуется GNU autoconf. Определите переменную
USE_QT=yes, если ваш порт использует самую
последнюю версию пакета qt. Укажите
USE_PERL5=yes в случае, если вашему порту
требуется версия 5 языка perl. (Последнее особенно важно, так как
некоторые версии FreeBSD имеют perl5 в составе системы, когда как
другие - нет.)Замечания касательно зависимостейКак уже отмечено выше, целью, которая вызывается по умолчанию
в случае, когда это требует зависимость, является
DEPENDS_TARGET. Она по умолчанию есть
install. Это пользовательская переменная; она
нигде не определена в файле Makefile порта.
Если вашему порту требуется особый метод обработки зависимости,
воспользуйтесь частью :target переменной
*_DEPENDS вместо того, чтобы переопределять
DEPENDS_TARGET.Когда вы набираете команду make clean,
эта операция также выполняется и над зависимостями этого порта.
Если вы не хотите, чтобы это случилось, определите переменную
NOCLEANDEPENDS в вашем окружении.Чтобы безусловно зависеть от другого порта, укажите переменную
${NONEXISTENT} в качестве первого поля
переменной BUILD_DEPENDS или
RUN_DEPENDS. Пользуйтесь этим, только когда вам
нужно иметь исходный код другого порта. Вы можете сэкономить время
на компиляции, указав также и цель. Например,
BUILD_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract
всегда будет переходить в каталог с портом JPEG и распаковывать
его.Не нужно использовать DEPENDS, если есть
другой способ получить требуемый результат. Это может привести к
тому, что какой-то другой порт всегда будет строиться (и по
умолчанию устанавливаться). и такая зависимость отразится и на
пакадже. Если это именно то, что вам нужно, то я рекомендую вам
описывать это через BUILD_DEPENDS и
RUN_DEPENDS—по крайней мере смысл
будет более понятен.Механизм построенияЕсли ваш пакадж использует GNU-версию утилиты
make, задайте USE_GMAKE=yes.
Если ваш пакадж использует configure, задайте
HAS_CONFIGURE=yes. Если ваш пакадж использует
GNU-версию configure, задайте
GNU_CONFIGURE=yes (это также подразумевает
HAS_CONFIGURE). Если вы хотите передать
дополнительные параметры в configure (список
параметров представляет собой
--prefix=${PREFIX} для GNU
configure и пустую строку для не-GNU
configure), укажите эти дополнительные параметры в
CONFIGURE_ARGS. Если ваш пакадж использует
GNU-версию autoconf, задайте
USE_AUTOCONF=yes. Это подразумевает
GNU_CONFIGURE, и приведет к вызову
autoconf до запуска
configure.Если ваш пакадж является приложением для X, которое создает
файлы Makefile из соответствующих файлов
Imakefile при помощи утилиты
imake, то задайте USE_IMAKE=yes.
Это приведет к автоматическому запуску команды
xmkmf -a на этапе конфигурирования. Если
использование флага является для вашего порта
проблематичным, задайте XMKMF=xmkmf. Если порт
использует команду imake, но не воспринимает цель
install.man, то должна быть задана
переменная NO_INSTALL_MANPAGES=yes. Кроме того,
автор программы должен быть пристрелен. :->Если в файле Makefile из дистрибутива вашего
порта в качестве главной цели для построения указано нечто, отличное
от all, то задайте соответствующим образом
переменную ALL_TARGET. То же самое касается
целей install и
INSTALL_TARGET.Особые соглашенияИмеется ещё несколько вещей, которые вы должны иметь в виду при
создании порта. Этот раздел описывает наиболее часто встречающиеся из
них.Динамические библиотекиЕсли ваш порт устанавливает одну или несколько динамических
библиотек, определите переменную INSTALLS_SHLIB,
которая приведёт к запуску из bsd.port.mk команды
${LDCONFIG} -m относительно каталога, в который
устанавливается новая библиотека (как правило, это
PREFIX/lib), во время выполнения
цели post-install для её регистрации в кэше
динамических библиотек. Эта переменная, если она определена, также
приведёт к добавлению соответствующей пары команд
@exec /sbin/ldconfig -m и
@unexec /sbin/ldconfig -R в ваш файл
pkg-plist, так что пользователь, устанавливающий
пакадж, сможет сразу же использовать динамическую библиотеку, а удаление
пакаджа не приведёт к тому, что система будет предполагать, что
библиотека всё ещё имеется в наличии.Если нужно, вы можете переопределить каталог, в который по умолчанию
устанавливается библиотека, задав переменную
LDCONFIG_DIRS, в которой должны быть перечислены
каталоги, в которые устанавливаются динамические библиотеки. Например,
если ваш порт устанавливает динамические библиотеки в каталоги
PREFIX/lib/foo и
PREFIX/lib/bar, то вы можете в
файле Makefile указать следующее:
INSTALLS_SHLIB= yes
LDCONFIG_DIRS= %%PREFIX%%/lib/foo %%PREFIX%%/lib/bar
Заметьте, что значение переменной LDCONFIG_DIRS
передаётся через &man.sed.1;, как и всё остальное в
pkg-plist, так что подстановка значения
PLIST_SUB также происходит здесь. Рекомендуется
использовать %%PREFIX%% для PREFIX,
%%LOCALBASE%% для LOCALBASE и
%%X11BASE%% для X11BASE.MASTERDIRЕсли вашему порту требуется построение довольно различающихся
версий пакаджей через переменную (задающую, например, разрешение,
или размер бумаги), которая принимает различные значения, создайте для
каждого пакаджа отдельный подкаталог, чтобы пользователям было легче
определить, каким пакаджем воспользоваться, но попробуйте использовать
совместно между портами как можно больше файлов. В типичном случае вам
потребуются только очень короткие файлы Makefile
во всех каталогах, кроме одного, если вы будете использовать переменные
с умом. В отдельных файлах Makefiles вы можете
использовать переменную MASTERDIR для указания
каталога, в котором находятся все остальные файлы. Также используйте
переменную как часть PKGNAMESUFFIX, чтобы
пакаджи имели разные имена.Продемонстрируем это на примере. Вот часть файла
japanese/xdvi300/Makefile:
PORTNAME= xdvi
PORTVERSION= 17
PKGNAMEPREFIX= ja-
PKGNAMESUFFIX= ${RESOLUTION}
:
# default
RESOLUTION?= 300
.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
${RESOLUTION} != 300 && ${RESOLUTION} != 400
@${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
@${ECHO} "Possible values are: 118, 240, 300 (default) and 400."
@${FALSE}
.endif
Каталог japanese/xdvi300 содержит также все
обычные патчи, файлы для пакаджа и так далее. Если вы введете здесь
команду make, она возьмет в качестве разрешения
значение по умолчанию (300) и построит порт обычным образом.Для другого разрешения приведем полныйxdvi118/Makefile:
RESOLUTION= 118
MASTERDIR= ${.CURDIR}/../xdvi300
.include ${MASTERDIR}/Makefile
(xdvi240/Makefile и
xdvi400/Makefile похожи). Задание
MASTERDIR говорит bsd.port.mk,
что обычный набор подкаталогов типа FILESDIR и
SCRIPTDIR находится в каталоге
xdvi300. Строчка
RESOLUTION=118 переопределят строку
RESOLUTION=300 в файле
xdvi300/Makefile и порт будет построен с
разрешением 118.Версии динамических библиотекПервым делом прочтите, пожалуйста, наши правила нумерации версий
динамических библиотек для понимания того, что делать с версиями
совместно используемых библиотек вообще. Не полагайтесь слепо на то,
что авторы
программного обеспечения знают, что творят; многие это не понимают.
Очень важно с точностью следовать всем этим правилам, так как мы
получаем достаточно уникальную ситуацию, когда пытаемся иметь несколько
наборов потенциально несовместимых программных пакетов. Невнимательное
включение портов вызывало большие проблемы относительно совместно
используемых библиотек в прошлом (вы когда либо задумывались, почему
порт jpeg-6b имеет библиотеку версии 9?). Если
не уверены, пошлите сообщение по адресу &a.ports;. В большинстве
случаев ваша работа заканчивается определением правильного номера
динамической библиотеки и созданием соответствующих патчей для
реализации этого.Страницы СправочникаПеременные MAN[1-9LN] автоматически добавят любые
страницы Справочника к файлу pkg-plist (это
означает, что вам не нужно указывать страницы
Справочника в файле pkg-plist—обратитесь к
главе о генерации файла PLIST для
получения более подробной информации). Это также позволяет на этапе
установки автоматически упаковывать и распаковывать страницы
Справочника в зависимости от значения переменной
NOMANCOMPRESS в файле
/etc/make.conf.Если ваш порт пытается задать несколько имен для страниц
Справочника при помощи символических или жестких ссылок, то вы должны
использовать переменную MLINKS, чтобы указать на
это. Ссылка, установленная вашим портом, будет уничтожена и создана
заново сценарием bsd.port.mk для проверки того,
что она указывает на правильный файл. Любые страницы Справочника,
перечисленные в переменной MLINKS, не должны фигурировать в файле
pkg-plist.Для указания того, что страницы Справочника нужно сжимать во
время установки, используйте переменную
MANCOMPRESSED. Эта переменная может принимать три
значения - yes, no и
maybe. yes означает, что
страницы Справочника устанавливаются уже сжатыми, no
означает, что они не сжимаются и maybe означает, что
программное обеспечение принимает во внимание значение переменной
NOMANCOMPRESS, так что сценарию
bsd.port.mk ничего дополнительно делать не
нужно.Значение переменной MANCOMPRESSED автоматически
устанавливается в yes, если переменная
USE_IMAKE задана, а
NO_INSTALL_MANPAGES нет, и в значение
no в противном случае. Вам не нужно задавать ее
явно, если значение по умолчанию подходит вашему порту.Если ваш порт определяет корнем для файлов Справочника каталог,
отличный от PREFIX, вы можете использовать
переменную MANPREFIX, чтобы задать его явно. Кроме
того, если страницы только некоторых разделов помещаются в
нестандартное место, например, в случае портов модулей языка Perl, вы
можете установить пути страниц Справочника индивидуально, при помощи
MANsectPREFIX (где
sect принимает значения
1-9, L или
N).Если страницы Справочника помещаются в подкаталоги, соответствующие
некоторому языку, то задайте название языка языка в переменной
MANLANG. Значение этой переменной по умолчанию
равно "" (то есть только английский язык).Вот пример, в котором приводятся все случаи.
MAN1= foo.1
MAN3= bar.3
MAN4= baz.4
MLINKS= foo.1 alt-name.8
MANLANG= "" ja
MAN3PREFIX= ${PREFIX}/share/foobar
MANCOMPRESSED= yes
Здесь указано, что этот порт устанавливает 6 файлов:
${PREFIX}/man/man1/foo.1.gz
${PREFIX}/man/ja/man1/foo.1.gz
${PREFIX}/share/foobar/man/man3/bar.3.gz
${PREFIX}/share/foobar/man/ja/man3/bar.3.gz
${PREFIX}/man/man4/baz.4.gz
${PREFIX}/man/ja/man4/baz.4.gz
Кроме того, файл
${PREFIX}/man/man8/alt-name.8.gz может быть, а
может и не быть установлен вашим портом. В любом случае будет создана
символическая ссылка для объединения страниц Справочника foo(1) и
alt-name(8).Порты, которым требуется MotifСуществует много приложений, которым для компиляции требуется
библиотека Motif (которую можно приобрести у нескольких поставщиков,
хотя есть и бесплатный клон в
x11-toolkits/lesstif, о котором говорится, что с
ним работает множество приложений). Так как это распространенный пакет
и его лицензионное соглашение обычно позволяет распространение
статически скомпонованных бинарных файлов, мы обратили особое внимание
на работу с портами, которым требуется Motif, так чтобы мы могли
легко создавать бинарные файлы, скомпонованные как динамически (для
тех, кто строит приложение из порта), так и статически (для тех, кто
будет распространять приложения в виде пакаджей).REQUIRES_MOTIFЕсли вашему порту требуется Motif, задайте эту переменную в
файле Makefile. Это не позволит людям, у которых нет собственной
копии Motif, даже попытаться построить порт.MOTIFLIBЭта переменная будет установлена сценарием
bsd.port.mk в соответствующее значение,
соответствующее библиотеке Motif. Пожалуйста, измените исходные
тексты для использования этой переменной там, где упоминается
библиотека Motif, в Makefile или
Imakefile.Могут быть два случая:Ели порт обращается к библиотеке Motif как
-lXm в своих файлах
Makefile или Imakefile,
просто подставьте вместо этих обращений
${MOTIFLIB}.Если порт использует XmClientLibs в своем
файле Imakefile, измените это обращение на
${MOTIFLIB} ${XTOOLLIB}
${XLIB}.Заметьте, что переменная MOTIFLIB (как
правило) раскрывается в -L/usr/X11R6/lib -lXm или
/usr/X11R6/lib/libXm.a, так что нет нужды впереди
добавлять -L или -l.Шрифты для X11Если ваш порт устанавливает шрифты для системы X Window, поместите
их в каталог
X11BASE/lib/X11/fonts/local.
Этот каталог впервые появился в XFree86 release 3.3.3. Если он не
существует, то, будьте добры, создайте его и выведите сообщение,
обращающее внимание пользователя на необходимость обновить XFree86 до
версии 3.3.3 или более новой, или по крайней мере добавить этот каталог
к маршруту поиска шрифтов в файле
/etc/XF86Config.Файлы в формате infoНовая версия texinfo (включенная в 2.2.2-RELEASE и выше), содержит
утилиту с именем install-info для установки и
удаления компонент в файле dir. Если ваш порт
устанавливает какие-либо документы в формате info, то, пожалуйста,
следуйте этим инструкциям, чтобы ваш порт/пакадж корректно обновлял
пользовательский файл
PREFIX/info/dir. (Приносим
извинения за размер этого раздела, но это необходимо для объединения
всех файлов info вместе. Если это делается правильно, то будет
создан прекрасный список, так что прислушайтесь
к моим советам!Во-первых, вот что вы (как создатель порта) должны знать
&prompt.user; install-info --help
install-info [OPTION]... [INFO-FILE [DIR-FILE]]
Install INFO-FILE in the Info directory file DIR-FILE.
Options:
--delete Delete existing entries in INFO-FILE;
don't insert any new entries.
:
--entry=TEXT Insert TEXT as an Info directory entry.
:
--section=SEC Put this file's entries in section SEC of the directory. :
Эта программа на будет на самом деле
устанавливать info-файлы; она просто добавляет
или удаляет элементы списка в файле dir.Далее приводится процедура, состоящая из семи шагов, для
преобразования портов к использованию install-info.
В качестве примера я буду использовать
editors/emacs.Посмотрите в исходные тексты документов в формате texinfo и
измените их, вставив директивы @dircategory и
@direntry в файлы, в которых они отсутствуют.
Вот часть моего патча:
--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995
+++ ./man/vip.texi Tue May 20 01:28:33 1997
@@ -2,6 +2,10 @@
@setfilename ../info/vip
@settitle VIP
+@dircategory The Emacs editor and associated tools
+@direntry
+* VIP: (vip). A VI-emulation for Emacs.
+@end direntry
@iftex
@finalout
:
Формат должен быть для вас самоочевидным. Многие авторы
оставляют среди исходных текстов файл dir,
содержащий все компоненты, которые вам нужны, так что проверьте
еще раз перед тем, как пытаться писать свои собственные. Также
обязательно взгляните на порты, связанные с вашим и приведите в
соответствие имена разделов и формат компонент (мы рекомендуем,
чтобы все текстовые строки начинались с 4й позиции
табуляции).Заметьте, что вы можете указать только одну компоненту info
для файла из-за ошибки в работе утилиты
install-info --delete, которая удаляет только
первую компоненту, даже если вы укажете несколько компонент в
разделе @direntry.Вы можете передать компоненты dir утилите
install-info в качестве аргументов
( и ), вместо
того, чтобы изменять исходный текст файлов texinfo, Я не думаю,
что это подходит для портов, потому что вам нужно будет
продублировать информацию в трех местах
(Makefile и
@exec/@unexec в файле
pkg-plist; смотрите ниже). Однако, если файлы
info имеют японскую (или другую многобайтовую кодировку), вам нужно
будет передать дополнительные аргументы команде
install-info, потому что
makeinfo не может работать с такими файлами
texinfo. (Посмотрите файлы Makefile и
pkg-plist в каталоге
japanese/skk на предмет того, как это
сделать).Вернитесь обратно в каталог с портом, выполните команду
make clean; make и проверьте, что файлы info
были вновь сгенерированы из исходного текста texinfo. Так как
исходные тексты texinfo являются более новыми файлами, чем файлы
в формате info, то они должны быть перестроены, когда вы выполняете
команду make; однако многие файлы
Makefile не включают правильные зависимости
для генерации файлов info. В случае emacs, я
изменил главный файл Makefile.in, чтобы
происходил спуск в подкаталог man для
перегенерации файлов info.
--- ./Makefile.in.org Mon Aug 19 21:12:19 1996
+++ ./Makefile.in Tue Apr 15 00:15:28 1997
@@ -184,7 +184,7 @@
# Subdirectories to make recursively. `lisp' is not included
# because the compiled lisp files are part of the distribution
# and you cannot remake them without installing Emacs first.
-SUBDIR = lib-src src
+SUBDIR = lib-src src man
# The makefiles of the directories in $SUBDIR.
SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile
lwlib/Makefile
--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996
+++ ./man/Makefile.in Tue Apr 15 00:29:52 1997
@@ -66,6 +66,7 @@
${srcdir}/gnu1.texi \
${srcdir}/glossary.texi
+all: info
info: $(INFO_TARGETS)
dvi: $(DVI_TARGETS)
Второй блок изменений был необходим из-за того, что цель по
умолчанию в подкаталоге man называется
info, когда как главный файл
Makefile вызывает цель
all. Я также удалил установку
информационного файла info, потому что в
каталоге /usr/share/info уже имеется файл с
таким же именем (этот патч здесь не показан).Если в файле Makefile есть процедура
установки файла dir, то удалите эту процедуру.
Вашему порту делать этого не надо. Кроме того, удалите все
команды, которые будут пытаться творить что-то с файлом
dir.
--- ./Makefile.in.org Mon Aug 19 21:12:19 1996
+++ ./Makefile.in Mon Apr 14 23:38:07 1997
@@ -368,14 +368,8 @@
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
(cd ${infodir}; \
- if [ -f dir ]; then \
- if [ ! -f dir.old ]; then mv -f dir dir.old; \
- else mv -f dir dir.bak; fi; \
- fi; \
cd ${srcdir}/info ; \
- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir);
\
- (cd $${thisdir}; chmod a+r ${infodir}/dir); \
for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip*; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
chmod a+r ${infodir}/$$f); \
(Этот шаг необходим, если только вы модифицируете уже
существующий порт.) Взгляните на файл
pkg-plist и удалите все, что пытается изменить
файл info/dir. Это может быть также в файле
pkg-install или в каком-то другом файле, так
что ищите тщательно.
Index: pkg-plist
===================================================================
RCS file: /usr/cvs/ports/editors/emacs/pkg-plist,v
retrieving revision 1.15
diff -u -r1.15 pkg-plist
--- pkg-plist 1997/03/04 08:04:00 1.15
+++ pkg-plist 1997/04/15 06:32:12
@@ -15,9 +15,6 @@
man/man1/emacs.1.gz
man/man1/etags.1.gz
man/man1/ctags.1.gz
-@unexec cp %D/info/dir %D/info/dir.bak
-info/dir
-@unexec cp %D/info/dir.bak %D/info/dir
info/cl
info/cl-1
info/cl-2
Добавьте цель post-install в файл
Makefile для вызова
install-info с именами установленных
файлов info в качестве параметров. (Больше не нужно создавать
файл dir самостоятельно; Программа
install-info автоматически создаст этот файл,
если он не существует.)
Index: Makefile
===================================================================
RCS file: /usr/cvs/ports/editors/emacs/Makefile,v
retrieving revision 1.26
diff -u -r1.26 Makefile
--- Makefile 1996/11/19 13:14:40 1.26
+++ Makefile 1997/05/20 10:25:09 1.28
@@ -20,5 +20,8 @@
post-install:
.for file in emacs-19.34 emacsclient etags ctags b2m
strip ${PREFIX}/bin/${file}
.endfor
+.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode
+ install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir
+.endfor
.include <bsd.port.mk>
Отредактируйте файл pkg-plist, добавив
аналогичные директивы @exec, не забыв о
@unexec для
pkg_delete.
Index: pkg/pkg-plist
===================================================================
RCS file: /usr/cvs/ports/editors/emacs/pkg-plist,v
retrieving revision 1.15
diff -u -r1.15 pkg-plist
--- pkg-plist 1997/03/04 08:04:00 1.15
+++ pkg-plist 1997/05/20 10:25:12 1.17
@@ -16,7 +14,14 @@
man/man1/etags.1.gz
man/man1/ctags.1.gz
+@unexec install-info --delete %D/info/emacs %D/info/dir
:
+@unexec install-info --delete %D/info/ccmode %D/info/dir
info/cl
info/cl-1
@@ -87,6 +94,18 @@
info/viper-3
info/viper-4
+@exec install-info %D/info/emacs %D/info/dir
:
+@exec install-info %D/info/ccmode %D/info/dir
libexec/emacs/19.34/i386--freebsd/cvtmail
libexec/emacs/19.34/i386--freebsd/digest-doc
Команды @unexec install-info --delete
указываются до собственно файлов info, чтобы они могли прочесть
файлы. Кроме того, команды @exec install-info
следуют за файлами info и командой @exec,
которая создает файл dir file.Протестируйте вашу
работу и полюбуйтесь ею. :-).
Проверяйте файл dir до и после выполнения
каждого шага.Файлы pkg-*Есть несколько приёмов работы с файлами
pkg-*, которые мы ещё не
описали, но они иногда могут быть очень кстати.pkg-messageЕсли вам нужно вывести сообщение для человека, устанавливающего
приложение, то вы можете поместить сообщение в файл
pkg-message. Эта возможность часто оказывается
полезной для вывода дополнительных шагов установки, которые нужно
предпринять после выполнения команды pkg_add, или
для вывода информации о лицензировании.Файл pkg-message не нужно добавлять в
pkg-plist. И он не будет автоматически
выводиться, если пользователь использует порт, а не пакадж, так что
вы должны будете сами выводить его при выполнении цели
post-install.pkg-installЕсли при установке бинарного пакаджа по команде
pkg_add вашему порту нужно выполнить какие-то
дополнительные действия или команды, то вы можете сделать это с
помощью скрипта pkg-install. Этот скрипт будет
автоматически добавлен к пакаджу, и будет дважды запускаться по
команде pkg_add. Первый раз в виде
${SH} pkg-install ${PKGNAME}
PRE-INSTALL, а второй раз как ${SH} {PKGNAME}
POST-INSTALL.
Для распознавания того, в каком режиме запущен скрипт, можно
использовать параметр $2. Переменная
окружения PKG_PREFIX будет принимать значение,
соответствующее каталогу, в который устанавливается пакадж.
Дополнительная информация находится на странице Справочника о
команде &man.pkg.add.1;.Этот скрипт не запускается автоматически, если вы
устанавливаете порт командой make install.
Если же вам действительно необходимо его запустить, то запустите
его явно из файла Makefile порта.pkg-reqЕсли вашему порту нужно определять, должен ли он устанавливаться
или нет, то вы можете создать скрипт “необходимости”
pkg-req. Он будет вызван автоматически
в момент установки/удаления для определения того, должны ли они
реально выполняться.Изменение содержимого pkg-plist в зависимости
от make-переменныхНекоторые порты, в частности, порты p5-, должны менять содержимое
своих файлов pkg-plist в зависимости от того, с
какими параметрами они были отконфигурированы (или в зависимости от
версии языка perl в случае портов p5-). Чтобы облегчить этот
процесс, любые вхождения ключевых слов %%OSREL%%,
%%PERL_VER%% и %%PERL_VERSION%%
в файле pkg-plist будут заменяться соответствующими
значениями. Значением %%OSREL%% является номер
версии операционной системы (например, 2.2.7).
%%PERL_VERSION%% обозначает полный номер версия
perl (например, 5.00502), а
%%PERL_VER%% - номер версии perl без номера
патча (например, 5.005).Если вам нужно сделать другие подстановки, вы можете указать в
переменной PLIST_SUB список пар
VAR=VALUE,
и все вхождения %%VAR%%
в файле pkg-plist будут заменяться на значение
VALUE.Например, если у вас имеется порт, который устанавливает много
файлов в каталог, зависящий от версии, вы можете задать нечто типа
OCTAVE_VERSION= 2.0.13
PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
в файле Makefile и использовать
%%OCTAVE_VERSION%% везде, где нужно указать
номер версии в файле pkg-plist. Таким образом,
при обновлении порта вам не нужно будет менять десятки (а в некоторых
случаях и сотни) строк в файле pkg-plist.Эта подстановка (так же, как и добавление любых страниц Справочника) будет сделана
между выполнением целей do-install и
post-install, посредством чтения файла
PLIST и записью в файл TMPPLIST
(по умолчанию это файл
WRKDIR/.PLIST.mktmp). Так
что если ваш порт строит PLIST на лету, делайте
это во время или до выполнения цели
do-install. Кроме того, если вашему порту
требуется отредактировать получающийся файл, делайте это в цели
post-install изменением файла
TMPPLIST.Изменение имён файлов
pkg-*Все имена файлов
pkg-*
определяются с помощью переменных, так что вы можете изменить их,
если это нужно, в вашем файле Makefile. Это
особенно полезно, если вы используете одни и те же файлы
pkg-*
совместно между несколькими портами или
пишете в один из вышеперечисленных файлов (в главе о записи в каталоги, отличные от
WRKDIR объяснено, почему не рекомендуется
осуществлять запись непосредственно в файлы
pkg-*.Вот список имён переменных и их значений по умолчанию. (Значение
PKGDIR по умолчанию равно
${MASTERDIR}.)ПеременнаяЗначение по умолчаниюCOMMENT${PKGDIR}/pkg-commentDESCR${PKGDIR}/pkg-descrPLIST${PKGDIR}/pkg-plistPKGINSTALL${PKGDIR}/pkg-installPKGDEINSTALL${PKGDIR}/pkg-deinstallPKGREQ${PKGDIR}/pkg-reqPKGMESSAGE${PKGDIR}/pkg-messageПожалуйста, изменяйте значения этих переменных, а не
переопределяйте PKG_ARGS. Если вы измените
значение переменных PKG_ARGS, то эти файлы при
установке из порта будут установлены в каталог
/var/db/pkg некорректно.Проблемы с лицензированиемНекоторые программные пакеты имеют ограниченные лицензии или
их использование в некоторых странах может оказаться (как нарушение
патента). То, что мы можем с этим сделать, сильно
зависит от точных формулировок конкретных лицензионных
соглашений.На вас, как на человека, портирующего приложение, ложится
обязанность прочесть лицензионные соглашения на программное
обеспечение и удостовериться, что проект FreeBSD не будет являться
их нарушителем, если будет заниматься распространением исходного
кода или в откомпилированном виде по ftp или на компакт-дисках. Если
у вас возникли сомнения, то, пожалуйста, обратитесь в
адрес &a.ports;.Имеется две переменные, которые вы можете задать в Makefile
в наиболее часто встречающихся ситуациях:Если порт имеет лицензию типа “не продавать для
достижения прибыли”, задайте в переменной
NO_CDROM строку, описывающую причину этого. Мы
не будем помещать такие порты на компакт-диск во время выпуска
релиза. Дистрибутивный файл и пакадж будут доступны по
ftp.Если получающийся пакадж должен строиться каждый раз уникальным
образом или получающийся бинарный пакадж не может распространяться
по лицензионным соображениям, то в переменной
NO_PACKAGE укажите строку, описывающую причину
этого. Мы не будем помещать такие пакаджи ни на ftp-сервер, ни на
компакт-диск во время выпуска релиза. Однако дистрибутивный файл
будет помещен на оба носителя.Если порт имеет юридические ограничения на использованию
(например, патентованное программное обеспечение) или имеет
лицензию “не для коммерческого использования”, то в
переменной RESTRICTED укажите строку,
описывающую причину этого. Для таких портов ни дистрибутивный
файл, ни пакаджи не будут доступны даже с наших серверов
ftp.Лицензия GNU General Public License (GPL), как версии 1, так и
версии 2, для портов вызвать проблем не должна.Если вы являетесь коммиттером, обязательно обновите также файл
ports/LEGAL.ОбновлениеЕсли вы заметите, что ваш порт устарел по сравнению с последней
авторской версией, первым делом проверьте, что у вас находится самая
последняя версия порта. Вы можете найти их в каталоге
ports/ports-current на зеркальных серверах ftp.
Кроме того, вы можете использовать CVSup для поддержки актуальности
всей Коллекции портов, как это описано в Руководстве.Следующий шаг - это посылка письма человеку, ведущему этот порт
(майнтайнеру), если он указан в файле Makefile
порта. Этот человек может уже работать над обновлением, или иметь
причину не обновлять порт прямо сейчас (например, из-за проблем со
стабильностью функционирования новой версии).Если ведущий попросил сделать обновление вас, или такой персоны не
нашлось, то, пожалуйста, выполните обновление и пошлите рекурсивный
diff-файл (подойдет как в унифицированном, так и контекстно-зависимом
формате, однако коммиттеры предпочитают унифицированный формат)
сравнения нового и старого каталогов нам (например, если каталог с
модифицированным портом называется superedit,
а оригинальный, совпадающий с находящимся в нашем дереве портов,
superedit.bak, то пошлите нам результат выполнения
команды diff -ruN superedit.bak superedit).
Пожалуйста, проверьте результат работы этой команды, так, чтобы все
изменения имели смысл. Лучший способ послать нам diff-файл - включить
его в посылку по команде &man.send-pr.1; (категория
ports). Будьте добры, в сообщении отметьте все
добавленные или удаленные файлы, так как они будут непосредственно
указаны CVS при выполнении операции коммита. Если diff-файл имеет
размер, превышающий 20КБ, сожмите его и обработайте утилитой uuencode;
в противном случае просто включите его как есть в PR.Повторяем еще раз - для посылки обновлений существующих портов
используйте утилиту &man.diff.1;, а не &man.shar.1;!Что нужно, а что нельзя делатьВот список часто встречающихся действий, которые нужно и которые
нельзя делать во время процесса портирования. Вы должны проверять ваш
порт по этому списку, и вы также можете проверять порты в базе
сообщений PR, которые присланы другими людьми. Присылайте любые
комментарии о портах, которые вы проверили, так, как это описано в
главе о Сообщениях об ошибках
и общих замечаниях. Проверка портов в базе сообщений PR позволит
нам быстрее коммиттить их и удостовериться, что вы знаете, что
делаете.Удаление отладочной информации в бинарных файлахУдаляйте отладочную информацию из бинарных файлов. Если в
исходных текстах файлы уже усекается, это прекрасно; в противном
случае вы должны добавить в цель post-install
правило для выполнения этой операции самим. Вот пример:
post-install:
strip ${PREFIX}/bin/xdl
Для проверки того, удалена ли отладочная информация из
установленного выполнимого файла, выполните команду &man.file.1;.
Если утилита не выдаст строку not stripped, то
файл уже обработан.Макросы INSTALL_*Используйте макросы, которые есть в файле
bsd.port.mk для обеспечения правильных прав
доступа и владения файлов в своих целях
*-install.INSTALL_PROGRAM - это команда для
установки бинарных выполнимых файлов.INSTALL_SCRIPT - это команда для установки
выполнимых скриптов.INSTALL_DATA - это команда для установки
совместно используемых файлов данных.INSTALL_MAN - это команда для установки
страниц Справочника и другой документации (никаких файлов она не
сжимает).В основе работы этих макросов лежит команда
install со всеми соответствующими флагами.
Смотрите пример их использования ниже.WRKDIRНе пишите ничего в файлы вне каталога WRKDIR.
Каталог WRKDIR является единственным местом,
которое гарантированно будет доступно для записи во время построения
порта (обратитесь к главе о компиляции портов с
компакт-диска за
примером построения портов из дерева, доступного только для чтения).
Если вам нужно изменить какой-либо из файлов
pkg-*, сделайте это,
переопределив переменную, но не
перезаписывая их.WRKDIRPREFIXДобейтесь того, чтобы ваш порт принимал во внимание значение
переменной WRKDIRPREFIX. Большинство портов об
этом не заботятся. В частности, если вы обращаетесь к каталогу
WRKDIR другого порта, заметьте, что его правильным
местоположением является
WRKDIRPREFIXPORTSDIR/subdir/name/work not PORTSDIR/subdir/work
или .CURDIR/../../subdir/name/work
или что-то подобное.Кроме того, если вы сами задаете WRKDIR, то
должны поставить перед ним знак
${WRKDIRPREFIX}${.CURDIR}.Различение операционных систем и версий ОСВы можете встретиться с кодом, который требует модификаций
или условной компиляции в зависимости от того, с какой версией
UNIX он работает. Если вам нудно сделать такие изменения в коде для
условной компиляции, то вы должны делать изменения как можно
более общими, чтобы мы могли перенести код на системы FreeBSD версий
1.x, а также и на другие системы BSD, такие, как 4.4BSD от CSRG,
BSD/386, 386BSD, NetBSD, и OpenBSD.Предпочтительным способом отделения кода для 4.3BSD/Reno (1990) и
и более новых версий BSD является использование макроса
BSD, определенного в файле
<sys/param.h>. Хорошо, если этот файл уже
включен; если это не так, то добавьте такой код:
#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endif
в соответствующем месте файла .c. Мы
надеемся, что все системы, в которых определены эти две константы,
имеют файл sys/param.h. Если вы обнаружите
систему, в которой это не так, мы хотим знать. Пошлите, пожалуйста,
письмо на адрес &a.ports;.Другим способом является использование для этого стиля GNU
Autoconf:
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
Не забудьте добавить -DHAVE_SYS_PARAM_H к
CFLAGS в файле Makefile
при использовании этого метода.Как только вы включите sys/param.h, то
сможете воспользоваться следующим:
#if (defined(BSD) && (BSD >= 199103))
для определения того, компилируется ли программа на основе кода
Net2 версии 4.3 или более новой версии (например, FreeBSD 1.x,
4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 1.1 и ниже).Используйте:
#if (defined(BSD) && (BSD >= 199306))
для определения того, компилируется ли программа на основе кода
4.4 или более новой (например, FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386
2.0 и выше).Значение макроса BSD равно
199506 для кода на основе 4.4BSD-Lite2. Оно
задано только для информационной целей. Оно не должно использоваться
для различия между версиями FreeBSD, основанными на коде 4.4-Lite
и версиями, в которые включены изменения из 4.4-Lite2. Вместо этого
нужно использовать макрос __FreeBSD__.Реже используйте:__FreeBSD__ определен во всех версиях
FreeBSD. Используйте его, если изменение, вносимое вами,
касается только FreeBSD. Проблемы
портирования, такие, как использование
sys_errlist[] или
strerror() являются особенностями систем
BSD, а не FreeBSD.Во FreeBSD 2.x, значение __FreeBSD__
определено как 2. В более ранних версиях оно
равно 1. В более поздних версиях это значение
увеличивается в соответствии со старшим номером версии
системы.Если вам нужно отделить системы FreeBSD 1.x от систем
FreeBSD 2.x или 3.x, правильным способом, как правило, будет
использование макроса BSD, описанное выше.
Если это действительно изменение, специфичное для FreeBSD
(например, особая опция для динамической библиотеки при
использовании ld), то для распознавания
систем FreeBSD 2.x и более поздних нормальным будет использование
__FreeBSD__ и
#if __FreeBSD__ > 1. Если вам нужно более
точное определение версий FreeBSD, начиная с 2.0-RELEASE, то
вы можете использовать следующее:
#if __FreeBSD__ >= 2
#include <osreldate.h>
# if __FreeBSD_version >= 199504
/* 2.0.5+ release specific code here */
# endif
#endif
Релиз__FreeBSD_version2.0-RELEASE1194112.1-CURRENT199501, 1995032.0.5-RELEASE1995042.2-CURRENT до выхода 2.11995082.1.0-RELEASE1995112.2-CURRENT до выхода 2.1.51995122.1.5-RELEASE1996072.2-CURRENT до выхода 2.1.61996082.1.6-RELEASE1996122.1.7-RELEASE1996122.2-RELEASE2200002.2.1-RELEASE220000 (без изменений)2.2-STABLE после выхода 2.2.1-RELEASE220000 (без изменений)2.2-STABLE после включения texinfo-3.92210012.2-STABLE после включения top2210022.2.2-RELEASE2220002.2-STABLE после выхода 2.2.2-RELEASE2220012.2.5-RELEASE2250002.2-STABLE после выхода 2.2.5-RELEASE2250012.2-STABLE после появления ldconfig -R2250022.2.6-RELEASE2260002.2.7-RELEASE2270002.2-STABLE после выхода 2.2.7-RELEASE2270012.2-STABLE после изменения в semctl(2)2270022.2.8-RELEASE2280002.2-STABLE после выхода 2.2.8-RELEASE2280013.0-CURRENT до изменения в mount(2)3000003.0-CURRENT после изменения в mount(2)3000013.0-CURRENT после изменения в semctl(2)3000023.0-CURRENT после изменений в аргументах ioctl3000033.0-CURRENT после перехода на формат ELF3000043.0-RELEASE3000053.0-CURRENT после выхода 3.0-RELEASE3000063.0-STABLE после разбиения на ветки 3/43000073.1-RELEASE3100003.1-STABLE после выхода 3.1-RELEASE3100013.1-STABLE после изменения в порядке следования
конструкторов/деструкторов в C++3100023.2-RELEASE3200003.2-STABLE3200013.2-STABLE после несовместимых изменений в IPFW и
сокетах3200023.3-RELEASE3300003.3-STABLE3300013.3-STABLE после добавления mkstemps() в libc3300023.4-RELEASE3400003.4-STABLE3400014.0-CURRENT после появления ветки 3.44000004.0-CURRENT после изменения в работе динамического
компоновщика4000014.0-CURRENT после изменения в порядке следования
конструкторов/деструкторов в C++4000024.0-CURRENT после появления функции dladdr(3)4000034.0-CURRENT после исправления ошибки в работе функции
__deregister_frame_info динамического компоновщика (а также
4.0-CURRENT после интеграции EGCS 1.1.2)4000044.0-CURRENT после изменения интерфейса функции suser(9)
(а также 4.0-CURRENT после появления newbus)4000054.0-CURRENT после изменения в регистрации cdevsw4000064.0-CURRENT после добавления so_cred в проверки на
уровне сокетов4000074.0-CURRENT после добавления обработчика системного
вызова poll в libc_r4000084.0-CURRENT после перехода в ядре с типа
dev_t на указатель
struct specinfo4000094.0-CURRENT после исправления дыры в безопасности
jail(2)4000104.0-CURRENT после изменения в типе данных
sigset_t4000114.0-CURRENT после перехода на компилятор
GCC 2.95.24000124.0-CURRENT после появления добавляемых обработчиков
ioctl режима linux4000134.0-CURRENT после заимствования OpenSSL4000144.0-CURRENT после изменения в C++ ABI компилятора
GCC 2.95.2 по умолчанию с -fvtable-thunks на
-fno-vtable-thunks4000154.0-CURRENT после заимствования OpenSSH4000164.0-RELEASE4000174.0-STABLE после появления 4.0-RELEASE4000184.0-STABLE после интеграции кода библиотеки
libxpg4 в libc.4000204.0-STABLE после обновления пакета Binutils до версии
2.10.0, изменения в схеме пометки выполнимых файлов ELF и
включения tcsh в качестве базового компонента.4000214.1-RELEASE4100004.1-STABLE после выхода 4.1-RELEASE4100014.1-STABLE после переноса функции setproctitle() из
библиотеки libutil в libc.4100024.1.1-RELEASE4110004.1.1-STABLE после выхода 4.1.1-RELEASE4110015.0-CURRENT5000005.0-CURRENT после добавления дополнительных полей в
заголовке ELF и изменения метода пометки принадлежности
к определённой системе для выполнимых файлов в формате
ELF.5000015.0-CURRENT после изменений в метаданных kld.5000025.0-CURRENT после изменений buf/bio.5000035.0-CURRENT после обновления binutils.5000045.0-CURRENT после интеграции кода библиотеки libxpg4 в
libc и появления интерфейса TASKQ.5000055.0-CURRENT после добавления интерфейсов AGP.5000065.0-CURRENT после обновления Perl до версии 5.6.05000075.0-CURRENT после изменений в ether_ifattach() и
ether_ifdetach().5000095.0-CURRENT после обновления кода KAME до версии
2000/07.5000085.0-CURRENT после изменения в API для kqueue.5000115.0-CURRENT после перемещения setproctitle() из библиотеки
libutil в libc.5000125.0-CURRENT после первого коммита SMPng.5000135.0-CURRENT после возврата в настройках утилиты mtree,
применяемых по умолчанию, обратно к оригинальным и добавления
флага -L для перехода по символическим ссылкам.500010Заметьте, что 2.2-STABLE иногда идентифицирует себя как
“2.2.5-STABLE” после 2.2.5-RELEASE. Такой принцип
использовался год и месяц, но мы решили изменить его на более
однозначную систему нумерации старший/младший, начиная с версии
2.2. Это объясняется тем, что параллельная разработка в нескольких
ветках делает непрактичным идентификацию релизов просто по их
реальным датам выпуска. Если вы сейчас делаете порт, вам не стоит
заботиться о старых версиях -CURRENT; они перечислены здесь просто
в информационных целях.Из сотен уже сделанных портов только в одном или двух случаях
потребовалось использование __FreeBSD__. Если
старые порты использовали этот макрос не по назначению, вовсе не
значит, что вам нужно поступать точно также.Написание чего-либо после
bsd.port.mkНе пишите ничего после строки
.include <bsd.port.mk>. Этой строки можно
избежать, включив в где-то в середину вашего файла
Makefile файл
bsd.port.pre.mk, и
файл bsd.port.post.mk в конец.Вам нужно включить либо пару файлов
pre.mk/post.mk, либо
только bsd.port.mk; не смешивайте два этих
случая.В файле bsd.port.pre.mk определяются лишь
несколько переменных, которые могут быть использованы в тестах из
файла Makefile, в файле
bsd.port.post.mk заданы остальные.Вот некоторые важные переменные, определенные в файле
bsd.port.pre.mk (это не полный список, для
выяснения полного списка прочтите, пожалуйста, сам файл
bsd.port.mk).ПеременнаяОписаниеARCHАрхитектура машины в виде, получаемом по команде
uname -m (например,
i386)OPSYSТип операционной системы, получаемый по команде
uname -s (например,
FreeBSD)OSRELВерсия релиза операционной системы (например,
2.1.5 или 2.2.7)OSVERSIONВерсия операционной системы в виде числа, то же, что и
__FreeBSD_version.PORTOBJFORMATФормат объектных файлов, используемых в системе
(aout или elf)LOCALBASEКорень дерева “local” (например,
/usr/local/)X11BASEКорень дерева “X11” (например,
/usr/X11R6)PREFIXКуда, собственно, устанавливается порт (обратитесь к
подробной информации о PREFIX).Если вы задаете переменные USE_IMAKE,
USE_X_PREFIX, или MASTERDIR,
то делайте это перед тем, как включать
bsd.port.pre.mk.Вот несколько примеров того, что вы можете написать после
bsd.port.pre.mk:
# no need to compile lang/perl5 if perl5 is already in system
.if ${OSVERSION} > 300003
BROKEN= perl is in system
.endif
# only one shlib version number for ELF
.if ${PORTOBJFORMAT} == "elf"
TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}
.else
TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
.endif
# software already makes link for ELF, but not for a.out
post-install:
.if ${PORTOBJFORMAT} == "aout"
${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
.endif
Установка дополнительной документацииЕсли с вашим программным обеспечением поставляется некоторая
документация, отличающаяся от стандартных страниц Справочника и
файлов info, которая, как вы думаете, будет полезна пользователям,
установите ее в каталог
PREFIX/share/doc. Это может
быть сделано, как и в предыдущем разделе, в цели
post-install.Создайте для вашего порта новый каталог. Имя каталога должно
соответствовать тому, что представляет из себя порт. Обычно это
означает PORTNAME. Однако, если
вы думаете, что пользователь захочет иметь разные версии порта,
установленные одновременно, то вы можете использовать полное имя
PKGNAME.Сделайте установку документации зависящей от переменной
NOPORTDOCS для того, чтобы пользователи могли
выключить это в файле /etc/make.conf, как
здесь:
post-install:
.if !defined(NOPORTDOCS)
${MKDIR} ${PREFIX}/share/doc/xv
${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv
.endif
Не забудьте включить их также в файл
pkg-plist! (Не беспокойтесь здесь о
NOPORTDOCS; на данный момент в пакаджах нет
способа прочитать значения переменных из
/etc/make.conf.)Кроме того, вы можете использовать файл
pkg-message для вывода сообщений во
время установки. За подробной информацией обратитесь к разделу
об использовании
pkg-message.Файл pkg-message не нужно добавлять в
pkg-plist.DIST_SUBDIRНе позволяйте вашему порту засорять
/usr/ports/distfiles. Если вашему порту
требуется сгрузить много файлов, или он содержит имя файла,
могущее вызвать конфликты с другими портами (например,
Makefile), то укажите в переменной
DIST_SUBDIR имя порта (должны подойти
${PORTNAME} или
${PKGNAMEPREFIX}${PORTNAME}). Это изменит значение
переменной DISTDIR со значения по умолчанию
/usr/ports/distfiles к значению
/usr/ports/distfiles/DIST_SUBDIR,
и в результате все, что требуется для порта, будет помещено в этот
подкаталог.Он заглянет также в подкаталог с тем же именем на
основном резервном сервере ftp.FreeBSD.org.
(Явное задание переменной DISTDIR в вашем файле
Makefile этого не сделает, так что, пожалуйста,
воспользуйтесь DIST_SUBDIR.)Это не коснется тех сайтов MASTER_SITES,
которые вы указали в вашем файле Makefile.Информация о пакаджеДайте информацию о пакадже, то есть
pkg-comment, pkg-descr и
pkg-plist.Заметьте, что эти файлы теперь используются не только в
системе пакаджей, и они обязательны, даже если
определена переменная NO_PACKAGE.Строки RCSНе помещайте строки RCS в патчи. CVS будет изменять их при
помещении файлов в дерево портов, и когда мы будем их оттуда
извлекать, они будут уже другие, поэтому применение патчей
окончится неудачей. Строчки RCS предваряются знаком доллара
($), и обычно начинаются с
$Id или
$RCS.Рекурсивные файлы diffИспользование параметра рекурсии () с командой
diff для генерации патчей - это хорошо, но все же,
пожалуйста, смотрите на получающиеся патчи, чтобы убедиться в
отсутствии ненужного мусора. В частности, diff между двумя
резервными копиями файлов, файлы Makefile, когда
как порт использует Imake или
GNU-версию программы configure, и так далее,
не нужны, и должны быть удалены. Если вы отредактировали файл
configure.in и запустили
autoconf для перегенерации
configure, не нужно включать файлы diff для
configure (они частенько вырастают до нескольких
тысяч строк!); задайте USE_AUTOCONF=yes и
включите дифф-файл для configure.in.Кроме того, если вы удаляете файл, то это можно сделать и в цели
post-extract, а не внутри патча. Как только
вы будете удовлетворены получающимся дифф-файлом, разбейте его на
несколько по одному патчу на отдельный файл.PREFIXПопытайтесь сделать так, чтобы установка вашего порта
осуществлялась относительно каталога PREFIX.
(Значение этой переменной будет установлено в
LOCALBASE (по умолчанию
/usr/local), если только не заданы переменные
USE_X_PREFIX или USE_IMAKE,
в случае чего он будет принят равным X11BASE
(по умолчанию /usr/X11R6).)Отсутствие явного указания /usr/local или
/usr/X11R6 нигде в исходном коде сделает порт
гораздо более гибким и способным удовлетворить потребности других
серверов. Для портов, которые используют X, это происходит
автоматически; в противном случае зачастую это может быть сделано
простой заменой строк /usr/local (или
/usr/X11R6 для портов X, не использующих imake)
в различных скриптах/файлах Makefile порта на чтение
PREFIX, так как эта переменная автоматически
передается далее на каждом этапе построения и установки.Не задавайте переменную USE_X_PREFIX до тех
пор, пока она на самом деле не понадобится для порта (то есть он
будет скомпонован с библиотеками X или нужно будет обращаться к
файлам из X11BASE).Переменная PREFIX может быть переназначена в
вашем файле Makefile или в окружении
пользователя. Однако строго не рекомендуется отдельным портам
устанавливать эту переменную явно в файле
Makefiles.Кроме того, обратитесь к программам/файлам из других портов с
переменными, перечисленными выше, без указания явных маршрутов.
Например, если ваш порт требует, чтобы макро PAGER
являлся полным путем утилиты less, используйте
флаг компилятора:
-DPAGER=\"${PREFIX}/bin/less\"
или
-DPAGER=\"${LOCALBASE}/bin/less\"
если это порт X, вместо того, чтобы задавать
-DPAGER=\"/usr/local/bin/less\". Этот способ
имеет больше шансов на работу, если системный администратор
переместил все дерево `/usr/local' куда-то в другое место.ПодкаталогиПопробуйте поместить все файлы порта в правильных подкаталогах
каталога PREFIX. Некоторые порты игнорируют все
установки и помещают все в подкаталог с именем порта, что
неправильно. Также многие порты помещают все, кроме бинарных файлов,
файлов заголовков и страниц Справочника, в подкаталог каталога
lib, что не очень хорошо соответствует парадигме
BSD. Многие файлы должны быть перемещены в одно из следующих
местоположений: etc
(настроечные/конфигурационные файлы), libexec
(выполнимые файлы, запускаемые из других программ),
sbin (исполнимые файлы для
администраторов/менеджеров системы), info
(документация в формате info для просмотрщика info) или
share (независимые от архитектуры файлы).
Обратитесь к &man.hier.7; для прояснения деталей, правила,
покрывающие /usr, достаточно хорошо подходят
также и к /usr/local. Исключением являются
порты, имеющие дело с “новостями” USENET. Они могут
использовать каталог
PREFIX/news для установки
своих файлов.Очистка пустых каталоговЗаставьте ваш порты очищать за собой при удалении. Обычно это
достигается добавлением строк @dirrm для всех
каталогов, которые создаются этим портом. Вам нужно удалить
подкаталоги до того, как вы сможете удалить родительские
каталоги.
:
lib/X11/oneko/pixmaps/cat.xpm
lib/X11/oneko/sounds/cat.au
:
@dirrm lib/X11/oneko/pixmaps
@dirrm lib/X11/oneko/sounds
@dirrm lib/X11/oneko
Однако иногда @dirrm будет выдавать ошибку,
потому что другие порты тоже используют тот же самый подкаталог. Вы
можете вызвать команду rmdir из
@unexec для удаления без выдачи предупреждений
только пустого каталога.
@unexec rmdir %D/share/doc/gimp 2>/dev/null || true
Эта команда не выведет никаких сообщений об ошибках и не вызовет
аварийного завершения работы pkg_delete, даже если
каталог PREFIX/share/doc/gimp
не пуст из-за того, что другие порты установили сюда какие-то
файлы.Идентификаторы UIDЕсли вашему порты требуется наличие некоторого пользователя в
системе, на которую он устанавливается, пусть скрипт
pkg-install вызовет команду
pw для его автоматического создания. Посмотрите
для примера на net/cvsup-mirror.Если ваш порт должен использовать тот же самый идентификатор
пользователя или группы при установке двоичного пакаджа, который был
при компиляции, то вы должны выбрать свободный UID в диапазоне от 50
до 99 и зарегистрировать его ниже. Взгляните для примера на
japanese/Wnn.Проверьте, что вы не используете UID, уже используемый системой
или другими портами. Вот текущий список UID между 50 и 99.
majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent
cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent
gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67:X-10 daemon:/usr/local/xten:/nonexistent
pop:*:68:6:Post Office Owner (popper):/nonexistent:/nonexistent
wnn:*:69:7:Wnn:/nonexistent:/nonexistent
ifmail:*:70:66:Ifmail user:/nonexistent:/nonexistent
pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh
ircd:*:72:72:IRCd hybrid:/nonexistent:/nonexistent
alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent
qmaill:*:83:81:QMail user:/var/qmail:/nonexistent
qmaild:*:82:81:QMail user:/var/qmail:/nonexistent
qmailq:*:85:82:QMail user:/var/qmail:/nonexistent
qmails:*:87:82:QMail user:/var/qmail:/nonexistent
qmailp:*:84:81:QMail user:/var/qmail:/nonexistent
qmailr:*:86:82:QMail user:/var/qmail:/nonexistent
msql:*:87:87:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh
mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
vpopmail:*:89:89::0:0:User &:/usr/local/vpopmail:/nonexistent
Пожалуйста, при посылке нового (или обновлении старого) порта
напишите замечание, что резервируете новый UID или GID в этом
диапазоне. Это позволит нам держать список зарезервированных
идентификаторов в актуальном состоянии.Поступайте разумноФайл Makefile должен выполнять действия
просто и небеспричинно. Если вы можете сделать что-то на несколько
строк короче или более читабельно, сделайте это. В качестве примеров
можно привести использование конструкций .if
утилиты make вместо соответствующей конструкции if
командного процессора, ненужность переопределения цели
do-extract при возможности переопределения
EXTRACT* и использование
GNU_CONFIGURE вместо
CONFIGURE_ARGS+= --prefix=${PREFIX}.Использование CFLAGSПорт должен принимать во внимание переменную
CFLAGS. Если он этого не делает, то, пожалуйста,
добавьте в файл Makefile строчку
NO_PACKAGE=ignores cflags.Пример файла Makefile, в котором принимается
во внимание переменная CFLAGS, приводится далее.
Отметьте употребление символов +=:
CFLAGS += -Wall -Werror
А вот пример, в котором не учитывается значение переменной
CFLAGS:
CFLAGS = -Wall -Werror
В системе FreeBSD переменная CFLAGS определена
в файле /etc/make.conf. В первом примере к
переменной CFLAGS добавляются дополнительные флаги,
при этом сохраняются все определения, данные ранее на уровне системы.
Во втором примере всё, что было задано ранее, игнорируется.Конфигурационные файлыЕсли для работы порта требуются наличие некоторых
конфигурационных файлов в каталоге
PREFIX/etc,
не просто установите их и перечислите в файле
pkg-plist. Это приведёт к тому, что по команде
pkg_delete или при новой установке файлы,
тщательно отредактированные и настроенные пользователем, будут
уничтожены.Вместо этого установите файлы с примерами с неким расширением
(filename.sample
подойдет) и выведите сообщение, указывающее на то, чтобы
пользователь скопировал и отредактировал файл перед тем, как работать
с программным обеспечением.Утилита portlintПроверяйте вашу работу с помощью утилиты portlint
перед тем, как послать ее нам или выполнить коммитт.ПожеланияПосылайте подходящие изменения/патчи авторам/сопровождающему
для включения в следующий релиз. Это только сделает вашу работу
гораздо легче при выходе следующего релиза.README.htmlНе включайте сюда файл README.html. Этот файл
не является частью дерева cvs, и он генерируется при помощи команды
make readme.РазноеФайлы pkg-comment,
pkg-descr и pkg-plist вы
должны проверять дважды. Если вы просматриваете порт и думаете,
что его можно переформулировать иначе, сделайте это.Пожалуйста, не создавайте дополнительных копий лицензии GNU
General Public License в нашей системе.
- Будьте внимательны с юридическими вопросами! Не делайте из на
+ Будьте внимательны с юридическими вопросами! Не делайте из нас
нелегальных распространителей ПО!Если вы испытываете затруднения…Посмотрите существующие примеры и файл
bsd.port.mk перед тем, как задавать нам вопросы!
;-)Задавайте нам вопросы, если у вас появились проблемы! Не бейтесь
головой об стену! :-)Примерный MakefileВот примерный Makefile, который можно
использовать при создании нового порта. Обязательно удалите все
дополнительные комментарии (те, которые в скобках)!Вам рекомендуется следовать этому формату (соблюдая порядок
следования переменных, пустые строки между разделами, и так далее).
Этот формат разработан для того, чтобы важная информация была легко
найдена. Мы рекомендуем вам воспользоваться утилитой portlint для проверки файла
Makefile.
[заголовок...просто чтобы нам было легче идентифицировать порт.]
# New ports collection makefile for: xdvi
[строчка "version required" необходима только тогда, когда переменная
PORTVERSION недостаточно конкретна для описания порта.]
# Version required: pl18 + japanization patches 18.1 and 18.2
[это дата создания первой версии этого файла Makefile.
Никогда не изменяйте эту строку при обновлении порта.]
# Date created: 26 May 1995
[Это человек, который сделал первоначальный порт для FreeBSD, в частности,
тот, кто создал первую версию этого файла Makefile. Запомните, что позже
при обновлении порта эта строка меняться не должна.]
# Whom: Satoshi Asami <asami@FreeBSD.org>
#
# $FreeBSD$
[ ^^^^^^^^^ Эта строка будет автоматически заменена со строчкой RCS ID
системой CVS при выполнении операции коммитта в наше хранилище. При
обновлении порта не приводите эту строку обратно к виду
"$FreeBSD$". CVS сделает все автоматически.]
#
[секция описания собственно порта и основного сервера - сначала всегда
PORTNAME и PORTVERSIONA, за ним следует CATEGORIES, а затем
MASTER_SITES, за которым может идти MASTER_SITE_SUBDIR.
PKGNAMEPREFIX и PKGNAMESUFFIX, если они нужны, следуют за ними.
Затем следует DISTNAME, EXTRACT_SUFX и/или DISTFILES, а потом, если это нужно,
EXTRACT_ONLY.]
PORTNAME= xdvi
PORTVERSION= 18.2.]
CATEGORIES= print
[не забывайте лидирующий слэш ("/")!
если вы не используете макросы MASTER_SITE_*]
MASTER_SITES= ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applications
PKGNAMEPREFIX= ja-
DISTNAME= xdvi-pl18
[задайте это, если исходный код поставляется не в виде
стандартного файла ".tar.gz"]
EXTRACT_SUFX= .tar.Z
[секция патчей -- может быть пустой]
PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/
PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz
[сопровождающий; *обязательное поле*! Это человек (предпочтительно с
привилегиями на операцию коммитта), с которым может связаться пользователь
для получения ответов на вопросы и посылки сообщений об ошибках - этот
человек должен быть создателем порта или кем-то, кто может передать
вопросы создателю порта. Если вы на самом деле не хотите указывать здесь
свой адрес, задайте здесь "ports@FreeBSD.org".]
MAINTAINER= asami@FreeBSD.org
[зависимости -- могут быть пустыми]
RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript
LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm
[этот раздел для остальных стандартных переменных из bsd.port.mk, кроме
тех, что перечислены выше]
[Если порт задает вопросы во время этапов настройки, построения,
установки...]
IS_INTERACTIVE= yes
[Если распаковка происходит в каталог, отличных от ${DISTNAME}...]
WRKSRC= ${WRKDIR}/xdvi-new
[Если патчи делались не относительно ${WRKSRC}, вам, может быть, не
придется изменять эту переменную]
PATCH_DIST_STRIP= -p1
[Если порт требует скрипта "configure", генеруемого GNU-версией программы
autoconf]
GNU_CONFIGURE= yes
[Если для построения порту требуется GNU-версия утилиты make, а не
/usr/bin/make...]
USE_GMAKE= yes
[Если это приложение X и требует запуска "xmkmf -a"...]
USE_IMAKE= yes
[и так далее]
[В правилах ниже используются нестандартные переменные]
MY_FAVORITE_RESPONSE= "yeah, right"
[теперь специальные правила, в порядке их вызова]
pre-fetch:
я что-то выкачиваю, точно
post-patch:
мне кое-что сделать после применения патча, великолепно
pre-install:
и потом еще кое-что перед установкой, ого
[и, наконец, эпилог]
.include <bsd.port.mk>
Автоматическое создание списка упаковкиПервым делом убедитесь, что ваш порт практически полностью
завершен, осталось только создать pkg-plist.
Создайте пустой файл pkg-plist.
&prompt.root; touch pkg-plistЗатем создайте новый набор каталогов, в которые может быть
установлен ваш порт, и установите все зависимости.
&prompt.root; mtree -U -f /etc/mtree/BSD.local.dist -d -e -p /var/tmp/port-name
&prompt.root; make depends PREFIX=/var/tmp/port-nameСохраните структуру каталогов в новом файле.
&prompt.root; (cd /var/tmp/port-name && find * -type d) > OLD-DIRSЕсли ваш порт принимает во внимание PREFIX (а он
должен это делать), то тогда вы можете установить порт и создать список
упаковки.
&prompt.root; make install PREFIX=/var/tmp/port-name
&prompt.root; (cd /var/tmp/port-name && find * \! -type d) > pkg-plistКроме того, в список упаковки вы должны добавить все вновь
созданные каталоги.
&prompt.root; (cd /var/tmp/port-name && find * -type d) | comm -13 OLD-DIRS - | sed -e 's#^#@dirrm #' >> pkg-plistИ наконец, вам нужно вручную отшлифовать список упаковки. Я
обманул вас, когда сказал, что все происходит автоматически. Страницы
Справочника должны быть перечислены в файле
Makefile порта в переменных
MANn, а не в списке
упаковки. Пользовательские конфигурационные файлы должны быть удалены
или быть установлены как
filename.sample.
Файл info/dir включать в список не нужно, но
должны быть добавлены соответствующие строчки
install-info, так, как это описано в разделе о файлах в формате info. Все
библиотеки, устанавливаемые портом, должны быть перечислены так, как
это описано в разделе о динамических библиотеках.Имена пакаджейДалее описаны некоторые соглашения, которым вы должны следовать
в именовании ваших пакаджей. Они были разработаны для облегчения
просмотра каталога, так как пакаджей уже имеется достаточно много и еще
больше их появляется, а пользователи отвернутся от нас, если список не
понравится их взору!Имя пакаджа должно иметь вид
language_region-name-compiled.specifics-version.numbers.Имя пакаджа определяется как
${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}.
Вы должны задавать значения переменных в соответствии с этим
форматом.FreeBSD пытается поддерживать языки, на которых разговаривают
ее пользователи. Часть language-
должна быть двухсимвольным сокращением от названия языка по
стандарту ISO-639, если порт специфичен для конкретного языка.
Примерами являются ja для японского,
ru для русского, vi для
вьетнамского, zh для китайского,
ko для корейского и de для
немецкого языков.Если ваш порт специфичен для конкретного региона внутри области
использования языка, добавьте также двухсимвольный код страны.
Примерами являются en_US для US English и
fr_CH для Swiss French.Часть language- должна задаваться в
переменной PKGNAMEPREFIX.Первая буква части name должна быть в нижнем
регистре. (Оставшаяся часть названия может содержать буквы в
верхнем регистре, так что принимайте решение сами, когда преобразуете
имя программного пакета, содержащего в имени некоторое количество
заглавных букв.) Существует традиция именовать модули для Perl 5,
добавляя впереди p5- и преобразуя пару двоеточий в
дефис; например, модуль Data::Dumper будет
именоваться p5-Data-Dumper. Если программное
обеспечение содержит в имени числа, дефисы или подчеркивания, то вы
можете включить также и их (например,
kinput2).Если порт может быть построен с различными статически заданными значениями по
умолчанию (обычно это часть имени каталога в семействе
портов), то часть -compiled.specifics
должна определять вкомпилированные значения по умолчанию (дефис
не обязателен). Примерами являются размеры бумаги и
шрифтов.Часть compiled.specifics должна
задаваться в переменной PKGNAMESUFFIX.Строка с номером версии должна следовать за дефисом
(-) и являться списком разделенных двоеточием
чисел и букв в нижнем регистре. В частности, не разрешается иметь
еще один дефис внутри строки с обозначением номера версии.
Единственным исключением является строчка pl
(означающая `уровень патчей'), которая может использоваться
только тогда, когда у программного обеспечения
нет старшего и младшего номера версии. Если в номер версии
программного обеспечения включена строчка типа "alpha", "beta" или
"pre", возьмите из неё первую букву и поставьте её непосредственно
после точки. Если после таких строк номер версии ещё продолжается,
то после буквы должно следовать число без дополнительной разделяющей
точки.Смысл такого формата заключается в удобстве сортировки портов
по номеру версии. В частности, следите за тем, чтобы компоненты
номера версии разделялись точкой, и если там присутствует дата,
то используйте формат
yyyy.mm.dd, но не
dd.mm.yyyy
или не совместимый с проблемой Г2000
yy.mm.dd.Вот несколько (реальных) примеров того, как преобразовать имя из
оригинального, придуманного авторами, к подходящему для имени
пакаджа:Имя дистрибутиваPKGNAMEPREFIXPORTNAMEPKGNAMESUFFIXPORTVERSIONОбоснованиеmule-2.2.2(пусто)mule(пусто)2.2.2Изменений не потребовалосьXFree86-3.3.6(пусто)XFree86(пусто)3.3.6Изменений не потребовалосьEmiClock-1.0.2(пусто)emiclock(пусто)1.0.2Для отдельных программ имена с заглавными буквами
запрещеныrdist-1.3alpha(пусто)rdist(пусто)1.3.aСтрочки типа alpha запрещеныes-0.9-beta1(пусто)es(пусто)0.9.b1Строчки типа beta запрещеныv3.3beta021.src(пусто)tiff(пусто)3.3Что это такое было вообще?tvtwm(пусто)tvtwm(пусто)pl11Всегда требуется указание номера версииpiewm(пусто)piewm(пусто)1.0Всегда требуется указание номера версииxvgr-2.10pl1(пусто)xvgr(пусто)2.10.1pl разрешено только при отсутствии
старшего/младшего номера версииgawk-2.15.6ja-gawk(пусто)2.15.6Версия на японском языкеpsutils-1.13(пусто)psutils-letter1.13Размер бумаги задается статически во время построения
пакаджаpkfonts(пусто)pkfonts3001.0Пакадж для шрифтов 300dpiЕсли в исходном коде абсолютно нет информации о номере версии и не
похоже, что автор собирается выпускать другую версию, то в качестве
номера версии задайте просто 1.0 (как в примере с
piewm выше). В противном случае спросите автора программы или
используйте дату
(yyyy.mm.dd)
в качестве номера версии.КатегорииКак вы уже знаете, порты разделяются на несколько категорий.
Но чтобы эта классификация работала хорошо, очень важно, чтобы как те,
кто занимается портированием, так и пользователи понимали, что содержит
каждая категория, и как мы определяем, что помещать в каждую
из них.Текущий список категорийВо-первых, это текущий список категорий. Те, которые отмечены
звездочкой (*), являются
виртуальными категориями—они не имеют
собственного подкаталога в дереве портов.Для каждой виртуальной категории имеется файл
pkg/COMMENT с ее однострочным описанием
в соответствующем подкаталоге (например,
archivers/pkg/COMMENT).КатегорияОписаниеafterstep*Порты, поддерживающие менеджер окон AfterStep.archiversИнструменты для работы с архивами.astroПриложения, связанные с астрономией.audioПоддержка работы со звуком.benchmarksУтилиты для измерения производительности системы.biologyПрограммное обеспечение, связанное с биологией.cadИнструменты Систем Автоматизированного
Проектирования.chineseПоддержка китайского языка.commsКоммуникационное программное обеспечение. В основном
программы для работы с последовательным портом.convertersУтилиты для преобразования символьных форматов.databasesБазы данных.deskutilsТо, что было на столе до изобретения компьютеров.develУтилиты для разработки программного обеспечения. Не
помещайте сюда библиотеки просто потому что это
библиотеки—если они подпадают под какую-то другую
категорию, то их быть здесь не должно.editorsРедакторы общего назначения. Специализированные редакторы
относят к разделу для соответствующих инструментов (например,
редактор математических формул попадает в категорию
math).elisp*Порты для Emacs lisp.emulatorsЭмуляторы других операционных систем. Эмуляторы терминалов
сюда не относятся—те, которые
разработаны для X, должны быть в категории
x11, а текстовые в
comms или misc, в
зависимости от конкретного их предназначения.frenchПоддержка французского языка.ftpКлиенты и серверы FTP. Если ваш порт понимает как FTP,
так и HTTP, поместите его в категорию ftp и
укажите вторичную категорию www.gamesИгры.germanПоддержка немецкого языка.gnome*Порты проекта GNU Object Model Environment (GNOME)
Project.graphicsГрафические утилиты.hebrewПоддержка иврита.ircУтилиты для работы с Internet Relay Chat.ipv6*Программное обеспечение, связанное с IPv6.japaneseПоддержка японского языка.javaПоддержка языка Java.kde*Порты проекта K Desktop Environment (KDE) Project.koreanПоддержка корейского языка.langЯзыки программирования.linux*Linux приложения и утилиты.mailПрограммы для работы с электронной почтой..mathПрограммное обеспечение для численных вычислений и другие
утилиты, связанные с математикой.mboneПриложения для MBone.miscРазличные утилиты—в основном то, что не попадает в
другие категории. Это единственная категория, которая не должна
указываться вместе с любой другой невиртуальной категорией. Если
вы указываете misc вместе с чем-то еще в
строке CATEGORIES, это значит, что вы можете
спокойно удалить misc и просто поместить порт
в этот другой подкаталог!netРазличное сетевое программное обеспечение.newsПрограммное обеспечение для работы с конференциями
USENET.offix*Порты из набора OffiX.palmПрограммная поддержка 3Com Palm(tm).perl5*Порты, которым для работы требуется perl версии 5.plan9*Различные программы из plan9.printПрограммное обеспечение для печати. Инструменты для верстки
(просмотрщики и тому подобное) тоже относятся сюда.python*Программное обеспечение, написанное на языке python.ruby*Программное обеспечение, написанное на языке ruby.russianПоддержка русского языка.securityПрограммы, обеспечивающие безопасность системы.shellsРазличные командные процессоры.sysutilsСистемные утилиты.tcl76*Порты, которым для работы нужен Tcl версии 7.6.tcl80*Порты, которым для работы нужен Tcl версии 8.0.tcl81*Порты, которым для работы нужен Tcl версии 8.1.tcl82*Порты, которым для работы нужен Tcl версии 8.2.textprocУтилиты для текстовой обработки. Инструменты для верстки
помещаются в print/, а не сюда.tk42*Порты, которым для работы нужен Tk версии 4.2.tk80*Порты, которым для работы нужен Tk версии 8.0.tk81*Порты, которым для работы нужен Tk версии 8.1.tk82*Порты, которым для работы нужен Tk версии 8.2.tkstep80*Порты, которым для работы нужен TkSTEP версии 8.0.vietnameseПоддержка вьетнамского языка.windowmaker*Порты, поддерживающие менеджер окон WindowMakerwwwПрограммное обеспечение, связанное с World Wide Web.
Поддержка языка HTML относится сюда же.x11X Window System и иже с ними. Эта категория предназначена
только для программного обеспечения, которое поддерживает
оконную систему. Не помещайте сюда обычные приложения X. Если
ваш порт является приложением для X, задайте
USE_XLIB (что подразумевается при
использовании USE_IMAKE) и укажите подходящую
категорию. Кроме того, многие такие приложения относятся к
категориям x11-* (смотрите ниже).x11-clocksЧасы для X11.x11-fmМенеджеры файлов для X11.x11-fontsШрифты для X11 и утилиты для работы с ними.x11-serversСерверы для X11.x11-toolkitsПакеты разработчика для X11.x11-wmОконные менеджеры для X11.zope*Поддержка zope.Выбор правильной категорииТак как многие категории перекрываются, вам часто необходимо
будет выбирать, какая их них должна быть основной для вашего порта.
Есть несколько правил, по которым можно решить этот вопрос. Вот
список приоритетов, в уменьшающейся степени предпочтения.Сначала всегда идут категории, специфичные для языков.
Например, если ваш порт устанавливает японские шрифты для X11,
то строчка CATEGORIES должна иметь вид
japanese x11-fonts.Более конкретные категории предпочтительней перед точных. В
частности, редактор HTML должен быть описан как
www editors, а не наоборот. Кроме того, вам не
нужно указывать категорию net, если порт
относится к любой из категорий irc,
mail, mbone,
news, security или
www.x11 используется как вторичная категория
только в случае, когда в качестве основной категории указан
естественный язык. В частности, вам не нужно указывать
x11 в качестве категории для
приложений X.Режимы для редактора Emacs должны
помещаться в ту же категорию, что и приложение, которое
поддерживается этим режимом, а не в editors.
Например, режим Emacs для
редактирования исходного кода некоторого языка программирования
должен быть помещен в категорию lang.Если ваш порт решительным образом не подпадает ни под какую
категорию, поместите его в misc.Если вы не уверены в правильности выбора категории, пожалуйста,
отметьте это в вашей посылке по send-pr, чтобы мы
могли обсудить это до того, как включить порт в Коллекцию. Если вы
являетесь коммиттером, пошлите замечание на адрес &a.ports;, чтобы мы
могли обсудить это—зачастую новые порты помещаются не в ту
категорию только для того, чтобы их оттуда сразу же удалили.Изменения в этом документе и системе портовЕсли вы сопровождаете большое количество портов, то должны
отслеживать &a.ports;. Важные изменения в схеме работы портов будут
объявляться здесь. Вы всегда можете найти более подробную информацию о
самых последних изменениях в
журнале изменений CVS файла bsd.port.mk.Вот, парни, и все!Итак, малыш, это был длинный рассказ, не так ли? Спасибо за то,
что вы шли с нами до самого конца. Теперь, когда вы знаете, как
создавать порты, воспользуйтесь этими знаниями и преобразуйте все, что
есть на свете, в порты! Это самый легкий способ принять участие в
Проекте FreeBSD!
:-)