diff --git a/ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile b/ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile index 3f331d3ece..822026e66e 100644 --- a/ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile +++ b/ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile @@ -1,17 +1,17 @@ # # Build the Handbook with just the content from this chapter. # # $FreeBSD$ -# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile,v 1.1 2001/07/11 16:40:07 phantom Exp $ -# Original revision: 1.1 +# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile,v 1.2 2004/09/01 13:36:38 den Exp $ +# Original revision: 1.2 # CHAPTERS= advanced-networking/chapter.sgml VPATH= .. MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} DOC_PREFIX?= ${.CURDIR}/../../../.. .include "../Makefile" 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 b6abf5ceca..4b5af55d44 100644 --- a/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.sgml @@ -1,4391 +1,4391 @@ Андрей Захватов Перевод на русский язык: Сложные вопросы работы в сети Краткий обзор Эта глава охватывает множество различных сетевых тематик повышенной сложности. После чтения этой главы вы будете знать: Основные понятия о маршрутизации и маршрутах. Как настроить IEEE 802.11 и &bluetooth;. Как заставить FreeBSD работать в качестве сетевого моста. Как настроить загрузку по сети для бездисковой машины. Как настроить трансляцию сетевых адресов. Как соединить два компьютера посредством PLIP. Как настроить IPv6 на машине FreeBSD. Как настроить ATM в &os; 5.X. Перед чтением этой главы вы должны: Понимать основы работы скриптов /etc/rc. Свободно владеть основными сетевыми терминами. Знать как настраивать и устанавливать новое ядро FreeBSD (). Знать как устанавливать дополнительное программное обеспечение сторонних разработчиков (). Coranth Gryphon Текст предоставил Сетевые шлюзы и маршруты маршрутизация шлюз подсеть Чтобы некоторая машина могла найти в сети другую, должен иметься механизм описания того, как добраться от одной машине к другой. Такой механизм называется маршрутизацией. Маршрут задаётся парой адресов: адресом назначения (destination) и сетевым шлюзом (gateway). Эта пара указывает на то, что если Вы пытаетесь соединиться с адресом назначения, то вам нужно устанавливать связь через сетевой шлюз. Существует три типа адресов назначения: отдельные хосты, подсети и маршрут по умолчанию (default). Маршрут по умолчанию (default route) используется, если не подходит ни один из других маршрутов. Мы поговорим немного подробнее о маршрутах по умолчанию позже. Также имеется и три типа сетевых шлюзов: отдельные хосты, интерфейсы (также называемые подключениями (links)) и аппаратные адреса Ethernet (MAC-адреса). Пример Для иллюстрации различных аспектов маршрутизации мы будем использовать следующий пример использования команды netstat: &prompt.user; netstat -r Routing tables 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 example.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.example.com link#1 UC 0 0 224 link#1 UC 0 0 маршрут по умолчанию В первых двух строках задаются маршрут по умолчанию (который будет описан в следующем разделе) и маршрут на localhost. устройство loopback Интерфейс (колонка Netif), который указан в этой таблице маршрутов для использования с localhost и который назван lo0, имеет также второе название, устройство loopback. Это значит сохранение всего трафика для указанного адреса назначения внутри, без посылки его по сети, так как он все равно будет направлен туда, где был создан. Ethernet MAC адрес Следующими выделяющимися адресами являются адреса, начинающиеся с 0:e0:.... Это аппаратные адреса Ethernet, или MAC-адреса. FreeBSD будет автоматически распознавать любой хост (в нашем примере это test0) в локальной сети Ethernet и добавит маршрут для этого хоста, указывающий непосредственно на интерфейс Ethernet, ed0. С этим типом маршрута также связан параметр таймаута (колонка Expire), используемый в случае неудачной попытки услышать этот хост в течении некоторого периода времени. Если такое происходит, то маршрут до этого хоста будет автоматически удалён. Такие хосты поддерживаются при помощи механизма, известного как RIP (Routing Information Protocol), который вычисляет маршруты к хостам локальной сети при помощи определения кратчайшего расстояния. подсеть FreeBSD добавит также все маршруты к подсетям для локальных подсетей (10.20.30.255 является широковещательным адресом для подсети 10.20.30, а имя example.com является именем домена, связанным с этой подсетью). Назначение link#1 соответствует первому адаптеру Ethernet в машине. Отметьте отсутствие дополнительного интерфейса для этих строк. В обеих этих группах (хосты и подсети локальной сети) маршруты конфигурируются автоматически даемоном, который называется routed. Если он не запущен, то будут существовать только статически заданные (то есть введенные явно) маршруты. Строка host1 относится к нашему хосту, который известен по адресу Ethernet. Так как мы являемся посылающим хостом, FreeBSD знает, что нужно использовать loopback-интерфейс (lo0) вместо того, чтобы осуществлять посылку в интерфейс Ethernet. Две строки host2 являются примером того, что происходит при использовании алиасов в команде &man.ifconfig.8; (обратитесь к разделу об Ethernet для объяснения того, почему мы это делаем). Символ => после интерфейса lo0 указывает на то, что мы используем не просто интерфейс loopback (так как это адрес, обозначающий локальный хост), но к тому же это алиас. Такие маршруты появляются только на хосте, поддерживающем алиасы; для всех остальных хостов в локальной сети для таких маршрутов будут показаны просто строчки link#1. Последняя строчка (подсеть назначения 224) имеет отношение к многоадресной посылке, которая будет рассмотрена в другом разделе. И наконец, различные атрибуты каждого маршрута перечисляются в колонке Flags. Ниже приводится краткая таблица некоторых из этих флагов и их значений: U Up: Маршрут актуален. H Host: Адресом назначения является отдельный хост. G Gateway: Посылать все для этого адреса назначения на указанную удаленную систему, которая будет сама определять дальнейший путь прохождения информации. S Static: Маршрут был настроен вручную, а не автоматически сгенерирован системой. C Clone: Новый маршрут сгенерирован на основе указанного для машин, к которым мы подключены. Такой тип маршрута обычно используется для локальных сетей. W WasCloned: Указывает на то, что маршрут был автоматически сконфигурирован на основе маршрута в локальной сети (Clone). L Link: Маршрут включает ссылку на аппаратный адрес Ethernet. Маршруты по умолчанию маршрут по умолчанию Когда локальной системе нужно установить соединение с удаленным хостом, она обращается к таблице маршрутов для того, чтобы определить, существует ли такой маршрут. Если удаленный хост попадает в подсеть, для которой известен способ ее достижения (маршруты типа Cloned), то система определяет возможность подключиться к ней по этому интерфейсу. Если все известные маршруты не подходят, у системы имеется последняя возможность: маршрут default. Это маршрут с особым типом сетевого шлюза (обычно единственным, присутствующим в системе), и в поле флагов он всегда помечен как c. Для хостов в локальной сети этот сетевой шлюз указывает на машину, имеющую прямое подключение к внешнему миру (неважно, используется ли связь по протоколу PPP, канал DSL, кабельный модем, T1 или какой-то другой сетевой интерфейс). Если вы настраиваете маршрут по умолчанию на машине, которая сама является сетевым шлюзом во внешний мир, то маршрутом по умолчанию будет являться сетевой шлюз у Вашего провайдера Интернет (ISP). Давайте взглянем на примеры маршрутов по умолчанию. Вот типичная конфигурация: [Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW] Хосты Local1 и Local2 находятся в нашей сети. Local1 подключён к ISP через коммутируемое соединение по протоколу PPP. Этот компьютер с сервером PPP подключён посредством локальной сети к другому шлюзовому компьютеру через внешний интерфейс самого ISP к Интернет. Маршруты по умолчанию для каждой из ваших машин будут следующими: Хост Маршрут по умолчанию Интерфейс Local2 Local1 Ethernet Local1 T1-GW PPP Часто задаётся вопрос Почему (или каким образом) в качестве шлюза по умолчанию для машины Local1 мы указываем T1-GW, а не сервер провайдера, к которому подключаемся?. Запомните, что из-за использования PPP-интерфейсом адреса в сети провайдера Интернет с вашей стороны соединения, маршруты для всех других машин в локальной сети провайдера будут сгенерированы автоматически. Таким образом, вы уже будете знать, как достичь машины T1-GW, так что нет нужды в промежуточной точке при посылке трафика к серверу ISP. В локальных сетях адрес X.X.X.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) Вы можете легко задать используемый по умолчанию маршрутизатор посредством файла /etc/rc.conf. В нашем примере на машине Local2 мы добавили такую строку в файл /etc/rc.conf: defaultrouter="10.20.30.1" Это также возможно сделать и непосредственно из командной строки при помощи команды &man.route.8;: &prompt.root; route add default 10.20.30.1 Для получения дополнительной информации об управлении таблицами маршрутизации, обратитесь к справочной странице по команде &man.route.8;. Хосты с двойным подключением хосты с двойным подключением Есть еще один тип подключения, который мы должны рассмотреть, и это случай, когда хост находится в двух различных сетях. Технически, любая машина, работающая как сетевой шлюз (в примере выше использовалось PPP-соединение), считается хостом с двойным подключением. Однако этот термин реально используется для описания машины, находящейся в двух локальных сетях. В одном случае у машины имеется два адаптера Ethernet, каждый имеющий адрес в разделенных подсетях. Как альтернативу можно рассмотреть вариант с одним Ethernet-адаптером и использованием алиасов в команде &man.ifconfig.8;. В первом случае используются два физически разделённые сети Ethernet, в последнем имеется один физический сегмент сети, но две логически разделённые подсети. В любом случае таблицы маршрутизации настраиваются так, что для каждой подсети эта машина определена как шлюз (входной маршрут) в другую подсеть. Такая конфигурация, при которой машина выступает в роли маршрутизатора между двумя подсетями, часто используется, если нужно реализовать систему безопасности на основе фильтрации пакетов или функций межсетевого экрана в одном или обоих направлениях. Если вы хотите, чтобы эта машина действительно перемещала пакеты между двумя интерфейсами, то вам нужно указать FreeBSD на включение этой функции. Обратитесь к следующей главе, чтобы узнать, как это сделать. Построение маршрутизатора маршрутизатор Сетевой маршрутизатор является обычной системой, которая пересылает пакеты с одного интерфейса на другой. Стандарты Интернет и хорошая инженерная практика не позволяют Проекту FreeBSD включать эту функцию по умолчанию во FreeBSD. Вы можете включить эту возможность, изменив значение следующей переменной в YES в файле &man.rc.conf.5;: gateway_enable=YES # Set to YES if this host will be a gateway Этот параметр изменит значение &man.sysctl.8;-переменной net.inet.ip.forwarding в 1. Если вам временно нужно выключить маршрутизацию, вы можете на время сбросить это значение в 0. Вашему новому маршрутизатору нужна информация о маршрутах для того, чтобы знать, куда пересылать трафик. Если ваша сеть достаточно проста, то вы можете использовать статические маршруты. С FreeBSD также поставляется стандартный даемон BSD для маршрутизации &man.routed.8;, который умеет работать с RIP (как версии 1, так и версии 2) и IRDP. Поддержка BGP v4, OSPF v2 и других сложных протоколов маршрутизации имеется в пакете net/zebra. Также существуют и коммерческие продукты, применяемые как более комплексное решение проблемы маршрутизации в сети, такие как &gated;. BGP RIP OSPF Даже когда FreeBSD настроена таким образом, она не полностью соответствует стандартным требованиям Интернет для маршрутизаторов. Однако для обычного использования такое неполное соответствие достаточно. Al Hoang Предоставил Настройка статических маршрутов Ручная настройка Предположим, что у нас есть следующая сеть: INTERNET | (10.0.0.1/24) Default Router to Internet | |Interface xl0 |10.0.0.10/24 +------+ | | RouterA | | (FreeBSD gateway) +------+ | Interface xl1 | 192.168.1.1/24 | +--------------------------------+ Internal Net 1 | 192.168.1.2/24 | +------+ | | RouterB | | +------+ | 192.168.2.1/24 | Internal Net 2 В этом сценарии, RouterA это наш компьютер с &os;, который выступает в качестве маршрутизатора в сеть Интернет. Его маршрут по умолчанию настроен на 10.0.0.1, что позволяет ему соединяться с внешним миром. Мы будем предполагать, что RouterB уже правильно настроен и знает все необходимые маршруты (на этом рисунке все просто; добавьте на RouterB маршрут по умолчанию, используя 192.168.1.1 в качестве шлюза). Если мы посмотрим на таблицу маршрутизации RouterA, то увидим примерно следующее: &prompt.user; netstat -nr Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 10.0.0.1 UGS 0 49378 xl0 127.0.0.1 127.0.0.1 UH 0 6 lo0 10.0.0/24 link#1 UC 0 0 xl0 192.168.1/24 link#2 UC 0 0 xl1 С текущей таблицей маршрутизации RouterA не сможет достичь внутренней сети 2 (Internal Net 2). Один из способов обхода этой проблемы — добавление маршрута вручную. Следующая команда добавляет внутреннюю сеть 2 к таблице маршрутизации RouterA с 192.168.1.2 в качестве следующего узла: &prompt.root; route add -net 192.168.2.0/24 192.168.1.2 Теперь RouterA сможет достичь любого хоста в сети 192.168.2.0/24. Постоянная конфигурация Предыдущий пример прекрасно подходит для настройки статического маршрута в работающей системе. Однако, проблема заключается в том, что маршрутная информация не сохранится после перезагрузки &os;. Способ сохранения добавленного маршрута заключается в добавлении его в файл /etc/rc.conf: # Добавление статического маршрута в Internal Net 2 static_routes="internalnet2" route_internalnet2="-net 192.168.2.0/24 192.168.1.2" В переменной static_routes находятся строки, разделенные пробелами. Каждая строка означает имя маршрута. В примере выше в static_routes есть только одна строка, это internalnet2. Затем мы добавили переменную route_internalnet2, куда помещены все параметры, которые необходимо передать команде &man.route.8;. В примере выше была использована команда: &prompt.root; route add -net 192.168.2.0/24 192.168.1.2 поэтому нам потребуется "-net 192.168.2.0/24 192.168.1.2". Как было сказано выше, мы можем добавить в static_routes более чем одну строку. Это позволит создать несколько статических маршрутов. В следующем примере показано добавление маршрутов для сетей 192.168.0.0/24 и 192.168.1.0/24 (этот маршрутизатор не показан на рисунке выше: static_routes="net1 net2" route_net1="-net 192.168.0.0/24 192.168.0.1" route_net2="-net 192.168.1.0/24 192.168.1.1" Распространение маршрутов распространение маршрутов Мы уже говорили о том, как мы задаем наши маршруты во внешний мир, но не упоминали о том, как внешний мир находит нас. Мы уже знаем, что таблицы маршрутизации могут быть настроены так, что весь трафик для некоторого диапазона адресов (в нашем примере это подсеть класса C) может быть направлен заданному хосту в той сети, которая будет перенаправлять входящие пакеты дальше. При получении адресного пространства, выделенного Вашей сети, Ваш провайдер настроит свои таблицы маршрутизации так, что весь трафик для Вашей подсети будет пересылаться по PPP-соединению к Вашей сети. Но как серверы по всей стране узнают, что Ваш трафик нужно посылать Вашему ISP? Существует система (подобная распределению информации DNS), которая отслеживает все назначенные пространства адресов и определяет точку подключения к магистрали Интернет. Магистралью называют главные каналы, по которым идет трафик Интернет внутри страны и по всему миру. Каждая магистральная машина имеет копию основного набора таблиц, согласно которой трафик для конкретной сети направляется по конкретному магистральному каналу, и затем, передаваясь по цепочке провайдеров, он достигает вашей сети. Задачей вашего провайдера является объявить на магистрали о том, что он отвечает за подключение (и поэтому на него указывает маршрут) вашей сети. Этот процесс называется распространением маршрута. Устранение неполадок traceroute Иногда с распространением маршрута возникают проблемы, и некоторые сайты не могут к вам подключиться. Наверное, самой полезной командой для определения точки неверной работы маршрутизации является &man.traceroute.8;. Она также полезна и когда вы сами не можете подключиться к удаленной машине (то есть команда &man.ping.8; не срабатывает). Команда &man.traceroute.8; запускается с именем удаленного хоста, с которым вы хотите установить соединение, в качестве параметра. Она показывает промежуточные сетевые шлюзы по пути следования, в конце концов достигая адрес назначения или прерывая свою работу из-за отсутствия соединения. За дополнительной информацией обратитесь к странице Справочника по &man.traceroute.8;. Маршрутизация многоадресного трафика multicast options MROUTING FreeBSD изначально поддерживает как приложения, работающие с многоадресным трафиком, так и его маршрутизацию. Такие приложения не требуют особой настройки FreeBSD; обычно они работают сразу. Для маршрутизации многоадресного трафика требуется, чтобы поддержка этого была включена в ядро: options MROUTING Кроме того, даемон многоадресной маршрутизации, &man.mrouted.8;, должен быть настроен посредством файла /etc/mrouted.conf на использование туннелей и DVMRP. Дополнительную информацию о настройки многоадресного трафика можно найти на страницах справочной системы, посвящённых даемону &man.mrouted.8;. Eric Anderson Текст предоставил Андрей Захватов Перевёл на русский язык Беспроводные сети беспроводные сети 802.11 беспроводные сети Введение Было бы весьма полезным иметь возможность использовать компьютер без хлопот, связанных с постоянно подключенным сетевым кабелем. FreeBSD может использоваться как клиент беспроводной сети, и даже в качестве точки доступа к ней. Режимы работы беспроводной связи Существуют два варианта конфигурации устройств беспроводного доступа 802.11: BSS и IBSS. Режим BSS Режим BSS является наиболее часто используемым. Режим BSS также называют режимом инфраструктуры. В этом режиме несколько точек доступа беспроводной сети подключаются к проводной сети передачи данных. Каждое беспроводная сеть имеет собственное имя. Это имя является идентификатором SSID сети. Клиенты беспроводной сети подключаются к этим точкам доступа беспроводной сети. Стандарт IEEE 802.11 определяет протокол, используемый для связи в беспроводных сетях. Клиент сети беспроводного доступа может подключаться к некоторой сети, если задан её SSID. Клиент может также подключаться к любой сети, если SSID не задан. Режим IBSS Режим IBSS, также называемый ad-hoc, предназначен для соединений точка-точка. На самом деле существуют два типа режима ad-hoc. Один из них является режимом IBSS, называемый также режимом ad-hoc или IEEE ad-hoc. Этот режим определён стандартами IEEE 802.11. Второй режим называется демонстрационным режимом ad-hoc, или Lucent ad-hoc (или, иногда неправильно, режимом ad-hoc). Это старый, существовавший до появления 802.11, режим ad-hoc, и он должен использоваться только для старых сетей. В дальнейшем мы не будем рассматривать ни один из режимов ad-hoc. Режим инфраструктуры Точки доступа Точки доступа представляют собой беспроводные сетевые устройства, позволяющие одному или большему количеству клиентов беспроводной сети использовать эти устройства в качестве центрального сетевого концентратора. При использовании точки доступа все клиенты работают через неё. Зачастую используются несколько точек доступа для полного покрытия беспроводной сетью некоторой зоны, такой, как дом, офис или парк. Точки доступа обычно имеют несколько подключений к сети: адаптер беспроводной связи и один или большее количество сетевых ethernet-адаптеров для подключения к остальной части сети. Точки доступа могут быть либо приобретены уже настроенными, либо вы можете создать собственную при помощи FreeBSD и поддерживаемого адаптера беспроводной связи. Несколько производителей выпускают точки беспроводного доступа и адаптеры беспроводной связи с различными возможностями. Построение точки доступа с FreeBSD беспроводные сети точка доступа Требования Для того, чтобы создать беспроводную точку доступа на FreeBSD, вам нужно иметь совместимый адаптер беспроводной связи. На данный момент поддерживаются адаптеры только на основе набора микросхем Prism. Вам также потребуется поддерживаемый FreeBSD адаптер проводной сети (найти такой будет нетрудно, FreeBSD поддерживает множество различных устройств). В этом руководстве мы будем полагать, что вы будете строить сетевой мост (&man.bridge.4;) для пропуска всего трафика между устройством беспроводной связи и сетью, подключенной к обычному Ethernet-адаптеру. Функциональность hostap, которая используется FreeBSD для организации точки доступа, работает лучше всего с некоторыми версиями микрокода. Адаптеры Prism 2 должны использовать микрокод версии 1.3.4 или более новый. Адаптеры Prism 2.5 и Prism 3 должны использовать микрокод версии 1.4.9. Более старые версии микрокода могут работать нормально, а могут и некорректно. В настоящее время единственным способом обновления адаптеров является использование утилит обновления для &windows;, которые можно получить у производителя ваших адаптеров. Настройка Первым делом убедитесь, что ваша система распознаёт адаптер беспроводной связи: &prompt.root; ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1 На данном этапе не беспокойтесь о деталях, просто убедитесь, что выдаётся нечто, указывающее на установленный адаптер беспроводной связи. Если при этом у вас есть проблемы с недоступностью интерфейса беспроводной связи, и вы используете PC Card, то обратитесь к страницам справочной системы, описывающим &man.pccardc.8; и &man.pccardd.8; для получения более полной информации. Теперь вам нужно загрузить модуль для подготовки той части FreeBSD, что отвечает за организацию сетевых мостов, для работы с точкой доступа. Для загрузки модуля &man.bridge.4; просто выполните следующую команду: &prompt.root; kldload bridge При загрузке модуля никаких сообщений об ошибках быть не должно. Если это всё же произошло, вам может потребоваться вкомпилировать код для модуля &man.bridge.4; в ядро. В этом вам должен помочь раздел этого Руководства об организации сетевых мостов. Теперь, когда вы завершили с той частью, что касается организации сетевого моста, нам нужно указать ядру FreeBSD, какие интерфейсы должны объединяться в сетевом мосте. Это мы делаем при помощи &man.sysctl.8;: &prompt.root; sysctl net.link.ether.bridge=1 &prompt.root; sysctl net.link.ether.bridge_cfg="wi0,xl0" &prompt.root; sysctl net.inet.ip.forwarding=1 Во &os; 5.2-RELEASE и последующих версиях нужно использовать вместо указанных следующие параметры: &prompt.root; sysctl net.link.ether.bridge.enable=1 &prompt.root; sysctl net.link.ether.bridge.config="wi0,xl0" &prompt.root; sysctl net.inet.ip.forwarding=1 Теперь необходимо настроить адаптер беспроводной сети. Следующая команда заставит адаптер работать в режиме точки доступа: &prompt.root; ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP" Строчка &man.ifconfig.8; активизирует интерфейс wi0, конфигурирует его SSID как my_net, а имя станции как FreeBSD AP. переводит адаптер в режим 11Mbps и нужен только для того, чтобы сработал параметр . Параметр переводит интерфейс в режим точки доступа. Параметр задаёт использование канала 802.11b. Страница справки по команде &man.wicontrol.8; перечисляет корректные значения каналов для ваших нужд. Теперь у вас должна получиться полнофункциональная работающая точка доступа. Настоятельно советуем прочесть страницы справочной по &man.wicontrol.8;, &man.ifconfig.8;, и &man.wi.4; для получения дополнительной информации. Также полагаем, что вы прочтёте следующий раздел о шифровании. Информация о состоянии После того, как точка доступа сконфигурирована и начала свою работу, операторам может понадобиться видеть клиентов, связанных с этой точкой. В любой момент оператор может набрать: &prompt.root; wicontrol -l 1 station: 00:09:b7:7b:9d:16 asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15 Это показывает, что имеется одна связанная станция с перечисленными характеристиками. Выдаваемое значение сигнала должно использоваться только как сравнительный индикатор его силы. Его перевод в dBm или другие единицы измерения различаются в разных версиях микрокода. Клиенты Клиент в беспроводной сети представляет собой систему, которая обращается к точке доступа или непосредственно к другому клиенту. Как правило, клиенты беспроводной сети имеют только один сетевой адаптер, а именно адаптер беспроводной сети. Существует несколько различных способов конфигурации клиента беспроводной сети. Они основаны на различных режимах работы в беспроводной сети, обычно BSS (режим инфраструктуры, который требует точки доступа) или IBSS (ad-hoc или режим одноранговой сети). В нашем примере мы будем использовать самый популярный их них, режим BSS, для связи с точкой доступа. Требования Существует только одно жёсткое условие для настройки FreeBSD в качестве клиента беспроводной сети. Вам нужен адаптер беспроводной связи, поддерживаемый FreeBSD. Конфигурация FreeBSD как клиента беспроводной сети Перед тем, как подключиться к беспроводной сети, вам нужно будет узнать о ней несколько вещей. В этом примере мы подключаемся к сети, которая называется my_net, и шифрование в ней отключено. В этом примере мы не используем шифрование, но это небезопасно. В следующем разделе вы узнаете, как её включить, почему это так важно, и почему некоторые технологии шифрования всё же не могут полностью обеспечить вашу информационную безопасность. Удостоверьтесь, что ваш адаптер распознаётся во FreeBSD: &prompt.root; ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1 Теперь мы можем изменить настройки адаптера на те, что соответствуют нашей сети: &prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net Замените 192.168.0.20 и 255.255.255.0 на правильные IP-адрес и сетевую маску в вашей проводной сети. Запомните, что наша точка доступа выступает в роли моста для данных между беспроводной и проводной сетями, так что они будут доступны для других устройств, находящихся в сети, как будто они тоже находятся в проводной сети. Как только вы это выполнили, то сможете получить ping от хостов в проводной сети, как будто вы подключены посредством обычных проводов. Если вы столкнулись с проблемами при работе в беспроводной сети, удостоверьтесь, что вы ассоциированы (подключены) с точкой доступа: &prompt.root; ifconfig wi0 должна выдать некоторую информацию, и вы должны увидеть: status: associated Если статус не будет соответствовать associated, это может значить, что вы оказались вне зоны досягаемости точки доступа, включили шифрование или, возможно, имеются проблемы с конфигурацией. Шифрование беспроводные сети шифрование Шифрование в беспроводной сети имеет важное значение, потому что у вас нет больше возможности ограничить сеть хорошо защищённой областью. Данные вашей беспроводной сети вещаются по всей окрестности, так что любой заинтересовавшийся может их считать. Вот здесь используется шифрование. Шифруя данные, посылаемые в эфир, вы делаете их прямой перехват гораздо более сложным для всех любопытных. Двумя наиболее широко применяемыми способами шифрации данных между вашим клиентом и точкой доступа являются WEP и &man.ipsec.4;. WEP WEP WEP является сокращением от Wired Equivalency Protocol (Протокол Соответствия Проводной сети). WEP является попыткой сделать беспроводные сети такими же надёжными и безопасными, как проводные. К сожалению, он был взломан и сравнительно легко поддаётся вскрытию. Это означает также, что он не тот протокол, на который следует опираться, когда речь идёт о шифровании критически важных данных. Он лучше, чем ничего, так что используйте следующую команду для включения WEP в вашей новой точке доступа FreeBSD: &prompt.root; ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap Вы можете включить WEP на клиенте следующей командой: &prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890 Отметьте, что вы должны заменить 0x1234567890 на более уникальный ключ. IPsec &man.ipsec.4; является гораздо более надёжным и мощным средством шифрования данных в сети. Этот метод определённо является предпочтительным для шифрования данных в беспроводной сети. Более детально ознакомиться с безопасностью и применением &man.ipsec.4; вы можете в разделе об IPsec этого Руководства. Утилиты Имеется несколько утилит, которые можно использовать для настройки и отладки вашей беспроводной сети, и здесь мы попытаемся описать некоторые из них и что они могут делать. Пакет <application>bsd-airtools</application> Пакет bsd-airtools представляет собой полный набор инструментов, включая инструменты для проверки беспроводной сети на предмет взлома WEP-ключа, обнаружения точки доступа и тому подобное. Утилиты bsd-airtools можно установить из порта net/bsd-airtools. Информацию об установке портов можно найти в Главе этого Руководства. Программа dstumbler является инструментом, предназначенным для обнаружения точки доступа и выдачи отношения уровня сигнала к шуму. Если у вас с трудом получается запустить точку доступа, dstumbler может помочь вам начать. Для тестирования информационной безопасности вашей беспроводной сети, вы можете воспользоваться набором dweputils (dwepcrack, dwepdump и dwepkeygen), который может помочь понять, является ли WEP подходящим решением для обеспечения ваших потребностей в информационной безопасности. Утилиты <command>wicontrol</command>, <command>ancontrol</command> и <command>raycontrol</command> Это инструменты, которые могут быть использованы для управления поведением адаптера беспроводной связи в сети. В примере выше мы выбирали &man.wicontrol.8;, так как нашим адаптером беспроводной сети был интерфейс wi0. Если у вас установлено устройство беспроводного доступа от Cisco, этим интерфейсом будет an0, и тогда вы будете использовать &man.ancontrol.8;. Команда <command>ifconfig</command> ifconfig Команда &man.ifconfig.8; может использоваться для установки многих из тех параметров, что задаёт &man.wicontrol.8;, однако работа с некоторыми параметрами в ней отсутствует. Обратитесь к &man.ifconfig.8; для выяснения параметров и опций командной строки. Поддерживаемые адаптеры Точки доступа Единственными адаптерами, которые на данный момент поддерживаются в режиме BSS (как точка доступа), являются те устройства, что сделаны на основе набора микросхем Prism 2, 2.5 или 3). Полный список можно увидеть в &man.wi.4;. Клиенты Практически все адаптеры беспроводной связи 802.11b на данный момент во FreeBSD поддерживаются. Большинство адаптеров, построенных на основе Prism, Spectrum24, Hermes, Aironet и Raylink, будут работать в качестве адаптера беспроводной сети в режиме IBSS (ad-hoc, одноранговая сеть и BSS). Pav Lucistnik Текст предоставил
pav@oook.cz
Bluetooth Bluetooth Введение Bluetooth является беспроводной технологией для создания персональных сетей на расстоянии не более 10 метров, работающей на частоте 2.4 ГГц, которая не подлежит лицензированию. Обычно такие сети формируются из портативных устройств, таких, как сотовые телефоны, КПК и лаптопы. В отличие от Wi-Fi, другой популярной беспроводной технологии, Bluetooth предоставляет более высокий уровень сервиса, например, файловые серверы типа FTP, передачу файлов, голоса, эмуляцию последовательного порта и другие. Стек протоколов Bluetooth во &os; реализован на основе технологии Netgraph (обратитесь к &man.netgraph.4;). Широкий спектр USB-устройств Bluetooth поддерживается драйвером &man.ng.ubt.4;. Устройства Bluetooth на основе набора микросхем Broadcom BCM2033 поддерживается драйвером &man.ng.bt3c.4;. Устройства Bluetooth, работающие через последовательные и UART-порты, поддерживаются драйверами &man.sio.4;, &man.ng.h4.4; и &man.hcseriald.8;. В этом разделе описывается использование Bluetooth-устройств, подключаемых через USB. Поддержка Bluetooth имеется во &os; 5.0 и более новых версиях системы. Подключение устройства По умолчанию драйверы устройств Bluetooth поставляются в виде модулей ядра. Перед подключением устройства вам необходимо подгрузить драйвер в ядро: &prompt.root; kldload ng_ubt Если Bluetooth-устройство в момент запуска системы подключено, то загружайте модуль из файла /boot/loader.conf: ng_ubt_load="YES" Подключите ваше USB-устройство. На консоли (или в журнале syslog) появится примерно такое сообщение: ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3, wMaxPacketSize=49, nframes=6, buffer size=294 Скопируйте файл /usr/share/examples/netgraph/bluetooth/rc.bluetooth в какое-нибудь подходящее место, например, в файл /etc/rc.bluetooth. Этот скрипт используется для запуска и остановки работы Bluetooth-стека. Перед отключением устройства рекомендуется остановить его работы, хотя (обычно) это не фатально. При запуске стека вы получите сообщения, подобные следующим: &prompt.root; /etc/rc.bluetooth start ubt0 BD_ADDR: 00:02:72:00:d4:1a Features: 0xff 0xff 0xf 00 00 00 00 00 <3-Slot> <5-Slot> <Encryption> <Slot offset> <Timing accuracy> <Switch> <Hold mode> <Sniff mode> <Park mode> <RSSI> <Channel quality> <SCO link> <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD> <Paging scheme> <Power control> <Transparent SCO data> Max. ACL packet size: 192 bytes Number of ACL packets: 8 Max. SCO packet size: 64 bytes Number of SCO packets: 8 HCI Host Controller Interface (HCI) Host Controller Interface (HCI) предоставляет интерфейс для управления контроллером передатчика и менеджером соединений, а также доступ к данным о состоянии оборудования и его управляющим регистрам. Этот интерфейс предоставляет унифицированный метод доступа к передающим возможностям Bluetooth. Уровень HCI на управляющей машине обменивается данными и командами с микрокодом HCI в оборудовании Bluetooth. Драйвер для Host Controller Transport Layer (то есть физической шины) предоставляет обоим слоям HCI возможность обмениваться данными друг с другом. Для одного Bluetooth-устройства создаётся один узел Netgraph типа hci. HCI-узел обычно подключается к узлу драйвера устройства Bluetooth (входящий поток) и к узлу L2CAP (исходящий поток). Все операции с HCI должны выполняться на узле HCI, но не на узле драйвера устройства. В качестве имени по умолчанию для узла HCI используется devicehci. Дополнительные подробности можно найти на справочной странице &man.ng.hci.4;. Одной из самой часто выполняемой задач является обнаружение Bluetooth-устройств в радиусе RF-доступности. Эта операция называется опросом (inquiry). Опрос и другие операции, связанные с HCI, выполняются при помощи утилиты &man.hccontrol.8;. Пример ниже показывает, как найти доступные устройства Bluetooth. Список таких устройств должен быть получен в течение нескольких секунд. Заметьте, что удалённые устройства будут отвечать на опрос, если только они находятся в режиме обнаруживаемости (discoverable). &prompt.user; hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result #0 BD_ADDR: 00:80:37:29:19:a4 Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 00 Page Scan Mode: 00 Class: 52:02:04 Clock offset: 0x78ef Inquiry complete. Status: No error [00] BD_ADDR является уникальным адресом устройства Bluetooth, вроде MAC-адресов сетевых адаптеров. Этот адрес необходим для дальнейшей работы с устройством. Адресу BD_ADDR можно присвоить удобное для чтения имя. Файл /etc/bluetooth/hosts содержит информацию об известных хостах Bluetooth. В следующем примере показано, как получить имя, назначенное удалённому устройству: &prompt.user; hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4 BD_ADDR: 00:80:37:29:19:a4 Name: Pav's T39 Если вы выполните опрос на другом Bluetooth-устройстве, но ваш компьютер будет опознан как your.host.name (ubt0). Имя, назначаемое локальному устройству, может быть в любой момент изменено. Система Bluetooth предоставляет услуги по соединениям типа точка-точка (при этом задействованы только два устройства Bluetooth) или точка-ко-многим-точкам. В последнем случае соединение используется совместно несколькими устройствам Bluetooth. В следующем примере показывается, как получить список активных для локального устройства соединений: &prompt.user; hccontrol -n ubt0hci read_connection_list Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State 00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN Идентификатор соединения (connection handle) полезен, когда необходимо прекратить соединение. Заметьте, что обычно нет нужды делать это вручную. Стек будет автоматически разрывать неактивные соединения. &prompt.root; hccontrol -n ubt0hci disconnect 41 Connection handle: 41 Reason: Connection terminated by local host [0x16] Обратитесь к помощи посредством hccontrol help для получения полного списка доступных HCI-команд. Большинство команд HCI для выполнения не требуют прав администратора системы. L2CAP Logical Link Control and Adaptation Protocol (L2CAP) Протокол L2CAP (Logical Link Control and Adaptation Protocol) предоставляет услуги по работе с данными, как ориентированные на соединения, так и без ориентации на них, протоколам более высокого уровня с возможностями мультиплексирования и обеспечением операций по сегментации и обратной сборке. L2CAP позволяет протоколам более высокого уровня и приложениям передавать и получать пакеты данных L2CAP длиной до 64 Кбайт. L2CAP основан на концепции каналов. Каналом является логическое соединение поверх соединения по радиоканалу. Каждый канал привязан к некоторому протоколу по принципу многие-к-одному. Несколько каналов могут быть привязаны к одному и тому же протоколу, но канал не может быть привязан к нескольким протоколам. Каждый пакет L2CAP, получаемый каналом, перенаправляется к соответствующему протоколу более высокого уровня. Несколько каналов могут совместно использовать одно и то же радиосоединение. Для одного Bluetooth-устройства создается один узел Netgraph типа l2cap. Узел L2CAP обычно подключается к узлу Bluetooth HCI (нижестоящий) и узлам Bluetooth-сокетов (вышестоящие). По умолчанию для узла L2CAP используется имя devicel2cap. Для получения дополнительной информации обратитесь к справочной странице по &man.ng.l2cap.4;. Полезной является программа &man.l2ping.8;, которая может использоваться для проверки связи с другими устройствами. Некоторые реализации Bluetooth могут не возвращать все данные, посылаемые им, так что 0 bytes в следующем примере - это нормально. &prompt.root; l2ping -a 00:80:37:29:19:a4 0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0 Утилита &man.l2control.8; используется для выполнения различных операций с узлами L2CAP. В этом примере показано, как получить список логических соединений (каналов) и перечень радиосоединений локального устройства: &prompt.user; l2control -a 00:02:72:00:d4:1a read_channel_list L2CAP channels: Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State 00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN &prompt.user; l2control -a 00:02:72:00:d4:1a read_connection_list L2CAP connections: Remote BD_ADDR Handle Flags Pending State 00:07:e0:00:0b:ca 41 O 0 OPEN Ещё одним диагностическим инструментом является &man.btsockstat.1;. Она выполняет действия, подобные тем, что обычно выполняет &man.netstat.1;, но со структурами данных, связанных с работой в сети Bluetooth. В примере ниже описывается то же самое логическое соединение, что и с &man.l2control.8; выше. &prompt.user; btsockstat Active L2CAP sockets PCB Recv-Q Send-Q Local address/PSM Foreign address CID State c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN Active RFCOMM sessions L2PCB PCB Flag MTU Out-Q DLCs State c2afe900 c2b53380 1 127 0 Yes OPEN Active RFCOMM sockets PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN RFCOMM Протокол RFCOMM Протокол RFCOMM эмулирует последовательные порты поверх протокола L2CAP. Он основан на ETSI-стандарте TS 07.10. RFCOMM представляет собой простой транспортный протокол, с дополнительными возможностями по эмуляции 9 цепей последовательных портов RS-232 (EIATIA-232-E). Протокол RFCOMM поддерживает одновременно до 60 соединений (каналов RFCOMM) между двумя устройствами Bluetooth. В рамках RFCOMM полный коммуникационный маршрут включает два приложения, работающие на разных устройствах (конечные коммуникационные точки) с коммуникационным сегментом между ними. RFCOMM предназначен для сокрытия приложений, использующих последовательные порты устройств, в которых они расположены. Коммуникационный сегмент по сути является Bluetooth-связью от одного устройства к другому (прямое соединение). RFCOMM имеет дело с соединением между устройствами в случае прямого соединения, или между устройством и модемом в сетевом случае. RFCOMM может поддерживать и другие конфигурации, такие, как модули, работающие через беспроводную технологию Bluetooth с одной стороны и предоставляющие проводное соединение с другой стороны. Во &os; протокол RFCOMM реализован на уровне сокетов Bluetooth. pairing Pairing of Devices По умолчанию связь Bluetooth не аутентифицируется, поэтому любое устройство может общаться с любым другим. Устройство Bluetooth (например, сотовый телефон) может задать обязательность аутентификации для предоставления определённого сервиса (в частности, услугу доступа по коммутируемой линии). Bluetooth-аутентификация обычно выполняется через PIN-коды. PIN-код представляет из себя ASCII-строку длиной до 16 символов. Пользователь обязан ввести один и тот же PIN-код на обоих устройствах. Как только он введёт PIN-код, оба устройства сгенерируют ключ связи. После этого ключ может быть сохранён либо в самом устройстве, либо на постоянном носителе. В следующий раз оба устройства будут использовать ранее сгенерированный ключ соединения. Процедура, описанная выше, носит название подгонки пары (pairing). Заметьте, что если ключ связи потерян любой из сторон, то подбор пары должен быть повторен. За обработку всех запросов на Bluetooth-аутентификацию отвечает даемон &man.hcsecd.8;. По умолчанию файл конфигурации называется /etc/bluetooth/hcsecd.conf. Пример раздела, содержащего информацию о сотовом телефоне с явно заданным PIN-кодом 1234 приведен ниже: device { bdaddr 00:80:37:29:19:a4; name "Pav's T39"; key nokey; pin "1234"; } Кроме длины, на PIN-коды не накладывается никаких ограничений. Некоторые устройства (например, Bluetooth-гарнитуры) могут иметь фиксированный встроенный PIN-код. Параметр позволяет запустить &man.hcsecd.8; как нефоновый процесс, что облегчает просмотр происходящих событий. Задайте получение парного ключа на удалённом устройстве и инициируйте Bluetooth-соединение с этим устройством. Удалённое устройство должно подтвердить получение пары и запросить PIN-код. Введите тот же самый код, что находится в hcsecd.conf. Теперь ваш ПК и удалённое устройство спарены. Альтернативным способом является инициация процесса создания пары на удалённом устройстве. Ниже даётся пример выдачи протокола команды hcsecd: hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 SDP Service Discovery Protocol (SDP) Протокол обнаружения сервисов SDP даёт возможность клиентским приложениям осуществлять поиск услуг, предоставляемых серверными приложениями, а также характеристик этих услуг. В перечень атрибутов сервиса включается тип класса предлагаемого сервиса и информация о механизме или протоколе, требуемом для использования сервиса. SDP подразумевает коммуникации между SDP-сервером и SDP-клиентом. Сервер поддерживает список сервисов, в котором описываются параметры сервисов, связанных с сервером. Каждая запись об услуге содержит информацию об одном сервисе. Клиент может запросить информацию об определённом сервисе, обслуживаемом SDP-сервером, выдавая SDP-запрос. Если клиент или приложение, связанное с клиентом, решат воспользоваться сервисом, то для его использования необходимо открыть отдельное соединение к устройству, предоставляющему сервис. SDP предоставляет механизм обнаружения услуг и их параметров, но не даёт механизма использования этих сервисов. Обычно SDP-клиент выполняет поиск услуг на основе некоторых желаемых характеристик услуг. Однако иногда возникает необходимость выяснить полный перечень типов услуг, предоставляемых SDP-сервером, не имея никакой информации об имеющихся сервисах. Такой процесс всех предлагаемых сервисов называется обзором (browsing). Bluetooth SDP сервер &man.sdpd.8; и клиент с интерфейсом командной строки &man.sdpcontrol.8; включены в стандартную поставку &os;. В следующем примере показано, как выполнять запрос на SDP-обзор. &prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec browse Record Handle: 00000000 Service Class ID List: Service Discovery Server (0x1000) Protocol Descriptor List: L2CAP (0x0100) Protocol specific parameter #1: u/int/uuid16 1 Protocol specific parameter #2: u/int/uuid16 1 Record Handle: 0x00000001 Service Class ID List: Browse Group Descriptor (0x1001) Record Handle: 0x00000002 Service Class ID List: LAN Access Using PPP (0x1102) Protocol Descriptor List: L2CAP (0x0100) RFCOMM (0x0003) Protocol specific parameter #1: u/int8/bool 1 Bluetooth Profile Descriptor List: LAN Access Using PPP (0x1102) ver. 1.0 ... и так далее. Заметьте, что каждый сервис имеет перечень атрибутов (например, канал RFCOMM). В зависимости от сервиса вам может потребоваться где-то сохранить эти атрибуты. Некоторые реализации Bluetooth не поддерживают просмотр сервисов и могут возвращать пустой список. В этом случае возможен поиск конкретной услуги. В примере ниже показано, как выполнить поиск службы OBEX Object Push (OPUSH): &prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH Во &os; предоставление сервисов клиентам Bluetooth осуществляется сервером &man.sdpd.8;: &prompt.root; sdpd Приложение на локальном сервере, желающее предоставить сервис Bluetooth удаленным клиентам, регистрирует сервис через локального даемона SDP. Пример такого приложения — &man.rfcomm.pppd.8;. После запуска оно регистрирует Bluetooth LAN сервис через локального даемона SDP. Список сервисов, зарегистрированных через локальный SDP сервер, может быть получен путем выдачи запроса на просмотр SDP через локальный контрольный канал: &prompt.root; sdpcontrol -l browse Доступ к сети по коммутируемой линии связи (DUN) и по протоколу PPP (LAN) Модуль работы с коммутируемым доступом к сети (DUN - Dial-Up Networking) в большинстве случаев используется с модемами и сотовыми телефонами. Этот модуль покрывает следующие случаи: сотовый телефон или модем используется вместе с компьютером в качестве беспроводного модема для подключения к серверу коммутируемого доступа в Интернет, или другой коммутируемой услуге; сотовый телефон или модем используется компьютером для приёма входящих соединений. Модуль доступа к сети по протоколу PPP (Network Access with PPP - LAN) может использоваться в следующих ситуациях: доступ к ЛВС для одного Bluetooth-устройства; доступ к ЛВС для нескольких Bluetooth-устройств; связь между двумя ПК (при помощи протокола PPP поверх эмулируемого последовательного канала связи). Во &os; оба случая реализуются при помощи сервисных программ &man.ppp.8; и &man.rfcomm.pppd.8; - это обработчик, преобразующий RFCOMM-соединения Bluetooth в нечто, с чем может работать PPP. Перед тем, как использовать любой модуль, в файле /etc/ppp/ppp.conf должна быть создана новая PPP-метка. Примеры использования можно найти в справочной странице к &man.rfcomm.pppd.8;. В следующем примере &man.rfcomm.pppd.8; будет использоваться для открытия RFCOMM-соединения к удалённому устройству с BD_ADDR 00:80:37:29:19:a4 на DUN RFCOMM-канале. Реальный номер RFCOMM-канала будет получаться с удалённого устройства через SDP. Возможно указать RFCOMM-канал вручную, и в этом случае &man.rfcomm.pppd.8; не будет выполнять SDP-запрос. Для нахождения RFCOMM-канала на удалённом устройстве используйте утилиту &man.sdpcontrol.8;. &prompt.root; rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup Для того, чтобы организовать сервис Network Access with PPP (LAN), необходимо запустить сервер &man.sdpd.8;. В файле /etc/ppp/ppp.conf должна быть создана новая запись для клиентов LAN. Примеры можно найти в справке по &man.rfcomm.pppd.8;. Наконец, запустите RFCOMM PPP сервер на существующем номере канала RFCOMM. Сервер RFCOMM PPP автоматически зарегистрирует Bluetooth LAN сервис через локальный SDP даемон. В примере ниже показано, как запустить сервер RFCOMM PPP. &prompt.root; rfcomm_pppd -s -C 7 -l rfcomm-server OBEX OBEX Object Push (OPUSH) Profile OBEX является широко используемым протоколом для простой передачи файлов между мобильными устройствами. В основном он используется в коммуникациях через инфракрасный порт для передачи файлов между ноутбуками или КПК, а также для пересылки визитных карточек или календарных планов между сотовыми телефонами и другими устройствами с персональными информационными менеджерами. Сервер и клиент OBEX реализованы в виде пакета стороннего разработчика obexapp, который доступен в виде порта comms/obexapp. Клиент OBEX используется для посылки или приёма объектов с сервера OBEX. Объектом, к примеру, может быть визитная карточка или указание. Клиент OBEX может получить номер RFCOMM-канала, указав вместо него имя сервиса. Поддерживаются следующие имена сервиса: IrMC, FTRN и OPUSH. Канал RFCOMM можно задать его номером. Ниже даётся пример сеанса OBEX, где с сотового телефона забирается объект с информацией об устройстве, а новый объект (визитная карточка) передаётся в каталог сотового телефона. &prompt.user; obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get get: remote file> telecom/devinfo.txt get: local file> devinfo-t39.txt Success, response: OK, Success (0x20) obex> put put: local file> new.vcf put: remote file> new.vcf Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20) Для того, чтобы предоставить сервис OBEX Push, должен быть запущен сервер &man.sdpd.8;. Должен быть создан корневой каталог, в котором будут сохраняться все поступающие объекты. По умолчанию корневым каталогом является /var/spool/obex. Наконец, запустите OBEX сервер на существующем номере канала RFCOMM. OBEX сервер автоматически зарегистрирует сервис OBEX Object Push через локального даемона SDP. В примере ниже показано, как запустить OBEX-сервер. &prompt.root; obexapp -s -C 10 Профиль последовательного порта (SPP) Профиль последовательного порта (SPP - Serial Port Profile) позволяет Bluetooth-устройствам осуществлять эмуляцию последовательного порта RS232 (или подобного). Этот профиль покрывает случаи, касающиеся работы унаследованных приложений с Bluetooth в качестве замены кабельному соединению, при это используется абстракция виртуального последовательного порта. Утилита &man.rfcomm.sppd.1; реализует профиль последовательного порта. В качестве виртуального последовательного порта используется псевдотерминал. В примере ниже показано, как подключиться к сервису Serial Port удалённого устройства. Заметьте, что вы не указываете RFCOMM-канал - &man.rfcomm.sppd.1; может получить его с удалённого устройства через SDP. Если вы хотите переопределить это, укажите RFCOMM-канал явно в командной строке. &prompt.root; rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6 rfcomm_sppd[94692]: Starting on /dev/ttyp6... После подключения псевдотерминал можно использовать как последовательный порт: &prompt.root; cu -l ttyp6 Решение проблем Удалённое устройство не подключается Некоторые старые Bluetooth-устройства не поддерживают переключение ролей. По умолчанию, когда &os; подтверждает новое соединение, она пытается выполнить переключение роли и стать ведущим устройством. Устройства, которые это не поддерживают, не смогут подключиться. Заметьте, что переключение ролей выполняется при установлении нового соединения, поэтому невозможно выяснить, поддерживает ли удалённое устройство переключение ролей. На локальной машине имеется возможность отключить переключение ролей при помощи HCI-параметра: &prompt.root; hccontrol -n ubt0hci write_node_role_switch 0 Что-то идёт не так, можно ли посмотреть, что в точности происходит? Да, можно. Воспользуйтесь пакетом hcidump-1.5 стороннего разработчика, который доступен для загрузки с . Утилита hcidump похожа на &man.tcpdump.1;. Она может быть использована для вывода на терминал содержимого Bluetooth-пакетов и сбрасывать пакеты Bluetooth в файл.
Steve Peterson Текст создал Мосты Введение подсеть IP сетевой мост Иногда полезно разделить одну физическую сеть (такую, как сегмент Ethernet) на два отдельных сегмента сети без необходимости создания подсетей IP и использования маршрутизатора для соединения сегментов. Устройство, которое соединяет две сети на такой манер, называется сетевым мостом (bridge). Система FreeBSD с двумя сетевыми адаптерами может выступать в роли моста. Мост работает на основе изучения адресов уровня MAC (адресов Ethernet) устройств на каждом из своих сетевых интерфейсах. Он перенаправляет трафик между двумя сетями, только когда адреса отправителя и получателя находятся в разных сетях. По многим параметрам мост работает также, как коммутатор Ethernet с малым количеством портов. Ситуации, когда можно использовать мосты На сегодняшний день есть две ситуации, когда можно использовать мост. Большой трафик в сегменте Первая ситуация возникает, когда ваша физическая сеть перегружена трафиком, но по каким-то соображениям вы не хотите разделять сеть на подсети и соединять их с помощью маршрутизатора. Давайте рассмотрим в качестве примера газету, в которой редакторский и производственный отделы находятся в одной и той же подсети. Пользователи в редакторском отделе все используют сервер A для служб доступа к файлам, а пользователи производственного отдела используют сервер B. Для объединения всех пользователей используется сеть Ethernet, а высокая нагрузка на сеть замедляет работу. Если пользователи редакторского отдела могут быть собраны в одном сегменте сети, а пользователи производственного отдела в другом, то два сетевых сегмента можно объединить мостом. Только сетевой трафик, предназначенный для интерфейсов с другой стороны моста, будет посылаться в другую сеть, тем самым снижая уровень нагрузки на каждый сегмент сети. Межсетевой экран с возможностями фильтрации/ограничения пропускной способности трафика межсетевой экран трансляция сетевых адресов Второй распространенной ситуацией является необходимость в обеспечении функций межсетевого экрана без трансляции сетевых адресов (NAT). Для примера можно взять маленькую компанию, которая подключена к своему провайдеру по каналу DSL или ISDN. Для неё провайдер выделил 13 глобально доступных IP-адресов для имеющихся в сети 10 персональных компьютеров. В такой ситуации использование межсетевого экрана на основе маршрутизатора затруднено из-за проблем с разделением на подсети. маршрутизатор DSL ISDN Межсетевой экран на основе моста может быть настроен и включен между маршрутизаторами DSL/ISDN без каких-либо проблем с IP-адресацией. Настройка моста Выбор сетевого адаптера Для работы моста требуются по крайней мере два сетевых адаптера. К сожалению, не все сетевые адаптеры во FreeBSD 4.0 поддерживают функции моста. Прочтите страницу Справочника по &man.bridge.4; для выяснения подробностей о поддерживаемых адаптерах. Перед тем, как продолжить, сначала установите и протестируйте два сетевых адаптера. Изменения в конфигурации ядра параметры ядра options BRIDGE Для включения поддержки функций моста в ядре, добавьте строчку options BRIDGE в файл конфигурации вашего ядра, и перестройте ядро. Поддержка функций межсетевого экрана межсетевой экран Если вы планируете использовать мост в качестве межсетевого экрана, вам нужно также добавить опции IPFIREWALL и PFIL_HOOKS. Прочтите , содержащий общую информацию о настройке моста в качестве межсетевого экрана. Если вам необходимо обеспечить прохождение не-IP пакетов (таких, как ARP) через мост, то имеется опция межсетевого экрана, которую можно задать. Это опция IPFIREWALL_DEFAULT_TO_ACCEPT. Заметьте, что при этом правило, используемое межсетевым экраном по умолчанию, меняется на разрешительное для всех пакетов. Перед тем, как задавать эту опцию, убедитесь, что вы понимаете работу вашего набора правил. Поддержка функций ограничения пропускной способности Если вы хотите использовать мост в качестве машины, ограничивающей пропускную способность, то добавьте в файл конфигурации ядра опцию DUMMYNET. Дополнительную информацию можно почерпнуть из страницы Справочника по &man.dummynet.4;. Включение функций моста Добавьте строку net.link.ether.bridge=1 в файл /etc/sysctl.conf для включения функций моста во время работы системы, и строку: net.link.ether.bridge_cfg=if1,if2 для включения функций моста для указанных интерфейсов (замените if1 и if2 на имена двух ваших сетевых интерфейсов). Если вы хотите, чтобы проходящие через мост пакеты фильтровались посредством &man.ipfw.8;, вы должны добавить строчку: net.link.ether.bridge_ipfw=1 Во &os; 5.2-RELEASE и последующих версиях нужно использовать вместо указанных следующие строки: net.link.ether.bridge.enable=1 net.link.ether.bridge.config=if1,if2 net.link.ether.bridge.ipfw=1 Дополнительные замечания Если вы хотите осуществлять удалённый доступ на мост через &man.ssh.1; из сети, то корректно назначить одному из сетевых адаптеров IP-адрес. Общепринято, что назначение адреса обоим сетевым адаптерам является не самой хорошей идеей. Если в вашей сети присутствует несколько мостов, не должно быть более одного маршрута между любыми двумя рабочими станциями. С технической точки зрения это означает отсутствие поддержки протокола spanning tree. Сетевой мост может увеличить задержки в замерах командой &man.ping.8;, особенно для трафика между двумя разными сегментами. Jean-François Dockès Текст обновил Alex Dupre Реорганизовал и улучшил Работа с бездисковыми станциями работа без диска Машина с FreeBSD может загружаться по сети и работать без наличия локального диска, используя файловые системы, монтируемые с сервера NFS. Кроме стандартных конфигурационных файлов, не нужны никакие модификации в системе. Такую систему легко настроить, потому что все необходимые элементы уже готовы: Имеется по крайней мере два возможных способа загрузки ядра по сети: PXE: Система &intel; Preboot eXecution Environment является формой загрузочного ПЗУ, встроенного в некоторые сетевые адаптеры или материнские платы. Обратитесь к справочной странице по &man.pxeboot.8; для получения более полной информации. Порт Etherboot (net/etherboot) генерирует код, который может применяться в ПЗУ для загрузки ядра по сети. Код может быть либо прошит в загрузочный PROM на сетевом адаптере, либо загружен с локальной дискеты (или винчестера), или с работающей системы &ms-dos;. Поддерживаются многие сетевые адаптеры. Примерный скрипт (/usr/share/examples/diskless/clone_root) облегчает создание и поддержку корневой файловой системы рабочей станции на сервере. Скрипт, скорее всего, потребует некоторых настроек, но он позволит вам быстро начать работу. Стандартные файлы начального запуска системы, располагающиеся в /etc, распознают и поддерживают загрузку системы в бездисковом варианте. Подкачка, если она нужна, может выполняться через файл NFS либо на локальный диск. Существует много способов настройки бездисковой рабочей станции. При этом задействованы многие компоненты, и большинство из них могут быть настроены для удовлетворения ваших вкусов. Далее будет описаны варианты полной настройки системы, при этом упор будет делаться на простоту и совместимость с стандартной системой скриптов начальной загрузки FreeBSD. Описываемая система имеет такие характеристики: Бездисковые рабочие станции совместно используют файловую систему / в режиме только чтения, а также используют /usr совместно тоже в режиме только чтения. Корневая файловая система является копией стандартной корневой системы FreeBSD (обычно сервера), с некоторыми настроечными файлами, измененными кем-то специально для бездисковых операций или, возможно, для рабочей станции, которой она предназначена. Части корневой файловой системы, которые должны быть доступны для записи, перекрываются файловыми системами &man.mfs.8; (&os; 4.X) или &man.md.4; (&os; 5.X). Любые изменения будут потеряны при перезагрузках системы. Ядро передается и загружается посредством Etherboot или PXE, и в некоторых ситуациях может быть использован любой из этих методов. Как описано, эта система не защищена. Она должна располагаться в защищенной части сети, а другие хосты не должны на нее полагаться. Вся информация этого раздела была протестирована с релизами &os; 4.9-RELEASE и 5.2.1-RELEASE. Текст структурирован преимущественно для использования с 4.X. Отличия для 5.X упоминаются особо. Общая информация Настройка бездисковых рабочих станций относительно проста, но в то же время легко сделать ошибку. Иногда сложно диагностировать эти ошибки по нескольким причинам. Например: Параметры компиляции могут по-разному проявлять себя во время работы. Сообщения об ошибках бывают загадочны или вовсе отсутствуют. В данной ситуации некоторые знания, касающиеся используемых внутренних механизмов, очень полезны при разрешении проблем, которые могут возникнуть. Для выполнения успешной загрузки необходимо произвести несколько операций: Компьютеру необходимо получить начальные параметры, такие как собственный IP адрес, имя исполняемого файла, корневой каталог. Для этого используются протоколы DHCP или BOOTP. DHCP это совместимое расширение BOOTP, используются те же номера портов и основной формат пакетов. Возможна настройка системы для использования только BOOTP. Серверная программа &man.bootpd.8; включена в основную систему &os;. Тем не менее, у DHCP есть множество преимуществ над BOOTP (лучше файлы настройки, возможность использования PXE, плюс многие другие преимущества, не относящиеся непосредственно к бездисковым операциям), и мы в основном будем описывать настройку DHCP, с эквивалентными примерами для &man.bootpd.8;, когда это возможно. Пример конфигурации будет использовать пакет ISC DHCP (релиз 3.0.1.r12 был установлен на тестовом сервере). Компьютеру требуется загрузить в локальную память одну или несколько программ. Используются TFTP или NFS. Выбор между TFTP или NFS производится во время компилирования в нескольких местах. Часто встречающаяся ошибка это указание имен файлов для другого протокола: TFTP обычно загружает все файлы с одного каталога сервера, и принимает имена файлов относительно этого каталога. NFS нужны абсолютные пути к файлам. Необходимо инициализировать и выполнить возможные промежуточные программы загрузки и ядро. В этой области существует несколько важных вариаций: PXE загрузит &man.pxeboot.8;, являющийся модифицированной версией загрузчика третьей стадии &os;. &man.loader.8; получит большинство параметров, необходимых для старта системы, и оставит их в окружении ядра до контроля передачи. В этом случае возможно использование ядра GENERIC. Etherboot, непосредственно загрузит ядро, с меньшей подготовкой. Вам потребуется собрать ядро со специальными параметрами. PXE и Etherboot работают одинаково хорошо с системами 4.X. Поскольку ядро 5.X обычно позволяет &man.loader.8; выполнить больше предварительной работы, метод PXE на системах 5.X предпочтителен. Если ваш BIOS и сетевые карты поддерживают PXE, используйте его. Однако, все же возможен запуск системы 5.X с Etherboot. Наконец, компьютеру требуется доступ к файловым системам. NFS используется во всех случаях. Обратитесь также к странице справочника &man.diskless.8;. Инструкции по настройке Конфигурация с использованием ISC DHCP DHCP бездисковые конфигурации Сервер ISC DHCP может обрабатывать как запросы BOOTP, так и запросы DHCP. Начиная с релиза 4.9, ISC DHCP 3.0 не включается в поставку системы. Сначала вам нужно будет установить порт net/isc-dhcp3-server или соответствующий пакет. После установки ISC DHCP ему для работы требуется конфигурационный файл (обычно называемый /usr/local/etc/dhcpd.conf). Вот прокомментированный пример, где хост margaux использует Etherboot, а хост corbieres использует PXE: default-lease-time 600; max-lease-time 7200; authoritative; option domain-name "example.com"; option domain-name-servers 192.168.4.1; option routers 192.168.4.1; subnet 192.168.4.0 netmask 255.255.255.0 { use-host-decl-names on; option subnet-mask 255.255.255.0; option broadcast-address 192.168.4.255; host margaux { hardware ethernet 01:23:45:67:89:ab; fixed-address margaux.example.com; next-server 192.168.4.4; filename "/data/misc/kernel.diskless"; option root-path "192.168.4.4:/data/misc/diskless"; } host corbieres { hardware ethernet 00:02:b3:27:62:df; fixed-address corbieres.example.com; next-server 192.168.4.4; filename "pxeboot"; option root-path "192.168.4.4:/data/misc/diskless"; } } Этот параметр указывает dhcpd посылать значения деклараций host как имя хоста для бездисковой машины. Альтернативным способом было бы добавление option host-name margaux внутри объявлений host. Директива next-server определяет сервер TFTP или NFS, используемый для получения загрузчика или файла ядра (по умолчанию используется тот же самый хост, на котором расположен сервер DHCP). Директива filename определяет файл, который Etherboot или PXE будут загружать для следующего шага выполнения. Он должен быть указан в соответствии с используемым методом передачи. Etherboot может быть скомпилирован для использования NFS или TFTP. &os; порт по умолчанию использует NFS. PXE использует TFTP, поэтому здесь применяются относительные пути файлов (это может зависеть от настроек TFTP сервера, но обычно довольно типично). Кроме того, PXE загружает pxeboot, а не ядро. Существуют другие интересные возможности, такие как загрузка pxeboot из каталога /boot &os; CD-ROM (поскольку &man.pxeboot.8; может загружать GENERIC ядро, это делает возможной загрузку с удаленного CD-ROM). Параметр root-path определяет путь к корневой файловой системе, в обычной нотации NFS. При использовании PXE, можно оставить IP хоста отключенным, если параметр ядра BOOTP не используется. Затем NFS сервер может использоваться так же, как и TFTP. Настройка с использованием BOOTP BOOTP бездисковые конфигурации Далее описана эквивалентная конфигурация с использованием bootpd (для одного клиента). Она будет располагаться в /etc/bootptab. Пожалуйста, отметьте, что Etherboot должен быть откомпилирован с нестандартной опцией NO_DHCP_SUPPORT для того, чтобы можно было использовать BOOTP, и что для работы PXE необходим DHCP. Единственным очевидным преимуществом bootpd является его наличие в поставке системы. .def100:\ :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\ :sm=255.255.255.0:\ :ds=192.168.4.1:\ :gw=192.168.4.1:\ :hd="/tftpboot":\ :bf="/kernel.diskless":\ :rp="192.168.4.4:/data/misc/diskless": margaux:ha=0123456789ab:tc=.def100 Подготовка программы загрузки при помощи <application>Etherboot</application> Etherboot Сайт Etherboot содержит подробную документацию, в основном предназначенную для систем Linux, но несомненно, она полезна. Далее будет просто кратко описано, как вы должны использовать Etherboot в системе FreeBSD. Сначала вы должны установить пакет или порт net/etherboot. Вы можете изменить настройку Etherboot (например, для использования TFTP вместо NFS) путем редактирования файла Config в каталоге исходных текстов Etherboot. В нашей ситуации мы будем использовать загрузочную дискету. Для других методов (PROM или программа &ms-dos;) пожалуйста, обратитесь к документации по Etherboot. Для создания загрузочной дискеты, вставьте дискету в дисковод на машине, где установлен Etherboot, затем перейдите в каталог src в дереве Etherboot и наберите: &prompt.root; gmake bin32/devicetype.fd0 devicetype зависит от типа адаптера Ethernet на бездисковой рабочей станции. Обратитесь к файлу NIC в том же самом каталоге для определения правильного значения для devicetype. Загрузка с <acronym>PXE</acronym> По умолчанию, &man.pxeboot.8; загружает ядро через NFS. Он может быть скомпилирован для использования вместо него TFTP путем указания параметра LOADER_TFTP_SUPPORT в /etc/make.conf. Смотрите комментарии в /etc/defaults/make.conf (или /usr/share/examples/etc/make.conf систем 5.X) с инструкциями. Есть два не документированных параметра make.conf, которые могут быть полезны для настройки бездискового компьютера с последовательной консолью: BOOT_PXELDR_PROBE_KEYBOARD, и BOOT_PXELDR_ALWAYS_SERIAL (последняя существует только в &os; 5.X). Для использования PXE при загрузке компьютера вам обычно потребуется выбрать параметр Boot from network (загрузка по сети) в настройках BIOS, или нажать функциональную клавишу во время загрузки PC. Настройка серверов <acronym>TFTP</acronym> и <acronym>NFS</acronym> TFTP бездисковые конфигурации NFS бездисковые конфигурации Если вы используете PXE или Etherboot, настроенные для использования TFTP, вам нужно включить tftpd на файловом сервере: Создайте каталог, файлы которого будет обслуживать tftpd, например, /tftpboot. Добавьте в ваш /etc/inetd.conf такую строчку: tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot Бывает, что некоторым версиям PXE требуется TCP-вариант TFTP. В таком случае добавьте вторую строчку, заменяющую dgram udp на stream tcp. Укажите inetd на повторное чтение своего конфигурационного файла: &prompt.root; kill -HUP `cat /var/run/inetd.pid` Вы можете поместить каталог tftpboot в любом месте на сервере. Проверьте, что это местоположение указано как в inetd.conf, так и в dhcpd.conf. Во всех случаях, вам также нужно включить NFS и экспортировать соответствующую файловую систему на сервере NFS. Добавьте следующее в /etc/rc.conf: nfs_server_enable="YES" Экспортируйте файловую систему, в которой расположен корневой каталог для бездисковой рабочей станции, добавив следующую строку в /etc/exports (подправьте точку монтирования и замените margaux corbieres именами бездисковых рабочих станций): /data/misc -alldirs -ro margaux corbieres Укажите mountd на повторное чтение настроечного файла. На самом деле если вам потребовалось на первом шаге включить NFS в /etc/rc.conf, то вам нужно будет выполнить перезагрузку. &prompt.root; kill -HUP `cat /var/run/mountd.pid` Построение ядра для бездисковой рабочей станции бездисковые конфигурации настройка ядра При использовании Etherboot, вам потребуется создать конфигурационный файл ядра для бездискового клиента со следующими параметрами (вдобавок к обычным): options BOOTP # Use BOOTP to obtain IP address/hostname options BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info Вам может потребоваться использовать BOOTP_NFSV3, BOOT_COMPAT и BOOTP_WIRED_TO (посмотрите LINT в 4.X или NOTES в 5.X). Эти имена параметров сложились исторически, и могут немного ввести в заблуждение, поскольку включают необязательное использование DHCP и BOOTP в ядре (возможно включение обязательного использования BOOTP или DHCP use). Постройте ядро (обратитесь к ) и скопируйте его в каталог, указанный в dhcpd.conf. При использовании PXE, сборка ядра с вышеприведенными параметрами не является совершенно необходимой (хотя желательна). Включение этих параметров приведет к выполнению большинства DHCP запросов во время загрузки ядра, с небольшим риском несоответствия новых значений и значений, полученных &man.pxeboot.8; в некоторых особых случаях. Преимущество использования в том, что в качестве побочного эффекта будет установлено имя хоста. Иначе вам потребуется установить имя хоста другим методом, например в клиент-специфичном файле rc.conf. Для включения возможности загрузки с Etherboot, в ядро 5.X необходимо включить устройство hints. Вам потребуется установить в файле конфигурации следующий параметр (см. файл комментариев NOTES): hints "GENERIC.hints" Подготовка корневой файловой системы корневая файловая система бездисковые конфигурации Вам нужно создать корневую файловую систему для бездисковых рабочих станций, в местоположении, заданном как root-path в dhcpd.conf. В следующем разделе описаны два способа, чтобы сделать это. Использование скрипта <filename>clone_root</filename> Это самый простой способ создания корневой файловой системы, но на данный момент он не поддерживается в &os; 4.X. Этот shell скрипт находится в /usr/share/examples/diskless/clone_root, и требует настройки, по крайней мере, задания того места, где будет создана файловая система (переменная DEST). Прочтите комментарии в начале скрипта для получения указаний. Там описано, как строится основная файловая система, и как файлы могут быть выборочно заменены версиями, предназначенными для работы без диска, для подсети или для отдельной рабочей станции. Также здесь даются примеры бездисковых файлов /etc/fstab и /etc/rc.conf. Файлы README в /usr/share/examples/diskless много интересной информации, но вместе с другими примерами из каталога diskless они на самом деле описывают метод настройки, который отличается от того, что используется в clone_root и стартовых скриптах системы из /etc, этим несколько запутывая дело. Используйте их только для справки, за исключением того случая, когда вы выберете метод, ими описываемый, и тогда вам нужны исправленные скрипты rc. Использование стандартной процедуры <command>make world</command> Этот метод может быть применен к &os; 4.X или 5.X и установит новую систему (не только корневую) в DESTDIR. Все, что вам потребуется сделать, это просто выполнить следующий скрипт: #!/bin/sh export DESTDIR=/data/misc/diskless mkdir -p ${DESTDIR} cd /usr/src; make world && make kernel cd /usr/src/etc; make distribution Как только это будет сделано, вам может потребоваться настроить /etc/rc.conf и /etc/fstab, помещенные в DESTDIR, в соответствии с вашими потребностями. Настройка области подкачки Если это нужно, то файл подкачки, расположенный на сервере, можно использовать посредством NFS. Один из методов, используемых для этого, не поддерживается в релизах 5.X. Подкачка по <acronym>NFS</acronym> в &os; 4.X Местоположение и размер файла подкачки могут быть указаны &os;-специфичными параметрами BOOTP/DHCP 128 и 129. Примеры файлов настройки для ISC DHCP 3.0 или bootpd приведены ниже: Добавьте следующие строки в dhcpd.conf: # Global section option swap-path code 128 = string; option swap-size code 129 = integer 32; host margaux { ... # Standard lines, see above option swap-path "192.168.4.4:/netswapvolume/netswap"; option swap-size 64000; } swap-path это путь к каталогу, где находятся файлы подкачки. Название каждого файла имеет вид swap.client-ip. Старые версии dhcpd использовали синтаксис option option-128 "..., который больше не поддерживается. Во /etc/bootptab будет использоваться такой синтаксис: T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00 В файле /etc/bootptab размер файла подкачки должен быть записан в шестнадцатеричном формате. На файловом сервере NFS создайте файл (или файлы) подкачки: &prompt.root; mkdir /netswapvolume/netswap &prompt.root; cd /netswapvolume/netswap &prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6 &prompt.root; chmod 0600 swap.192.168.4.6 192.168.4.6 является IP-адресом бездискового клиента. На файловом сервере NFS, в /etc/exports добавьте такую строку: /netswapvolume -maproot=0:10 -alldirs margaux corbieres Затем укажите mountd на повторное чтение файла exports, как описано ранее. Подкачка по <acronym>NFS</acronym> в &os; 4.X Положение и размер файла подкачки могут быть указаны в &os;-специфичных параметрах BOOTP/DHCP с номерами 128 и 129. Ниже приведены примеры файлов настройки для ISC DHCP 3.0 или bootpd: Добавьте следующие строки к dhcpd.conf: # Global section option swap-path code 128 = string; option swap-size code 129 = integer 32; host margaux { ... # Standard lines, see above option swap-path "192.168.4.4:/netswapvolume/netswap"; option swap-size 64000; } swap-path это путь к каталогу, где расположены файлы подкачки. Файлы называются swap.client-ip. Старые версии dhcpd используют синтаксис option option-128 "..., которые более не поддерживаются. /etc/bootptab вместо этого использует следующий синтаксис: T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00 В /etc/bootptab, размер подкачки должен вычисляться в шестнадцатеричном формате. Создайте на NFS сервере с файлами подкачки файлы: &prompt.root; mkdir /netswapvolume/netswap &prompt.root; cd /netswapvolume/netswap &prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6 &prompt.root; chmod 0600 swap.192.168.4.6 192.168.4.6 это IP адрес бездискового клиента. На файловом сервере NFS с файлами подкачки добавьте следующую строку к /etc/exports: /netswapvolume -maproot=0:10 -alldirs margaux corbieres Затем заставьте mountd перечитать конфигурационные файлы как было показано выше. Различные проблемы Работа с <filename>/usr</filename>, доступной только для чтения бездисковые конфигурации /usr только для чтения Если бездисковая рабочая станция настроена на запуск X, вам нужно подправить настроечный файл для XDM, который по умолчанию помещает протокол ошибок в /usr. Использование не-FreeBSD сервера Если сервер с корневой файловой системой работает не под управлением FreeBSD, вам потребуется создать корневую файловую систему на машине FreeBSD, а затем скопировать ее в нужно место, при помощи tar или cpio. В такой ситуации иногда возникают проблемы со специальными файлами в /dev из-за различной разрядности целых чисел для старшего/младшего чисел. Решением этой проблемы является экспортирование каталога с не-FreeBSD сервера, монтирование его на машине с FreeBSD и запуск скрипта MAKEDEV на машине с FreeBSD для создания правильных файлов устройств (во FreeBSD 5.0 и более поздних версиях используется &man.devfs.5; для создания файлов устройств прозрачно для пользователя, запуск MAKEDEV в этих версиях бессмысленно). ISDN ISDN Полезным источником информации о технологии ISDN и его аппаратном обеспечении является Страница Дэна Кегела (Dan Kegel) об ISDN. Быстрое введение в ISDN: Если вы живёте в Европе, то вам может понадобиться изучить раздел об ISDN-адаптерах. Если вы планируете использовать ISDN в основном для соединений с Интернет через провайдера по коммутируемому, невыделенному соединению, рекомендуется посмотреть информацию о терминальных адаптерах. Это даст вам самую большую гибкость и наименьшее количество проблем при смене провайдера. Если вы объединяете две локальные сети или подключаетесь к Интернет через постоянное ISDN-соединение, рекомендуем остановить свой выбор на отдельном мосте/маршрутизаторе. Стоимость является важным фактором при выборе вашего решения. Далее перечислены все возможности от самого дешевого до самого дорогого варианта. Hellmuth Michaelis Текст предоставил Адаптеры ISDN ISDN адаптеры Реализация ISDN во FreeBSD поддерживает только стандарт DSS1/Q.931 (или Евро-ISDN) при помощи пассивных адаптеров. Начиная с FreeBSD 4.4 поддерживаются некоторые активные адаптеры, прошивки которых поддерживают также другие сигнальные протоколы; также сюда впервые включена поддержка адаптеров ISDN Primary Rate (PRI). Пакет программ isdn4bsd позволяет вам подключаться к другим маршрутизаторам ISDN при помощи IP поверх DHLC, либо при помощи синхронного PPP; либо при помощи PPP на уровне ядра с isppp, модифицированного драйвера &man.sppp.4;, или при помощи пользовательского &man.ppp.8;. При использовании пользовательского &man.ppp.8; возможно использование двух и большего числа B-каналов ISDN. Также имеется приложение, работающее как автоответчик, и много утилит, таких, как программный модем на 300 Бод. Во FreeBSD поддерживается все возрастающее число адаптеров ISDN для ПК, и сообщения показывают, что они успешно используются по всей Европе и других частях света. Из пассивных адаптеров ISDN поддерживаются в основном те, которые сделаны на основе микросхем Infineon (бывший Siemens) ISAC/HSCX/IPAC ISDN, а также адаптеры ISDN с микросхемами от Cologne Chip (только для шины ISA), адаптеры PCI с микросхемами Winbond W6692, некоторые адаптеры с набором микросхем Tiger300/320/ISAC и несколько адаптеров, построенных на фирменных наборах микросхем, такие, как AVM Fritz!Card PCI V.1.0 и AVM Fritz!Card PnP. На данный момент из активных адаптеров ISDN поддерживаются AVM B1 (ISA и PCI) адаптеры BRI и AVM T1 PCI адаптеры PRI. Документацию по isdn4bsd можно найти в каталоге /usr/share/examples/isdn/ вашей системы FreeBSD или на домашней странице isdn4bsd, на которой также размещены ссылки на советы, замечания по ошибкам и более подробную информацию, например, на руководство по isdn4bsd. Если вы заинтересованы в добавлении поддержки для различных протоколов ISDN, не поддерживаемых на данный момент адаптеров ISDN для PC или каких-то других усовершенствованиях isdn4bsd, пожалуйста, свяжитесь с &a.hm;. Для обсуждения вопросов, связанных с установкой, настройкой и устранением неисправностей isdn4bsd, имеется список рассылки &a.isdn.name;. subscribe freebsd-isdn Терминальные адаптеры ISDN Терминальные адаптеры (TA) для ISDN выполняют ту же роль, что и модемы для обычных телефонных линий. модем Большинство TA используют стандартный набор AT-команд Hayes-модемов, и могут использоваться в качестве простой замены для модемов. TA будут работать точно так же, как и модемы, за исключением скорости соединения и пропускной способности, которые будут гораздо выше, чем у вашего старого модема. Вам потребуется настроить PPP точно также, как и в случае использования модема. Проверьте, что вы задали скорость работы последовательного порта максимально высокой. PPP Главным преимуществом использования TA для подключения к провайдеру Интернет является возможность использования динамического PPP. Так как пространство адресов IP истощается все больше, большинство провайдеров не хочет больше выдавать вам статический IP-адрес. Большинство же маршрутизаторов не может использовать динамическое выделение IP-адресов. TA полностью полагаются на даемон PPP, который используете из-за его возможностей и стабильности соединения. Это позволяет вам при использовании FreeBSD легко заменить модем на ISDN, если у вас уже настроено соединение PPP. Однако, в тоже время любые проблемы, которые возникают с программой PPP, отражаются и здесь. Если вы хотите максимальной надёжности, используйте PPP на уровне параметра ядра, а не пользовательский PPP. Известно, что следующие TA работают с FreeBSD: Motorola BitSurfer и Bitsurfer Pro Adtran Большинство остальных TA, скорее всего, тоже будут работать, производители TA прилагают все усилия для обеспечения поддержки практически всего набора стандартных AT-команд модема. Как и в случае модемов проблемой использования внешнего TA является потребность в хорошем последовательном адаптере на вашем компьютере. Вы должны прочесть учебник Последовательные устройства во FreeBSD для того, чтобы в деталях понять работу последовательных устройств и осознать различие между асинхронными и синхронными последовательными портами. TA, работающий со стандартным последовательным (асинхронным) портом PC, ограничивает вас скоростью 115.2 Кбит/с, хотя реально у вас соединение на скорости 128 Кбит/с. Чтобы использовать 128 Кбит/с, которые обеспечивает ISDN, полностью, вы должны подключить TA к синхронному последовательному адаптеру. Не обманывайте себя, думая, что покупка встроенного TA поможет избежать проблемы синхронности/асинхронности. Встроенные TA просто уже имеют внутри стандартный последовательный порт PC. Все, что при этом достигается - это экономия дополнительных последовательного кабеля и электрической розетки. Синхронный адаптер с TA по крайней мере так же быстр, как и отдельный маршрутизатор, а если он работает под управлением машины класса 386 с FreeBSD, то это гораздо более гибкое решение. Выбор между использованием синхронного адаптера/TA или отдельного маршрутизатора в большей степени является религиозным вопросом. По этому поводу в списках рассылки была некоторая дискуссия. Рекомендуем поискать в архивах обсуждение полностью. Отдельные мосты/маршрутизаторы ISDN ISDN отдельно стоящие мосты/маршрутизаторы Мосты или маршрутизаторы ISDN не так уж специфичны для FreeBSD или для любой другой операционной системы. Для более подробного описания технологий маршрутизации и работы мостов, пожалуйста, обратитесь к справочникам по сетевым технологиям. В контексте этого раздела термины маршрутизатор и сетевой мост будут использоваться как взаимозаменяемые. Вместе с падением цен на простые мосты/маршрутизаторы ISDN, они становятся все более популярными. Маршрутизатор ISDN представляет собой маленькую коробочку, которая подключается непосредственно в вашу сеть Ethernet, и поддерживает связь с другим мостом/маршрутизатором. Всё программное обеспечение для работы по PPP и другим протоколам встроено в маршрутизатор. Маршрутизатор обладает гораздо большей пропускной способностью, чем стандартный TA, так как он использует полное синхронное соединение ISDN. Основной проблемой с маршрутизаторами и мостами ISDN является то, что их совместная работа с оборудованием других производителей может оказаться под вопросом. Если вы собираетесь подключаться к провайдеру, то вы должны обсудить с ним то, что вам нужно. Если вы планируете объединить два сегмента локальной сети, например, домашнюю сеть с сетью офиса, это самое простое решение с минимальными издержками на обслуживание. Так как вы покупаете оборудование для обоих сторон соединения, то можете быть уверены, что связь будет работать нормально. Например, для соединения домашнего компьютера или сети подразделения к сети центрального офиса, может использоваться такая настройка: Офис подразделения или домашняя сеть 10 base 2 Сеть построена в топологии общей шины на основе 10 base 2 Ethernet (thinnet - тонкий Ethernet). Подключите маршрутизатор к сетевому кабелю с помощью трансивера AUI/10BT, если это нужно. ---Рабочая станция Sun | ---Машина с FreeBSD | ---Windows 95 | Отдельный маршрутизатор | Канал ISDN BRI 10 Base 2 Ethernet Если ваш домашний или удаленный офис представляет собой один компьютер, то для непосредственного подключения к маршрутизатору вы вы можете использовать витую пару с перекрестным соединениям. Центральный офис или другая локальная сеть 10 base T Сеть построена в топологии звезды на основе 10 Base T Ethernet (витая пара). -------Сервер Novell | H | | ---Sun | | | U ---FreeBSD | | | ---Windows 95 | B | |___---Отдельно стоящий маршрутизатор | Канал ISDN BRI Схема сети с ISDN Одним большим преимуществом большинства маршрутизаторов/мостов является то, что они позволяют иметь 2 отдельных независимых соединения PPP к 2 различным сайтам одновременно. Это не поддерживается в большинстве TA, кроме специальных (обычно дорогих) моделей, имеющих по два последовательных порта. Не путайте это с балансировкой нагрузки, MPP и так далее. Это может оказаться весьма полезной особенностью, например, если у вас имеется постоянное ISDN-соединение в вашем офисе, и вы хотите им воспользоваться, но не хотите задействовать дополнительный канал ISDN на работе. Маршрутизатор, расположенный в офисе, может использовать выделенное соединение по каналу B (64 Кбит/с) для Интернет, и одновременно другой канал B для отдельного соединения для передачи данных. Второй канал B может использоваться для входящих, исходящих и динамически распределяемых соединений (MPP и так далее) совместно с первым каналом B для повышения пропускной способности. IPX/SPX Мост Ethernet также позволяет вам передавать больше, чем просто трафик IP. Вы сможете передавать IPX/SPX и любые другие протоколы, которые вы используете. Chern Lee Текст предоставил Даемон преобразования сетевых адресов (natd) Обзор natd Даемон преобразования сетевых адресов (Network Address Translation) во FreeBSD, широко известный как &man.natd.8;, является даемоном, который принимает входящие IP-пакеты, изменяет адрес отправителя на адрес локальной машины и повторно отправляет эти пакеты в потоке исходящих пакетов. &man.natd.8; делает это, меняя IP-адрес отправителя и порт таким образом, что когда данные принимаются обратно, он может определить расположение источника начальных данных и переслать их машине, которая запрашивала данные изначально. совместное использование доступа в Интернет сокрытие IP Чаще всего NAT используется для организации так называемого Совместного Использования Интернет. Настройка Из-за исчерпания пространства адресов в IPv4 и увеличения количества пользователей высокоскоростных каналов связи, таких, как кабельное подключение или DSL, необходимость в решении по Совместному Использованию Интернет растёт. Возможность подключить несколько компьютеров через единственное соединение и IP-адрес делает &man.natd.8; подходящим решением. Чаще всего у пользователя имеется машина, подключенная к кабельному каналу или каналу DSL с одним IP-адресом и есть желание использовать этот единственный подключенный компьютер для организации доступа в Интернет другим компьютерам в локальной сети. Для этого машина FreeBSD, находящаяся в Интернет, должна выступать в роли шлюза. Эта шлюзовая машина должна иметь два сетевых адаптера—один для подключения к маршрутизатору Интернет, а другой для подключения к ЛВС. Все машины в локальной сети подключаются через сетевой концентратор или коммутатор. _______ __________ ________ | | | | | | | Hub |-----| Client B |-----| Router |----- Internet |_______| |__________| |________| | ____|_____ | | | Client A | |__________| Структура сети Подобная конфигурация часто используется для совместного использования доступа в Интернет. Одна из подключенных к локальной сети машин подключается к Интернет. Остальные машины работают с Интернет посредством этой шлюзовой машины. ядро настройка Настройка В файле конфигурации ядра должны присутствовать следующие параметры: options IPFIREWALL options IPDIVERT options PFIL_HOOKS Версиям &os; до 5.3-RELEASE не требуется строка options PFIL_HOOKS. Дополнительно, если это нужно, можно добавить следующее: options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE В файле /etc/rc.conf должны быть такие строки: gateway_enable="YES" firewall_enable="YES" firewall_type="OPEN" natd_enable="YES" natd_interface="fxp0" natd_flags="" Указывает машине выступать в качестве шлюза. Выполнение команды sysctl net.inet.ip.forwarding=1 приведёт к тому же самому результату. При загрузке включает использование правил межсетевого экрана из файла /etc/rc.firewall. Здесь задается предопределенный набор правил межсетевого экрана, который разрешает все. Посмотрите файл /etc/rc.firewall для нахождения дополнительных типов. Указывает, через какой интерфейс передавать пакеты (интерфейс, подключенный к Интернет). Любые дополнительный параметры, передаваемые при запуске даемону &man.natd.8;. При использовании вышеуказанных параметров в файле /etc/rc.conf при загрузке будет запущена команда natd -interface fxp0. Эту команду можно запустить и вручную. Если для передачи &man.natd.8; набирается слишком много параметров, возможно также использовать конфигурационный файл. В этом случае имя настроечного файла должно быть задано добавлением следующей строки в /etc/rc.conf: natd_flags="-f /etc/natd.conf" Файл /etc/natd.conf будет содержать перечень конфигурационных параметров, по одному в строке. К примеру, для примера из следующего раздела будет использоваться такой файл: redirect_port tcp 192.168.0.2:6667 6667 redirect_port tcp 192.168.0.3:80 80 Для получения более полной информации о конфигурационном файле прочтите страницу справки по &man.natd.8; относительно параметра . Каждой машине и интерфейсу в ЛВС должен быть назначен IP-адрес из адресного пространства частных сетей, как это определено в RFC 1918, а в качестве маршрутизатора по умолчанию должен быть задан IP-адрес машины с natd из внутренней сети. Например, клиенты A и B в ЛВС имеют IP-адреса 192.168.0.2 и 192.168.0.3, а интерфейс машины с natd в локальной сети имеет IP-адрес 192.168.0.1. Маршрутизатором по умолчанию для клиентов A и B должна быть назначена машина с natd, то есть 192.168.0.1. Внешний, или Интернет-интерфейс машины с natd не требует особых настроек для работы &man.natd.8;. Перенаправление портов Минусом использования &man.natd.8; является то, что машины в локальной сети недоступны из Интернет. Клиенты в ЛВС могут выполнять исходящие соединения во внешний мир, но не могут обслуживать входящие. Это является проблемой при запуске служб Интернет на клиентских машинах в локальной сети. Простым решением является перенаправление некоторых портов Интернет машины с natd на клиента локальной сети. Пусть, к примеру, сервер IRC запущен на клиенте A, а веб-сервер работает на клиенте B. Чтобы это работало, соединения, принимаемые на портах 6667 (IRC) и 80 (веб), должны перенаправляться на соответствующие машины. Программе &man.natd.8; должна быть передана команда с соответствующими параметрами. Синтаксис следующий: -redirect_port proto targetIP:targetPORT[-targetPORT] [aliasIP:]aliasPORT[-aliasPORT] [remoteIP[:remotePORT[-remotePORT]]] В примере выше аргументы должен быть такими: -redirect_port tcp 192.168.0.2:6667 6667 -redirect_port tcp 192.168.0.3:80 80 При этом будут перенаправлены соответствующие порты tcp на клиентские машины в локальной сети. Аргумент может использоваться для указания диапазонов портов, а не конкретного порта. Например, tcp 192.168.0.2:2000-3000 2000-3000 будет перенаправлять все соединения, принимаемые на портах от 2000 до 3000, на порты от 2000 до 3000 клиента A. Эти параметры можно указать при непосредственном запуске &man.natd.8;, поместить их в параметр natd_flags="" файла /etc/rc.conf, либо передать через конфигурационный файл. Для получение информации о других параметрах настройки обратитесь к справочной странице по &man.natd.8; Перенаправление адреса перенаправление адреса Перенаправление адреса полезно, если имеется несколько адресов IP, и они должны быть на одной машине. В этой ситуации &man.natd.8; может назначить каждому клиенту ЛВС свой собственный внешний IP-адрес. Затем &man.natd.8; преобразует исходящие от клиентов локальной сети пакеты, заменяя IP-адреса на соответствующие внешние, и перенаправляет весь трафик, входящий на некоторый IP-адрес, обратно конкретному клиенту локальной сети. Это также называют статическим NAT. К примеру, пусть IP-адреса 128.1.1.1, 128.1.1.2 и 128.1.1.3 принадлежат шлюзовой машине natd. 128.1.1.1 может использоваться в качестве внешнего IP-адреса шлюзовой машины natd, тогда как 128.1.1.2 и 128.1.1.3 будут перенаправляться обратно к клиентам ЛВС A и B. Синтаксис для таков: -redirect_address localIP publicIP localIP Внутренний IP-адрес клиента локальной сети. publicIP Внешний IP, соответствующий клиенту локальной сети. В примере этот аргумент будет выглядеть так: -redirect_address 192.168.0.2 128.1.1.2 -redirect_address 192.168.0.3 128.1.1.3 Как и для , эти аргументы также помещаются в строку natd_flags="" файла /etc/rc.conf или передаются через конфигурационный файл. При перенаправлении адресов нет нужды в перенаправлении портов, потому что перенаправляются все данные, принимаемые для конкретного IP-адреса. Внешние IP-адреса машины с natd должны быть активизированы и являться синонимами для внешнего интерфейса. Обратитесь к &man.rc.conf.5;, чтобы это сделать. IP по параллельному порту (PLIP) PLIP IP по параллельному порту PLIP позволяет нам работать с TCP/IP по параллельному порту. Это полезно для машин без сетевых адаптеров или для установки на лаптопы. В этом разделе мы обсудим: создание кабеля для параллельного порта (laplink). Соединение двух компьютеров посредством PLIP. Создание параллельного кабеля Вы можете приобрести кабель для параллельного порта в большинстве магазинов, торгующих комплектующими. Если вы его не найдете, или же просто хотите знать, как он делается, то следующая таблица поможет вам сделать такой кабель из обычного принтерного кабеля для параллельного порта. Распайка кабеля для параллельного порта для сетевой работы A-name A-End B-End Описание Post/Bit DATA0 -ERROR 2 15 15 2 Data 0/0x01 1/0x08 DATA1 +SLCT 3 13 13 3 Data 0/0x02 1/0x10 DATA2 +PE 4 12 12 4 Data 0/0x04 1/0x20 DATA3 -ACK 5 10 10 5 Strobe 0/0x08 1/0x40 DATA4 BUSY 6 11 11 6 Data 0/0x10 1/0x80 GND 18-25 18-25 GND -
Настройка PLIP Прежде всего вы должны найти laplink-кабель. Затем удостоверьтесь, что на обоих компьютерах в ядро включена поддержка драйвера &man.lpt.4;: &prompt.root; grep lp /var/run/dmesg.boot lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port Управление параллельным портом должно выполняться по прерываниям. Во &os; 4.X в файле конфигурации ядра должна присутствовать строка, подобная следующей: device ppc0 at isa? irq 7 Во &os; 5.X файл /boot/device.hints должен содержать следующие строки: hint.ppc.0.at="isa" hint.ppc.0.irq="7" Затем проверьте, что файл конфигурации ядра имеет строку device plip, или загружен ли модуль ядра plip.ko. В обоих случаях интерфейс работы с сетью по параллельному порту должен присутствовать на момент прямого использования команды &man.ifconfig.8;. Во &os; 4.X это должно быть примерно так: &prompt.root; ifconfig lp0 lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 а для &os; 5.X: &prompt.root; ifconfig plip0 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 Имя устройства, используемого для параллельного интерфейса, во &os; 4.X (lpX) и &os; 5.X (plipX). Подключите кабель laplink к параллельным интерфейсам на обоих компьютерах. Настройте параметры сетевого интерфейса с обеих сторон, работая как пользователь root. К примеру, если вы хотите соединить хост host1, на котором работает &os; 4.X, с хостом host2 под управлением &os; 5.X: host1 <-----> host2 IP Address 10.0.0.1 10.0.0.2 Настройте интерфейс на машине host1, выполнив: &prompt.root; ifconfig plip0 10.0.0.1 10.0.0.2 Настройте интерфейс на машине host2, выполнив: &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 host1.my.domain host1 10.0.0.2 host2.my.domain Чтобы проверить работу соединения, перейдите к каждому хосту и выполните тестирование соединения с другой машиной посредством команды ping. К примеру, на машине host1: &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 host2 host1 UH 0 0 lp0 &prompt.root; ping -c 4 host2 PING host2 (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 --- host2 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
Aaron Kaplan Первоначальный текст написал Tom Rhodes Реструктуризацию и добавления внёс Brad Davis Расширил IPv6 IPv6 (также называемый IPng IP next generation - следующее поколение IP) является новой версией широко известного протокола IP (называемого также IPv4). Как и другие современные системы *BSD, FreeBSD включает эталонную реализацию IPv6 от KAME. Так что система FreeBSD поставляется со всем, что вам нужно для экспериментирования с IPv6. Этот раздел посвящён настройке и запуску в работу IPv6. В начале 1990-х люди стали беспокоиться о быстро иссякающем адресном пространстве IPv4. Принимая во внимание темпы роста Интернет, имелись основные проблемы: Нехватка адресов. Сегодня это не такая большая проблема, так как стали применяться адресные пространства для частных сетей (10.0.0.0/8, 192.168.0.0/24 и так далее) и технология преобразования сетевых адресов (NAT - Network Address Translation). Таблицы маршрутов становятся чересчур большими. Это всё ещё является проблемой сегодня. IPv6 решает эти и многие другие вопросы: 128-битное адресное пространство. Другими словами, теоретически доступны 340,282,366,920,938,463,463,374,607,431,768,211,456 адреса. Это означает плотность примерно в 6.67 * 10^27 адресов IPv6 на квадратный метр нашей планеты. Маршрутизаторы будут хранить в своих таблицах только агрегированные адреса сетей, что уменьшает средний размер таблицы маршрутизации до 8192 записей. Имеется также множество других полезных особенностей IPv6, таких, как: Автоматическая настройка адреса (RFC2462) Групповые адреса (один к нескольким из многих) Обязательные адреса множественной рассылки IPsec (IP security - безопасный IP) Упрощённая структура заголовка Мобильный IP Механизмы преобразования IPv6-в-IPv4 Для получения дополнительной информации посмотрите: Обзор IPv6 на сайте playground.sun.com KAME.net 6bone.net Основы адресации IPv6 Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и многоадресные (Multicast). Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в точности интерфейса, который этому адресу соответствует. Адреса типа Anycast синтаксически неотличимы от адресов Unicast, но они адресуют группу интерфейсов. Пакет, направленный такому адресу, попадёт в ближайший (согласно метрике маршрутизатора) интерфейс. Адреса Anycast могут использоваться только маршрутизаторами. Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания. Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами многоадресного вещания IPv6. Зарезервированные адреса IPv6 IPv6 адрес Длина префикса (биты) Описание Заметки :: 128 бит нет описания cf. 0.0.0.0 в IPv4 ::1 128 бит loopback адрес cf. 127.0.0.1 в IPv4 ::00:xx:xx:xx:xx 96 бит встроенный IPv4 Нижние 32 бита это адрес IPv4. Также называется IPv4 совместимым IPv6 адресом ::ff:xx:xx:xx:xx 96 бит Адрес IPv6, отображенный на IPv4 Нижние 32 бита это адрес IPv4. Для хостов, не поддерживающих IPv6. fe80:: - feb:: 10 бит link-local cf. loopback адрес в IPv4 fec0:: - fef:: 10 бит site-local   ff:: 8 бит широковещательный   001 (основание 2) 3 бит global unicast Все global unicast адреса присваиваются из этого пула. Первые три бита 001.
Чтение адресов IPv6 Каноническая форма представляется в виде x:x:x:x:x:x:x:x, где каждый символ x является 16-битовым шестнадцатиричным числом. К примеру, FEBC:A574:382B:23C1:AA49:4592:4EFE:9982 Часто в адресе присутствуют длинные строчки, заполненные нулями, поэтому одна такая последовательность на адрес может быть сокращена до ::. Кроме того, до трех ведущих 0 на шестнадцатеричную четверку могут быть пропущены. К примеру, fe80::1 соответствует канонической форме fe80:0000:0000:0000:0000:0000:0000:0001. В третьей форме последние 32 бита записываются в широко известном (десятичном) стиле IPv4 с точками . в качестве разделителей. Например, f2002::10.0.0.1 соответствует (шестнадцатеричному) каноническому представлению 2002:0000:0000:0000:0000:0000:0a00:0001, которое, в свою очередь, равнозначно записи 2002::a00:1. Теперь читатель должен понять следующую запись: &prompt.root; ifconfig rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255 inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1 ether 00:00:21:03:08:e1 media: Ethernet autoselect (100baseTX ) status: active fe80::200:21ff:fe03:8e1%rl0 является автоматически настроенным локальным адресом. Он генерируется из MAC адреса в процессе автоматической конфигурации. Для получения дополнительной информации о структуре адресов IPv6 обратитесь к RFC3513. Настройка подключения На данный момент существуют четыре способа подключиться к другим хостам и сетям IPv6: Подключиться к экспериментальному 6bone Получить сеть IPv6 от вышестоящего провайдера. Для получения рекомендаций обратитесь к вашему провайдеру Интернет. Туннелировать посредством 6-в-4 (RFC3068) Использовать порт net/freenet6, если вы используете коммутируемое соединение. Здесь мы будем рассматривать подключение к 6bone, так как на данный момент это является самым популярным способом. Сначала взгляните на сайт 6bone и найдите ближайшую к вам точку подключения к 6bone. Напишите ответственному и при некоторой удаче вам дадут инструкции по настройке соединения. Обычно это касается настройки туннеля GRE (gif). Вот типичный пример настройки туннеля &man.gif.4;: &prompt.root; ifconfig gif0 create &prompt.root; ifconfig gif0 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 &prompt.root; ifconfig gif0 tunnel MY_IPv4_ADDR HIS_IPv4_ADDR &prompt.root; ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR Замените слова, написанные заглавными буквами, информацией, которую вам дал вышестоящий узел 6bone. При этом установится туннель. Проверьте работу туннеля утилитой &man.ping6.8; с адресом ff02::1%gif0. Вы должны получить два положительных ответа. Если вы заинтригованы адресом ff02:1%gif0, скажем, что это адрес многоадресного вещания. %gif0 указывает на использование такого адреса с сетевым интерфейсом gif0. Так как мы выполняем ping над адресом многоадресного вещания, то другая сторона туннеля также должна ответить. Теперь настройка маршрута к вашей вышестоящей точке подключения 6bone должна быть весьма проста: &prompt.root; route add -inet6 default -interface gif0 &prompt.root; ping6 -n MY_UPLINK &prompt.root; traceroute6 www.jp.FreeBSD.org (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets 1 atnet-meta6 14.147 ms 15.499 ms 24.319 ms 2 6bone-gw2-ATNET-NT.ipv6.tilab.com 103.408 ms 95.072 ms * 3 3ffe:1831:0:ffff::4 138.645 ms 134.437 ms 144.257 ms 4 3ffe:1810:0:6:290:27ff:fe79:7677 282.975 ms 278.666 ms 292.811 ms 5 3ffe:1800:0:ff00::4 400.131 ms 396.324 ms 394.769 ms 6 3ffe:1800:0:3:290:27ff:fe14:cdee 394.712 ms 397.19 ms 394.102 ms Эта выдача будет отличаться от машины к машине. Теперь вы должны суметь достигнуть сайта IPv6 www.kame.net и увидеть танцующую черепаху — в случае, если ваш браузер поддерживает IPv6, как, например, www/mozilla или Konqueror, который входит в x11/kdebase3, или www/epiphany. DNS в мире IPv6 Для IPv6 использовались два типа записей DNS. IETF объявил записи A6 устаревшими. Стандартом на данный момент являются записи AAAA. Использование записей AAAA достаточно просто. Назначение вашему имени хоста нового адреса IPv6 достигается просто добавлением: MYHOSTNAME AAAA MYIPv6ADDR к вашему первичному файлу DNS зоны. В случае, если вы не обслуживаете собственные зоны DNS, обратитесь к вашему провайдеру DNS. Имеющиеся версии bind (версий 8.3 и 9) и dns/djbdns (с патчем IPv6) поддерживают записи AAAA. Внесение необходимых изменений в <filename>/etc/rc.conf</filename> Настройки клиентов IPv6 Эти установки помогут вам настроить компьютер, который будет работать в сети как клиент, а не как маршрутизатор. Для включения настройки интерфейсов через &man.rtsol.8; при загрузке, все, что вам потребуется, это добавить следующую строку: ipv6_enable="YES" Для статического присвоения IP адреса, такого как 2001:471:1f11:251:290:27ff:fee0:2093, интерфейсу fxp0, добавьте: ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093" Для назначения маршрутизатором по умолчанию 2001:471:1f11:251::1, добавьте следующую строку к /etc/rc.conf: ipv6_defaultrouter="2001:471:1f11:251::1" Настройки маршрутизатора/шлюза IPv6 Этот раздел поможет вам использовать инструкции, которые выдал провайдер туннеля, например, 6bone, и сделать эти настройки постоянными. Для восстановления туннеля при загрузке системы используйте в /etc/rc.conf нижеприведенные настройки. Задайте список туннельных интерфейсов (Generic Tunneling interfaces), которые необходимо настроить, например gif0: gif_interfaces="gif0" Для настройки интерфейса с локальным подключением на MY_IPv4_ADDR к удаленной точке REMOTE_IPv4_ADDR: - gif_config_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR" + gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR" Для включения IPv6 адреса, который был вам присвоен для использования в подключении к туннелю IPv6, добавьте: ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR" Затем все, что вам потребуется сделать, это добавить маршрут по умолчанию для IPv6. Это другая сторона туннеля IPv6: ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR" Распространение маршрутов и автоматическая настройка хостов Этот раздел поможет вам настроить &man.rtadvd.8; для распространения маршрута IPv6 по умолчанию. Для включения &man.rtadvd.8; вам понадобится добавить в /etc/rc.conf следующую строку: rtadvd_enable="YES" Важно указать интерфейс, на котором выполняется запрос маршрутизатора IPv6. Например, для указания &man.rtadvd.8; использовать fxp0: rtadvd_interfaces="fxp0" Теперь мы должны создать файл настройки, /etc/rtadvd.conf. Вот пример: fxp0:\ :addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether: Замените fxp0 на интерфейс, который вы будете использовать. Затем, замените 2001:471:1f11:246:: на префикс вашего размещения. Если у вас выделенная подсеть /64, больше ничего менять не потребуется. Иначе, вам потребуется изменить prefixlen# на корректное значение.
Harti Brandt Предоставил Асинхронный режим передачи (ATM) в &os; 5.X Классическая настройка IP через ATM (PVC) Классический IP через ATM (CLIP) это простейший метод использования асинхронного режима передачи (Asynchronous Transfer Mode, ATM) с IP. Он может быть использован с коммутируемыми подключениями (switched connections, SVC) и с постоянными подключениями (permanent connections, PVC). В этом разделе будет описано как настроить сеть на основе PVC. Полностью объединенные конфигурации Первый метод для настройки CLIP с PVC это подключение каждого компьютера к каждому в сети с выделенным PVC. Хотя настройка проста, она непрактична для большого количества компьютеров. В примере предполагается, что в сети есть четыре компьютера, каждый подключенный к ATM сети с помощью карты ATM адаптера. Первый шаг это планирование IP адресов и ATM подключений между компьютерами. Мы используем: Хост IP адрес hostA 192.168.173.1 hostB 192.168.173.2 hostC 192.168.173.3 hostD 192.168.173.4 Для сборки полностью объединенной сети нам потребуется по одному ATM соединению между каждой парой компьютеров: Компьютеры VPI.VCI соединение hostA - hostB 0.100 hostA - hostC 0.101 hostA - hostD 0.102 hostB - hostC 0.103 hostB - hostD 0.104 hostC - hostD 0.105 Значения VPI и VCI на каждом конце соединения конечно могут отличаться, но для упрощения мы предполагаем, что они одинаковы. Затем нам потребуется настроить ATM интерфейсы на каждом хосте: hostA&prompt.root; ifconfig hatm0 192.168.173.1 up hostB&prompt.root; ifconfig hatm0 192.168.173.2 up hostC&prompt.root; ifconfig hatm0 192.168.173.3 up hostD&prompt.root; ifconfig hatm0 192.168.173.4 up предполагая, что ATM интерфейс называется hatm0 на всех хостах. Теперь PVC необходимо настроить на hostA (мы предполагаем, что ATM коммутаторы уже настроены, вам необходимо свериться с руководством на коммутатор за информацией по настройке). hostA&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr hostA&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr hostA&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr hostB&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr hostB&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr hostB&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr hostC&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr hostC&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr hostC&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr hostD&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr hostD&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr hostD&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr Конечно, вместо UBR может быть использован другой тип, если ATM адаптер поддерживает это. В этом случае имя типа дополняется параметрами трафика. Помощь по &man.atmconfig.8; может быть получена командой: &prompt.root; atmconfig help natm add или на странице справочника &man.atmconfig.8;. Та же настройка может быть выполнена через /etc/rc.conf. Для hostA это будет выглядеть примерно так: network_interfaces="lo0 hatm0" ifconfig_hatm0="inet 192.168.173.1 up" natm_static_routes="hostB hostC hostD" route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr" route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr" route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr" Текущий статус всех маршрутов CLIP может быть получен командой: hostA&prompt.root; atmconfig natm show
diff --git a/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml b/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml index 9c3ae8f097..b97996028e 100644 --- a/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/basics/chapter.sgml @@ -1,2549 +1,2552 @@ Chris Shumway Переписал Алексей Зелькин Перевод на русский язык: Алексей Докучаев Денис Пеплин Основы UNIX Краткий обзор основы В этой главе мы попытаемcя раскрыть основные принципы и команды операционной системы FreeBSD. Большая часть нижеизложенного материала в более или менее равной степени применима к любой &unix;-подобной операционной системе. Если вы уверены, что не найдете здесь ничего нового для себя, можете смело пропустить эту главу. Если же вы новичок, мы настоятельно рекомендуем внимательно прочесть это главу. Прочитав эту главу, вы узнаете: Как использовать виртуальные консоли FreeBSD. Как работают права доступа на файлы в &unix;. Иерархия каталогов &os;. Организация дисков &os;. Как монтировать и размонтировать файловые системы. Что такое процессы, даемоны и сигналы. Что такое командная оболочка (или интерпретатор команд) и как настроить личное рабочее окружение. Как пользоваться стандартными текстовыми редакторами. Что такое устройства и файлы устройств. Какие бинарные форматы используются в &os;. Как пользоваться справочным руководством для получения дополнительной информации. Виртуальные консоли и терминалы виртуальные консоли терминалы FreeBSD можно использовать разными способами. Один из них — набор команд в текстовом терминале. Используйте этот способ, и вся гибкость и мощь систем &unix; будет в ваших руках. Этот раздел рассказывает о терминалах, консолях и их использовании в FreeBSD. Консоль консоль Если во время установки вы не настроили FreeBSD для автоматического запуска графической среды при загрузке, система запросит ввод логина сразу после завершения стартовых скриптов. Вы увидите примерно следующее: Additional ABI support:. Local package initialization:. Additional TCP options:. Fri Sep 20 13:01:06 EEST 2002 FreeBSD/i386 (pc3.example.org) (ttyv0) login: В вашей системе сообщение может быть другим, но очень похожим на это. В данный момент нас интересуют последние две строки. Вторая с конца строка: FreeBSD/i386 (pc3.example.org) (ttyv0) В этой строке содержится немного информации о только что загруженной системе. Это консоль FreeBSD, работающей на Intel или совместимом процессоре x86 архитектуры Это следует из обозначения i386. Обратите внимание, что даже если FreeBSD работает не на процессоре Intel 386, это обозначение будет i386. Здесь показан не тип процессора, а его архитектура. . Имя этого компьютера (у каждого компьютера &unix; есть имя) pc3.example.org, и в данный момент вы видите системную консоль — терминал ttyv0. Наконец, последняя строка всегда: login: Здесь вам предлагается ввести имя пользователя, чтобы войти в FreeBSD. Следующий раздел описывает способ, которым вы можете сделать это. Вход в FreeBSD FreeBSD это многопользовательская, многопроцессорная система. Это формальное описание системы, которая может быть использована множеством разных людей, одновременно запускающих большое количество программ на одном компьютере. Любой многопользовательской системе нужен способ отличать каждого пользователя от остальных. В FreeBSD (и всех &unix; подобных операционных системах), эта задача решается путем входа пользователя в систему перед запуском каких-либо программ. У каждого пользователя есть уникальное имя (имя пользователя) и персональный, секретный ключ (пароль). Перед тем, как разрешить пользователю выполнять какие-либо программы, FreeBSD запрашивает их оба. стартовые скрипты Сразу после загрузки FreeBSD и завершения работы стартовых скриптов Стартовые скрипты — это программы, запускаемые автоматически во время загрузки FreeBSD. Их основная задача — подготовить систему к запуску других программ и запустить настроенные сервисы, которые будут работать в фоновом режиме, выполняя полезную работу. , система предложит вам ввести имя пользователя: login: В этом примере, предположим что ваше имя пользователя john. Введите john в этом приглашении и нажмите Enter. Далее должно появиться приглашение ввести пароль: login: john Password: Введите соответствующий имени john пароль и нажмите Enter. Пароль не виден! Не беспокойтесь об этом. Это сделано по соображениям безопасности. Если вы ввели пароль правильно, то сразу же войдете в FreeBSD и можете начать выполнять команды. Вы увидите сообщение дня (MOTD, или message of the day) за которым последует командная строка (с символом #, $, или %). Это означает, что вы успешно вошли в FreeBSD. Множественные консоли Запуск команд &unix; из консоли это конечно хорошо, но FreeBSD может выполнять множество программ одновременно, поэтому наличие одной консоли может быть недостатком. В таком случае очень полезны виртуальные консоли. FreeBSD может быть настроена для работы с несколькими виртуальными консолями. Вы можете переключаться с одной виртуальной консоли на другую, нажимая соответствующие сочетания клавиш на клавиатуре. У каждой консоли есть свой канал вывода и FreeBSD заботится о том, чтобы правильно перенаправить ввод с клавиатуры и вывод на монитор как только вы переключитесь с одной консоли на другую. Для переключения между консолями зарезервированы специальные комбинации клавиш Подробное техническое описание деталей работы драйверов консолей FreeBSD и клавиатуры можно найти в &man.syscons.4;, &man.atkbd.4;, &man.vidcontrol.1; и &man.kbdcontrol.1;. Здесь мы не раскрываем деталей, однако интересующиеся этим вопросом всегда могут обратиться к страницам справочника за более детальным объяснением принципов этой темы. . Вы можете использовать сочетания AltF1, AltF2, до AltF8 чтобы переключаться между различными виртуальными консолями в FreeBSD. При переключении от одной консоли к другой, FreeBSD заботится о сохранении и восстановлении вывода на экран. Результатом является иллюзия наличия множества виртуальных экранов и клавиатур, которые могут быть использованы для ввода и запуска команд FreeBSD. Программы, которые вы запускаете на одной виртуальной консоли, не прекращают выполнение когда консоль становится невидимой. Они продолжают выполняться, когда вы переключаетесь на другую виртуальную консоль. Файл <filename>/etc/ttys</filename> В конфигурации по умолчанию FreeBSD запускает восемь виртуальных консолей. Тем не менее это не ограничение оборудования, и вы можете легко настроить систему для загрузки большего или меньшего числа виртуальных консолей. Число и параметры виртуальных консолей задаются в файле /etc/ttys. Вы можете использовать это файл для настройки виртуальных консолей FreeBSD. Любая не закомментированная строка в этом файле (строка, не начинающаяся с символа #), содержит настройки для одного терминала или виртуальной консоли. Версия этого файла по умолчанию, поставляемая с FreeBSD, содержит настройки для девяти виртуальных консолей и включает восемь терминалов. Это строки, начинающиеся с ttyv: # name getty type status comments # ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure 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/X11R6/bin/xdm -nodaemon" xterm off secure За детальным описанием каждой колонки этого файла и всех опций, которые можно указать для настройки виртуальных консолей, обращайтесь к &man.ttys.5;. Консоль в однопользовательском режиме Детальное описание однопользовательского режима можно найти в . Стоит отметить, что при работе FreeBSD в однопользовательском режиме есть только одна консоль. Виртуальных консолей нет. Установки консоли в однопользовательском режиме можно найти в файле /etc/ttys. Обратите внимание на строку, начинающуюся с console: # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure Как сказано в комментариях выше строки console, можно отредактировать эту строку и изменить secure на insecure. Если вы сделаете это, FreeBSD даже при загрузке в однопользовательском режиме будет запрашивать пароль root. Будьте осторожны при изменении этого значения на insecure. Если вы забудете пароль root, загрузка в однопользовательский режим сильно усложнится. Это все еще возможно, но несколько более сложно для тех, кто еще не очень освоился с процессом загрузки FreeBSD и вызова программ. Права доступа UNIX FreeBSD является прямым потомком BSD &unix; и основывается на некоторых ключевых концепциях &unix;. В первую очередь это, конечно, тот факт, что FreeBSD – многопользовательская операционная система. Это означает, что несколько пользователей могут работать одновременно, решая различные задачи и совершенно не мешая друг другу. На системе лежит ответственность за правильное разделение и управление такими ресурсами как память, процессорное время, периферийные устройства и прочее. Многопользовательская среда предполагает наличие механизма регулирования прав доступа к любому ресурсу в системе. Существует три типа прав доступа: на чтение, запись и исполнение. Права сгруппированы три по три, соответственно чтение/запись/выполнение для владельца/группы/всех остальных. Численное представление: права доступа права на файлы Значение Права доступа Список файлов каталога 0 Ничего не разрешено --- 1 Нельзя читать и писать, разрешено исполнять --x 2 Нельзя читать и исполнять, разрешено писать -w- 3 Нельзя читать, разрешено писать и исполнять -wx 4 Разрешено читать, нельзя писать и исполнять r-- 5 Разрешено читать и исполнять, нельзя писать r-x 6 Разрешено читать и писать, нельзя исполнять rw- 7 Разрешено все rwx ls каталоги Вы можете использовать опцию команды &man.ls.1; для получения подробного листинга каталога, включающего колонку с информацией о правах на файл для владельца, группы и всех остальных. Например, команда ls -l в произвольном каталоге может вывести следующее: &prompt.user; ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ... Вот как выглядит первая колонка вывода ls -l: -rw-r--r-- Первый (считая слева) символ говорит обычный ли это файл, каталог, символьное устройство, сокет или любое другое псевдофайловое устройство. В нашем случае -, указывает на обычный файл. Следующие три символа (в данном случае это rw-) задают права доступа владельца файла. Затем идут права группы, которой принадлежит файл (r--). Последняя тройка (r--) определяет права для всех остальных. Минус означает отсутствие каких-либо прав (т.е. нельзя ни читать, ни писать, ни выполнять). В данном случае права установлены таким образом, что владелец может читать и писать в файл, а группа и другие могут только читать. Таким образом, численное представление прав 644, где каждая цифра представляет три части прав на файл. Права на устройства контролируются аналогичным образом. В FreeBSD все устройства представлены в виде файлов, которые можно открывать, читать и писать в них. Эти специальные файлы содержатся в каталоге /dev. Каталоги также являются файлами. К ним применимы те же права на чтение, запись и выполнение. Правда, в данном случае выполнение имеет несколько другой смысл. Когда каталог помечен как исполнимый, это означает, что можно зайти в него (с помощью команды cd, change directory). Это также означает, что в данном каталоге можно получить доступ к файлам, имена которых известны (конечно, если собственные права на файл разрешают такой доступ). Если же требуется получить список файлов в некотором каталоге, права доступа на него должные включать доступ на чтение. Для того, чтобы удалить из каталога какой-либо файл, имя которого известно, на этот каталог должны быть даны права на запись и на исполнение. Существуют и другие права доступа, но они как правило используются в особых случаях, например, setuid-бит на выполняемые файлы и sticky-бит на каталоги. За дополнительными сведениями по этому вопросу обращайтесь к &man.chmod.1;. Tom Rhodes Предоставил Символические обозначения прав Права доступасимволические Символические обозначения, иногда называемые символическими выражениями, используют буквы вместо восьмеричных значений для назначения прав на файлы и каталоги. Символические выражения используют синтаксис (кто) (действие) (права), где существуют следующие значения: Опция Буква Значение (кто) u Пользователь (User) (кто) g Группа (Group) (кто) o Другие (Other) (кто) a Все (All, world) (действие) + Добавление прав (действие) - Удаление прав (действие) = Явная установка прав (права) r Чтение (Read) (права) w Запись (Write) (права) x Выполнение (Execute) (права) t Sticky бит (права) s SUID или SGID Эти значения используются командой &man.chmod.1; так же как и раньше, но с буквами. Например, вы можете использовать следующую команду для запрета доступа других пользователей к FILE: &prompt.user; chmod go= FILE Для изменения более чем одного набора прав можно применить список, разделенный запятыми. Например, следующая команда удалит права группы и всех остальных на запись в FILE, а затем добавит права на выполнение для всех: &prompt.user; chmod go-w,a+x FILE Структура каталогов иерархия каталогов Файловая система FreeBSD является ключевым моментом в понимании устройства всей системы. Самым важным понятием является, несомненно, корневой каталог, обозначаемый символом /. Корневой каталог монтируется самым первым на этапе загрузки и содержит все необходимое, чтобы подготовить систему к загрузке в многопользовательский режим. Корневой каталог также содержит точки монтирования всех других файловых систем. Точкой монтирования называется каталог, который будет соответствовать корню примонтированой файловой системы. Стандартные точки монтирования включают /usr, /var, /mnt и /cdrom. Эти каталоги обычно перечислены в файле /etc/fstab, в котором указаны файловые системы и их точки монтирования. Большинство файловых систем, описанных в /etc/fstab монтируются автоматически из скрипта &man.rc.8;, если только для них не указана опция . Обратитесь к &man.fstab.5; за дополнительной информацией о формате файла /etc/fstab и различных опциях монтирования. Полное описание иерархии файловой системы есть в &man.hier.7;. Здесь же мы упомянем лишь наиболее важные каталоги. Каталог Описание / Корневой каталог файловой системы. /bin/ Основные утилиты, необходимые для работы как в однопользовательском, так и в многопользовательском режимах. /boot/ Программы и конфигурационные файлы, необходимые для нормальной загрузки операционной системы. /boot/defaults/ Конфигурационные файлы с настройками по умолчанию, используемые в процессе загрузки операционной системы (см. &man.loader.conf.5;). /dev/ Файлы устройств (см. &man.intro.4;). /etc/ Основные конфигурационные файлы системы и скрипты. /etc/defaults/ Основные конфигурационные файлы системы с настройками по умолчанию (см. &man.rc.8;). /etc/mail/ Конфигурационные файлы для систем обработки почты (например, &man.sendmail.8;). /etc/namedb/ Конфигурационные файлы для утилиты named (см. &man.named.8;). /etc/periodic/ Файлы сценариев, выполняемые ежедневно, еженедельно и ежемесячно (см. &man.cron.8; и &man.periodic.8;). /etc/ppp/ Конфигурационные файлы для утилиты ppp (см. &man.ppp.8;). /mnt/ Пустой каталог, часто используемый системными администраторами как временная точка монтирования. /proc/ Виртуальная файловая система, отображающая текущие процессы (см. see &man.procfs.5;, &man.mount.procfs.8;). /root/ Домашний каталог пользователя root. /sbin/ Системные утилиты и утилиты администрирования, необходимые для работы как в однопользовательском, так и в многопользовательском режимах. /stand/ Программы, необходимые для работы в автономном режиме (например, при установке системы). /tmp/ Временный каталог (часто монтируется как &man.mfs.8;; обычно содержимое этого каталога теряется во время перезагрузки системы). /usr/ Большинство пользовательских утилит и приложений. /usr/bin/ Пользовательские утилиты и приложения общего назначения. /usr/include/ Стандартные заголовочные файлы для языка C. /usr/lib/ Файлы стандартных библиотек. /usr/libdata/ Файлы данных для различных утилит. /usr/libexec/ Системные даемоны и утилиты (выполняемые другими программами). /usr/local/ Локальные пользовательские приложения, библиотеки, и т.д. Также используется по умолчанию коллекцией портов. Внутри /usr/local иерархия каталогов должна следовать &man.hier.7; для /usr. Исключение составляют каталог man, который расположен непосредственно в /usr/local, а не в /usr/local/share, и документация портов, которая расположена в share/doc/port. /usr/obj/ Архитектурно-зависимые файлы и каталоги, образующиеся в процессе сборки системы из исходных текстов в /usr/src. /usr/ports/ Коллекция портов FreeBSD (опционально). /usr/sbin/ Системные утилиты и утилиты администрирования (исполняемые пользователем). /usr/share/ Архитектурно-независимые файлы. /usr/src/ Исходные тексты BSD и/или программ. /usr/X11R6/ Утилиты, приложения и библиотеки X11R6 (X Window System; необязательно). /var/ Файлы журналов общего назначения, временные, перемещаемые файлы и файлы очередей. /var/log/ Различные файлы системных журналов. /var/mail/ Почтовые ящики пользователей. /var/spool/ Файлы очередей печати, почты, и пр. /var/tmp/ Временные файлы, которые необходимо сохранять между перезагрузками операционной системы. /var/yp/ Карты (maps) NIS. Организация дисков Наименьшая единица, которую FreeBSD использует для обращения к файлам, это имя файла. Имена файлов чувствительны к регистру, поэтому readme.txt и README.TXT — два разных файла. FreeBSD не использует расширение файла (.txt) для определения программа это, документ или другой тип данных. Файлы хранятся в каталогах. Каталоги могут не содержать файлов, или могут содержать много сотен файлов. Каталоги также могут содержать другие каталоги, что позволяет создавать иерархию каталогов один в другом. Это упрощает организацию данных. Обращение к файлам происходит путем задания имени файла или каталога, дополняемого прямым слэшем /, за которым может следовать имя другого каталога. Если есть каталог foo, содержащий каталог bar, который содержит файл readme.txt, полное имя, или путь к файлу будет foo/bar/readme.txt. Каталоги хранятся в файловых системах. Каждая файловая система содержит один каталог на верхнем уровне, называемый корневым каталогом этой файловой системы. Этот корневой каталог может содержать другие каталоги. Внешне это может быть похоже на те операционные системы, которые вы возможно использовали. Есть несколько отличий: например, &ms-dos; использует \ для разделения имен файлов и каталогов, а &macos; использует :. FreeBSD не использует букв дисков, или других имен дисков в пути. Вам не нужно писать c:/foo/bar/readme.txt в FreeBSD. Вместо этого, одна файловая система назначается корневой файловой системой. Обращение к корневому каталогу корневой файловой системы происходит через /. Любая другая файловая система монтируется к корневой файловой системе. Неважно как много дисков есть в вашей системе FreeBSD, каждый каталог будет выглядеть как расположенный на том же диске. Предположим, у вас есть три файловых системы: A, B, и C. Каждая файловая система имеет один корневой каталог, в котором содержатся другие каталоги, называемые A1, A2 (и аналогично B1, B2 и C1, C2). Назовем A корневой файловой системой. Если вы используете команду ls для просмотра содержимого каталога, вы увидите два подкаталога, A1 и A2. Дерево каталогов выглядит так: / | +--- A1 | `--- A2 Файловая система должна быть примонтирована к каталогу другой файловой системы. Предположим, что вы монтируете файловую систему B на каталог A1. Корневой каталог B замещается A1, а каталоги в B отображаются соответственно: / | +--- A1 | | | +--- B1 | | | `--- B2 | `--- A2 Если потребуется, любые файлы из каталогов B1 или B2 могут быть получены через путь /A1/B1 или /A1/B2. Все файлы, бывшие в /A1, временно скрыты. Они появятся, если B будет размонтирована с A. Если B была смонтирована на A2, диаграмма будет выглядеть так: / | +--- A1 | `--- A2 | +--- B1 | `--- B2 а пути будут /A2/B1 и /A2/B2 соответственно. Файловые системы могут быть смонтированы одна на другую. Продолжая предыдущий пример, файловая система C может быть смонтирована на каталог B1 файловой системы B в таком порядке: / | +--- A1 | `--- A2 | +--- B1 | | | +--- C1 | | | `--- C2 | `--- B2 Или C может быть смонтирована прямо на файловую систему A, на каталог A1 : / | +--- A1 | | | +--- C1 | | | `--- C2 | `--- A2 | +--- B1 | `--- B2 Если вы знакомы с &ms-dos;, это похоже, хотя и не идентично, команде join. Как правило, это не должно вас интересовать. Обычно вы создаете файловые системы во время установки FreeBSD, решаете куда их монтировать, и ничего не меняете, пока не понадобится добавить новый диск. Можно создать одну большую корневую файловую систему и не создавать других. У такого подхода есть несколько недостатков и одно преимущество. Преимущества нескольких файловых систем Различные файловые системы могут иметь различные опции монтирования. Например, в целях безопасности корневая файловая система может быть смонтирована только для чтения, что делает невозможным случайное удаление или редактирование критически важного файла. Отделение файловых систем, используемых пользователями для записи, таких как /home, от других файловых систем позволяет также монтировать их с параметром nosuid; этот параметр отменяет действие битов suid/ guid на исполняемых файлах, в этой файловой системе, что потенциально повышает безопасность. FreeBSD автоматически оптимизирует расположение файлов на файловой системе в зависимости от того, как файловая система используется. Файловая система, содержащая множество мелких часто записываемых файлов, будет иметь оптимизацию отличную от таковой для файловой системы, содержащей несколько больших файлов. На одной большой файловой системе эта оптимизация не работает. Файловые системы FreeBSD очень устойчивы к внезапному отключению. Тем не менее, потеря питания в критический момент все же может повредить структуру файловой системы. Разделение данных на несколько файловых систем повышает шансы, что система все-таки будет работать и делает более легким восстановление с резервной копии. Преимущество одной файловой системы Размер файловых систем фиксирован. Если вы создаете файловую систему при установке FreeBSD и задаете определенный размер, позднее вы можете обнаружить что нужен раздел большего размера. Это не так легко сделать без резервного копирования, создания файловых систем нового размера и последующего восстановления сохраненных данных. В FreeBSD 4.4 и выше представлена новая команда, &man.growfs.8;, которая позволяет увеличивать размер файловой системы на лету, устраняя это ограничение. Файловые системы содержатся в разделах. Этот термин не имеет того же смысла, что и при более раннем его использовании в этой главе, из-за наследия &unix; в &os;. Каждый раздел обозначается буквой от a до h. Каждый раздел может содержать только одну файловую систему, это значит что файловая система может быть описана ее точкой монтирования в файловой иерархии, или буквой раздела, в котором она содержится. FreeBSD также использует дисковое пространство под раздел подкачки (swap space). Подкачка позволяет FreeBSD работать с виртуальной памятью. ваш компьютер может работать так, как если бы у него было больше памяти, чем есть на самом деле. Когда у FreeBSD кончается память, она перемещает часть данных, не используемых в данный момент, в раздел подкачки и возвращает их обратно (перемещая в подкачку что-то другое), когда они нужны. По некоторым разделам есть определенные соглашения. Раздел Соглашение a Как правило, содержит корневую файловую систему b Как правило, содержит раздел подкачки c Как правило, такого же размера, что и весь слайс (slice). Это позволяет утилитам, которым нужно работать над всем слайсом (например, сканер плохих блоков), работать с разделом c. В обычной ситуации не нужно создавать файловую систему на этом разделе. d Раздел d создавался для специальных целей, хотя сейчас не используется. На настоящий момент, некоторые утилиты могут работать некорректно при попытке обращения к d, поэтому sysinstall обычно не создает раздел d. Каждый раздел-содержащий-файловую-систему хранится на том, что во FreeBSD называется слайс (slice). Слайс — это термин FreeBSD, то, что обычно называют разделом, и опять же это из-за &unix; основы FreeBSD. Слайсы нумеруются с 1 по 4. слайсы разделы dangerously dedicated Номера слайсов следуют за именем устройства, предваряемые строчной s, начиная с 1. Так da0s1 это первый слайс первого SCSI устройства. Может быть только четыре физических слайса на диске, но могут быть логические слайсы нужного типа внутри физических слайсов. Эти дополнительные слайсы нумеруются начиная с 5, так что ad0s5 это первый дополнительный слайс на первом IDE диске. Эти устройства используются файловыми системами, занимающими весь слайсе. Слайсы, эксклюзивно выделенные (dangerously dedicated) физические устройства и другие устройства содержат разделы, представляемые буквами от a до h. Эти буквы добавляются к имени устройства, da0a это раздел a на первом устройстве da, который эксклюзивно выделен. ad1s3e это пятый раздел в третьем слайсе второго IDE диска. Наконец, каждый диск идентифицирован. Имя диска начинается с кода, обозначающего тип диска, затем идет номер, обозначающий который это диск. В отличие от слайсов, нумерация дисков начинается с 0. Основные коды, которые вам могут встретиться, есть в списке . В то время, как ссылка на раздел FreeBSD требует также указания слайса и диска, содержащего раздел, ссылка на слайс требует также указания имени диска. Делайте это указанием имени диска, s, номера слайса, и затем буквы раздела. Примеры показаны в . показывает концептуальную модель диска, которая должна помочь прояснить ситуацию. Для установки FreeBSD вы должны сначала настроить слайсы дисков, затем создать разделы внутри слайсов, которые будут использованы для FreeBSD, а затем создать файловую систему (или подкачку) в каждом разделе и решить куда файловая система будет смонтирована. Коды дисковых устройств Код Значение ad ATAPI (IDE) диск da SCSI direct access диск acd ATAPI (IDE) CDROM cd SCSI CDROM fd Floppy disk
Пример имен диска, слайса, и раздела Имя Значение ad0s1a Первый раздел (a) на первом слайсе (s1) первого IDE диска (ad0). da1s2e Пятый раздел (e) на втором слайсе (s2) второго SCSI диска (da1). Концептуальная модель диска Эта диаграмма показывает первый подключенный к системе IDE диск с точки зрения FreeBSD. Предположим, что размер диска 4 GB, и он содержит два 2 GB слайса (&ms-dos; разделы). Первый слайс содержит &ms-dos; диск, C:, а второй слайс содержит установленную FreeBSD. В этом примере в установленной FreeBSD три раздела и раздел подкачки. В каждом из трех разделов есть файловая система. Раздел a используется для корневой файловой системы, e для иерархии каталогов /var, а f для иерархии каталогов /usr. .-----------------. --. | | | | DOS / Windows | | : : > First slice, ad0s1 : : | | | | :=================: ==: --. | | | Partition a, mounted as / | | | > referred to as ad0s2a | | | | | :-----------------: ==: | | | | Partition b, used as swap | | | > referred to as ad0s2b | | | | | :-----------------: ==: | Partition c, no | | | Partition e, used as /var > filesystem, all | | > referred to as ad0s2e | of FreeBSD slice, | | | | ad0s2c :-----------------: ==: | | | | | : : | Partition f, used as /usr | : : > referred to as ad0s2f | : : | | | | | | | | --' | `-----------------' --'
Монтирование и размонтирование файловых систем Файловая система лучше всего представима в виде дерева, с корнем в /. Каталоги, /dev, /usr и прочие – это ветви дерева, которые, в свою очередь, являются корнями для поддеревьев, также имеющих ветви (/usr/local), и т.д. корневая файловая система Хорошей практикой является разнесение некоторых особо важных каталогов на разные файловые системы. Например, /var, содержит log/, spool/, а также всевозможные временные файлы и нередко может занять все свободное место на диске. Поэтому лучше смонтировать /var отдельно, чтобы избежать переполнения /. Часто бывает так, что некоторые разделы файловой системы расположены на разных физических носителях (дисках, CDROM), виртуальных или сетевых (например, сетевая файловая система (Network File System, NFS)). В этом случае узлы файловой иерархии будут расположены на разных файловых системах. Файл <filename>fstab</filename> filesystems mounted with fstab Файловые системы, перечисленные в /etc/fstab, монтируются автоматически в процессе загрузки (если, конечно, для них не указана опция ). Формат файла /etc/fstab следующий (файловые системы перечисляются построчно): устройство /точка-монтирования тип файловой системы опции частота дампов порядок проверки устройство Имя устройства (которое должно присутствовать), как описано в . точка монтирования Каталог (существующий), куда следует смонтировать файловую систему. тип файловой системы Тип файловой системы, который передается программе &man.mount.8;. По умолчанию FreeBSD использует ufs. опции Например, для монтирования файловой системы в режиме чтение-запись или для режима только чтение, за которыми могут следовать и другие опции. Довольно часто используется опция, чтобы не монтировать автоматически файловые системы в процессе загрузки. Об остальных опциях можно прочитать в &man.mount.8;. частота дампов Используется утилитой &man.dump.8; для определения файловых систем, с которых необходимо периодически снимать специальные архивные копии. При отсутствии этого параметра принимается равным нулю. порядок проверки Определяет порядок, в котором следует проверять файловые системы (чаще всего, в случае некорректного размонтирования или внезапной перезагрузки системы). Если файловую системы не нужно проверять, этот параметр должен быть установлен в ноль. Для корневой файловой системы (которая должна быть проверена в первую очередь) установите его в 1. Для всех остальных – 2 или больше. Если две или более файловые системы имеют одинаковое значение passno, &man.fsck.8; попытается проверять их параллельно (если, конечно, это возможно физически). Команда <command>mount</command> filesystems mounting Команда &man.mount.8; используется, как следует из ее имени, для монтирования файловых систем. Пример использования (простейший случай): &prompt.root; mount устройство точка-монтирования Перечислим основные опции, которые может принимать команда &man.mount.8; (полный список смотрите в странице руководства): Опции монтирования Смонтировать все файловые системы, перечисленные в файле /etc/fstab. Исключение составляют помеченные как noauto, перечисленные после опции и уже смонтированные. Сделать все кроме самого системного вызова mount. Эта опция полезна вместе с флагом для определения того, что на самом деле пытается сделать &man.mount.8;. Монтировать поврежденный раздел (опасно!), или форсировать отмену всех запросов на запись при изменении режима монтирования с чтение-запись на только чтение. Монтировать файловую систему в режиме только для чтения. То же самое, что и указание аргумента для опции . fstype Монтировать файловую систему как систему указанного типа, или, в случае опции , только файловые системы данного типа. По умолчанию, тип файловой системы – ufs. Обновить опции монтирования для файловой системы. Выдавать более подробную информацию. Монтировать файловую систему в режиме чтение-запись. Опция принимает разделенные запятыми аргументы, включая нижеперечисленные: nodev Не обращать внимание на специальные файлы устройств на файловой системе (то есть не считать их файлами устройств). Весьма полезная опция для повышения безопасности системы. noexec Запрет на исполнение бинарных файлов на файловой системе (тоже полезная опция для повышения безопасности системы). nosuid Игнорировать suid- и sgid-биты на файловой системе (еще одна полезная опция для повышения безопасности системы). Команда <command>umount</command> filesystems unmounting Команда &man.umount.8; принимает в качестве параметра точку монтирования какой-либо файловой системы, имя устройства, опцию или . Кроме того, вы можете дополнительно указать опцию для форсированного размонтирования файловой системы, и для получения более подробной информации. Имейте ввиду, что это в общем случае опасно и потому не рекомендуется, так как тем самым вы можете нарушить работу компьютера или повредить данные на файловой системе. Опции и используются для размонтирования всех файловых систем (разве что вы укажете опцию ). Разница состоит в том, что не пытается размонтировать корневую файловую систему. Процессы FreeBSD является многозадачной операционной системой. Это означает, что одновременно может быть запущена более чем одна программа. Каждая программа, работающая в некоторый момент времени, называется процессом. Каждая команда, которую вы запускаете, порождает хотя бы один процесс. Есть несколько системных процессов, запущенных все время и поддерживающих функциональность системы. У каждого процесса есть уникальный номер, называемый process ID, или PID, и, как и у файлов, у каждого процесса есть владелец и группа. Информация о владельце и группе процесса используется для определения того, какие файлы и устройства могут быть открыты процессом с учетом прав на файлы, о которых говорилось ранее. Также у большинства процессов есть родительский процесс. Например, при запуске команд из оболочки, оболочка является процессом и любая запущенная команда также является процессом. Для каждого запущенного таким путем процесса оболочка будет являться родительским процессом. Исключением из этого правила является специальный процесс, называемый &man.init.8;. init всегда первый процесс, его PID всегда 1. init запускается автоматически ядром во время загрузки FreeBSD. Две команды очень полезны для просмотра работающих в системе процессов, это &man.ps.1; и &man.top.1;. Команда ps используется для получения списка запущенных процессов и может показать их PID, сколько памяти они используют, команду которой они были запущены и т.д. Команда top показывает запущенные процессы и обновляет экран каждые несколько секунд, что позволяет наблюдать за работой компьютера в реальном времени. По умолчанию, ps показывает только принадлежащие вам процессы. Например: &prompt.user; ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish Как вы можете видеть в данном примере, вывод &man.ps.1; организован в несколько колонок. Идентификатор процесса PID обсуждался ранее. PID назначаются с 1 до 99999 и опять с начала, если последнее число будет превышено. Колонка TT показывает терминал (tty), на котором запущена программа (можете пока забыть про это). STAT показывает состояние программы и опять же может быть пока проигнорирован. TIME это количество времени центрального процессора, использованное программой — это обычно не время, прошедшее с запуска программы, поскольку большинство программы проводят много времени в в ожидании некоторого события перед тем, как занять время процессора. Наконец, COMMAND это команда, которой программа была запущена. У &man.ps.1; есть множество различных опций, влияющих на выводимую информацию. Один из наиболее полезных наборов опций это auxww. позволяет показать информацию о всех запущенных процессах, а не только тех, которыми вы владеете. показывает имя пользователя, владеющего процессом, и информацию об используемой памяти. показывает информацию о процессах-даемонах и указывает &man.ps.1; показать всю командную строку, вместо обрезания ее, когда она станет слишком длинной, чтобы уместиться на экран. Вывод &man.top.1; похож на только что описанный. Обычно он выглядит так: &prompt.user; top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ... Вывод разбит на два раздела. Заголовок (первые пять строк) показывает PID последнего запущенного процесса, среднее значение загрузки системы (которое показывает насколько система занята), время работы системы с последней перезагрузки и текущее время. Другие цифры заголовка относятся к количеству запущенных процессов (в данном примере 47), количеству занятой памяти и подкачки и время, занимаемое различными состояниями процессора. Ниже идут несколько колонок, содержащих похожую на вывод &man.ps.1; информацию. Как и раньше, это PID, время процессора, командная строка. &man.top.1; показывает также величину занятой процессом памяти. Это значение разбито на две колонки, одна для общего объема, а другая для резидентного — общий объем показывает сколько всего памяти нужно приложению, а резидентный показывает количество памяти, используемой в данный момент. Из этого примера видно, что &netscape; требует почти 30 MB памяти, но в данный момент использует только 9 MB. &man.top.1; автоматически обновляет экран каждые две секунды; это значение можно изменить опцией . Даемоны, сигналы, уничтожение процессов Если вы запускаете редактор, им можно легко управлять, открывать в нем файлы и т.д. Вы можете делать это, поскольку редактор предоставляет такие возможности и потому, что редактор присоединен к терминалу. Некоторые программы разработаны без поддержки интерфейса пользователя, поэтому они отсоединяются от терминала при первой возможности. Например, веб-сервер целый день отвечает на запросы из сети, и ему как правило не требуется ваше вмешательство. Программы, передающие почту от сервера к серверу — другой пример приложений этого класса. Мы называем эти программы даемонами. Даемоны это персонажи греческой мифологии; хорошие или плохие, они были спутниками человека и, вообще говоря, выполняли полезную работу для людей. Почти как веб- и почтовые серверы выполняют полезную работу сегодня. Это причина, по которой талисманом BSD долгое время является веселый даемон в тапочках и с вилами. Есть соглашение, по которому имя программы, которая обычно запускается как даемон, заканчивается на d. BIND это Berkeley Internet Name Daemon (выполняемая программа называется named), программа веб сервера Apache называется httpd, даемон очереди печати это lpd и так далее. Это соглашение, а не жесткое правило; например, главный почтовый даемон для Sendmail называется sendmail, а не maild, как вы могли бы предположить. Иногда может потребоваться взаимодействие с процессом даемона. Эти можно сделать с помощью сигналов, т.е. взаимодействовать с даемонами (или с любыми запущенными процессами), посылая им сигнал. Есть множество различных сигналов — некоторые из них имеют специальное значение, другие обрабатываются приложением, реакция которого на эти сигналы должна быть описана в документации. Вы можете посылать сигналы только тем процессам, владельцем которых являетесь. Если вы отправите сигнал какому-то другому процессу с помощью &man.kill.1; или &man.kill.2;, доступ будет запрещен. Исключением из правил является пользователь root, который может отправлять сигналы любому процессу. В некоторых случаях FreeBSD тоже посылает сигналы приложениям. Если приложение плохо написано и пробует обратиться к области памяти, к которой оно не должно обращаться, FreeBSD посылает процессу сигнал нарушение сегментации (SIGSEGV). Если приложение использует системный вызов &man.alarm.3;, чтобы получить уведомление по истечении определенного периода времени, будет отправлен сигнал Alarm (SIGALRM) и т.д. Два сигнала могут быть использованы для завершения процесса, SIGTERM и SIGKILL. SIGTERM это корректный способ завершить процесс; процесс может поймать сигнал, определить, что его хотят завершить, закрыть любые файлы, которые он мог открыть, и закончить то, что он делал в момент перед закрытием. В некоторых случаях процесс может даже игнорировать SIGTERM, если выполняет задачу, которая не может быть прервана. SIGKILL не может быть проигнорирован процессом. Этот сигнал говорит Меня не волнует что ты делаешь — остановись немедленно. Если вы посылаете процессу SIGKILL, FreeBSD сразу же остановит этот процесс Не совсем верно — есть несколько действий, которые не могут быть прерваны. Например, если процесс пытается прочитать файл на другом компьютере в сети, и другой компьютер по какой-то причине не отвечает (был выключен, или в сети произошла ошибка), процесс находится в так называемом непрерываемом состоянии. В конце концов время ожидания закончится, обычно это происходит через две минуты. Как только время закончится, процесс будет уничтожен. . Другие сигналы, которые возможно вам понадобятся, SIGHUP, SIGUSR1, и SIGUSR2. Это сигналы общего назначения, различные приложения могут по-разному реагировать на них. Предположим, что вы изменили файл конфигурации веб сервера — теперь нужно указать ему перечитать конфигурацию. Можно остановить и запустить httpd, но это приведет к кратковременной остановке сервера, которая может быть нежелательна. Большинство даемонов написаны так, чтобы при получении сигнала SIGHUP перечитывать файлы конфигурации. Поэтому вместо уничтожения и запуска httpd можно послать сигнал SIGHUP. Поскольку нет стандартного способа реагирования на этот сигнал, различные даемоны будут вести себя по разному; прочитайте документацию на даемон по этому вопросу. Сигналы посылаются с помощью команды &man.kill.1;, как показано в этом примере. Отправка сигнала процессу Этот пример показывает как послать сигнал &man.inetd.8;. Файл конфигурации inetd /etc/inetd.conf, inetd перечитает этот файл, если ему отправить сигнал SIGHUP. Нужно определить PID процесса, которому вы хотите отправить сигнал. Сделайте это с помощью &man.ps.1; и &man.grep.1;. Команда &man.grep.1; используется для поиска по заданной строке в выходном потоке. Эта команда запускается под обычным пользователем, а &man.inetd.8; под root, поэтому &man.ps.1; должна быть запущена с параметром . &prompt.user; ps -ax | grep inetd 198 ?? IWs 0:00.00 inetd -wW Итак, PID &man.inetd.8; 198. В некоторых случаях в выводе команды может также появиться grep inetd. Это из-за способа, которым &man.ps.1; получает список запущенных процессов. Используйте &man.kill.1; для отправки сигнала. Поскольку &man.inetd.8; запускается из под root, нужно сначала использовать &man.su.1; для получения прав root. &prompt.user; su Password: &prompt.root; /bin/kill -s HUP 198 Как и большинство команд &unix;, &man.kill.1; ничего не выведет, если отработает нормально. Если вы посылаете сигнал процессу, которым не владеете, на экране появится kill: PID: Operation not permitted. При неправильно набранном PID вы или отправите сигнал другому процессу, что может привести к неприятностям, или, если повезет, сигнал будет отправлен на PID, который в данный момент не используется — на экране появится kill: PID: No such process. Зачем использовать <command>/bin/kill</command>? Во многих оболочках команда kill встроена; таким образом, оболочка вместо вызова /bin/kill сама посылает сигнал. Это может быть очень полезно, но в разных оболочках имя сигнала указывается по-разному. Чем пытаться выучить их все, гораздо проще использовать /bin/kill ... непосредственно. Отправка других сигналов очень похожа, просто замените TERM или KILL в командной строке на имя другого сигнала. Уничтожение процессов наугад может быть плохой идеей. В частности, &man.init.8;, чей PID 1, имеет особое значение. Выполнение /bin/kill -s KILL 1 — быстрый способ перегрузить систему. Всегда дважды проверяйте параметры запуска &man.kill.1; перед тем, как нажать Enter. Интерпретатор команд оболочка командная строка При работе с FreeBSD, в большинстве случаях для выполнения повседневных задач используется командный интерфейс (так называемая оболочка, shell). Основная задача интерпретатора — принимать вводимые команды и выполнять их. Многие командные интерпретаторы имеют встроенные средства для выполнения повседневной работы, например, операции над файлами и каталогами, редактирование командной строки, командные макросы и переменные окружения. Вместе с FreeBSD поставляется несколько командных интерпретаторов, например, sh, или Bourne Shell, и tcsh, расширенная версия C-shell. Многие другие интерпретаторы доступны из коллекции портов FreeBSD, например zsh и bash. Какой из командных интерпретаторов использовать? Это дело вкуса. Если вы программируете на C, то вам, возможно, понравится tcsh. Если вы работали с Linux, или только начинаете работать с интерфейсом командной строки &unix;, попробуйте bash. Каждый из названных интерпретаторов имеет свои особенности, которые отличат его от других, и, возможно, повлияют на ваш выбор. Одна из наиболее часто используемых функций командного интерпретатора – дополнение частичного имени файла до полного. Вы можете набрать только первые несколько символов имени файла, нажать клавишу табуляции (TAB), и командный интерпретатор автоматически завершит имя. Например, у нас есть два файла, названные foobar и foo.bar. Допустим, мы хотим удалить файл foo.bar. Для этого, наберем на клавиатуре rm fo[Tab].[Tab]. Вы увидите следующее: rm foo[BEEP].bar. Здесь [BEEP] – это так называемый консольный сигнал, оповещающий о том, что интерпретатор не в состоянии закончить имя файла, так как по введенным вами символам невозможно однозначно идентифицировать файл. Например, имена файлов foobar и foo.bar оба начинаются с fo, но после нажатия TAB можно однозначно дополнить только до foo. Если же теперь ввести точку (.) и вновь нажать TAB, интерпретатор достроит имя файла целиком. переменные окружения Дополнительные возможности при работе с интерпретатором дает использование переменных окружения. Переменные окружения это пары переменная=значение, хранящиеся в памяти интерпретатора. Значение переменных окружения может быть прочитано любой программой, запущенной из командного интерпретатора, и часто содержит настройки для многих приложений и утилит. Ниже приведены некоторые наиболее часто встречающиеся переменные окружения и их значения: переменные окружения Переменная Описание USER Имя текущего пользователя. PATH Каталоги, разделенные двоеточием, для поиска исполняемых файлов. DISPLAY Сетевое имя виртуального дисплея X11, доступного для подключения. SHELL Текущий командный интерпретатор. TERM Название (тип) терминала. Используется, чтобы узнать возможности терминала. TERMCAP Список escape-последовательностей для управления различными функциями терминала. OSTYPE Название (тип) операционной системы. Например, FreeBSD. MACHTYPE Архитектура машины (процессора). EDITOR Выбранный пользователем текстовый редактор. PAGER Выбранная пользователем утилита просмотра файлов. MANPATH Каталоги, разделенные двоеточием, для поиска файлов системного справочника. оболочки Bourne Установка значений переменных окружения различна для разных оболочек. Например, в интерпретаторах C-стиля, таких как tcsh и csh, это setenv. В интерпретаторах Bourne, таких как sh и bash, это export. Например, чтобы установить или изменить значение переменной EDITOR к значению /usr/local/bin/emacs в csh или tcsh, выполните команду: &prompt.user; setenv EDITOR /usr/local/bin/emacs В оболочках Bourne: &prompt.user; export EDITOR="/usr/local/bin/emacs" Чтобы получить значение переменной, например, в командной строке, поместите символ $ перед именем переменной. Например, команда echo $TERM выведет значение переменной $TERM. Командный интерпретатор воспринимает некоторые символы, называемые метасимволами, в качестве управляющих. Один из наиболее часто используемых – символ *, который заменяет любое количество символов в имени файла. Метасимволы используются для поиска файлов по маске, например, команда echo * делает практически тоже самое, что и команда ls, поскольку интерпретатор вызывает команду echo, передавая ей имена всех файлов, попадающих под маску *. В некоторых ситуациях требуется, чтобы интерпретатор воспринимал метасимволы как обычные, не несущие специальной смысловой нагрузки. Этого можно достичь, поставив перед символом обратную косую черту (\). Например, команда echo $TERM выведет тип вашего терминала, в то же время команда echo \$TERM выведет именно слово $TERM, а не значение переменной $TERM. Как изменить командный интерпретатор по умолчанию Самым простым способом, пожалуй, будет воспользоваться командой chsh. Если переменная EDITOR определена, то будет загружен соответствующий текстовый редактор, иначе vi. Вам нужно будет изменить значение поля “Shell:” и выйти из редактора с сохранением результатов. Можно также воспользоваться опцией команды chsh. Например, если вы хотите изменить интерпретатор на bash, выполните: &prompt.user; chsh -s /usr/local/bin/bash Также можно запустить chsh без параметров и изменить интерпретатор по умолчанию в редакторе. Интерпретатор, который вы будете использовать, обязательно должен быть в файле /etc/shells. Обычно, при установке интерпретаторов из коллекции портов, это делается автоматически. Если же это не так, вам нужно будет самостоятельно добавить соответствующую строчку в этот файл. Например, если вы установили bash вручную и поместили его в каталог /usr/local/bin, нужно набрать: &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells Теперь можно смело использовать команду chsh. Текстовые редакторы текстовые редакторы редакторы Большинство настроек в FreeBSD производится путем редактирования текстовых файлов. Соответственно, вам нужно будет освоиться с каким-либо текстовым редактором. Вместе с FreeBSD поставляются лишь некоторые из них, гораздо больше редакторов доступно из коллекции портов. ee Самым простым в изучении и использовании, по-видимому, можно назвать ee, что расшифровывается как “easy editor”, т.е. “простой редактор”. Чтобы начать редактировать какой-либо файл, наберите в командной строке ee filename, где filename имя редактируемого файла. Например, для редактирования файла /etc/rc.conf, наберите ee /etc/rc.conf. В верхней части экрана вы увидите список основных команд редактора. Символ каретки (^) означает клавишу Ctrl, таким образом, ^e означает комбинацию клавиш Ctrle . Чтобы выйти из редактора, нажмите клавишу Esc, затем Enter. Если остались какие-либо не сохраненные данные, вам потребуется подтвердить выход, сохранив результат работы или оставив файл без изменения. vi editors vi emacs editors emacs - В FreeBSD присутствует также мощный текстовый редактор + В FreeBSD присутствует также более мощный текстовый редактор vi, а редакторы emacs и vim - можно найти в коллекции портов. Эти редакторы более сложны в изучении, + можно найти в коллекции портов (editors/emacs и editors/vim). Эти редакторы более сложны + в изучении, но их возможности порой превосходят всякие ожидания! Если в будущем вам потребуется часто редактировать большие объемы текстов, то потраченное на изучение этих редакторов время окупится с лихвой. Устройства и файлы устройств Термин устройство используется в основном по отношению к аппаратному обеспечению системы, такому как диски, принтеры, графические адаптеры, устройства ввода текста. При загрузке FreeBSD главным образом выводит на экран информацию об обнаруженных устройствах. Вы можете найти эти сообщения в файле /var/run/dmesg.boot. Например, acd0 это первый диск IDE CDROM, а kbd0 — клавиатура. В &unix; доступ к большинству этих устройств можно получить через специальные файлы устройств, расположенные в каталоге /dev. Создание файлов устройств При добавлении в систему нового устройства, или добавление поддержки дополнительных устройств, может понадобиться создать один или несколько файлов устройств для нового оборудования. Скрипт MAKEDEV В системах без DEVFS (это относится ко всем версиям FreeBSD ниже 5.0), файлы устройств создаются с помощью &man.MAKEDEV.8;, как показано ниже: &prompt.root; cd /dev &prompt.root; sh MAKEDEV ad1 В этом примере создается соответствующий файл устройства для вторичного IDE диска. <literal>DEVFS</literal> (DEVice File System) Device filesystem, или DEVFS, предоставляет доступ к пространству устройств ядра через общую файловую систему. Вместо создания и модификации файлов устройств, DEVFS создает специальную файловую систему. Обращайтесь к &man.devfs.5; за дополнительной информацией. В FreeBSD 5.0 и выше DEVFS используется по умолчанию. Бинарные форматы Для понимания почему &os; использует формат &man.elf.5;, вам потребуется сначала немного узнать о трех доминирующих исполняемых форматах для &unix;: &man.a.out.5; Старейший и классический объектный формат &unix;. Он использует короткий и компактный заголовок с магическим числом в начале, которое часто используется для описания формата (смотрите &man.a.out.5; с более подробной информацией). Он содержит три загружаемых сегмента: .text, .data и .bss плюс таблицу символов и таблицу строк. COFF Объектный формат SVR3. Заголовок включает таблицу разделов, так что могут быть сегменты кроме .text, .data и .bss. &man.elf.5; Наследник формата COFF, поддерживающий множественные сегменты и 32-битные или 64-битные значения. Одно важное замечание: ELF был разработан в предположении что есть только по одному ABI на одну архитектуру. Это предположение совершенно не верно, и не только в мире коммерческих SYSV (в котором есть как минимум три ABI: SVR4, Solaris, SCO). FreeBSD пытается обойти эту проблему, в частности предоставляя утилиту для оглавления известного исполняемого файла ELF информацией об ABI с которым он совместим. Обратитесь к странице справочника &man.brandelf.1; за более подробной информацией. FreeBSD имеет произошла из классического лагеря и использовала формат &man.a.out.5;, технологию опробованную и проверенную на многих поколениях релизов BSD, до начала ветки 3.X. Хотя собирать и запускать родные бинарные файлы ELF (и ядро) в системе FreeBSD можно было несколько раньше, FreeBSD вначале сопротивлялась проталкиванию ELF как формата по умолчанию. Почему? Когда лагерь Linux производил болезненный переход к ELF, у него не было большого преимущества перед исполняемым форматом a.out, из-за негибкого, основанного на таблице переходов механизма разделяемых библиотек, что делало создание разделяемых библиотек очень трудным для поставщиков и разработчиков. Когда доступные инструменты ELF предоставили решение проблемы разделяемых библиотек, и появилась некоторая перспектива, цена перехода была признана допустимой и он был сделан. Механизм разделяемых библиотек FreeBSD близок по стилю к механизму разделяемых библиотек &sunos; от Sun, и поэтому очень прост в использовании. Итак, почему так много разных форматов? Давно, в темном далеком прошлом, оборудование было простым. Это простое оборудование поддерживало простые, маленькие системы. a.out был совершенно адекватен задаче представления бинарных файлов на таких простых системах (PDP-11). Люди, портировавшие &unix; с этих простых систем, оставили a.out формат потому, что он был достаточен для ранних портов &unix; на архитектуры подобные Motorola 68k, VAXen, etc. Затем какой-то смышленый инженер по оборудованию решил что если он сможет заставить программы исполнять некоторые трюки, то сможет несколько упростить дизайн и заставить ядро CPU работать быстрее. Хотя это было сделано с новым типом оборудования (известного сейчас как 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. ELF более выразителен чем a.out позволяет базовой системе быть более гибкой. ELF лучше поддерживается, и предоставляет поддержку кросскомпиляторов, что важно для многих людей. ELF может быть немного медленнее чем a.out, но замерить это сложно. Есть также множество деталей, отличающихся для этих двух форматов, в том как они отображают страницы, обрабатывают начальный код, и т.д. В этом нет ничего очень важного, но они различаются. В настоящее время поддержка a.out убрана из ядра GENERIC, и со временем будет убрана из ядра как только потребность в запуске старых программ a.out останется в прошлом. Дополнительная информация Системный справочник (man) страницы справочника Пожалуй, самым полным руководством по FreeBSD является системный справочник (man). Практически каждое приложение или утилита имеют соответствующую страницу (часто не одну), описывающую тот или иной аспект работы программы, всевозможные опции и настройки. Для просмотра этих страниц существует команда man: &prompt.user; man command Здесь command – это команда, о которой вы хотите получить информацию. Например, чтобы узнать побольше о команде ls, наберите: &prompt.user; man ls Содержимое системного справочника для удобства разделено на несколько секций: Пользовательские команды. Системные вызовы и коды ошибок. Функции стандартных библиотек. Драйверы устройств. Форматы файлов. Развлечения и игры. Дополнительная информация. Команды системного администрирования. Для разработчиков ядра. В некоторых случаях (не так уж редко), страницы, относящиеся к одной и той же команде, находятся в различных секциях справочника. Например, есть команда cdmod и системный вызов chmod(). В этом случае, необходимо явно указать man секцию, в которой нужно искать соответствующую страницу: &prompt.user; man 1 chmod Эта команда выведет справку об утилите chmod. По традиции, конкретная секция справочника указывается в скобках после команды, например, &man.chmod.1; относится к утилите chmod, а &man.chmod.2; – к соответствующему системному вызову. Часто бывает так, что вы не знаете название команды, но имеете представление о том, что она должна делать. В этом случае можно попытаться найти нужную команду по ключевым словам, встречающимся в ее описании, используя опцию программы man: &prompt.user; man -k mail Вы получите список команд, имеющих слово “mail” в своих описаниях. Это эквивалентно использованию команды apropos. Или например, вы видите список файлов в каталоге /usr/bin, при этом не имея ни малейшего представления о том, какие функции выполняет каждый их них? Просто наберите: &prompt.user; cd /usr/bin &prompt.user; man -f * или &prompt.user; cd /usr/bin &prompt.user; whatis * что фактически одно и то же. Файлы GNU Info FreeBSD поставляется с многочисленными приложениями и утилитами от Фонда Свободного Программного Обеспечения, 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 3df8721dfd..27d6f175c3 100644 --- a/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/bibliography/chapter.sgml @@ -1,602 +1,602 @@ Библиография Так как страницы Справочника FreeBSD предоставляют лишь описание отдельных частей операционной системы FreeBSD, они не очень удобны для иллюстрации объединения этих частей вместе для того, чтобы настроить ОС и сделать ее работу более гладкой. Для этого незаменимы хорошая книга по системному администрированию &unix; и хорошее руководство пользователя. Книги и журналы, специализирующиеся на 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 4 - Installieren, Konfigurieren, Administrieren (на немецком), выпущено Computer und Literatur Verlag, 2001. ISBN 3-932311-88-4. FreeBSD 5 - Installieren, Konfigurieren, Administrieren (на немецком), выпущено Computer und Literatur Verlag, 2003. ISBN 3-936546-06-1. FreeBSD de Luxe (на немецком), выпущено Verlag Modere Industrie, 2003. ISBN 3-8266-1343-0. FreeBSD Install and Utilization Manual (на японском), выпущено Mainichi Communications Inc.. Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo Создание Интернет Сервера с использованием FreeBSD (на Индонезийском языке), выпущено Elex Media Komputindo. Книги и журналы на английском языке: Absolute BSD: The Ultimate Guide to FreeBSD, выпущено No Starch Press, 2002. ISBN: 1886411743 The Complete FreeBSD, выпущено O'Reilly, 2003. ISBN: 0596005164 The FreeBSD Corporate Networker's Guide, выпущено Addison-Wesley, 2000. ISBN: 0201704811 FreeBSD: An Open-Source Operating System for Your Personal Computer, выпущено The Bit Tree Press, 2001. ISBN: 0971204500 Teach Yourself FreeBSD in 24 Hours, выпущено Sams, 2002. ISBN: 0672324245 FreeBSD unleashed, выпущено Sams, 2002. ISBN: 0672324563 FreeBSD: The Complete Reference, выпущено McGrawHill, 2003. ISBN: 0072224096 Руководства для пользователей Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-075-9 Computer Systems Research Group, UC Berkeley. 4.4BSD User's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-076-7 UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN 093717520X Mui, Linda. What You Need To Know When You Can't Find Your UNIX System Administrator. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-104-6 Ohio State University написал Ознакомительный Курс UNIX который доступен в Online в HTML и PS форматах. Итальянский перевод + url="&url.doc.base;/it_IT.ISO8859-15/books/unix-introduction/index.html">перевод этого документа доступен как часть FreeBSD Italian Documentation Project. Jpman Project, Japan FreeBSD Users Group. FreeBSD User's Reference Manual (Японский перевод). Mainichi Communications Inc., 1998. ISBN4-8399-0088-4 P3800E. Эдинбургский Университет составил Online Путеводитель для новичков в UNIX. Руководства для администраторов Albitz, Paul and Liu, Cricket. DNS and BIND, 4th Ed. O'Reilly & Associates, Inc., 2001. ISBN 1-59600-158-4 Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-080-5 Costales, Brian, et al. Sendmail, 2nd Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0 Frisch, Æleen. Essential System Administration, 2nd Ed. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-127-5 Hunt, Craig. TCP/IP Network Administration, 2nd Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-322-7 Nemeth, Evi. UNIX System Administration Handbook. 2nd Ed. Prentice Hall, 2000. ISBN 0-13-020601-6 Stern, Hal Managing NFS and NIS O'Reilly & Associates, Inc., 1991. ISBN 0-937175-75-7 Jpman Project, Japan FreeBSD Users Group. FreeBSD System Administrator's Manual (Japanese translation). Mainichi Communications Inc., 1998. ISBN4-8399-0109-0 P3300E. Dreyfus, Emmanuel. Cahiers - de l'Admin: BSD (на французском), Eyrolles, 2003. - ISBN 2-212-11244-0 + url="http://www.eyrolles.com/Informatique/Livre/9782212114638/">Cahiers + de l'Admin: BSD 2nd Ed. (на французском), Eyrolles, 2004. + ISBN 2-212-11463-X Руководства для программистов Asente, Paul, Converse, Diana, and Swick, Ralph. X Window System Toolkit. Digital Press, 1998. ISBN 1-55558-178-1 Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-078-3 Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-079-1 Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4rd ed. Prentice Hall, 1995. ISBN 0-13-326224-3 Kernighan, Brian and Dennis M. Ritchie. The C Programming Language.. PTR Prentice Hall, 1988. ISBN 0-13-110362-9 Lehey, Greg. Porting UNIX Software. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7 Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9 Spinellis, Diomidis. Code Reading: The Open Source Perspective. Addison-Wesley, 2003. ISBN 0-201-79940-5 Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, Mass. : Addison-Wesley, 1992. ISBN 0-201-56317-7 Stevens, W. Richard. UNIX Network Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN 0-13-490012-X Wells, 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-5 Jolitz, 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-1 Leffler, 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-9 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 (глава 2 этой книги доступна онлайн как часть + url="&url.books.design-44bsd;/book.html">онлайн как часть Проекта документирования FreeBSD, и глава 9 доступна здесь.) Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9 Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8 Stevens, 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-3 Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2 Wright, 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-4 Garfinkel, Simson and Gene Spafford. Practical UNIX & Internet Security. 2nd Ed. O'Reilly & Associates, Inc., 1996. ISBN 1-56592-148-8 Garfinkel, 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-5 Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7 Intel 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-1 Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8 Shanley, Tom. PCI System Architecture. 4th ed. Reading, Mass. : Addison-Wesley, 1999. ISBN 0-201-30974-2 Van Gilluwe, Frank. The Undocumented PC, 2nd Ed. Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN 0-201-47950-8 Messmer, Hans-Peter. The Indispensable PC Hardware Book, 4th Ed. Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN 0-201-59616-4 История &unix; Lion, John Lion's Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137 Raymond, Eric S. The New Hacker's Dictionary, 3rd edition. MIT Press, 1996. ISBN 0-262-68092-0. Also known as the Jargon File Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN 0-201-54777-5 Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1 Don Libes, Sandy Ressler Life with UNIX — special edition. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7 The BSD family tree. или /usr/share/misc/bsd-family-tree на современном компьютере FreeBSD. The BSD Release Announcements collection. 1997. Networked Computer Science Technical Reports Library. Old BSD releases from the Computer Systems Research group (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. Прочие издания The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838 Sys Admin — The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688 freeX — Das Magazin für Linux - BSD - UNIX (на немецком) Computer- und Literaturverlag GmbH, ISSN 1436-7033 diff --git a/ru_RU.KOI8-R/books/handbook/chapters.ent b/ru_RU.KOI8-R/books/handbook/chapters.ent index dfead5d6d9..052c7844e8 100644 --- a/ru_RU.KOI8-R/books/handbook/chapters.ent +++ b/ru_RU.KOI8-R/books/handbook/chapters.ent @@ -1,59 +1,62 @@ + + + + + + + + - - - - - + + + - - - - + + - + - diff --git a/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml b/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml index d4377bbb97..2e5ba89c31 100644 --- a/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/mirrors/chapter.sgml @@ -1,2799 +1,2822 @@ Денис Пеплин Перевод на русский язык: Получение FreeBSD Издатели CDROM и DVD Коробочная версия FreeBSD доступна в коробочной версии (FreeBSD CD диски, дополнительное программное обеспечение, печатная документация) от нескольких поставщиков:
CompUSA WWW:
Frys Electronics WWW:
Наборы CD и DVD Наборы FreeBSD CD и DVD доступны у множества онлайн поставщиков:
Daemon News Mall 560 South State Street, Suite A2 Orem, UT 84058 США Телефон: +1 800 407-5170 Факс: +1 1 801 765-0877 Email: sales@bsdmall.com WWW:
FreeBSD Mall, Inc. 3623 Sanford Street Concord, CA 94520-1405 США Телефон: +1 925 674-0783 Факс: +1 925 674-0821 Email: info@freebsdmall.com WWW:
FreeBSD Services Ltd 11 Lapwing Close Bicester OX26 6XR Великобритания WWW:
Hinner EDV St. Augustinus-Str. 10 D-81825 München Германия Телефон: (089) 428 419 WWW:
Ikarios 22-24 rue Voltaire 92000 Nanterre Франция WWW:
Ingram Micro 1600 E. St. Andrew Place Santa Ana, CA 92705-4926 США Телефон: 1 (800) 456-8000 WWW:
JMC Software Ирландия Телефон: 353 1 6291282 WWW:
The Linux Emporium Hilliard House, Lester Way Wallingford OX10 9TA Великобритания Телефон: +44 1491 837010 Факс: +44 1491 837016 WWW:
Linux System Labs Australia 21 Ray Drive Balwyn North VIC - 3104 Австралия Телефон: +61 3 9857 5918 Факс: +61 3 9857 8974 WWW:
LinuxCenter.Ru ул. Галерная, 55 Санкт-Петербург 190000 Россия Телефон: +7-812-3125208 Email: info@linuxcenter.ru WWW:
UNIXDVD.COM LTD 57 Primrose Avenue Sheffield S5 6FS Великобритания WWW:
Распространители Если вы продавец и хотите заниматься FreeBSD CDROM, пожалуйста свяжитесь с распространителем:
Cylogistics 2672 Bayshore Parkway, Suite 610 Mountain View, CA 94043 США Телефон: +1 650 694-4949 Факс: +1 650 694-4953 Email: sales@cylogistics.com WWW:
FreeBSD Services Ltd 11 Lapwing Close Bicester OX26 6XR Великобритания WWW:
Kudzu, LLC 7375 Washington Ave. S. Edina, MN 55439 США Телефон: +1 952 947-0822 Факс: +1 952 947-0876 Email: sales@kudzuenterprises.com
+ +
+ LinuxCenter.Ru + ул. Галерная, 55 + Санкт-Петербург + 190000 + Россия + Телефон: +7-812-3125208 + Email: info@linuxcenter.ru + WWW: +
+
+
Navarre Corp 7400 49th Ave South New Hope, MN 55428 США Телефон: +1 763 535-8333 Факс: +1 763 535-0341 WWW:
FTP сайты Официальным источником FreeBSD являются анонимные FTP зеркала по всему миру. Сайт имеет хорошее подключение и поддерживает большое количество одновременных соединений, но для вас возможно потребуется найти ближайшее зеркало (особенно если вы решили настроить у себя какой-то из видов зеркал). База данных зеркал FreeBSD предпочтительнее по сравнению со списком зеркал в Руководстве, поскольку информация в базе собирается из DNS, а не из статического списка узлов. Кроме того, FreeBSD доступна через анонимный FTP со следующих зеркал. Если вы выбрали получение FreeBSD через анонимный FTP, пожалуйста выберите ближайший к вам сайт. Зеркала из списка Основных зеркал обычно содержат полный архив FreeBSD (все доступные на данный момент версии для каждой архитектуры), скорость загрузки возможно будет больше с зеркала, расположенного в вашей стране или регионе. Сайты каждой страны содержат последнюю версию для наиболее популярных архитектур, но на них может не быть полного архива FreeBSD. Все сайты предоставляют доступ через анонимный FTP, а некоторые предоставляют доступ и другими методами. Для каждого сайта приведен список методов доступа в скобках после имени хоста. &chap.mirrors.ftp.inc; Анонимный CVS <anchor id="anoncvs-intro">Введение Анонимный CVS (известный также как, anoncvs) это возможность, предоставляемая утилитами CVS, поставляемыми с FreeBSD для синхронизации с удаленным CVS репозиторием. Помимо прочего, он позволяет пользователям FreeBSD без специальных привилегий (с правами только на чтение) выполнять CVS операции на одном из официальных anoncvs серверов проекта FreeBSD. Для использования этой возможности, просто установите переменную CVSROOT на соответствующий сервер anoncvs, введите общеизвестный пароль anoncvs в ответ на приглашение команды cvs login, а затем используйте &man.cvs.1; для доступа к репозиторию как к обычному локальному CVS. Команда cvs login сохраняет пароли, использованные для авторизации на сервере CVS в файле с именем .cvspass в каталоге HOME. Если этот файл не существует, вы можете получить сообщение об ошибке при первом запуске cvs login. Просто создайте пустой файл .cvspass и попробуйте еще раз. Хотя можно сказать, что сервисы CVSup и anoncvs выполняют в сущности похожие функции, есть несколько отличий, которые могут повлиять на выбор метода синхронизации. По своей сути, CVSup гораздо более эффективно использует сетевые ресурсы, и из двух этих программ он более интеллектуален, но за его эффективность приходится платить. Во-первых, для того, чтобы появилась возможность хоть что-то получить этим методом, CVSup потребуется установить и настроить специальную программу, а во-вторых, этот CVSup позволяет синхронизацию только довольно больших частей исходных текстов, называемых коллекциями. Anoncvs напротив может использоваться для получения как одного файла, так и всей программы (например ls или grep), с помощью ссылки на имя модуля CVS. Конечно, anoncvs хорошо подходит только при операциях на чтение CVS репозитория, поэтому если вы намереваетесь производить локальную разработку в одном из репозиториев проекта FreeBSD, вам подойдет только CVSup. <anchor id="anoncvs-usage">Использование анонимного CVS Настройка &man.cvs.1; для использования анонимного CVS репозитория означает установку переменной окружения CVSROOT на один из anoncvs серверов проекта FreeBSD. На момент написания этого документа доступны следующие сервера: Австрия: :pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs (Используйте cvs login и введите любой пароль в ответ на приглашение.) Франция: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver (пароль anoncvs), ssh (нет пароля)) Германия: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs (Используйте cvs login и введите пароль anoncvs в ответ на приглашение.) Германия: :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022) Япония: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs (Используйте cvs login и введите пароль anoncvs в ответ на приглашение.) Швеция: freebsdanoncvs@anoncvs.se.FreeBSD.org:/home/ncvs (только ssh - без пароля) США: :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs (Используйте cvs login и введите пароль anoncvs в ответ на приглашение.) Поскольку CVS позволяет выполнить check out практически любой версии исходных текстов FreeBSD, которые когда-либо существовали (или, в некоторых случаях, будут существовать), вам необходимо познакомиться с флагом &man.cvs.1; для ревизий () и с параметрами, которые могут быть использованы с этим флагом в репозитории проекта FreeBSD. Есть два вида тегов, теги ревизий и теги ветвей. Теги ревизий отвечают за определенную ревизию. Их значение остается прежним изо дня в день. Теги ветвей сопоставляются последней ревизии определенной ветви разработки, в любой момент времени. Поскольку теги ветвей не сопоставлены какой-то определенной ревизии, завтра они могут означать совсем не то, что сегодня. содержит теги ревизий, которые могут заинтересовать пользователей. Опять же, ни один из них не подходит для коллекции портов, поскольку в коллекции портов нет разнообразия ревизий. Если вы указываете тег ветви, то обычно получаете последнюю версию файлов этой ветви разработки. Если вы хотите получить предыдущую версию, это можно сделать путем указания даты флагом . Обратитесь к странице справочника &man.cvs.1; за более подробной информацией. Примеры Хотя перед тем, как что-то делать, рекомендуется полностью прочесть страницу справочника &man.cvs.1;, вот несколько кратких примеров использования Anonymous CVS: Извлечение кода из -CURRENT (&man.ls.1;) с последующим удалением: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. &prompt.user; cvs co ls &prompt.user; cvs release -d ls &prompt.user; cvs logout Извлечение &man.ls.1; из ветви для 3.X-STABLE: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. &prompt.user; cvs co -rRELENG_3 ls &prompt.user; cvs release -d ls &prompt.user; cvs logout Создание списка изменений &man.ls.1; (в виде unified diff) &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. &prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls &prompt.user; cvs logout Поиск доступных имен модулей: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. &prompt.user; cvs co modules &prompt.user; more modules/modules &prompt.user; cvs release -d modules &prompt.user; cvs logout Другие ресурсы В изучении CVS могут помочь следующие дополнительные ресурсы: Учебник по CVS от Cal Poly. CVS Home, сообщество разработки и поддержки CVS. CVSweb это веб интерфейс к CVS проекта FreeBSD. Использование CTM CTM это метод синхронизации удаленного дерева исходных текстов с центральным. Он был разработан для использования с деревом исходных текстов FreeBSD, хотя может быть полезен и для других целей. На данный момент существует очень немного (если она вообще существует) документации по процессу создания дельта-файлов (deltas, разница между имеющимися и актуальными исходными текстами), поэтому обратитесь в список рассылки &a.ctm-users.name; за дополнительной информацией, если захотите использовать CTM для других целей. Зачем мне может понадобиться <application>CTM</application>? CTM создаст для вас локальную копию исходных текстов FreeBSD. Существует множество разновидностей дерева исходных текстов. Захотите ли вы поддерживать все дерево CVS или только одну из ветвей, CTM может предоставить вам все необходимое. Если вы разработчик FreeBSD, но ваше соединение по TCP/IP некачественное или отсутствует, или же вы просто хотите, чтобы изменения автоматически отправлялись вам, CTM предназначен для вас. Вам потребуется получать до трех изменений в день для наиболее активных ветвей. Они будут отправляться вам по электронной почте. Размеры обновлений всегда поддерживаются настолько малыми, насколько это возможно. Они обычно меньше 5K, хотя случается (раз из десяти) достигают 10-50K и время от времени даже 100K или больше. Вам также потребуется узнать о различных особенностях работы непосредственно с исходными текстами в разработке, вместо готовых релизов. Это в частности относится к выбору исходных текстов ветви -CURRENT. Рекомендуется прочесть материал На переднем крае разработок. Что потребуется для использования <application>CTM</application>? Вам потребуются две вещи: программа CTM и исходные тексты, которые требуется обновить (до актуального состояния). Программа CTM была частью FreeBSD все время с момента выпуска релиза 2.0, она находится в каталоге /usr/src/usr.sbin/ctm, если у вас есть копия исходных текстов. Если вы работаете с версией FreeBSD до 2.0, можете получить актуальные исходные тексты CTM непосредственно с: Дельта-файлы CTM могут приходить двумя путями, через FTP или email. Если у вас есть доступ к интернет по FTP, доступ к CTM может быть получен через следующие FTP сайты: или с сайтов из списка зеркал. Зайдите по FTP в соответствующий каталог и прочтите файл README. Если вы предпочитаете получать дельта-файлы по почте: Подпишитесь на один из списков распространения CTM. &a.ctm-cvs-cur.name; поддерживает все дерево CVS. &a.ctm-src-cur.name; поддерживает главную ветвь разработки. &a.ctm-src-4.name; поддерживает ветвь 4.X, и т.д. Если вы не знаете, как подписаться на список, нажмите на ссылку выше или на ссылку &a.mailman.lists.link;, а затем на ссылку соответствующего списка. Страница списка должна содержать все необходимые инструкции по подписке. Когда вы начнете получать обновления CTM по почте, используйте программу ctm_rmail для распаковки и применения обновлений. Вы можете использовать программу ctm_rmail непосредственно из /etc/aliases, если хотите полностью автоматизировать процесс. Прочтите страницу справочника ctm_rmail с более подробной информацией. Вне зависимости от способа получения дельта-файлов CTM, вам потребуется подписка на список рассылки &a.ctm-announce.name;. В будущем этот список станет единственным местом, где будут анонсироваться операции, относящиеся к системе CTM. Нажмите на ссылку выше и следуйте инструкциям для подписки на эту рассылку. Использование <application>CTM</application> в первый раз Перед тем, как вы сможете начать использование дельта-файлов CTM, потребуется определить исходную точку для последующего их применения. Сначала потребуется определить, что уже имеется. Каждый может начать с пустого (empty) каталога. Вы должны использовать дельта-файл Empty для создания поддерживаемого CTM дерева. Планируется распространение стартовых дельта-файлов на CD, но на данный момент это не делается. Поскольку дерево исходных текстов может быть объемом в десятки мегабайт, предпочтительно начать с каких-то уже имеющихся текстов. Если у вас есть -RELEASE CD, распакуйте исходные тексты с него. Это снизит объем передаваемых данных. Вы можете распознать стартовый дельта-файл по символу X, добавляемому к номеру (например, src-cur.3210XEmpty.gz). Обозначение перед X соответствует имеющимся исходным текстам. Empty это пустой каталог. Как правило файл с Empty создается через каждые 100 дельта-файлов. Между прочем, эти файлы большие! От 70 до ;) мегабайт упакованных gzip данных это обычный размер для XEmpty. Как только вы получили основной дельта-файл, потребуются также все дельта-файлы с последующими номерами. Повседневное использование <application>CTM</application> Для применения дельта-файлов, просто выполните: &prompt.root; cd /where/ever/you/want/the/stuff &prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* CTM работает с дельта-файлами, упакованными с помощью gzip, поэтому вам не требуется их распаковывать. Хотя весь процесс довольно безопасен, CTM не будет изменять дерево исходных текстов. Для проверки дельта-файла вы также можете использовать флаг , CTM только проверит целостность дельта-файла а также его применимость к существующим исходным текстам. Это все. Каждый раз после получения дельта-файла, запускайте CTM для поддержания исходных текстов в актуальном состоянии. Не удаляйте дельта-файлы, если их сложно загрузить еще раз. Вы возможно захотите сохранить их на всякий случай. Если вы можете сохранить их только на дискете, используйте для создания копии fdwrite. Сохранение локальных изменений Как разработчик вы возможно захотите поэкспериментировать и изменить файлы в дереве исходных текстов. CTM имеет ограниченную поддержку локальных изменений: перед проверкой наличия файла foo, сначала проверяется foo.ctm. Если он присутствует, CTM будет работать с ним вместо foo. Такое поведение обеспечивает простой путь поддержки локальных изменений: просто скопируйте файлы, которые вы хотите изменить, в файлы с соответствующими именами и суффиксом .ctm. Вы можете свободно изменять код, а CTM будет поддерживать файлы .ctm в актуальном состоянии. Другие интересные возможности <application>CTM</application> Определение файлов, которые будут затронуты обновлением Вы можете определить список изменений, которые CTM внесет в исходные тексты, используя параметр CTM . Это полезно, если вы хотите поддерживать лог изменений, выполнить предварительную или последующую обработку изменяемых файлов, или если вы просто немного параноидальны. Создание резервных копий перед обновлением Иногда вам может понадобиться сделать резервные копии всех файлов, которые будут изменены CTM. С параметром CTM выполнит резервное копирование всех изменяемых дельта-файлом CTM файлов в backup-file. Ограничение обновлений для определенных файлов Иногда необходимо ограничить набор файлов, обновляемых CTM, или даже задать обновление нескольких определенных файлов. Вы можете управлять списком файлов, с которыми будет работать CTM, путем указания фильтрующих регулярных выражений с параметрами и . Например, для извлечения свежей копии lib/libc/Makefile из коллекции сохраненных дельта-файлов CTM, выполните команду: &prompt.root; cd /where/ever/you/want/to/extract/it/ &prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* Для каждого указанного CTM дельта-файла, параметры и применяются в порядке их задания в командной строке. Файл обрабатывается CTM только если он помечается как подходящий после обработки всех параметров и . Дальнейшие планы для <application>CTM</application> Масса планов: Использовать какой-то из видов аутентификации в системе CTM, позволяющий обнаружение поддельных дат CTM. Доработать параметры CTM, поскольку они могут ввести в заблуждение. Разное Существует набор дельта-файлов и для коллекции ports, но интерес к нему пока не так высок. Зеркала CTM CTM/FreeBSD доступен через анонимный FTP с нижеприведенных зеркал. Если вы выбрали получение CTM через анонимный FTP, используйте ближайший к вам сервер. В случае возникновения проблем обратитесь в список рассылки &a.ctm-users.name;. California, Bay Area, официальный источник South Africa, резервный сервер для старых дельта-файлов Taiwan/R.O.C. Если вы не нашли ближайшего к вам зеркала, или зеркало неполно, попробуйте воспользоваться поиском, например alltheweb. Использование CVSup Введение CVSup это пакет программного обеспечения для распространения и обновления исходных текстов с основного репозитория CVS на удаленном сервере. Исходные тексты FreeBSD поддерживаются в репозитории CVS на центральной машине разработки в Калифорнии. С помощью CVSup пользователи FreeBSD легко могут поддерживать собственные исходные тексты в актуальном состоянии. CVSup использует так называемую опрашивающую (pull) модель обновления. Работая по этой модели, каждый клиент запрашивает обновления с сервера, если и когда они нужны. Сервер пассивно ожидает запросы на обновление от своих клиентов. Таким образом, все обновления инициируются клиентами. Сервер никогда не высылает не запрошенные обновления. Пользователь для получения обновлений должен либо запустить CVSup клиента вручную, либо добавить задание в cron для настройки периодических обновлений в автоматическом режиме. Термин CVSup, написанный с заглавными буквами, означает весь пакет программного обеспечения. Его основные компоненты это клиент cvsup, запускаемый на каждом пользовательском компьютере, и сервер cvsupd, работающий на каждом зеркале FreeBSD. При чтении документации FreeBSD и списков рассылки вы могли встретить указания на sup. Sup был предшественником CVSup, и выполнял похожие функции. CVSup в основном используется тем же способом, что и sup, и, фактически, использует файлы настройки, обратно совместимые с файлами sup. Sup более не используется проектом FreeBSD, поскольку CVSup и быстрее и более гибок. Установка Простейший способ установки CVSup это использование прекомпилированного пакета net/cvsup из коллекции пакетов FreeBSD. Если вы предпочтете собрать CVSup из исходных текстов, можете использовать вместо этого порт net/cvsup. Но имейте ввиду: порт net/cvsup зависит от системы Modula-3, которой потребуется существенный объем времени и пространства на диске для загрузки и установки. Если вы собираетесь использовать CVSup на компьютере, где нет - установленного &xfree86;, + установленного &xfree86; + или &xorg;, например на сервере, используйте порт, не включающий CVSup GUI, net/cvsup-without-gui. Настройка CVSup Работа CVSup контролируется файлом настройки, называемым supfile. В каталоге /usr/share/examples/cvsup/ находится несколько примеров supfile. Информация в supfile отвечает на следующие вопросы CVSup: Какие файлы вы хотите получить? Какие их версии вам нужны? Откуда вы хотите их получить? Где вы хотите разместить их на своем компьютере? Где вы хотите разместить файлы статуса? В следующих разделах мы составим типичный supfile последовательным ответом на каждый из этих вопросов. Сначала опишем общую структуру supfile. supfile это текстовый файл. Комментарии, начинающиеся с #, продолжаются до конца строки. Пустые строки и строки, содержащие только комментарии, игнорируются. Каждая из оставшихся строк описывает набор файлов, получаемых пользователем. Строка начинается с имени коллекции, логического объединения файлов, определяемых сервером. Имя коллекции говорит серверу о том, какие файлы вам нужны. После имени коллекции следуют одно или больше полей, разделенных пробелом. Эти поля отвечают на вопросы, заданные выше. Есть два типа полей: флаги и значения. Поле флага состоит из одного ключевого слова, например delete или compress. Поле значения также начинается с ключевого слова, но за ним без пробела следует = и второе слово. Например, release=cvs это поле значения. supfile обычно задает получение более одной коллекции. Одним из способов построения supfile является указание всех соответствующих полей для каждой коллекции явно. Однако, это приводит к появлению слишком длинных строк в supfile и это неудобно, поскольку большинство полей одинаковы для всех коллекций supfile. CVSup предоставляет механизм задания значений по умолчанию для устранения этих проблем. Строки, начинающиеся со специального имени псевдо-коллекции *default, могут быть использованы для установки флагов и значений, которые послужат значениями по умолчанию для всех последующих коллекций supfile. Значение по умолчанию может быть перезаписано для каждой отдельной коллекции путем указания другого значения в ее собственных параметрах. Значения по умолчанию также могут быть изменены или расширены в любом месте supfile дополнительными строками *default. Получив эту информацию, мы начнем строить supfile для получения и обновления главного дерева исходных текстов FreeBSD-CURRENT. Какие файлы вы хотите получить? Файлы, доступные через CVSup, организованы в именованные группы, называемые коллекциями. Доступные коллекции описаны в следующем разделе. В этом примере мы получим все дерево исходных текстов системы FreeBSD. Существует одиночная большая коллекция src-all, которая позволит нам сделать это. В качестве первого шага по созданию supfile, добавим список коллекций, по одной на строку (в нашем случае, только одну строку): src-all Какие их версии вам нужны? С CVSup вы в принципе можете получить любую версию исходных текстов, которая когда-либо существовала. Это возможно, поскольку cvsupd сервер работает непосредственно с репозиторием CVS, который содержит все версии. Вы указываете ту, которая вам нужна, с помощью полей tag= и . Будьте очень осторожны при задании любых полей tag=. Некоторые теги существуют только в определенных коллекциях файлов. Если вы укажете некорректный тег или ошибетесь в его написании, CVSup удалит файлы, которые вы возможно не хотели удалять. В частности, используйте только tag=. для коллекций ports-*. Поля tag= означают символьные имена в репозитории. Существует два вида тегов, теги ревизий и теги ветвей. Теги ревизий означают определенную ревизию. Они не меняются со временем. Теги ветвей, с другой стороны, означают последнюю ревизию заданной линии разработки в любой момент времени. Поскольку тег ветви не относится к определенной ревизии, он может означать завтра что-то иное чем сегодня. содержит теги ветвей, которые могут быть интересны пользователям. Тег, указанный в файле настройки CVSup, должен предваряться строкой tag= (RELENG_4 превратится в tag=RELENG_4). Помните, что для коллекции портов подходит только tag=.. Будьте очень осторожны при наборе имен тегов. CVSup не может отличить правильные и неправильные теги. Если вы неправильно наберете тег, CVSup поведет себя так, как если бы вы указали тег, не содержащий файлов. В этом случае он удалит существующие исходные тексты. При указании тега ветви вы получите последние версии файлов этой ветви разработки. Если вы хотите получить какую-то из предыдущих версий, сделайте это указав дату в поле значения . Страница справочника &man.cvsup.1; описывает как сделать это. В нашем примере мы хотим получить FreeBSD-CURRENT. Мы добавим эту строку в начало supfile: *default tag=. Существует важный специальный случай, когда не задаются ни поле tag=, ни поле date=. В этом случае вы получите последние версии RCS файлов непосредственно из CVS репозитория сервера вместо получения определенной версии. Разработчики обычно предпочитают этот способ. Поддерживая копию репозитория в своей системе, они получают возможность просмотра истории ревизий и проверки последних версий файлов. Однако это достигается ценой большего занимаемого дискового пространства. Откуда вы хотите их получить? Мы используем поле host= для сообщения cvsup откуда забирать обновления. Подойдет любое из CVSup зеркал, хотя вы должны попробовать выбрать ближайшее к вам зеркало. В этом примере мы используем не существующий сервер, - cvsup666.FreeBSD.org: + cvsup99.FreeBSD.org: - *default host=cvsup666.FreeBSD.org + *default host=cvsup99.FreeBSD.org Вам потребуется подставить адрес одного из существующих хостов перед запуском CVSup. При каждом запуске cvsup, вы можете перезаписать настройку хоста из командной строки, используя параметр . Где вы хотите разместить их на своем компьютере? Поле prefix= указывает cvsup где размещать получаемые файлы. В этом примере, мы поместим файлы непосредственно в главное дерево исходных текстов, /usr/src. Каталог src уже подразумевается в коллекциях, которые мы собираемся получить, поэтому корректное указание таково: *default prefix=/usr Где вы хотите разместить файлы статуса cvsup? Клиент CVSup поддерживает определенные файлы статуса в так называемом base каталоге. Эти файлы помогают CVSup работать более эффективно путем поддержки истории уже полученных обновлений. Мы будем использовать стандартный каталог base, - /usr/local/etc/cvsup: + /var/db: - *default base=/usr/local/etc/cvsup + *default base=/var/db Этот каталог используется по умолчанию, если иное не указано в supfile, поэтому на самом деле строка выше не нужна. Если base каталог не существует, теперь подходящий момент для его создания. Клиент cvsup не запустится, если base каталог не существует. Различные настройки supfile: Существует еще одна строка, которая обычно должна присутствовать в supfile: *default release=cvs delete use-rel-suffix compress release=cvs означает, что сервер должен получать информацию из главного репозитория FreeBSD CVS. Это обычно всегда так, но существуют несколько иных вариантов, изложение которых выходит за пределы этой главы. delete дает CVSup возможность удалять файлы. Вы должны всегда указывать этот параметр, чтобы CVSup мог поддерживать дерево исходных текстов полностью актуальным. CVSup удалит только те файлы, за которые отвечает. Все другие файлы останутся нетронутыми. use-rel-suffix это ... мистика. Если вы действительно хотите узнать о нем, обратитесь к странице справочника &man.cvsup.1;. Иначе просто укажите это поле и не беспокойтесь о нем больше. compress включает использование gzip сжатия при передаче данных. Если ваше сетевое подключение работает со скоростью T1 или быстрее, вам возможно не потребуется использование сжатия. Иначе оно обычно помогает. Все это вместе: Вот полный supfile для нашего примера: *default tag=. -*default host=cvsup666.FreeBSD.org +*default host=cvsup99.FreeBSD.org *default prefix=/usr -*default base=/usr/local/etc/cvsup +*default base=/var/db *default release=cvs delete use-rel-suffix compress src-all - + Файл <filename>refuse</filename> Как упомянуто выше, CVSup использует метод опроса. В основном это означает, что вы подключаетесь к CVSup серверу, и он говорит Вот то, что вы можете загрузить с меня..., и клиент отвечает OK, я возьму это, это и это. С настройкой по умолчанию CVSup клиент заберет каждый файл, связанный с коллекцией и тегом, выбранным в файле настройки. Однако, это не всегда то, что вам нужно, особенно если вы синхронизируете деревья doc, ports, или www — большинство людей не могут читать на пяти или четырех языках, и следовательно им не требуются локализованные файлы. Если вы обновляете коллекцию портов, это можно обойти путем индивидуального указания каждой коллекции (например, ports-astrology, ports-biology и т.д. вместо коллекции ports-all). Однако, поскольку для деревьев doc и www нет специфичных для языка коллекций, используйте одну из замечательных возможностей CVSup: файл refuse. Файл refuse говорит CVSup, что он не должен забирать каждый файл из коллекции; другими словами, он говорит клиенту отказаться (refuse) от получения с сервера определенных файлов. Файл refuse можно найти (или, если у вас его еще нет, должен быть помещен) в base/sup/. base определен в файле supfile; по умолчанию, base это - /usr/local/etc/cvsup, что означает, что по + /var/db, что означает, что по умолчанию файл refuse это - /usr/local/etc/cvsup/sup/refuse. + /var/db/sup/refuse. Формат файла refuse очень прост; он содержит имена файлов или каталогов, которые вы не хотите загружать. Например, если вы не можете разговаривать ни на каком языке кроме английского и русского, и вы не хотите использовать русскоязычные приложения (или приложения на любом другом языке кроме английского), поместите следующие строки в файл refuse: ports/arabic ports/chinese ports/french ports/german ports/hebrew ports/hungarian ports/japanese ports/korean ports/polish ports/portuguese ports/russian ports/ukrainian ports/vietnamese doc/da_* doc/de_* doc/el_* doc/es_* doc/fr_* doc/it_* doc/ja_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/sr_* doc/zh_* и так далее для других языков (полный список находится на странице FreeBSD CVS репозитория). С этой очень полезной возможностью пользователи с низкоскоростным подключением или с поминутной платой за подключение смогут сохранить время, поскольку им более не потребуется загружать файлы, которые они никогда не будут использовать. За более подробной информацией о файлах refuse и замечательных возможностях CVSup, обратитесь к его справочной странице. Запуск <application>CVSup</application> Теперь вы готовы к тестированию обновления. Командная строка для этого очень проста: &prompt.root; cvsup supfile где supfile это конечно имя supfile, который только что был создан. При запуске под X11, cvsup отобразит GUI интерфейс с несколькими полезными кнопками. Нажмите кнопку go и смотрите за его работой. Поскольку в этом примере обновляется существующее дерево /usr/src вам потребуется, запуск программы из под root, чтобы у cvsup были права, необходимые для обновления файлов. Если файл настройки только что создан, и эта программа раньше никогда не использовалась, это может действовать вам на нервы. Есть простой способ для пробного запуска без затрагивания ваших драгоценных файлов. Просто создайте где-нибудь пустой каталог и поместите его в качестве дополнительного аргумента командной строки: &prompt.root; mkdir /var/tmp/dest &prompt.root; cvsup supfile /var/tmp/dest Указанный каталог будет использоваться в качестве места назначения всех обновлений. CVSup будет работать с файлами из /usr/src, но не станет изменять или удалять их. Вместо этого все обновления файлов будут помещены в /var/tmp/dest/usr/src. При запуске таким способом CVSup оставит также неприкосновенным каталог base. Новые версии этих файлов будут записаны в указанный каталог. Если у вас есть права на чтение каталога /usr/src, вам даже не потребуется работать под root для выполнения пробного обновления. Если вы не работаете с X11 или просто не любите GUI, добавьте набор параметров командной строки при запуске cvsup: &prompt.root; cvsup -g -L 2 supfile Параметр указывает CVSup не использовать GUI. Он действует автоматически, если вы не работаете под X11, но иначе вам потребуется его указать. Параметр указывает CVSup выводить информацию о каждом производимом обновлении. Есть три уровня протоколирования, от до . Уровень по умолчанию 0, что означает полное отсутствие сообщений, за исключением сообщений об ошибках. Доступно множество других параметров. Для получения их краткого списка, наберите cvsup -H. За более подробным описанием обратитесь к странице справочника. После проверки работоспособности обновлений вы можете организовать регулярные запуски CVSup с помощью &man.cron.8;. Очевидно, вы не должны позволять CVSup использовать GUI при запуске из &man.cron.8;. Коллекции файлов <application>CVSup</application> Коллекции файлов, доступные через CVSup, организованы иерархически. Существует несколько больших коллекций, и они разделены на несколько меньших под-коллекций. Получение большой коллекции эквивалентно получению каждой из ее подколлекции. Иерархические отношения между коллекциями отражаются путем использования отступов в списке ниже. Наиболее используемые коллекции это src-all, и ports-all. Другие коллекции используются небольшими группами людей для специальных целей и некоторые сайты зеркал могут не содержать их все. cvs-all release=cvs Главный FreeBSD CVS репозиторий, включающий криптографический код. distrib release=cvs Файлы, относящиеся к распространению и зеркалированию FreeBSD. doc-all release=cvs Исходные тексты Руководства FreeBSD и другой документации. Они не включают файлы веб-сайта FreeBSD. ports-all release=cvs Коллекция портов FreeBSD. Если вы не хотите обновлять всю коллекцию ports-all (все дерево портов), а только одну из подколлекций, перечисленных ниже, убедитесь, что вы каждый раз обновляете подколлекцию ports-base! При любых изменениях в инфраструктуре сборки портов подколлекции ports-base, они могут быть использованы настоящими портами довольно скоро. Таким образом, если вы обновляете только настоящие порты и они используют некоторые новые возможности, есть большой шанс того, что их сборка прервется с непонятным сообщением об ошибке. Самое первое, что вы должны сделать, это убедиться, что подколлекция ports-base обновлена. ports-archivers release=cvs Архиваторы. ports-astro release=cvs Порты для астрономии. ports-audio release=cvs Поддержка звука. ports-base release=cvs Инфраструктура сборки портов - различные файлы, расположенные в подкаталогах Mk/ и Tools/ каталога /usr/ports. Пожалуйста, прочтите важное предупреждение выше: вы должны всегда обновлять эту подколлекцию, при каждом обновлении любой части коллекции портов FreeBSD! ports-benchmarks release=cvs Измерение производительности. ports-biology release=cvs Программы для биологии. ports-cad release=cvs Инструменты САПР. ports-chinese release=cvs Поддержка китайского языка. ports-comms release=cvs Коммуникационные программы. ports-converters release=cvs Преобразование кодировок. ports-databases release=cvs Базы данных. ports-deskutils release=cvs Вещи, использовавшиеся на рабочем столе до изобретения компьютеров. ports-devel release=cvs Утилиты разработки. ports-dns release=cvs Программы, имеющие отношение к DNS. ports-editors release=cvs Редакторы. ports-emulators release=cvs Эмуляторы других операционных систем. ports-finance release=cvs Финансовые, расчетные и связанные с ними приложения. ports-ftp release=cvs Клиентские и серверные утилиты FTP. ports-games release=cvs Игры. ports-german release=cvs Поддержка немецкого языка. ports-graphics release=cvs Графические утилиты. ports-hungarian release=cvs Поддержка венгерского языка. ports-irc release=cvs IRC утилиты. ports-japanese release=cvs Поддержка японского языка. ports-java release=cvs &java; утилиты. ports-korean release=cvs Поддержка корейского языка. ports-lang release=cvs Языки программирования. ports-mail release=cvs Почтовое программное обеспечение. ports-math release=cvs Математические программы. ports-mbone release=cvs Приложения MBone. ports-misc release=cvs Различные утилиты. ports-multimedia release=cvs Мультимедийное программное обеспечение. ports-net release=cvs Сетевое программное обеспечение. ports-news release=cvs Программное обеспечение новостей USENET. ports-palm release=cvs Программная поддержка для Palm. ports-polish release=cvs Поддержка польского языка. ports-portuguese release=cvs Поддержка португальского языка. ports-print release=cvs Программы печати. ports-russian release=cvs Поддержка русского языка. ports-security release=cvs Утилиты безопасности. ports-shells release=cvs Оболочки командной строки. ports-sysutils release=cvs Системные утилиты. ports-textproc release=cvs Утилиты обработки текста (не включают настольные утилиты публикации). ports-vietnamese release=cvs Поддержка вьетнамского языка. ports-www release=cvs Программы, относящиеся к World Wide Web. ports-x11 release=cvs Порты с поддержкой X window system. ports-x11-clocks release=cvs Часы X11. ports-x11-fm release=cvs Файловые менеджеры X11. ports-x11-fonts release=cvs Шрифты и шрифтовые утилиты X11. ports-x11-toolkits release=cvs Пакеты разработки приложений для X11. ports-x11-servers Серверы X11. ports-x11-wm Оконные менеджеры X11. src-all release=cvs Основные исходные тексты FreeBSD, включая криптографический код. src-base release=cvs Различные файлы непосредственно из /usr/src. src-bin release=cvs Утилиты, которые могут потребоваться в однопользовательском режиме (/usr/src/bin). src-contrib release=cvs Утилиты и библиотеки, заимствованные проектом FreeBSD, используются почти без модификаций (/usr/src/contrib). src-crypto release=cvs Криптографические утилиты и библиотеки, заимствованные проектом FreeBSD, используются почти без модификаций (/usr/src/crypto). src-eBones release=cvs Kerberos и DES (/usr/src/eBones). Не используются в текущих релизах FreeBSD. src-etc release=cvs Файлы настройки системы (/usr/src/etc). src-games release=cvs Игры (/usr/src/games). src-gnu release=cvs Утилиты, попадающие под GNU Public License (/usr/src/gnu). src-include release=cvs Файлы заголовков (/usr/src/include). src-kerberos5 release=cvs Пакет безопасности Kerberos5 (/usr/src/kerberos5). src-kerberosIV release=cvs Пакет безопасности KerberosIV (/usr/src/kerberosIV). src-lib release=cvs Библиотеки (/usr/src/lib). src-libexec release=cvs Системные программы, обычно выполняемые другими программами (/usr/src/libexec). src-release release=cvs Файлы, необходимые для производства релизов FreeBSD (/usr/src/release). src-sbin release=cvs Системные утилиты для однопользовательского режима (/usr/src/sbin). src-secure release=cvs Криптографические библиотеки и команды (/usr/src/secure). src-share release=cvs Файлы, которые могут быть использованы несколькими системами (/usr/src/share). src-sys release=cvs Ядро (/usr/src/sys). src-sys-crypto release=cvs Криптографический код ядра (/usr/src/sys/crypto). src-tools release=cvs Различные инструменты для поддержки FreeBSD (/usr/src/tools). src-usrbin release=cvs Пользовательские утилиты (/usr/src/usr.bin). src-usrsbin release=cvs Системные утилиты (/usr/src/usr.sbin). www release=cvs Исходные тексты www сайта FreeBSD. distrib release=self Собственные файлы настройки сервера CVSup. Используются зеркалами CVSup. gnats release=current База данных отслеживания ошибок GNATS. mail-archive release=current Архив списков рассылки FreeBSD. www release=current Файлы предобработки WWW сайта FreeBSD (не исходные файлы). Используются зеркалами WWW. Дальнейшая информация CVSup FAQ и другая информация о CVSup находится на Домашней странице CVSup. Большая часть связанных с FreeBSD обсуждений CVSup проводилась в списке рассылки &a.hackers.name;. Новые версии программного обеспечения анонсируются здесь и в списке рассылки &a.announce.name;. Вопросы и сообщения об ошибках адресуйте автору программы cvsup-bugs@polstra.com. Зеркала CVSup CVSup серверы для FreeBSD работают на следующих сайтах: &chap.mirrors.cvsup.inc; Теги CVS При получении или обновлении исходных текстов с использованием cvs или CVSup должен быть указан тег ревизии Тег относится либо к определенной линии разработки &os; либо к определенному моменту времени. Первый тип называется тегом ветви, второй тип называется тегом релиза. Теги ветвей Все они, за исключением HEAD (который всегда работает), относятся только к дереву src/. Деревья ports/, doc/ и www/ не имеют тегов ветвей. HEAD Символическое имя для основной ветви разработки, FreeBSD-CURRENT. Используется по умолчанию, если тег не указан. В CVSup, этот тег представлен символом . (не знак пунктуации, а символ .). В CVS тег по умолчанию используется, если тег не указан вообще. Обычно не очень хорошей идеей является обновление до CURRENT на машине со STABLE, только если вы не стремитесь именно к этому. + + RELENG_5 + + + Ветвь разработки FreeBSD-5.X, которая станет + FreeBSD-STABLE после выпуска FreeBSD-5.3. + + + RELENG_5_2 Ветвь релиза для FreeBSD-5.2 и FreeBSD-5.2.1, используемая только для исправлений безопасности и других критических исправлений. RELENG_5_1 Ветвь релиза для FreeBSD-5.1, используемая только для исправлений безопасности и других критических исправлений. RELENG_5_0 Ветвь релиза для FreeBSD-5.0, используемая только для исправлений безопасности и других критических исправлений. RELENG_4 Ветвь разработки FreeBSD-4.X, известная также как FreeBSD-STABLE. RELENG_4_10 Ветвь релиза для FreeBSD-4.10, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_9 Ветвь релиза для FreeBSD-4.9, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_8 Ветвь релиза для FreeBSD-4.8, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_7 Ветвь релиза для FreeBSD-4.7, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_6 Ветвь релиза для FreeBSD-4.6 и FreeBSD-4.6.2, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_5 Ветвь релиза для FreeBSD-4.5, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_4 Ветвь релиза для FreeBSD-4.4, используемая только для исправлений безопасности и других критических исправлений. RELENG_4_3 Ветвь релиза для FreeBSD-4.3, используемая только для исправлений безопасности и других критических исправлений. RELENG_3 Ветвь разработки для FreeBSD-3.X, известная также как 3.X-STABLE. RELENG_2_2 Ветвь разработки для FreeBSD-2.2.X, известная также как 2.2-STABLE. Эта ветвь по большей части устарела. Теги релизов Эти теги относятся к определенным моментам времени, когда были выпущены конкретные версии &os;. Процесс выпуска релизов более детально документирован в информации о выпусках релизов и статье о процессе подготовки релизов. Дерево src использует имена тегов, начинающиеся с RELENG_. Деревья ports и doc используют теги, имена которых начинаются с RELEASE. Наконец, в дереве www нет специальных имен для релизов. RELENG_4_10_0_RELEASE FreeBSD 4.10 RELENG_5_2_1_RELEASE FreeBSD 5.2.1 RELENG_5_2_0_RELEASE FreeBSD 5.2 RELENG_4_9_0_RELEASE FreeBSD 4.9 RELENG_5_1_0_RELEASE FreeBSD 5.1 RELENG_4_8_0_RELEASE FreeBSD 4.8 RELENG_5_0_0_RELEASE FreeBSD 5.0 RELENG_4_7_0_RELEASE FreeBSD 4.7 RELENG_4_6_2_RELEASE FreeBSD 4.6.2 RELENG_4_6_1_RELEASE FreeBSD 4.6.1 RELENG_4_6_0_RELEASE FreeBSD 4.6 RELENG_4_5_0_RELEASE FreeBSD 4.5 RELENG_4_4_0_RELEASE FreeBSD 4.4 RELENG_4_3_0_RELEASE FreeBSD 4.3 RELENG_4_2_0_RELEASE FreeBSD 4.2 RELENG_4_1_1_RELEASE FreeBSD 4.1.1 RELENG_4_1_0_RELEASE FreeBSD 4.1 RELENG_4_0_0_RELEASE FreeBSD 4.0 RELENG_3_5_0_RELEASE FreeBSD-3.5 RELENG_3_4_0_RELEASE FreeBSD-3.4 RELENG_3_3_0_RELEASE FreeBSD-3.3 RELENG_3_2_0_RELEASE FreeBSD-3.2 RELENG_3_1_0_RELEASE FreeBSD-3.1 RELENG_3_0_0_RELEASE FreeBSD-3.0 RELENG_2_2_8_RELEASE FreeBSD-2.2.8 RELENG_2_2_7_RELEASE FreeBSD-2.2.7 RELENG_2_2_6_RELEASE FreeBSD-2.2.6 RELENG_2_2_5_RELEASE FreeBSD-2.2.5 RELENG_2_2_2_RELEASE FreeBSD-2.2.2 RELENG_2_2_1_RELEASE FreeBSD-2.2.1 RELENG_2_2_0_RELEASE FreeBSD-2.2.0 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 rsync сайты Следующие сайты организуют доступ к FreeBSD через протокол rsync Утилита rsync работает в основном тем же путем, что и команда &man.rcp.1;, но поддерживает больше параметров и использует протокол удаленного обновления rsync, который передает только разницу между двумя наборами файлов, что значительно повышает скорость синхронизации по сети. Это особенно полезно, если вы поддерживаете зеркало сервера FreeBSD FTP, или репозитория CVS. Пакет rsync доступен для многих операционных систем, в FreeBSD используйте порт net/rsync или пакет. Чешская республика rsync://ftp.cz.FreeBSD.org/ Доступные коллекции: ftp: Частичное зеркало FreeBSD FTP сервера. FreeBSD: Полное зеркало FreeBSD FTP сервера. Германия rsync://grappa.unix-ag.uni-kl.de/ Доступные соединения: freebsd-cvs: Полный FreeBSD CVS репозиторий. Этот компьютер помимо прочих также зеркалирует CVS репозитории проектов NetBSD и OpenBSD. Нидерланды rsync://ftp.nl.FreeBSD.org/ Доступные коллекции: vol/3/freebsd-core: Полное зеркало FreeBSD FTP сервера. Великобритания rsync://rsync.mirror.ac.uk/ Доступные коллекции: ftp.FreeBSD.org: Полное зеркало FreeBSD FTP сервера. Соединенные Штаты Америки rsync://ftp-master.FreeBSD.org/ Этот сервер может использоваться только основными зеркалами FreeBSD. Доступные коллекции: FreeBSD: Основной архив FreeBSD FTP сервера. acl: Основной ACL список FreeBSD. rsync://ftp13.FreeBSD.org/ Доступные коллекции: FreeBSD: Полное зеркало FreeBSD FTP сервера.
diff --git a/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml b/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml index 95b637dd3e..3bef80654a 100644 --- a/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/ports/chapter.sgml @@ -1,1342 +1,1336 @@ Андрей Захватов Перевод на русский язык: Установка приложений: порты и пакеты Обзор порты пакеты Вместе с FreeBSD в составе базового комплекта системы поставляется богатый набор системный утилит. Однако для выполнения какой-то реальной работы очень скоро возникает необходимость в установке дополнительных приложений сторонних разработчиков. FreeBSD даёт две взаимодополняющих технологии для установки программного обеспечения сторонних разработчиков в вашу систему: Коллекция Портов FreeBSD и бинарные пакеты с программным обеспечением. Любая из этих систем может быть использована для установки самых последних версий ваших любимых приложений с локальных носителей или прямо из сети. После чтения этой главы вы будете знать: Как устанавливать бинарные пакеты с программным обеспечением сторонних разработчиков. Как строить программное обеспечение сторонних разработчиков при помощи коллекции портов. Как удалять ранее установленные пакеты или порты. Как переопределить значения, используемые по умолчанию в коллекции портов. Как обновить ваши порты. Обзор установки программного обеспечения Если вы использовали &unix;-системы ранее, то знаете, что стандартная процедура установки программного обеспечения сторонних разработчиков выглядит примерно так: Загрузка программного обеспечения, которое может распространяться в форме исходных текстов или двоичных файлов. Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи &man.compress.1;, &man.gzip.1; или &man.bzip2.1;). Поиск документации (возможно, подойдут файлы INSTALL, README или несколько файлов из подкаталога doc/) и её чтение в поиске описания установки программного обеспечения. Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile, запуск скрипта configure и другие работы. Тестирование и установка программного обеспечения. И это только всё проходит нормально. Если вы устанавливаете программный пакет, который был специально перенесён на FreeBSD, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал. Если вы хотите, то можете продолжать устанавливать программное обеспечение во FreeBSD традиционным способом. Однако FreeBSD предоставляет две технологии, которые могут сохранить вам много усилий: пакеты и порты. На момент написания таким образом были доступны более &os.numports; сторонних приложений. Для любого конкретно взятого приложения пакет FreeBSD для такого приложения является одним файлом, который вы должны загрузить. Пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. Сгруженным файлом пакета можно управлять командами управления пакетами FreeBSD, такими, как &man.pkg.add.1; &man.pkg.delete.1;, &man.pkg.info.1; и так далее. Установка нового приложения может выполняться единственной командой. Порт FreeBSD для приложения является набором файлов, предназначенных для автоматизации процесса компиляции приложения из исходного кода. Вспомните, что обычно вы должны выполнить некоторое количество шагов, если компилируете программу самостоятельно (загрузка, распаковка, изменение кода, компиляция, установка). Файлы, составляющие порт, содержат всю информацию, необходимую для того, чтобы система сделала это за вас. Вы задаёте пару простых команд, и исходный код приложения автоматически сгружается, распаковывается, модифицируется, компилируется и устанавливается. Действительно, система портов может также использоваться для генерации пакетов, которые позже могут управляться командой pkg_add и другими командами управления пакетами, о которых скоро будет рассказано. Как пакеты, так и порты принимают во внимание зависимости. Предположим, что вы хотите установить приложение, которое зависит от некоторой установленной библиотеки. И приложение, и библиотека доступны во FreeBSD в виде портов и пакетов. Если вы используете команду pkg_add или систему портов для добавления приложений, то в обоих случаях будет обнаружено, что библиотека не была установлена, и сначала будет автоматически выполнена установка библиотеки. Видя, что обе технологии весьма похожи, вы можете удивиться, почему во FreeBSD используются обе. И пакеты, и порты имеют свои преимущества, так что выбор используемой вами системы зависит от ваших собственных предпочтений. Преимущества пакетов Сжатый tar-архив обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения. Пакеты не требуют никакой дополнительной компиляции. Для таких больших приложений, как Mozilla, KDE или GNOME, это может быть важно, в частности, если вы работаете на медленной системе. Пакеты не требуют понимания процесса компиляции программного обеспечения во FreeBSD. Преимущества портов Пакеты обычно компилируются с консервативными параметрами, потому что они должны работать на максимальном количестве систем. При установке из порта вы можете изменять параметры компиляции для того, чтобы (к примеру) генерировался код, специфичный для процессора Pentium IV или Athlon. Некоторые приложения имеют опции времени компиляции, связанные с тем, что они могут или не могут делать. К примеру, Apache может быть настроен с широким набором различных опций. При построении из порта вы можете не принимать параметры по умолчанию, и задать их самостоятельно. В некоторых случаях для одного и того же приложения будут иметься несколько пакетов для указания конкретных настроек. Например, Ghostscript имеется как пакет ghostscript и как пакет ghostscript-nox11, в зависимости от того, установили вы сервер X11 или нет. Такой тип грубой настройки возможен при использовании пакетов, но быстро становится недостижим, если приложение имеет более одного или двух параметров времени компиляции. Условия лицензирования некоторых дистрибутивов программного обеспечения запрещает распространение в двоичном виде. Они должны распространяться в виде исходного кода. Некоторые не доверяют дистрибутивам в двоичном виде. При использовании исходного кода вы по крайней мере (теоретически) можете прочесть его и попытаться найти потенциальные проблемы самостоятельно. Если у вас есть собственные патчи, вам нужен исходный код для того, чтобы их применять. Некоторым нравится иметь исходный код, чтобы его можно было смотреть и хакать, заимствовать из него (конечно, при разрешающей лицензионном соглашении) и тому подобное. Чтобы отслеживать обновления портов, подпишитесь на &a.ports; и &a.ports-bugs;. Перед установкой любого приложения необходимо зайти на , где находится информация по вопросам безопасности приложений. Вы можете также установить security/portaudit, который автоматически проверит все установленные приложения на наличие известных уязвимостей, проверка также будет выполняться перед сборкой какого-либо порта. Вы можете использовать portaudit -F -a и после установки пакетов. В оставшейся части главы будет рассказано, как использовать пакеты и порты для установки и управления программным обеспечением сторонних разработчиков во FreeBSD. Поиск нужного вам приложения Перед тем, как устанавливать какое-либо приложение, вам нужно знать, что вы хотите и как называется нужное вам приложение. Список имеющихся для FreeBSD приложений постоянно растёт. К счастью, есть несколько способов найти то, что вам нужно: На сайте FreeBSD поддерживается обновляемый список имеющихся приложений для FreeBSD, в котором можно выполнять поиск, по адресу http://www.FreeBSD.org/ports/. Порты разбиты на категории, и вы можете либо выполнить поиск приложения по имени (если его знаете), либо просмотреть список всех приложений, относящихся к определённой категории. FreshPorts Dan Langille поддерживает сайт FreshPorts по адресу . На нём отслеживаются изменения в приложениях из дерева портов, как только они происходят, он позволяет вам отслеживать один или несколько портов, и может высылать оповещение по электронной почте при их обновлении. FreshMeat Если вы не знаете названия нужного вам приложения, попытайтесь воспользоваться сайтом типа FreshMeat () для поиска приложения, а затем возвратитесь на сайт FreeBSD, чтобы проверить, есть ли порт для этого приложения. + + + Если вы знаете точное имя порта, и хотите определить, в какой + категории он находится, используйте команду &man.whereis.1;. + Просто наберите в приглашении whereis + file, + где file - программа, + которую вы хотите установить. И если она имеется в системе, + об этом будет сообщено, как показано ниже: + + &prompt.root; whereis lsof +lsof: /usr/ports/sysutils/lsof + + Это говорит о том, что lsof (системная + утилита) находится в каталоге + /usr/ports/sysutils/lsof. + + + + Ещё одним способом поиска некоторого порта является + использование встроенной возможности поиска в коллекции портов. + Чтобы ею воспользоваться, вы должны находиться в каталоге + /usr/ports. Очутившись в этом каталоге, + выполните команду make search + name=program-name, где + program-name – это + название программы, которую вы хотите найти. Например, если + вы ищете lsof: + + &prompt.root; cd /usr/ports +&prompt.root; make search name=lsof +Port: lsof-4.56.4 +Path: /usr/ports/sysutils/lsof +Info: Lists information about open files (similar to fstat(1)) +Maint: obrien@FreeBSD.org +Index: sysutils +B-deps: +R-deps: + + Вам следует обратить особое внимание на строчку + Path:, так как в ней указывается, где найти порт. + Остальная сообщаемая информация для установки порта не + нужна, поэтому здесь она описываться не будет. + + Для выполнения более глубокого поиска вы можете также использовать + make search key=string, + где string + представляет собой некоторый текст, который ищется. При этом будет + выполнен поиск в именах портов, комментариях, описаниях и + зависимостях, и его можно использовать для поиска портов, связанных с + некоторой темой, если вы не знаете названия программы, которую вы + ищете. + + В обоих этих случаях строка поиска нечувствительна к регистру. + Поиск LSOF приводит к тому же самому результату, что и + поиск lsof. + Chern Lee Текст предоставил Использование системы пакетов Установка пакета пакеты установка pkg_add Для установки пакетов программного обеспечения для FreeBSD из локальных файлов или с сервера в сети вы можете использовать утилиту &man.pkg.add.1;. Загрузка пакета вручную и его локальная установка &prompt.root; ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit &prompt.root; pkg_add lsof-4.56.4.tgz Если у вас нет исходных текстов локальных пакетов (например, набор CD-ROM с FreeBSD), то проще всего, наверное, воспользоваться опцией для &man.pkg.add.1;. Это приведёт к тому, что утилита автоматически определит правильный формат объектных файлов и релиз, а затем загрузит и установит пакет с сервера FTP. pkg_add &prompt.root; pkg_add -r lsof В примере выше нужный пакет будет сгружен и установлен без всякого дополнительного взаимодействия с пользователем. Если вместо основного сайта вы хотите указать другое зеркало пакетов &os;, то для переопределения используемых по умолчанию значений вам необходимо задать соответствующим образом значение переменной PACKAGESITE. Для загрузки файлов утилита &man.pkg.add.1; использует функцию &man.fetch.3;, которая принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по &man.fetch.3; для получения полного списка переменных. Заметьте, что в примере выше вместо lsof-4.56.4 используется lsof. При использовании функций загрузки с сети номер версии в имени пакета должен быть опущен. Утилита &man.pkg.add.1; автоматически загрузит последнюю версию приложения. Файлы пакетов распространяются в форматах .tgz и .tbz. Вы можете найти их по адресу или взять с дистрибутива FreeBSD на CD-ROM. Каждый CD из комплекта FreeBSD на 4 дисках (а также PowerPak и тому подобное) содержит пакеты в каталоге /packages. Расположение пакетов похоже на то, как организовано дерево /usr/ports. Каждая категория имеет собственный каталог, и каждый пакет помещается в каталог All. Структура каталогов системы пакетов соответствует структуре системы портов; они взаимодействуют друг с другом для формирования единой системы пакетов/портов. Управление пакетами пакеты управление &man.pkg.info.1; является утилитой для вывода списка и описаний различных установленных пакетов. pkg_info &prompt.root; pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ... &man.pkg.version.1; является утилитой для вывода отчёта о версиях всех установленных пакетов. Она сравнивает версию имеющегося пакета с текущей версией, находящейся в дереве портов. pkg_version &prompt.root; pkg_version cvsup = docbook = ... Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов. Символ Значение = Версия установленного пакета соответствует версии, находящейся в локальном дереве портов. < Установленная версия старее, чем та, что имеется в дереве портов. > Установленная версия новее чем та, что есть в дереве портов. (Скорее всего, локальное дерево портов устарело.) ? В индексном файле портов установленный пакет не может быть найден. (Это может случиться, например, если установленный порт был удалён из коллекции портов или переименован.) * Имеется несколько версий пакета. Удаление пакета pkg_delete пакеты удаление Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту &man.pkg.delete.1;. &prompt.root; pkg_delete xchat-1.7.1 Разное Вся информация о пакете хранится в каталоге /var/db/pkg. Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога. Использование Коллекции Портов В этих разделах описаны основные приемы использования коллекции портов для установки и удаления программ из вашей системы. Получение Коллекции Портов Перед тем, как вы сможете устанавливать порты, вы сначала должны установить коллекцию портов—она представляет собой в основном набор файлов Makefile, патчей, файлов описаний, и она размещается в каталоге /usr/ports. При установке вашей системы FreeBSD утилита sysinstall запрашивает, требуется ли вам установка коллекции портов. Если вы ответили отрицательно, то можете следовать следующим указаниям для установки коллекции портов: Метод с использованием Sysinstall В этом методе повторно используется sysinstall для ручной установки коллекции портов. Работая как пользователь root, запустите /stand/sysinstall так, как это показано ниже: &prompt.root; /stand/sysinstall Опуститесь вниз и выберите Configure, нажмите Enter Опуститесь вниз и выберите Distributions, затем нажмите Enter Опуститесь вниз к пункту ports, нажмите клавишу Пробел Поднимитесь вверх к Exit, нажмите Enter Выберите желаемый носитель для установки, например, CDROM, FTP и так далее. Перейдите на пункт меню Exit и нажмите Enter. Нажмите X для выхода из sysinstall. Альтернативный метод получения и постоянной актуализации вашей коллекции портов заключается в использовании CVSup. Посмотрите на файл CVSup из портов, /usr/share/examples/cvsup/ports-supfile. Прочтите раздел Использование CVSup () для получения более полной информации об использовании CVSup и этого файла. Метод с использованием CVSup Это быстрый способ для получения коллекции портов при помощи CVSup. Если вы хотите поддерживать ваше дерево портов в актуальном состоянии, или узнать больше о CVSup, то прочтите вышеотмеченные разделы. Установите порт net/cvsup. Обратитесь к разделу Установка CVSup () для получения более подробной информации. Работая как пользователь root, скопируйте /usr/share/examples/cvsup/ports-supfile в новое место, например, в каталог /root или в ваш домашний каталог. Отредактируйте ports-supfile. Измените CHANGE_THIS.FreeBSD.org на близкий к вам сервер CVSup. Посмотрите Зеркала CVSup () для получения полного списка зеркалирующих сайтов. Запустите cvsup &prompt.root; cvsup -g -L 2 /root/ports-supfile При повторных запусках этой команды все последние изменения (кроме реального перестроения портов для вашей системы) будут сгружаться и переноситься в вашу коллекцию портов. Установка портов порты установка Когда речь заходит о коллекции портов, то первым делом вы должны понять, что именно подразумевается под словом скелет. По сути скелетом порта является минимальный набор файлов, который указывает вашей системе FreeBSD, как корректно откомпилировать и установить программу. Скелет каждого порта включает: Makefile. Makefile содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено. Файл distinfo. Этот файл содержит информацию о файлах, которые должны существовать на вашей системе для успешной сборки порта, и их контрольные суммы, для проверки при помощи &man.md5.1; того, что файлы в процессе загрузки не были повреждены. Каталог files. Этот каталог содержит патчи, использование которых необходимо для компиляции и установки программы в вашей системе FreeBSD. Патчи - это, как правило, маленькие файлы, в которых содержатся изменения, которые нужно внести в какой-то конкретный файл. Они имеют обычный текстовый формат и в основном содержат указания типа Удалить строку 10 или Заменить строку 26 на такую .... Патчи также называются diff-файлами или просто диффами, потому что они генерируются программой &man.diff.1;. Этот каталог также может содержать другие файлы, используемые для построения порта. pkg-descr. Это более подробное, зачастую многострочное описание программы. pkg-plist. Это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта. В некоторых портах присутствуют и другие файлы, такие, как pkg-message. Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для - FreeBSD. - - Теперь, когда вы имеете достаточное количество информации о том, - для чего предназначена коллекция портов, вы в состоянии установить ваш - первый порт. Это может быть сделано двумя способами, каждый из - которых будет описан ниже. - - Однако, прежде чем мы этим займёмся, вам нужно выбрать порт для - установки. Есть несколько способов сделать это, самый простой из - которых заключается в использовании списка портов на сайте - FreeBSD. Вы можете просто полистать весь список портов или - воспользоваться возможностями поиска на сайте. Каждый порт также - включает описание, так что вы можете прочесть некоторую информацию о - каждом из портов, прежде чем решить его установить. - - Другой метод заключается в использовании команды &man.whereis.1;. - Чтобы ей воспользоваться, просто наберите - в приглашении whereis file - , где file - программа, - которую вы хотите установить. И если она имеется в вашей системе, вам - об этом будет сообщено, как показано ниже: - - &prompt.root; whereis lsof -lsof: /usr/ports/sysutils/lsof - - Это говорит о том, что lsof (системная утилита) - находится в каталоге - /usr/ports/sysutils/lsof. - - Ещё одним способом поиска некоторого порта является использование - встроенной возможности поиска в коллекции портов. Чтобы ею - воспользоваться, вы должны находиться в каталоге - /usr/ports. Очутившись в этом каталоге, выполните - команду make search name=program-name, где - program-name - это название программы, которую вы хотите - найти. Например, если вы ищете lsof: - - &prompt.root; cd /usr/ports -&prompt.root; make search name=lsof -Port: lsof-4.56.4 -Path: /usr/ports/sysutils/lsof -Info: Lists information about open files (similar to fstat(1)) -Maint: obrien@FreeBSD.org -Index: sysutils -B-deps: -R-deps: - - Вам следует обратить особое внимание на строчку - Path:, так как в ней указывается, где найти порт. - Остальная сообщаемая информация для установки порта не - нужна, поэтому здесь она описываться не будет. - - Для выполнения более глубокого поиска вы можете также использовать - make search key=string, - где string - представляет собой некоторый текст, который ищется. При этом будет - выполнен поиск в именах портов, комментариях, описаниях и - зависимостях, и его можно использовать для поиска портов, связанных с - некоторой темой, если вы не знаете названия программы, которую вы - ищете. - - В обоих этих случаях строка поиска нечувствительна к регистру. - Поиск LSOF приводит к тому же самому результату, что и - поиск lsof. + url="&url.books.porters-handbook;/index.html">Руководству по созданию + портов для FreeBSD. - - Для установки портов вы должны войти в систему как пользователь - root. - - - Теперь, когда вы нашли порт, который хотите установить, можно - выполнять реальную установку. В порт включаются инструкции + В порт включаются инструкции относительно того, как выполнять построение из исходного кода, но не сам код. Вы можете получить исходный код с CD-ROM или из Интернет. Исходный код распространяется в том виде, какой предпочёл выбрать разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он может также быть упакованным каким-то другим инструментом или быть не сжатым. Исходный код программы, в каком бы то виде он ни был, - называется дистрибутивным (distfile). Вы можете - получить дистрибутивный файл с CD-ROM или через Интернет. + называется дистрибутивным (distfile). Два метода + установки портов &os; описаны ниже. + + + Для установки портов вы должны войти в систему как пользователь + root. + Перед установкой любого порта необходимо убедиться в наличии свежей коллекции портов и заглянуть на , где могут освещаться вопросы безопасности, связанные с этим портом. Проверка на наличие уязвимостей может быть автоматически выполнена portaudit перед установкой нового приложения. Эту программу можно найти в коллекции портов (security/portaudit). Запустите portaudit -F перед установкой нового порта для загрузки свежей базы данных уязвимостей. Проверка безопасности и обновление базы данных должны выполняться при повседневной проверке безопасности системы. За дальнейшей информацией обращайтесь к страницам справочника &man.portaudit.1; и &man.periodic.8;. Установка портов с CD-ROM порты установка с CD-ROM Официальные образы CD-ROM Проекта FreeBSD больше не содержат дистрибутивные файлы. На них есть достаточно места, которое лучше использовать для предкомпилированных пакетов. Продукты на CD-ROM, такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы можете заказать их от таких поставщиков, как FreeBSD Mall. В этом разделе предполагается, что у вас есть такой набор CD-ROM с FreeBSD. Вставьте ваш CD-ROM с FreeBSD в привод. Смонтируйте его в каталог /cdrom. (Если вы используете другую точку монтирования, то установка работать не будет.) Чтобы начать, перейдите в каталог с портом, который вы хотите установить: &prompt.root; cd /usr/ports/sysutils/lsof Оказавшись в каталоге lsof, вы увидите структуру порта. Следующим шагом является компиляция, или построение (build) порта. Это выполняется простой выдачей команды make в ответ на приглашение командного процессора. Как только вы это сделаете, то увидите выдачу, выглядящую примерно так: &prompt.root; make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [выдача при распаковке опущена] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [выдача при конфигурации опущена] ... ===> Building for lsof-4.57 ... [выдача при компиляции опущена] ... &prompt.root; Заметьте, что, как только компиляция закончится, вы снова вернётесь к приглашению вашего командного процессора. Следующим шагом является установка порта. Чтобы это сделать, вам нужно просто добавить одно слово к команде make, а именно слово install: &prompt.root; make install ===> Installing for lsof-4.57 ... [выдача при установке опущена] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; Как только вы вернулись к приглашению вашей оболочки, вы должны суметь запустить приложение, которое только что установили. Так как lsof является программой, которая запускается с повышенными правами, то выдаётся предупреждение о безопасности. Во время построения и установки портов вы должны принимать во внимание все выдаваемые предупреждения. Вы можете сэкономить лишний шаг, просто выдав команду make install вместо make и последующей make install в двух отдельных шагах. Некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена таких программ, которые доступны для вызова из каталогов, перечисленных в переменной окружения PATH. Если вы используете один из таких командных процессоров, то перед использованием только что добавленных команд вам может понадобиться вызвать директиву rehash после установки порта. Это верно как для оболочек, являющихся частями базового системного набора (например, tcsh), так и командных процессоров, доступных в виде портов (например, shells/zsh). Пожалуйста, будьте готовы к тому, что лицензии некоторых портов не позволяют помещать их на CD-ROM. Это может делаться из-за обязательности заполнения регистрационной формы перед загрузкой или запрета на дальнейшее распространение, либо по какой-то другой причине. Если вы хотите установить порт, которого нет на CD-ROM, вам нужно иметь подключение к Интернет, чтобы это сделать (обратитесь к следующему разделу). Установка портов из Интернет Как и в предыдущем разделе, здесь предполагается, что у вас имеется работающее подключение к Интернет. Если это не ваш случай, вам нужно выполнять установку с CD-ROM либо поместить копию дистрибутивного файла в каталог /usr/ports/distfiles вручную. Установка порта из Интернет производится точно так же, как если бы делали её с CD-ROM. Единственным отличием между ними является тот факт, что дистрибутивный файл сгружается из Интернет, а не считывается с CD-ROM. Выполняются те же самые шаги: &prompt.root; make install >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 ... [выдача при распаковке опущена] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [выдача процесса конфигурации опущена] ... ===> Building for lsof-4.57 ... [выдача компиляции опущена] ... ===> Installing for lsof-4.57 ... [выдача процедуры установки опущена] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; Как вы видите, единственным отличием является строка, в которой указывается, откуда система сгружает дистрибутивный файл порта. Для загрузки файлов система портов использует утилиту &man.fetch.1;, которая принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по &man.fetch.3; для получения полного списка переменных. Пользователям, которые не могут быть постоянно подключенными к сети, поможет команда make fetch. Просто запустите эту команду в каталоге самого верхнего уровня (/usr/ports), и требуемые файлы будут сгружены. Эта команда будут работать также и с вложенными категориями, например: /usr/ports/net. Заметьте, что если порт имеет зависимости от библиотек или других портов, то он не будет также сгружать дистрибутивные файлы этих портов. Замените fetch на fetch-recursive, если вы хотите выполнить загрузку также и всех этих зависимостей порта. Вы можете построить все порты в категории за раз, запустив команду make в каталоге верхнего уровня, как и в вышеописанном методе с make fetch. Однако это опасно, так как некоторые порты не могут сосуществовать. В других случаях некоторые порты могут устанавливать два различных файла с одним и тем же именем. В некоторых редких случая пользователям необходимо получить tar-архивы с сайтов, отличающихся от MASTER_SITES (это место, откуда файлы обычно сгружаются). Вы можете переопределять значение MASTER_SITES посредством следующей команды: &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch В этом примере мы изменили значение переменной MASTER_SITES на ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Некоторые порты позволяют (или даже требуют) задавать параметры, которые включают или выключают построение отдельных частей приложения, которые не нужны, некоторые параметры безопасности, а также прочие настройки. К некоторым из них, часто упоминаемым, относятся пакеты www/mozilla, security/gpgme и mail/sylpheed-claws. При наличии подобных параметров будет выдано сообщение. Переназначение каталогов с портами по умолчанию Иногда бывает полезным (или необходимым) использование других каталогов с портами и дистрибутивными файлами. Для переопределения каталогов, используемых по умолчанию, используются переменные PORTSDIR и PREFIX. К примеру: &prompt.root; make PORTSDIR=/usr/home/example/ports install будет компилировать порт в каталоге /usr/home/example/ports, а установит всё в /usr/local. &prompt.root; make PREFIX=/usr/home/example/local install будет компилировать его в каталоге /usr/ports, а установит в /usr/home/example/local. И, конечно, &prompt.root; make PORTSDIR=../ports PREFIX=../local install использует обе возможности (полная команда слишком длинна для написания на этой странице, однако вы должны уловить общую идею). Альтернативным способом является задание значений этих переменных в параметрах вашего окружения. Обратитесь к страницам справки по вашему командному процессору для получения инструкций о том, как это сделать. Работа с <command>imake</command> Некоторые порты, использующие imake (часть X Window System) нормально не работают с PREFIX, и будут пытаться установиться в дерево /usr/X11R6. Аналогично некоторые Perl-порты игнорируют значения PREFIX и устанавливаются в дерево Perl. Заставить такие порты воспринимать переменную PREFIX является сложной или невыполнимой задачей. Удаление установленных портов порты удаление Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже задумывались о том, как же их удалять, просто даже на тот случай, если вы установили один из них, а позже решили, что установили не тот порт. Мы удалим порт из нашего предыдущего примера (а это была программа lsof, если вы обратили внимание). Как и при установке портов, первым делом вы должны перейти в каталог с портом, /usr/ports/sysutils/lsof. После смены каталога вы готовы к удалению xchat. Это делается командой make deinstall: &prompt.root; cd /usr/ports/sysutils/lsof &prompt.root; make deinstall ===> Deinstalling for lsof-4.57 Это было достаточно легко. Вы удалили lsof из вашей системы. Если вам захочется переустановить эту программу, то это можно будет сделать, выдав команду make reinstall из каталога /usr/ports/sysutils/lsof. Последовательность команд make deinstall и make reinstall не сработает, если вы запустите команду make clean. Если вы хотите убрать порт из системы после зачистки каталога, используйте команду &man.pkg.delete.1;, как это описано в разделе о пакетах Руководства. Порты и дисковое пространство порты дисковое пространство Использование коллекции портов может определённо стоить вам дискового пространства. По этой причине вы не должны забывать о зачистке рабочих каталогов при помощи команды make clean. При этом будет удаляться каталог work, возникающий после построения и установки порта. Вы можете также удалить tar-файлы из каталога distfiles, а позже удалить установленные порты, если они не используются. Некоторые пользователи ограничивают набор категорий портов, помещая в файл refuse соответствующую запись. В этом случае при запуске программы CVSup - она не будет сгружать файлы из указанных категорий. + она не будет загружать файлы из указанных категорий. Дополнительную + информацию, относящуюся к файлу refuse, можно + найти в . Обновление портов portupgrade порты обновление После обновления коллекции портов, и перед тем, как обновить приложение из порта, сверьтесь с файлом /usr/ports/UPDATING. В нем дана информация по различным вопросам и дополнительным шагам, которые могут быть необходимы для обновления порта. Поддержание ваших портов в актуальном состоянии может оказаться нудным занятием. К примеру, чтобы обновить порт, вам нужно перейти в каталог с портами, построить порт, удалить старый порт, установить новый, а затем вычистить его после построения. Представьте, сколько действий (пять) нужно сделать! Скучно, да? Это было большой проблемой для системных администраторов, но теперь есть утилиты, выполняющие эти действия за нас. Например, утилита sysutils/portupgrade сделает всё за вас сама! Просто установите её, как обычный порт, при помощи команды make install clean. Теперь создайте базу данных командой pkgdb -F. Она выяснит перечень установленных портов и создаст файл базы данных в каталоге /var/db/pkg. Теперь при вызове команды portupgrade -a, она будет использовать эту базу данных и файл портов INDEX. Наконец, portupgrade загрузит, построит, сделает резервную копию, установит и очистит порты, которые были обновлены. portupgrade имеет массу параметров для использования в разных ситуациях, из которых наибольшего внимания заслуживает описываемая далее. Если вы хотите обновить только определённое приложение, но не полностью базу данных, используйте portupgrade pkgname, с флагом , если portupgrade должен отработать все пакеты, которые зависят от указанного, и использовать флаг для отработки всех пакетов, которые требуют указанные пакеты. Для использования при установке пакетов, а не портов, укажите флаг , а для простой загрузки дистрибутивных файлов без построения или установки чего бы то ни было задайте флаг . Дополнительную информацию можно получить на странице справки по утилите &man.portupgrade.1;. Важно регулярно обновлять базу данных пакетов при помощи команды pkgdb -F для восстановления целостности, особенно когда portupgrade запрашивает вас это сделать. Не прерывайте работы portupgrade при обновлении базы данных пакетов, это может привести к рассогласованию данных. Существуют и другие утилиты, которые делают подобные вещи, посмотрите в каталоге ports/sysutils и выберите то, что вам подходит. Действия после установки После установки нового приложения вам обычно требуется прочесть какую-либо документацию, если она есть, отредактировать нужные конфигурационные файлы, проверить, что приложение запускается во время загрузки системы (если это даемон), и так далее. Очевидно, что в шаги, в точности требуемые для конфигурации каждого приложения, отличаются. Однако, если если вы только что установили новое приложение и вам интересно, Что же дальше?, то вам могут помочь следующие советы: Воспользуйтесь командой &man.pkg.info.1; для определения того, куда и какие файлы были установлены. К примеру, если вы только что установили FooPackage версии 1.0.0, то по команде &prompt.root; pkg_info -L foopackage-1.0.0 | less будут выведен список всех файлов, установленных пакетов. Обратите особое внимание на файлы в каталогах man/, которые являются справочными страницами, etc/, которые будут являться конфигурационными файлами, и doc/, которые будут являться более подробной документацией. Если вы не уверены, какая версия приложения была только что установлена, то по команде типа &prompt.root; pkg_info | grep -i foopackage будут выведен список всех установленных пакетов, в названии которых присутствует foopackage Замените foopackage в командной строке на то, что вам нужно. Как только вы определите, куда были установлены справочные страницы приложения, просмотрите их при помощи команды &man.man.1;. Подобным же образом просмотрите примеры конфигурационных файлов и всю дополнительную документацию, которая была поставлена. Если у приложения имеется веб-сервер, поищите там дополнительную документацию, ответы на часто задаваемые вопросами и так далее. Если вы не уверены, каков адрес веб-сайта, он может быть указан в выводе команды &prompt.root; pkg_info foopackage-1.0.0 Строка WWW:, если она есть, должна содержать URL Web-сайта приложения. Порты, которые должны запускаться при загрузке системы (такие, как серверы Internet), как правило, устанавливают примерный скрипт в каталог /usr/local/etc/rc.d. Вы должны просмотреть скрипт на предмет его корректности и отредактировать или переименовать его, если это нужно. Обратитесь к разделу о Запуске сервисов для получения более полной информации. Обработка нерабочих портов Если вы встретили порт, который у вас не работает, есть несколько вещей, которые вы можете сделать, а именно: Исправьте его! В Руководстве по созданию + url="&url.books.porters-handbook;/index.html">Руководстве по созданию портов содержится подробная информация об инфраструктуре Портов, так что вы сможете исправить иногда встречающиеся порты с ошибками или даже создать собственные! Надавите—только по электронной почте! Сначала пошлите письмо человеку, сопровождающему порт. Наберите команду make maintainer или прочтите Makefile, чтобы найти его адрес. Не забудьте указать имя и версию порта (скопировав строчку $FreeBSD: из файла Makefile) и включите в письмо весь вывод, предшествующий возникновению ошибки. Если вы не получили ответа от этого человека, то можете воспользоваться командой &man.send-pr.1; для посылки сообщения об ошибке. Загрузите пакет с ближайшего к вам FTP-сервера. Основная коллекция пакетов находится на сервере ftp.FreeBSD.org в каталоге с пакетами, но первым делом проверьте местное зеркало! Это, скорее всего, будет работать, и сделать это, кроме того, будет гораздо быстрее, чем пытаться компилировать порты из исходного кода. Воспользуйтесь программой &man.pkg.add.1; для установки пакета в вашей системе.