Index: head/ru_RU.KOI8-R/articles/cups/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/cups/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/cups/article.xml (revision 46680) @@ -1,394 +1,360 @@
Универсальная Система Печати Unix на FreeBSD ChessGriffin
chess@chessgriffin.com
&tm-attrib.freebsd; &tm-attrib.general; $FreeBSD$ $FreeBSD$ Эта статья посвящена конфигурированию Универсальной Системы Печати UNIX (CUPS) на &os;.
Знакомимся с Универсальной Системой Печати UNIX (CUPS) printing CUPS Универсальная Система Печати UNIX (Common Unix Printing System, или сокращенно CUPS), предоставляет переносимую среду печати для &unix; и &unix;-подобных операционных систем. Она была разработана компанией Easy Software Products, чтобы предоставить стандартное решение в печати для всех разработчиков и пользователей &unix;. Универсальная Система Печати UNIX использует протокол межсетевой печати (Internet Printing Protocol, IPP) как основу для управления заданиями на печать и очередями. Также частично поддерживаются следующие протоколы: LPD, SMB и AppSocket (также известный как JetDirect). CUPS дает возможность обзора сетевых принтеров и использования опций, базирующихся на ПостСкрипт Описании Принтеров (PostScript Printer Definition, PPD), чтобы поддерживать в &unix; общепринятые традиции печати. В результате CUPS идеально подходит для совместного использования принтеров в смешанной среде из &os;, &linux;, &macos; X или &windows;. Официальный сайт Универсальной Системы Печати UNIX — http://www.cups.org/. Установка сервера печати CUPS - CUPS может быть установлена - из портов или уже собранных пакетов. Чтобы установить - CUPS из коллекции портов, выполните - с привилегиями пользователя root следующую - команду: - - &prompt.root; cd /usr/ports/print/cups && make install clean - Для установки CUPS используя пакет, запустите на выполнение такую команду: - &prompt.root; pkg_add -r cups + &prompt.root; pkg install cups - Другие необязательные, но рекомендуемые к установке порты или + Другие необязательные, но рекомендуемые к установке пакеты это print/gutenprint-cups и print/hplip, каждый из которых добавляет драйвера и утилиты для разнообразных принтеров. После установки файлы конфигурации CUPS могут быть найдены в директории /usr/local/etc/cups. Настройка сервера печати CUPS Чтобы настроить сервер CUPS необходимо отредактировать несколько конфигурационных файлов. Для начала создайте или исправьте файл /etc/devfs.rules и добавьте следующую информацию для того, чтобы установить соответствующие права на все потенциальные файлы устройств принтеров и связать принтеры с группой пользователей cups: [system=10] add path 'unlpt*' mode 0660 group cups add path 'ulpt*' mode 0660 group cups add path 'lpt*' mode 0660 group cups add path 'usb/X.Y.Z' mode 0660 group cups Замените X, Y и Z номерами соответствующего принтеру целевого устройства USB, отображаемого в каталоге /dev/usb. Чтобы найти требуемые значения, просмотрите вывод &man.dmesg.8; и найдите связанное с вашим принтером имя специального устройства ugenX.Y, последнее будет символической ссылкой на искомое устройство в каталоге /dev/usb. Затем, добавьте следующие две записи в /etc/rc.conf: cupsd_enable="YES" devfs_system_ruleset="system" Эти две записи будут запускать сервер печати CUPS во время загрузки системы и применять локальное правило devfs, созданное выше. Для того, чтобы печать CUPS стала доступна для некоторых µsoft.windows; клиентов, необходимо раскомментировать следующую запись в /usr/local/etc/cups/mime.types и /usr/local/etc/cups/mime.convs: application/octet-stream По окончанию внесения изменений службы &man.devfs.8; и CUPS необходимо перезапустить, для чего перезагрузите операционную систему или выполните от пользователя root следующие две команды: &prompt.root; /etc/rc.d/devfs restart &prompt.root; /usr/local/etc/rc.d/cupsd restart Настройка принтеров на сервере печати CUPS После того, как система CUPS была установлена и сконфигурирована, системный администратор может начать конфигурирование локальных принтеров, подключенных к серверу печати CUPS. Эта часть процесса очень похожа, если не идентична настройке принтеров CUPS в других &unix;-подобных операционных системах, таких как дистрибутивы &linux;. Основным способом управления и администрирования сервера CUPS является веб-интерфейс, на который можно попасть запустив веб-браузер и набрав http://localhost:631 в его адресной строке. Если сервер CUPS находится на другой машине в сети, замените localhost на IP адрес сервера. Веб-интерфейс CUPS достаточно очевиден, там есть разделы для управления принтерами и заданиями на печать, авторизацией пользователей и т.п. Кроме того, в правой части страницы администрирования есть несколько флажков (check-box), дающих удобный доступ к часто меняемым установкам, таким как разрешение публичного доступа к подключенным к системе принтерам, предоставление удаленного управления сервером CUPS, изменение уровня доступа пользователей к принтерам и их заданиям на печать. Добавление принтера в общем такое же простое, как нажатие Add Printer на странице администрирования веб-интерфейса сервера CUPS или как нажатие одной из кнопок New Printers Found на той же странице администрирования. Когда перед вами предстанет выпадающий список Device, просто выберите требуемый локально подключенный принтер, а дальше следуйте подсказкам интерфейса. В случае если были установлены порты или пакеты print/gutenprint-cups или print/hplip, как указывалось выше, дополнительные драйвера печати будут доступны на последующих страницах, что может обеспечить большую надежность и расширенные возможности. Конфигурирование клиентов CUPS После того, как сервер CUPS был настроен, принтеры добавлены и сделаны доступными в сети, следующий шаг — это настройка клиентов или машин, которые будут иметь доступ к серверу CUPS. Если у вас единственный настольный компьютер, который работает одновременно и сервером и клиентом, то в большинстве этой информации вы не нуждаетесь. &unix; клиенты На &unix; клиентах также потребуется установить CUPS. После установки системы печати на клиенте, CUPS-принтеры, присутствующие в сети, чаще всего автоматически находятся менеджерами принтеров разных графических оболочек, таких как GNOME или KDE. В качестве альтернативы, вы можете воспользоваться веб-интерфейсом CUPS на клиентской машине по адресу http://localhost:631 и на странице администрирования выбрать Add Printer. Когда перед вами предстанет выпадающий список Device, просто выберите сетевой CUPS принтер, если он был обнаружен автоматически, или выберите ipp или http и введите IPP или HTTP адрес (URI) сетевого CUPS принтера: ipp://server-name-or-ip/printers/printername http://server-name-or-ip:631/printers/printername Если CUPS клиент не находит в сети принтеры, доступные через сервер CUPS, то иногда помогает создание или изменение файла /usr/local/etc/cups/client.conf с добавлением единственной записи, подобной следующей: ServerName server-ip В этом случае server-ip необходимо заменить на IP адрес сервера CUPS в сети. &windows;-клиенты Версии &windows;, предшествующие XP, не имели встроенной поддержки протокола IPP. Однако &windowsxp; и более поздние версии уже обладают такой возможностью. Следовательно, добавить CUPS принтер в этих версиях &windows; довольно просто. В большинстве случаев, администратору &windows; потребуется запустить мастера установки принтера (Add Printer) выбрать сетевой принтер (Network Printer), а затем ввести URI следующего формата: http://server-name-or-ip:631/printers/printername Если используется версия &windows; без поддержки протокола IPP, то общим случаем подключения к CUPS-принтеру будет совместное использование CUPS и net/samba3. Описание этой возможности выходит за рамки данной статьи. Устранение неполадок с CUPS Проблемы c CUPS часто возникают из-за неверных прав доступа. Сначала дважды проверьте права доступа в &man.devfs.8; (сверьтесь с уже описанными выше). Затем, проверьте реальные права устройств, созданных в файловой системе. Также бывает полезным удостовериться, что ваш пользователь входит в группу cups. Если у вас складывается впечатление, что флажки прав доступа на странице администрирования веб-интерфейса CUPS не работают, то иным решением может быть резервное копирование конфигурационного файла /usr/local/etc/cups/cupsd.conf и редактирование разных опций конфигурации с подбором их комбинаций. Ниже приведено содержимое тестового файла конфигурации /usr/local/etc/cups/cupsd.conf. Пожалуйста, обратите внимание на то, что безопасность в этом примере cupsd.conf была пожертвована в угоду простоте настройки; как только администратор успешно подсоединится к серверу CUPS и сконфигурирует клиентов, рекомендуется пересмотреть данную конфигурацию и добавить разграничение доступа. # Log general information in error_log - change "info" to "debug" for # troubleshooting... LogLevel info # Administrator user group... SystemGroup wheel # Listen for connections on Port 631. Port 631 #Listen localhost:631 Listen /var/run/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny #BrowseAllow @LOCAL BrowseAllow 192.168.1.* # change to local LAN settings BrowseAddress 192.168.1.* # change to local LAN settings # Default authentication type, when authentication is required... DefaultAuthType Basic DefaultEncryption Never # comment this line to allow encryption # Allow access to the server from any machine on the LAN <Location /> Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings </Location> # Allow access to the admin pages from any machine on the LAN <Location /admin> #Encryption Required Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings </Location> # Allow access to configuration files from any machine on the LAN <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny #Allow localhost Allow 192.168.1.* # change to local LAN settings </Location> # Set the default printer/job policies... <Policy default> # Job-related operations must be done by the owner or an adminstrator... <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \ Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \ Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \ CUPS-Move-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> # All administration operations require an adminstrator to authenticate... <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \ Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \ Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \ Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \ CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default> AuthType Basic Require user @SYSTEM Order deny,allow </Limit> # Only the owner or an administrator can cancel or authenticate a job... <Limit Cancel-Job CUPS-Authenticate-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy> - - - - Настройка портов использующих CUPS - - Если CUPS будет служить в качестве - основной системы печати, то можно по желанию добавить несколько - записей в /etc/make.conf, которые выделят - CUPS среди других систем. Вот некоторые - из них: - - WITH_CUPS=YES -CUPS_OVERWRITE_BASE=YES -WITHOUT_LPR=YES - - Первая переменная, WITH_CUPS, добавляет поддержку - CUPS к портам, в которых предусмотрена такая - возможность. Вторая запись, CUPS_OVERWRITE_BASE, - исправит некоторые символические ссылки и пути, которые иначе - приводили-бы к системе печати &os; по умолчанию — - LPR. Также она предотвратит откат - этих изменений во время следующего обновления системы посредством - buildworld. Третья переменная, - WITHOUT_LPR, предотвратит включение поддержки - LPR в портах, потенциально ее - использующих.
Index: head/ru_RU.KOI8-R/articles/explaining-bsd/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/explaining-bsd/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/explaining-bsd/article.xml (revision 46680) @@ -1,646 +1,643 @@
Что такое BSD GregLehey
grog@FreeBSD.org
&tm-attrib.freebsd; &tm-attrib.amd; &tm-attrib.apple; &tm-attrib.intel; &tm-attrib.linux; &tm-attrib.opengroup; &tm-attrib.sparc; &tm-attrib.sun; &tm-attrib.unix; &tm-attrib.general; $FreeBSD$ $FreeBSD$ В мире программ с открытыми исходниками, слово Linux практически стало синонимом слова Операционная Система, хотя это далеко не единственная операционная система &unix;, исходные коды которой доступны широкой публике. Согласно данным Internet Operating System Counter, в апреле 1999-го 31,3% всех подключённых к Internet машин работали под Linux. 14,6% использовали BSD &unix;. Некоторые из мировых лидеров в области Web-услуг, например Yahoo!, работают под BSD. Самый загруженный в мире FTP-сервер 1999 года (сейчас он не работает), ftp.cdrom.com, функционировал под управлением BSD и передавал 1,4 Тбайта данных в день. Очевидно, что это не узкий, специализированный рынок: можно сказать, что BSD — это тщательно скрываемая тайна. Так в чём же секрет? Почему известность BSD оставляет желать лучшего? Эта публикация ставить целью ответить на эти и другие вопросы. На протяжении всего текста обращайте внимание на выделенные отличия BSD от Linux.
Что такое BSD? BSD означает Berkeley Software Distribution. Так называлось программное обеспечение, распространявшееся в исходных кодах Калифорнийским Университетом в Беркли, которое сначала представляло из себя дополнения к операционной системе &unix; компании AT&T. На основе версии 4.4BSD-Lite были созданы несколько операционных систем с открытыми исходными кодами. В их состав включены разработки других проектов, среди которых особо следует выделить Проект GNU. Вот что такое собственно операционная система BSD: Ядро BSD, отвечающее за планировку процессов, управление памятью, поддержку многопроцессорных систем (SMP), работу с устройствами и так далее. В отличие от Linux, существует несколько ядер BSD, отличающихся возможностями. Библиотека C, основной системный интерфейс программирования. Библиотека C в BSD основывается на коде из Беркли, а не из Проекта GNU. Оболочки, файловые утилиты, компиляторы, редакторы связей и другие утилиты пользователя. Некоторые из них базируются на коде GNU, а некоторые -- нет. Система X Window, отвечающая за графический интерфейс. Система X Window, которая используется в большинстве версий BSD, поддерживается проектом X.Org. &os; дает пользователю возможность выбирать из множества графических оболочек, таких как Gnome, KDE или Xfce; а также из множества легких оконных менеджеров наподобие Openbox, Fluxbox или Awesome. Множество разных других прикладных и системных программ. Что, настоящий &unix;? Операционные системы BSD не являются клонами друг друга. Они лишь потомки общего предка, ОС &unix; от AT&T Research, которая также дала начало современной ОС &unix; System V. Это факт может удивить, если вспомнить, что AT&T никогда не открывала исходные коды своих разработок. Действительно, &unix; никогда не был программным обеспечением с открытым исходным кодом, и в законном смысле BSD определённо НЕ &unix;. Но с другой стороны, в AT&T активно использовали чужие разработки, например программное обеспечение, разрабатываемое Группой по Исследованиям в области Информатики (CSRG) Калифорнийского Университета в Беркли. С 1976 CSRG выпускала свой код на магнитных лентах под названием Berkely Software Distribution, сокращённо BSD. Изначально дистрибутивы BSD представляли собой наборы пользовательских программ, и так было до тех пор, пока CSRG не заключила контракт с Агентством по Перспективным Проектам при Министерстве Обороны США (DARPA). Целью контракта было обновление коммуникационных протоколов, на которых держалась компьютерная сеть агентства -- ARPANET. Новое семейство протоколов получило имя Internet Protocols или TCP/IP, по названиям двух основных протоколов. Их первая широко известная реализация была выпущена в составе 4.2BSD в 1982 году. В течение восьмидесятых годов образовалось несколько компаний по производству рабочих станций. Многие из них предпочли купить лицензию на &unix;, нежели разрабатывать своё ПО с нуля. Следует отметить компанию Sun, которая поступила именно таким образом и на основе 4.2BSD выпустила свою операционную систему &sunos;. Когда AT&T тоже решила заняться коммерческой продажей своей ОС &unix;, появилась на свет несколько аскетичная реализация под названием System III, за которой в скором времени последовала System V. Интересно, что эти версии не содержали в себе собственной поддержки работы в сети и использовали код BSD, в том числе реализацию TCP/IP и набор утилит, среди которых следует выделить оболочку csh и текстовый редактор vi. Все эти добавки совместно получили название Berkely Extensions. Дистрибутив BSD содержал код, принадлежавший AT&T, и, следовательно, требовал лицензии. К 1990 году финансирование CSRG прекратилось, и группа была распущена. Кое-кто из бывших членов группы решил опубликовать код BSD отдельно от закрытого кода AT&T. В концe концов это удалось, и так появилась на свет версия Networking Tape 2 или Net/2. Net/2 не была законченной, цельной операционной системой: около 20% кода ядра отсутствовало. Один из членов CSRG, William F. Jolitz, дописал недостающий код и опубликовал результат в начале 1992 года под именем 386BSD. В то же самое время другая группа бывших членов CSRG организовала коммерческую компанию Berkeley Software Design Inc. и выпустила бета-версию операционной системы BSD/386, которая базировалась на том же самом коде. Позже это название было изменено на BSD/OS. 386BSD так никогда и не стала полноценной операционной системой. Зато в 1993 году из неё выделились два проекта: NetBSD и FreeBSD. Изначально разработчики разделились на два лагеря из-за расхождений во мнениях относительно того, сколько же ещё можно ждать улучшений в 386BSD. В начале года образовалась NetBSD, а первая версия FreeBSD была готова только к его концу. Время шло, и технические различия возрастали. Вдобавок проекты поставили перед собой разные цели, как будет показано ниже. В 1996 году от NetBSD отделился ещё один проект — OpenBSD, а в 2003 году от FreeBSD отделилась DragonFlyBSD. Почему BSD недостаточно известна? Действительно, существует ряд причин этому недоразумению: Разработчики BSD часто больше заинтересованы в качестве своего кода и заняты его шлифовкой, а не рекламой. По большому счёту Linux своей популярностью обязан прежде всего внешним по отношению к проекту факторам, например средствам массовой информации и компаниям, которые решили сделать бизнес на предоставлении услуг пользователям Linux. Разработчики BSD, как правило, более опытны, чем разработчики Linux, и в силу этого часто уделяют меньше внимания облегчению жизни простым пользователям. Новичок чувствует себя более комфортно в среде Linux. В 1992 году компания AT&T подала в суд на BSDI, компанию-поставщика ОС BSD/386. Основным пунктом обвинения было то, что BSD/386 содержала в себе закрытый код, принадлежавший AT&T. Дело вроде бы уладили за пределами суда в 1994-ом, но целая серия вторичных тяжб и по сей день отравляет жизнь многим людям. Совсем недавно, в марте 2000, в Internet была опубликована статья, утверждавшая, что судебное разбирательство окончательно завершено (recently settled). В результате разбирательства прояснился вопрос с названиями: если в 80-х годах BSD была известна под именем BSD &unix;, то с исключением последних следов кода, принадлежавшего AT&T, BSD потеряла право называться &unix;. Вы можете заметить этот факт по изменившимся заглавиям книг: операционная система 4.3BSD &unix; и операционная система 4.4BSD. Существует мнение, что проекты BSD сильно отличаются и, в добавок, воюют между собой. Статья в Wall Street Journal называет это балканизацией среди проектов BSD. Можно утверждать, что такое мнение, как и описанная судебная тяжба, основывается прежде всего на событиях давно минувших дней. Сравнение BSD и Linux В чём заключается главная разница, к примеру, между Debian Linux и FreeBSD? Для среднего пользователя она на удивление мала: оба продукта представляют собой &unix;-подобные операционные системы. Оба продукта разрабатываются на некоммерческой основе (это не относится к некоторым другим дистрибутивам Linux). В этом разделе мы рассмотрим BSD в сравнении с Linux. Всё сказанное в основном будет касаться FreeBSD, которой принадлежит около 80% всех инсталляций BSD в мире, хотя отличия от NetBSD, OpenBSD и DragonFlyBSD в рамках предмета данной статьи незначительны. Кому принадлежит BSD? Нельзя сказать, что какой-то конкретный человек или корпорация владеет BSD. Разработка и распространение ведутся группой высококвалифицированных и преданных проекту специалистов со всего мира. Некоторые компоненты BSD представляют собой отдельные проекты с открытым кодом со своими законами и коллективами разработчиков. Как выглядит процесс разработки и обновления BSD? Ядра BSD используют Open Source модель разработки. Каждый проект поддерживает публично доступное дерево исходников с помощью Concurrent Versions System (CVS). Это дерево содержит абсолютно весь исходный код проекта, а также документацию и вспомогательные файлы. CVS позволяет пользователям получить копию дерева любой версии системы. Огромное число людей со всего мира участвуют в совершенствовании BSD. Все они разделены на три группы: Контрибуторы пишут код или документацию. Они не могут добавлять или изменять код непосредственно в дереве исходников проекта. Это привилегия особым образом зарегистрированных разработчиков, или коммиттеров (committers), которые просматривают и тестируют присылаемый им код и включают его в дерево. Коммиттеры являются разработчиками, которые имеют доступ на запись в дерево исходных кодов проекта. Чтобы стать коммиттером, человек должен проявить себя в той области, в которой он хочет работать. Каждый коммиттер по своему собственному усмотрению решает, нужно ли ему подтверждение правильности планируемых изменений от других разработчиков или нет. В общем случае опытный коммиттер может вносить очевидно выгодные изменения ни с кем не советуясь. К примеру, коммиттер проекта документации может исправлять опечатки или грамматические ошибки в документах без предварительного согласования. Напротив, далеко идущие или просто сложные изменения настоятельно рекомендуется представлять к обсуждению перед окончательным внесением в дерево. Бывают крайние случаи, когда член Core Team, выполняющий функцию архитектора проекта, может санкционировать немедленную отмену или откат каких-то изменений в дереве. Все коммиттеры обязательно получают уведомление о каждом изменении в дереве по электронной почте, так что их невозможно сохранить в тайне. Правление (Core Team). В проектах FreeBSD и NetBSD имеются управляющие советы, которые занимаются координационной деятельностью. Их роль, права и обязанности не всегда чётко определены. Необязательно (хотя в порядке вещей) быть коммиттером для того, чтобы входить в состав Core Team. Правила, которым следует Core Team, различаются между проектами, но в общем случае члены Core Team определяют общее направление развития системы в большей степени, чем все остальные разработчики. Такое положение вещей отличается от принятого в Linux: Не существует человека, который бы контролировал содержимое системы. На практике значение этого отличия оказывается переоценённым, так как Ведущий Архитектор может всегда потребовать откат изменений. Ко всему прочему, в проекте Linux на современном этапе изменения в код вносятся тоже не одним, а несколькими людьми. С другой стороны, существует центральное хранилище (repository), откуда можно получить полный код всей системы, причём как современных, так и предыдущих версий. Проекты BSD являются цельными Операционными Системами, а не просто ядрами. Это различие тоже иногда переоценивают: ни BSD, ни Linux не представляют ценности без приложений, а они порой одни и те же в обеих средах. В результате формализованной процедуры поддержки единого дерева исходников в CVS процесс разработки BSD является полностью открытым, и мы получаем возможность доступа к любой версии системы по номеру или по дате. CVS также очень хорошо подходит для последовательных изменений в коде: к примеру, хранилище кода FreeBSD обновляется около ста раз за день, и большинство этих изменений весьма малы и незначительны в отдельности друг от друга. Версии BSD FreeBSD, NetBSD и OpenBSD предоставляет миру три различных варианта системы. Как и в Linux, версиям присваиваются номера, например 1.4.1 или 3.5. В добавок, номер версии имеет суффикс -- обозначение варианта, которое указывает на цели той или иной версии. Версия для разработчиков носит название CURRENT. FreeBSD присваивает ей и номер, например FreeBSD 5.0-CURRENT. NetBSD использует чуть-чуть другую схему наименований и добавляет к номеру однобуквенный суффикс, обозначающий изменения во внутренних интерфейсах. Пример: NetBSD 1.4.3G. OpenBSD не нумерует разрабатываемую версию (OpenBSD-current). Все новые разработки производятся именно на этой ветке (branch) системы. Через определённые интервалы от 3 до 6 месяцев проект выпускает версию RELEASE, которая распространяется на CD-ROM и доступна для скачивания с серверов FTP. Примерами таких версий могут служить OpenBSD 2.6-RELEASE и NetBSD 1.4-RELEASE. Этот вариант предназначен для конечных пользователей. NetBSD также предоставляет так называемые исправленные релизы (patch releases), обозначаемые третьей цифрой в номере, например NetBSD 1.4.2. По мере обнаружения ошибок в версии RELEASE необходимые исправления вносятся в дерево CVS. Получающаяся система в проекте FreeBSD носит название STABLE, а в NetBSD и OpenBSD продолжает называться RELEASE. Некоторые мелкие улучшения тоже иногда вносятся в эту версию после продолжительного периода тестирования в CURRENT. Linux, напротив, поддерживает два различных дерева исходников, которые называются соответственно стабильной версией и версией для разработчиков. Стабильные версии имеют чётный вторичный номер, например 2.0, 2.2 или 2.4. Версии для разработчиков используют нечётные номера, такие как 2.1, 2.3 или 2.5. Во обоих случаях, к двойному номеру версии добавляется ещё одно число, указывающее на конкретный релиз. Стоит также отметить, что каждый поставщик предоставляет свой собственный вариант пользовательских программ (userland), так что имя дистрибутива тоже имеет значение. Естественно, что поставщики нумеруют свои изделия каждый по-своему, и, таким образом, мы получаем что-то вроде TurboLinux 6.0 с ядром 2.2.14. Какие существуют варианты BSD? В отличие от многочисленных дистрибутивов Linux, в мире существует лишь четыре крупных BSD проекта с открытыми исходными кодами. Каждый из них поддерживает своё собственное дерево исходников и своё собственное ядро. На практике однако оказывается, что пользовательские части (userland) различных BSD отличаются гораздо меньше, чем у разных дистрибутивов Linux. Цели каждого из проектов не поддаются чёткой формулировке. Различия между ними весьма субъективны. В основном, - проект FreeBSD нацелен на повышение производительности + проект &os; нацелен на повышение производительности и простоту в использовании конечными пользователями. - FreeBSD очень ценят в среде Web-хостеров. Эта ОС работает - на нескольких аппаратных платформах, в том числе системах на базе - процессоров &i386; (ПК), системах, построенных на - 64-разрядных процессорах AMD, системах &ultrasparc;, системах, - работающие на базе процессоров Alpha компании Compaq, а также - системах, построенные по спецификациям NEC PC-98. Число - пользователей FreeBSD значительно превышает число пользователей - других проектов. + &os; очень ценят в среде web-хостеров. Эта ОС работает + на нескольких + аппаратных платформах, число пользователей &os; + значительно превышает число пользователей других + проектов. проект NetBSD ставит целью максимальную мобильность (или переносимость) кода: девиз конечно NetBSD работает на этом. NetBSD поддерживает машины от крошечных палмтопов до огромных серверов и использовалась NASA в космических миссиях. Это хороший выбор для старой не-&intel; аппаратуры. проект OpenBSD нацелен на безопасность и чистоту кода. С помощью комбинирования концепций открытых исходников и скрупулёзного анализа кода проект демонстрирует чудеса корректности работы системы. В силу названных причин совершенно естественно, что OpenBSD выбирают организации, для которых очень важна защита информации, например банки, фондовые биржи и различные департаменты правительства США. Также как и NetBSD, проект поддерживает целый ряд аппаратных платформ. Целью DragonFlyBSD является достижение высокой производительности и масштабируемости в любой ситуации—как для одиночных однопроцессорных, так и крупных кластерных систем. DragonFlyBSD ставит перед собой несколько долгосрочных технических задач, но основной упор делается на создание инфраструктуры для работы с SMP, которая была бы проста для понимания, поддержки и ведения в ней разработок. Следует упомянуть ещё две операционных системы BSD &unix;, которые не предоставляют публичного доступа к своим исходным кодам. Это BSD/OS компании BSDI и &macos; X компании Apple. BSD/OS являлась самым старым из потомков 4.4BSD. Исходный код был недоступен широкой публике, хотя лицензия на него стоила относительно немного. BSD/OS во многом похожа на FreeBSD. Через два года после поглощения BSDi компанией Wind River Systems, BSD/OS перестала существовать как отдельный продукт. Поддержку и исходный код ещё можно получить у Wind River, но все новые разработки сосредоточены на встраиваемой операционной системой VxWorks. &macos; X — это самая последняя версия операционной - системы для линейки компьютеров &macintosh; компании Apple Computer Inc. + системы для линейки компьютеров &apple; &mac;. Ядро этой операционной системы, Darwin, построенное на коде BSD, доступно в виде полностью функциональной операционной системы с открытым кодом для компьютеров архитектур x86 и PPC. Однако код графической системы Aqua/Quartz и многих других проприетарных компонентов &macos; X остаётся закрытым. Несколько разработчиков Darwin являются также коммиттерами FreeBSD и наоборот. В чём отличие между лицензией BSD и Общественной Лицензией GNU (GPL)? Linux распространяется на условиях лицензии GNU General Public License (GPL), русский перевод которой тоже существует. Эта лицензия имеет целью уничтожить программное обеспечение с закрытым исходным кодом. В частности, любое ПО, базирующееся на продукте, выпущенном на условиях лицензии GPL, тоже должно поставляться с исходными кодами по первому требованию. Лицензия BSD не накладывает таких жёстких ограничений: разрешается распространение программного обеспечения в двоичном виде (binary-only). Этот факт привлекает разработчиков встроенных (embedded) приложений. Что ещё следует знать? То обстоятельство, что приложений для BSD существует меньше, чем для Linux, вынудило разработчиков BSD позаботиться о создании дополнительной совместимости с Linux, которая позволяет запускать программы для Linux на компьютере, работающем под BSD. Программный пакет, обеспечивающий совместимость, включает в себя как ядерную реализацию системных вызовов Linux, так и разнообразные файлы, необходимые программам, скомпилированным для Linux, например библиотеку C. Разница в скорости выполнения Linux-приложений на машине с Linux и на такой же машине с BSD незаметна. Принцип вся система от одного поставщика, используемый в BSD, приводит к упрощению процедур обновления системы по сравнению с многими дистрибутивами Linux. BSD предоставляет специальные модули совместимости с устаревшими версиями системных библиотек, и таким образом делает возможным запуск откомпилированных несколько лет назад программ на обновлённой системе. Что же выбрать, BSD или Linux? Во что выливается всё вышесказанное на практике? Кому предназначена BSD, и кому -- Linux? Это действительно очень сложный вопрос. Приведём несколько советов, которые призваны помочь Вам с выбором: Не тронь, пока работает: если Вы уже успешно используете какую-нибудь Open Source ОС, и она Вас устраивает, то пожалуй не стоит ничего менять. Системы BSD, в особенности FreeBSD, могут демонстрировать большую по сравнению с Linux производительность. Но это вовсе не универсальное правило. Во многих случаях эта разница не заметна, если вообще есть. Иногда Linux может работать лучше, чем FreeBSD. В общем случае, у систем BSD очень хорошая репутация, когда дело касается надёжности. Это, в основном, связано с более зрелой базой исходных кодов. BSD проекты имеют более лучшую репутацию за качество и полноту документации. Различные проекты документирования ставят своей целью предоставлять активно изменяющуюся документацию, в том числе и на нескольких языках и покрывающую все аспекты системы. Лицензия BSD иногда может быть более привлекательной, нежели GPL. В BSD может работать большинство исполнимых файлов Linux, однако в Linux выполнимые файлы BSD запускаться не будут. Во многих реализациях BSD могут также выполняться двоичные файл и других &unix;-подобных систем. Таким образом, BSD может предложить более простой способ перехода с других систем, чем Linux. Кто предоставляет техническую поддержку, обслуживание и обучение для систем BSD? BSDi / FreeBSD Mall, Inc. уже около десяти лет предлагает контракты на поддержку FreeBSD. Кроме того, каждый из проектов постоянно обновляет список консультантов, которые оказывают поддержку за отдельную плату: FreeBSD, NetBSD и OpenBSD.
Index: head/ru_RU.KOI8-R/articles/fonts/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/fonts/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/fonts/article.xml (revision 46680) @@ -1,940 +1,931 @@
Шрифты и FreeBSDПособие DaveBodenstab
imdave@synet.net
7 августа 1996 $FreeBSD$ &tm-attrib.freebsd; &tm-attrib.adobe; &tm-attrib.apple; &tm-attrib.linux; &tm-attrib.microsoft; &tm-attrib.opengroup; &tm-attrib.general; Этот документ содержит описание различных файлов шрифтов, которые могут использоваться с FreeBSD и драйвером системной консоли, системой X11, программами Ghostscript и Groff. Даются реально работающие примеры по переключению экрана системной консоли в режим 80x60 и использованию файлов шрифтов формата Type 1 с перечисленными выше прикладными программами.
Введение Существует много мест, где можно найти файлы шрифтов, но встает вопрос о возможных способах их использования с FreeBSD. Ответ может быть найден в результате тщательного изучения документации по тем компонентам, которые вы собираетесь использовать. На это тратится очень много времени, и это пособие является попыткой дать готовые ответы для тех, кто заинтересуется такими вопросами. Основные термины Имеется множество различных форматов файлов шрифтов и соответствующих окончаний имен файлов. Здесь обсуждаются лишь следующие из них: .pfa, .pfb Файлы шрифтов &postscript; type 1. Файлы .pfa являются текстовым ( Ascii) представлением, а .pfb - двоичным (Binary). .afm Параметры (метрики) соответствующих шрифтов типа type 1. .pfm Метрики для принтеров соответствующих шрифтов типа type 1. .ttf Файл шрифтов &truetype; .fot Неявная ссылка на файл шрифтов TrueType (реальной информации о шрифте здесь не содержится) .fon, .fnt Файлы экранных шрифтов с побитным представлением Файлы .fot используются в &windows; в качестве некой символической ссылки на файл со шрифтом в формате &truetype; (.ttf). Файлы шрифтов .fon также используются в &windows;. Мне неизвестно, как можно использовать этот формат шрифтов во FreeBSD. Какие форматы файлов шрифтов я могу использовать? То, файл шрифтов какого формата будет полезен, зависит от используемого приложения. Сама по себе FreeBSD шрифтов не использует. Прикладные программы и/или драйверы могут использовать файлы шрифтов. Вот краткий справочник по типам файлов шрифтов и приложениям/драйверам: Драйвер + vt + + + .hex + + + + syscons .fnt Приложение Ghostscript .pfa, .pfb, .ttf X11 .pfa, .pfb Groff .pfa, .afm Povray .ttf Окончание .fnt используется достаточно часто. Я полагаю, что когда кто-нибудь собирается создать файл шрифтов для своего приложения, чаще всего выбирается именно это окончание. Поэтому файлы с таким окончанием не все имеют одинаковый формат; в частности, формат файлов .fnt, используемых драйвером syscons во FreeBSD, может отличаться от формата файлов .fnt, встречающихся в &ms-dos;/&windows;. Я даже не пытался использовать другие файлы .fnt, кроме тех, что поставляются с FreeBSD. Настройка виртуальной консоли на режим работы 80x60 Во-первых, должен быть загружен шрифт размера 8x8. Для этого файл /etc/rc.conf должен содержать строчку (измените в ней имя файла со шрифтом на соответствующий вашей локализации): font8x8="iso-8x8" # font 8x8 from /usr/share/syscons/fonts/* (or NO). Команда для переключения режимов называется &man.vidcontrol.1;: &prompt.user; vidcontrol VGA_80x60 Различные программы, ориентированные на работу с экраном, такие, как &man.vi.1;, должны уметь определять текущие размеры экрана. Так как это делается через вызовы ioctl к драйверу консоли (такому, как &man.syscons.4;), то размеры будут определяться правильно. Чтобы это проходило более гладко, можно включить эти команды в скрипты начальной загрузки, чтобы они выполнялись при запуске системы. Чтобы это сделать, добавьте такую строчку в /etc/rc.conf allscreens_flags="VGA_80x60" # Set this vidcontrol mode for all virtual screens Справочная информация: &man.rc.conf.5;, &man.vidcontrol.1;. Использование шрифтов type 1 с системой <application>X11</application> X11 может использовать файлы шрифтов в формате .pfa или .pfb. Шрифты для X11 располагаются в различных подкаталогах в /usr/X11R6/lib/X11/fonts. На каждый файл со шрифтом имеется ссылка по его X11-имени в файле fonts.dir в каждом таком каталоге. Существует каталог по имени Type1. Самым простым способом добавить новый шрифт заключается в помещении его в этот каталог. Но лучше хранить все новые шрифты в отдельном каталоге и использовать символические ссылки для добавляемых шрифтов. Это позволяет легко управлять отдельными добавляемыми шрифтами, не путая их с изначально поставляемыми. Например: Создаем каталог для файлов шрифтов &prompt.user; mkdir -p /usr/local/share/fonts/type1 &prompt.user; cd /usr/local/share/fonts/type1 Помещаем сюда файлы .pfa, .pfb и .afm Кому-то может потребоваться хранить здесь также сопроводительные файлы и документацию к шрифтам &prompt.user; cp /cdrom/fonts/atm/showboat/showboat.pfb . &prompt.user; cp /cdrom/fonts/atm/showboat/showboat.afm . Обновление индексного файла со ссылками на файлы шрифтов &prompt.user; echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX Теперь, чтобы использовать новый шрифт с X11, нужно дать доступ к файлу шрифтов и обновить файлы и именами шрифтов. Имена шрифтов в X11 выглядят следующим образом: -bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1 | | | | | | | | | | | | \ \ | | | | | \ \ \ \ \ \ \ +----+- набор символов | | | | \ \ \ \ \ \ \ +- средняя ширина | | | | \ \ \ \ \ \ +- spacing | | | \ \ \ \ \ \ +- разрешение по вертикали | | | \ \ \ \ \ +- разрешение по горизонтали | | | \ \ \ \ +- пунктов | | | \ \ \ +- пиксел | | | \ \ \ foundry family weight slant width additional style Для каждого нового файла шрифтов необходимо создать новое имя. Если у вас есть какая-либо информация из сопроводительной документации к шрифту, то она может служить основой для создания имени. Если информации нет, то можно получить некоторую информацию от использования программы &man.strings.1; над файлом шрифта. Например: &prompt.user; strings showboat.pfb | more %!FontType1-1.0: Showboat 001.001 %%CreationDate: 1/15/91 5:16:03 PM %%VMusage: 1024 45747 % Generated by Fontographer 3.1 % Showboat 1991 by David Rakowski. Alle Rechte Vorbehalten. FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup /UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 12 dict begin /FontInfo 9 dict dup begin /version (001.001) readonly def /FullName (Showboat) readonly def /FamilyName (Showboat) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -106 def /UnderlineThickness 16 def /Notice (Showboat 1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def end readonly def /FontName /Showboat def --stdin-- Пользуясь этой информацией, можно составить возможное имя: -type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1 Компонентами нашего имени являются: Foundry Давайте называть все новые шрифты type1. Family Имя шрифта. Weight Normal, bold, medium, semibold, и так далее. Из результата работы команды &man.strings.1; похоже, что этот шрифт имеет ширину medium. Slant roman, italic, oblique, и так далее. Так как ItalicAngle равен нулю, то будет использоваться roman. Width Normal, wide, condensed, extended, и так далее. Пока это не будет проверено, предполагаем normal. Дополнительный стиль Обычно опускается, но он будет указывать, что в шрифте есть декоративные заглавные буквы. Spacing proportional или monospaced. Используется proportional, потому что isFixedPitch равен false. Все эти имена произвольны, но нужно стараться следовать существующим соглашениям. В программе для X11 на шрифт ссылаются по имени с применением шаблонов, так что в выбираемом имени это должно учитываться. Можно начать с простого использования …-normal-r-normal-…-p-… в качестве имени, а затем использовать &man.xfontsel.1; для его проверки и изменения имени на основе того, как выглядит шрифт. Итак, завершая наш пример: Делаем шрифт доступным для X11 &prompt.user; cd /usr/X11R6/lib/X11/fonts/Type1 &prompt.user; ln -s /usr/local/share/fonts/type1/showboat.pfb . Редактируем файлы fonts.dir and fonts.scale, добавляя строку, описывающую шрифт и увеличивая количество шрифтов в первой строке. &prompt.user; ex fonts.dir :1p 25 :1c 26 . :$a showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1 . :wq fonts.scale идентичен fonts.dir… &prompt.user; cp fonts.dir fonts.scale Указываем X11, что произошли изменения &prompt.user; xset fp rehash Проверяем новый шрифт &prompt.user; xfontsel -pattern -type1-* Справочная информация: &man.xfontsel.1;, &man.xset.1;, The X Windows System in a Nutshell, O'Reilly & Associates. Использование шрифтов type 1 с пакетом Ghostscript Ghostscript ссылается на шрифт через свой файл Fontmap. Он должен быть подправлен так же, как и файл fonts.dir в случае X11. Ghostscript может использовать файлы шрифтов в форматах .pfa или .pfb. Взяв шрифт из предыдущего примера, его можно использовать с Ghostscript вот так: Помещаем файл со шрифтом в каталог со шрифтами Ghostscript &prompt.user; cd /usr/local/share/ghostscript/fonts &prompt.user; ln -s /usr/local/share/fonts/type1/showboat.pfb . Редактируем Fontmap, чтобы Ghostscript знал о шрифте &prompt.user; cd /usr/local/share/ghostscript/4.01 &prompt.user; ex Fontmap :$a /Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat . :wq Используем Ghostscript для проверки шрифта &prompt.user; gs prfont.ps Aladdin Ghostscript 4.01 (1996-7-10) Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb... /1899520 581354 1300084 13826 0 done. GS>Showboat DoFont Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb... 1939688 565415 1300084 16901 0 done. >>showpage, press <return> to continue<< >>showpage, press <return> to continue<< >>showpage, press <return> to continue<< GS>quit Справочная информация: fonts.txt из дистрибутива Ghostscript 4.01 Использование шрифтов в формате type 1 с программой Groff Теперь, когда новый шрифт может быть использован как с X11, так и в Ghostscript, как использовать его с программой groff? Во-первых, так как мы имеем дело со &postscript;-шрифтами формата type 1, то подходящим устройством groff является ps. Для каждого шрифта, который может использоваться программой groff, должен быть создан файл шрифта. Имя шрифта для groff является просто именем файла из каталога /usr/share/groff_font/devps. В нашем примере файлом шрифта может быть /usr/share/groff_font/devps/SHOWBOAT. Файл должен быть создан с помощью утилит, поставляемых с программой groff. Первой утилитой является afmtodit. Обычно она не устанавливается, так что она должна быть получена из дистрибутива с исходными текстами. Я обнаружил, что нужно изменить первую строку файла, что я делал так: &prompt.user; cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp &prompt.user; ex /tmp/afmtodit.pl :1c #!/usr/bin/perl -P- . :wq Эта утилита создаст файл шрифтов для groff из файла метрик (с окончанием .afm). Продолжая с нашим примером: Многие файлы .afm в формате Mac … строки разделены символом ^M. Нам нужно преобразовать их в разделитель ^J в стиле &unix; &prompt.user; cd /tmp &prompt.user; cat /usr/local/share/fonts/type1/showboat.afm | tr '\015' '\012' >showboat.afm Теперь создаем файл шрифтов groff &prompt.user; cd /usr/share/groff_font/devps &prompt.user; /tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT Теперь к шрифту можно обращаться по имени SHOWBOAT. Если в системе для управления принтерами используется программа Ghostscript, то больше ничего делать не нужно. Однако, если используются настоящие &postscript;-принтеры, то для использования шрифта его нужно загрузить в принтер (если только в принтере шрифт showboat не встроен или не имеется на диске со шрифтами). Последний шаг заключается в создании загружаемого шрифта. Утилита pfbtops используется для создания шрифта в формате .pfa, а файл для загрузки изменяется для указания нового шрифта. Файл для загрузки должен ссылаться на внутреннее имя шрифта. Оно может быть легко определено из файла шрифтов groff, как это показывается здесь: Создание файла шрифта .pfa &prompt.user; pfbtops /usr/local/share/fonts/type1/showboat.pfb >showboat.pfa Конечно, если файл .pfa уже имеется, для его использования создаем символическую ссылку на него. Получение внутреннего имени шрифта &prompt.user; fgrep internalname SHOWBOAT internalname Showboat Указываем утилите groff, что шрифт должен быть загружен &prompt.user; ex download :$a Showboat showboat.pfa . :wq Для тестирования шрифта: &prompt.user; cd /tmp &prompt.user; cat >example.t <<EOF .sp 5 .ps 16 This is an example of the Showboat font: .br .ps 48 .vs (\n(.s+2)p .sp .ft SHOWBOAT ABCDEFGHI .br JKLMNOPQR .br STUVWXYZ .sp .ps 16 .vs (\n(.s+2)p .fp 5 SHOWBOAT .ft R To use it for the first letter of a paragraph, it will look like: .sp 50p \s(48\f5H\s0\fRere is the first sentence of a paragraph that uses the showboat font as its first letter. Additional vertical space must be used to allow room for the larger letter. EOF &prompt.user; groff -Tps example.t >example.ps Для использования с ghostscript/ghostview &prompt.user; ghostview example.ps Для его печати &prompt.user; lpr -Ppostscript example.ps Справочная информация: /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man, &man.groff.font.5;, &man.groff.char.7;, &man.pfbtops.1;. Преобразование файлов шрифтов TrueType в формат groff/PostScript для использования с groff Потенциально это требует некоторых усилий, просто потому что зависит некоторых утилит, которые в качестве части системы не устанавливаются. Это: ttf2pf Утилита для преобразования TrueType в PostScript. Она позволяет преобразовать шрифт TrueType в метрику шрифта в текстовом формате (файл .afm). Доступна по адресу http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/. Замечание: Эти файлы являются PostScript-программами и должны быть скачаны на диск щелчком на ссылке при нажатой клавише Shift. В противном случае для их просмотра ваш браузер может попытаться запустить программу ghostview. Интерес представляют следующие файлы: GS_TTF.PS PF2AFM.PS ttf2pf.ps Смесь верхнего/нижнего регистров присутствует из-за того, что эти файлы предназначены и для DOS. ttf2pf.ps использует остальные с именами в верхнем регистре, так что при переименовании это нужно учитывать. (На самом деле GS_TTF.PS и PFS2AFM.PS предположительно являются частью дистрибутива Ghostscript, но их легко использовать как отдельные утилиты. В поставку FreeBSD они не включены.) Вы можете также установить их в каталог /usr/local/share/groff_font/devps(?). afmtodit Создает файлы шрифтов для использования с программой groff из текстовых файлов с метриками шрифта. Она обычно располагается в каталоге /usr/src/contrib/groff/afmtodit и для ее использования требуется проделать некоторую работу. Если вы избегаете работать в дереве /usr/src, просто скопируйте содержимое вышеупомянутого каталога во временный рабочий каталог. Во рабочем каталоге вам нужно построить утилиту. Просто введите такую команду: # make -f Makefile.sub afmtodit Вам может также потребоваться скопировать /usr/contrib/groff/devps/generate/textmap в /usr/share/groff_font/devps/generate, если его - только уже не существует. + не существует. Как только эти утилиты готовы, вы можете начать: Создайте файл .afm по такой команде: - -% gs -dNODISPLAY -q -- ttf2pf.ps TTF_name PS_font_name AFM_name + % gs -dNODISPLAY -q -- ttf2pf.ps TTF_name PS_font_name AFM_name Здесь TTF_name обозначает ваш файл со шрифтом TrueType, PS_font_name является именем для файла .pfa, AFM_name задает имя для файла .afm. Если вы не укажете имена выходных файлов, для форматов .pfa или .afm, то по умолчанию будут использоваться имена, получаемые из имени файла со шрифтом TrueType. При этом также будет создан файл .pfa, текстовый файл с метриками PostScript-шрифта ((.pfb для двоичного представления). Это не не обязательно, но может быть (я думаю) полезным для сервера шрифтов. Например, для преобразования шрифта 30f9 Barcode с именами файлов по умолчанию, воспользуйтесь следующей командой: % gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf Aladdin Ghostscript 5.10 (1997-11-23) Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Converting 3of9.ttf to 3of9.pfa and 3of9.afm. Если вы хотите, чтобы преобразованные шрифты сохранялись в файлы A.pfa and B.afm, то выдайте такую команду: % gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B Aladdin Ghostscript 5.10 (1997-11-23) Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Converting 3of9.ttf to A.pfa and B.afm. Создайте PostScript-файл для groff: Смените текущий каталог на /usr/share/groff_font/devps для облегчения запуска упоминаемых далее программ. Для этого вам может понадобиться иметь привилегии администратора системы. (Или, если вы избегаете здесь работать, обязательно посмотрите файлы DESC, text.enc и generate/textmap в этом каталоге.) - -% afmtodit -d DESC -e text.enc file.afm \ + % afmtodit -d DESC -e text.enc file.afm \ generate/textmap PS_font_name Здесь file.afm является файлом AFM_name, созданным программой ttf2pf.ps выше, а PS_font_name является именем шрифта, используемым в той команде, так же, как и имя, которое будет использовать утилита &man.groff.1; для ссылки на этот шрифт. Например, полагая, что вы использовали первую команду tiff2pf.ps выше, то шрифт 3of9 Barcode может быть создан при помощи такой команды: % afmtodit -d DESC -e text.enc 3of9.afm \ generate/textmap 3of9 Проверьте, что полученный файл PS_font_name (к примеру, 3of9 из примера выше) расположен в каталоге /usr/share/groff_font/devps, скопировав или перенеся его сюда. Заметьте, что если ttf2pf.ps назначает имя шрифта, используя один из найденных в файле шрифта TrueType, а вы хотите использовать другое имя, то вы должны отредактировать файл .afm до запуска команды afmtodit. Это имя к тому же должно совпадать с тем, что используется в файле Fontmap, если вы собираетесь перенаправлять вывод &man.groff.1; утилите &man.gs.1;. Можно ли использовать шрифты в формате TrueType с другими программами? Формат TrueType используется в Windows, Windows 95 и на компьютерах Macintosh. Он достаточно популярен и в этом формате имеется большое количество шрифтов. К сожалению, я знаю лишь несколько программ, которые могут использовать этот формат: на ум приходят Ghostscript и Povray. Его поддержка в программе Ghostscript, согласно документации, находится в зачаточном состоянии и получаемый результат хуже того, что получается при использовании шрифтов type 1. Программа Povray версии 3 также может использовать шрифты TrueType, но я очень сомневаюсь, что много кто создает документы как последовательность анимированных страниц :-). Такая весьма печальная ситуация может вскоре измениться. В рамках проекта FreeType Project в настоящее время разрабатывается полезный набор инструментов для работы с FreeType: Сервер шрифтов xfsft для X11 может работать и со шрифтами TrueType, и с обычными шрифтами. Хотя в настоящее время он еще находится в стадии отладки, но его уже можно использовать. Посмотрите страницу Juliusz Chroboczek, чтобы получить более полную информацию. Указания по переносу на FreeBSD можно найти на странице Стивена Монтгомери (Stephen Montgomery), посвященной программному обеспечению. xfstt является еще одним сервером шрифтов для X11, доступный по адресу ftp://sunsite.unc.edu/pub/Linux/X11/fonts. Программа, которая называется ttf2bdf, может генерировать BDF-файлы, которые можно использовать в системе X Window, из файлов шрифтов TrueType. Выполнимые файлы Linux могут находиться по адресу ftp://crl.nmsu.edu/CLR/multiling/General. и другие … Где можно найти дополнительные шрифты? Много шрифтов можно найти в сети Интернет. Они либо абсолютно - бесплатны, либо условно-бесплатны. Кроме того, продается много недорогих - компакт-дисков, содержащих много шрифтов. Вот некоторые адреса Интернет - (на август 1996): - - - - http://www.simtel.net/ - - - - http://www.freshmeat.net - - - - Сгрузите шрифты, поставляемые с Коллекцией Портов в - каталоге x11-fonts/ - - + бесплатны, либо условно-бесплатны. В добавок, множество шрифтов + находится в категории x11-fonts/ Коллекции + Портов. Дополнительные вопросы Для чего предназначены файлы .pfm? Можно ли получить файл .afm из файла .pfa или .pfb? Как получить файлы преобразования символов groff для PostScript-шрифтов с нестандартными названиями символов? Можно ли настроить xditview и устройства devX?? на работу всех новых шрифтов? Хорошо бы иметь примеры использования шрифтов TrueType с программами Povray и Ghostscript.
Index: head/ru_RU.KOI8-R/articles/freebsd-questions/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/freebsd-questions/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/freebsd-questions/article.xml (revision 46680) @@ -1,616 +1,611 @@
Как работать со списком рассылки FreeBSD-questions c максимальной отдачей GregLehey
grog@FreeBSD.org
&tm-attrib.freebsd; &tm-attrib.microsoft; &tm-attrib.opengroup; &tm-attrib.qualcomm; &tm-attrib.general; $FreeBSD$ $FreeBSD$ В этом документе содержится информация, которая будет полезна тем, кто собирается отправить письмо в список рассылки FreeBSD-questions. Даются советы и рекомендации, которые максимально увеличат шанс на получение полезных ответов. Этот документ регулярно публикуется в списке рассылки FreeBSD-questions.
Введение FreeBSD-questions является списком рассылки, который поддерживается проектом FreeBSD для оказания помощи тем, у кого возникли вопросы по поводу использования FreeBSD в повседневной работе. В другом списке рассылки, FreeBSD-hackers, обсуждаются более сложные вопросы, такие, как направление будущей работы над системой. Термин хакер не имеет ничего общего с проникновением на компьютеры других людей. Правильным термином для обозначения такой деятельности является кракер, однако популярная пресса этого еще не поняла. Хакеры FreeBSD нарушением защиты не занимаются. Более полное описание хакеров находится в руководстве Эрика Рэймонда (Eric Raymond) Как стать хакером Данный регулярно рассылаемый документ предназначен для помощи как тем, кто ищет ответов на вопросы во FreeBSD-questions (новички), так и тем, кто на эти вопросы отвечает (хакеры). Несомненно, здесь существуют некоторые трения, которые проистекают из-за разных точек зрения этих двух групп. Новички обвиняют хакеров в высокомерии, заносчивости и несостоятельности в оказании помощи, когда как хакеры обвиняют начинающих в том, что последние глупы, не умеют читать по-английски и ждут, что им все будет преподнесено на блюдечке с голубой каемочкой. Конечно, есть элемент правды в обоих этих утверждениях, однако по большей части такие мнения появляются из-за чувства разочарования. В этом документе я постараюсь уменьшить это разочарование и помочь всем получить более хорошие результаты от FreeBSD-questions. В следующем разделе я дам рекомендации по посылке вопросов; после этого мы посмотрим, как нужно на них отвечать. Как подписаться на FreeBSD-questions FreeBSD-questions является списком рассылки, распространяемым по электронной почте, поэтому вам нужен доступ к системе электронной почты. Зайдите через ваш WWW браузер на информационную страничку списка рассылки FreeBSD-question. В разделе Подписка на freebsd-questions (Subscribing to freebsd-questions) заполните поле Ваш адрес электронной почты (Your email address); другие поля являются опциональными. Поля для паролей в форме для подписки предоставляют только слабую защищённость, но должны предохранить других от путаницы с вашей подпиской. Не используйте ценный пароль, потому как он будет отослан вам по почте обратно в виде незашифрованного текста. Вы получите подтверждающее письмо от mailman; следуйте включенным в него инструкциям для завершения процесса подписки. И наконец, когда вы получите приветственное письмо от mailman с подробной информацией о списке и с паролем, пожалуйста, сохраните его. Если вы когда-нибудь захотите покинуть список рассылки, вам нужна будет эта информация. За дополнительной информацией обращайтесь к следующему разделу. Как отписаться от FreeBSD-questions Когда вы подписывались на список рассылки FreeBSD-questions, вы получили приглашающее сообщение от mailman. В этом сообщении, кроме всего прочего, вам рассказывалось о том, как отписаться. Вот типичное сообщение: Welcome to the freebsd-questions@freebsd.org mailing list! To post to this list, send your email to: freebsd-questions@freebsd.org General information about the mailing list is at: http://lists.freebsd.org/mailman/listinfo/freebsd-questions If you ever want to unsubscribe or change your options (e.g., switch to or from digest mode, change your password, etc.), visit your subscription page at: http://lists.freebsd.org/mailman/options/freebsd-questions/grog%40lemsi.de You can also make such adjustments via email by sending a message to: freebsd-questions-request@freebsd.org with the word `help' in the subject or body (don't include the quotes), and you will get back a message with instructions. You must know your password to change your options (including changing the password, itself) or to unsubscribe. It is: 12345 Normally, Mailman will remind you of your freebsd.org mailing list passwords once every month, although you can disable this if you prefer. This reminder will also include instructions on how to unsubscribe or change your account options. There is also a button on your options page that will email your current password to you. Используя URL, указанный в вашем приветственном сообщении, вы можете посетить страничку по управлению учетной записью и запросить отписать вас от списка рассылки FreeBSD-questions. Подтверждающее письмо будет выслано вам от mailman; следуйте включённым в него инструкциям для завершения процесса отписки. Если вы это сделали, и до сих пор не можете понять, что происходит, отправьте письмо на freebsd-questions-request@FreeBSD.org, и они помогут вам разобраться. Не посылайте сообщений во FreeBSD-questions: здесь вам помочь не смогут. Нужно задавать вопросы в <literal>-questions</literal> или <literal>-hackers</literal>? Общим вопросам по FreeBSD посвящены два списка рассылки, FreeBSD-questions и FreeBSD-hackers. В некоторых случаях на самом деле не ясно, в каком списке нужно задавать вопрос. Следующий критерий, однако, должен помочь в 98% всех случаев: Если вопрос является общим, спрашивайте во FreeBSD-questions. Примерами могут служить вопросы по установке FreeBSD или использованию конкретных утилит &unix;. Если вы думаете, что вопрос относится к ошибке, но вы не уверены или не знаете, как ее исправить, пошлите сообщение во FreeBSD-questions. Если вопрос относится к ошибке и вы уверены, что это ошибка (например, вы можете указать место в коде, где она происходит, и, может быть, у вас есть для нее исправление), то пошлите сообщение в список рассылки FreeBSD-hackers. Если вопрос относится к усовершенствованию FreeBSD, и вы можете дать предложения по ее реализации, то посылайте сообщение во FreeBSD-hackers. - Имеется также некоторое количество других специализированных списков - рассылки, например, FreeBSD-isp, которые отражают - интересы ISP (Поставщиков Услуг Интернет), работающих со FreeBSD. Если - случилось так, что вы являетесь ISP, это вовсе не значит, что вы - должны автоматически посылать свои вопросы в список рассылки - FreeBSD-isp. Здесь также подходит критерий, - указанный выше, и в ваших интересах следовать ему, потому что именно так - можно получить результат. + Имеется также некоторое количество других специализированных списков рассылки. + Здесь также подходит указанный выше критерий, и в ваших интересах + следовать ему, потому что именно так можно получить результат. Перед посылкой вопроса Вы можете (и должны) что-нибудь сделать сами перед тем, как задать вопрос в одном из списков рассылки: Попытайтесь решить проблему самостоятельно. Если вы пошлёте вопрос, который покажет, что вы пытались решить проблему, ваш вопрос, как правило, привлечёт более положительное внимание со стороны людей, читающих его. Попытка решить проблему самостоятельно также увеличит уровень вашего понимания FreeBSD, и в конечном счёте позволит вам использовать ваши знания для помощи другим, отвечая на вопросы, посылаемые в списки рассылки. Прочтите страницы справочника и документацию FreeBSD (установлена в /usr/doc или доступна через WWW на http://www.FreeBSD.org), особенно Руководство пользователя и FAQ. Просмотрите и/или поищите в архивах списка рассылки, задавился ли ваш или схожий вопрос (и возможно отвечался) в списке. Вы можете просмотреть и/или поискать в архивах списков рассылки на http://www.FreeBSD.org/mail и http://www.FreeBSD.org/search/search.html#mailinglists соответственно. Это может быть сделано также и на других WWW сайтах, к примеру, на http://marc.theaimsgroup.com. Используйте поисковик, например, Google или Yahoo для поиска ответов на ваш вопрос. Google имеет даже BSD ориентированный поисковой интерфейс. Как посылать вопрос При посылке сообщения в список рассылки FreeBSD-questions, имейте в виду следующее: Помните, что за ответы на вопросы о FreeBSD никто денег не получает. Все делают это в свободное время. Вы можете привлечь внимание, послав четко сформулированный вопрос, содержащий как можно больше относящейся к делу информации. Вы можете не получить внимания, послав неполный, непонятный или примитивный вопрос. В действительности можно посылать сообщение в список рассылки FreeBSD-questions и не получить ответа, даже если вы следуете этим правилам. Еще более вероятно не получить ответа, если вы им не следуете. В оставшейся части документа мы рассмотрим, как получить максимум от вопроса во FreeBSD-questions. Не всякий человек, могущий ответить на вопрос о FreeBSD, читает все сообщения: обычно читается строка с темой письма и решается, представляет ли сообщение интерес. То есть в ваших интересах указать тему письма. FreeBSD problem или Help недостаточно. Если вы не укажете тему вообще, то многие даже не потрудятся прочесть сообщение. Если тема сообщения недостаточно конкретна, то люди, которые могут ответить, могут его не прочесть. Оформляйте ваше сообщение так, чтобы оно было читабельно, и ПОЖАЛУЙСТА, НЕ КРИЧИТЕ!!!!!. Мы понимаем, что для многих английский не является родным языком, и не исключаем этого, однако действительно очень трудно и мучительно читать сообщение, полное опечаток или в котором отсутствуют разделители строк. Не упускайте из виду эффект, который производит плохо отформатированное письмо, причем не только в списке рассылки FreeBSD-questions. По вашему почтовому сообщению люди составляют мнение о вас, и если сообщение плохо отформатировано, содержит по одной строке на абзац, неправильно разделено или полно ошибок, то о вас сложится плохое впечатление. Множество плохо форматированных сообщений возникает из-за неправильно работающих или плохо настроенных почтовых программ. Известно, что следующие почтовые программы могут посылать неправильно отформатированные сообщения без вашего ведома об этом: &eudora; exmh µsoft; Exchange µsoft; Outlook Постарайтесь не использовать MIME: многие используют программы, которые не очень хорошо работают с MIME. Проверьте правильность настроек времени и временной зоны. Это может выглядеть немножко глупо, потому что ваши сообщения все равно будут доставляться, однако многие люди получают несколько сотен сообщений в день. Зачастую они сортируют входящие сообщения по теме и дате, и если ваше сообщение не будет предшествовать первому ответу, то они могут предположить, что оно потерялось и даже не взглянут на него. Не включайте не связанные друг с другом вопросы в одно и то же письмо. Во-первых, длинное сообщение отпугивает людей, а во-вторых, труднее найти людей, которые могут ответить на все вопросы, и прочитали такое сообщение. Сообщите максимальное количество информации. Это трудно, и нужно пояснить, какую информацию нужно сообщать, а поначалу: Практически в любом случае важно знать версию FreeBSD, с которой вы работаете. Особенно, в частности, в случае FreeBSD-CURRENT вы должны также указать дату исходных текстов, хотя, конечно, вам не нужно посылать сообщения о -CURRENT в список рассылки FreeBSD-questions. В случае любой проблемы, которая может быть связана с работой оборудования, расскажите о вашем аппаратном обеспечении. В случае сомнений предположите, что это, возможно, вина оборудования. Какой тип процессора используется? Насколько он быстр? Какая материнская плата? Сколько установлено памяти? Какое периферийное оборудование? Конечно, это приговор, но вывод команды &man.dmesg.8; зачастую может оказаться очень полезным, так как он говорит не только об оборудовании, с которым вы работаете, но также и о версии FreeBSD. Если выдаются сообщения об ошибках, недостаточно написать I get error messages, напишите (например) I get the error message 'No route to host'. Если ваша система завершает работу аварийно, не пишите My system panicked, напишите (к примеру) my system panicked with the message 'free vnode isn't'. Если у вас возникли трудности при установке FreeBSD, пожалуйста, опишите ваше оборудование. В частности, важно знать адреса ввода/вывода и IRQ адаптеров, установленных в вашей машине. Если у вас возникли трудности в настройке PPP, опишите настройку. Какую версию PPP вы используете? Какой тип аутентификации? У вас используется статическое или динамическое выделение адресов IP? Какие сообщения вы получили в файле протокола? Основной объем информации, который вы должны дать, представляет собой вывод программ, таких, как &man.dmesg.8;, или консольные сообщения, которые обычно появляются в файле /var/log/messages. Не пытайтесь скопировать эту информацию, набрав ее снова; это действительно трудно, и здесь легко сделать ошибку. Чтобы послать содержимое файлов протоколов, сделайте копию файла и воспользуйтесь редактором для того, чтобы обрезать информацию, оставив только относящуюся к делу, либо скопируйте и вставьте текст в ваше сообщение. В случае вывода программ, таких, как &man.dmesg.8;, перенаправьте вывод в файл и включите его в письмо. Например, &prompt.user; dmesg > /tmp/dmesg.out Эта команда перенаправляет информацию в файл /tmp/dmesg.out. Если вы все это сделали, и все же не можете получить ответа, этому могут быть другие причины. Например, проблема столь сложна, что никто не знает ответа, или тот, кто знает, отсутствовал. Если вы не получили ответа, скажем, в течении недели, может помочь повторная посылка сообщения. Если вы не получили ответа на свое второе послание, скорее всего, вы вовсе не получите его из этого списка рассылки. Повторная посылка того же самого сообщения снова и снова только повредит вашей репутации. Подводя итог, давайте предположим, что вы знаете ответ на следующий вопрос (да, это один и тот же вопрос). Выберите, на какой вопрос вы в большей степени готовы ответить: Сообщение 1 Subject: HELP!!?!?? I just can't get hits damn silly FereBSD system to workd, and Im really good at this tsuff, but I have never seen anythign sho difficult to install, it jst wont work whatever I try so why don't you guys tell me what I doing wrong. Сообщение 2 Subject: Problems installing FreeBSD I've just got the FreeBSD 2.1.5 CDROM from Walnut Creek, and I'm having a lot of difficulty installing it. I have a 66 MHz 486 with 16 MB of memory and an Adaptec 1540A SCSI board, a 1.2GB Quantum Fireball disk and a Toshiba 3501XA CDROM drive. The installation works just fine, but when I try to reboot the system, I get the message Missing Operating System. Как дополнить вопрос Часто вам бывает нужно дать дополнительную информацию к вопросу, который вы уже отослали. Лучшим способом сделать это является ответ на первоначальное сообщение. Здесь есть три момента: Вы включаете текст исходного сообщения, чтобы люди знали, о чем вы говорите. Однако не забудьте удалить ненужный текст. Текст в строке с темой письма остается тем же самым (вы не забыли его указать, не правда ли?). Многие почтовые программы сортируют сообщения по теме письма. Это поможет при группировке сообщений. Ссылочные номера сообщений в заголовке будут указывать на предыдущее сообщение. Некоторые почтовые программы, такие, как mutt, могут упорядочивать сообщения, показывая точную связь между ними. Как отвечать на вопрос Перед тем, как отвечать на вопрос в списке рассылки FreeBSD-questions, имейте в виду: Многие замечания, касающиеся посылки вопросов, относятся и к ответам на них. Прочтите эти замечания. Ответил ли кто-либо на вопрос? Самым простым способом проверить это является сортировка входящей почты по темам писем: тогда (надеемся) вы увидите вопрос с последующими ответами все вместе. Если кто-то уже ответил на вопрос, это вовсе не значит, что вы не должны посылать свой ответ. Но сначала имеет смысл прочитать все другие ответы. Есть ли у вас что добавить сверх того, что уже было сказано? В общем случае ответы Yeah, me too сильно не помогут, хотя есть и исключения, например, когда кто-нибудь описывает свою проблему и не знает, его ли это ошибка, или что-то не так с аппаратным или программным обеспечением. Если вы посылаете сообщение me too, включите также относящуюся к делу информацию. Уверены ли вы, что поняли вопрос? Очень часто тот, кто задает вопрос, путается или не может все хорошо описать. Даже при самом полном понимании системы легко послать ответ, который не отвечает на вопрос. К сожалению, так вы никому не поможете, только ещё больше запутаете и разочаруете спрашивающего. Если никто больше не отвечает, или вы не очень уверены, то всегда можете запросить более подробную информацию. Уверены ли вы, что ваш ответ корректен? Если нет, то подождите пару дней. Если никого больше не появится с лучшим ответом, чем ваш, то вы можете ответить и сказать, например, I don't know if this is correct, but since nobody else has replied, why don't you try replacing your ATAPI CDROM with a frog?. Если нет причин поступить как-то иначе, то ответьте отправителю и в список рассылки FreeBSD-questions. Многие подписчики FreeBSD-questions таятся: они учатся на чтении сообщений, посланных и отвеченных другими. Если вы пошлете сообщение, представляющее интерес для всех, минуя список рассылки, то лишите этих людей их информации. Будьте внимательны при ответе всем; многие посылают сообщения с сотнями CC-адресатов. В таких случаях удалите лишние строки Cc:. Из исходного сообщения включите текст, который относится к делу. Избегайте излишнего цитирования, но не переусердствуйте. Тот, кто не читал первоначального сообщения, должен понять, о чём же идёт речь. Используйте приемы выделения текста, который взят из исходного сообщения и текста, который добавили вы. Лично я нахожу, что для первоначального текста лучше всего работает вставка символа > . Вставка пробела после > и пустых строк между вашим и первоначальным текстами сделает результат более читабельным. Поместите ваш ответ в правильном месте (после текста, на который вы отвечаете). Очень трудно читать набор ответов, когда каждый из них следует перед текстом, к которому относится. Большинство почтовых программ меняют строку темы письма в ответе, предваряя ее текстом типа Re: . Если ваша почтовая программа не делает это автоматически, вы должны делать это вручную. Если спрашивающий не следует соглашениям по форматированию текста (слишком длинные строки, неподходящая строка темы), пожалуйста, исправьте эти ошибки. В случае некорректной строки темы письма (типа HELP!!??) измените её, например, так: Re: Difficulties with sync PPP (was: HELP!!??). В таком случае у других людей, пытающихся отследить обсуждение, будет меньше проблем. В таких случаях хорошо сказать, что вы сделали и почему, но постарайтесь не грубить. Если вы чувствуете, что не можете ответить, не скатываясь на грубость, воздержитесь от ответа вообще. Если вы хотите ответить на сообщение лишь потому, что оно плохо оформлено, ответьте только автору, но не в список. Если хотите, то в ответ можете просто послать ему эту статью.
Index: head/ru_RU.KOI8-R/articles/geom-class/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/geom-class/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/geom-class/article.xml (revision 46680) @@ -1,813 +1,813 @@
Создание класса GEOM IvanVoras
ivoras@FreeBSD.org
&tm-attrib.freebsd; &tm-attrib.intel; &tm-attrib.general; $FreeBSD$ $FreeBSD$ Эта статья документирует некоторые начальные выкладки в разработке GEOM-классов, а также модулей ядра в общем. Предполагается, что читатель близко знаком с программированием на Си в контексте пространства пользовательских процессов (userland).
Вступление Документация Документация по программированию для ядра скудная, это одна из немногих областей программирования, где почти нет хороших учебных пособий, и совет читай исходники! — сохраняет свою справедливость. Однако, существует несколько статей и книг разной актуальности, которые рекомендуются к изучению перед тем, как начать программировать: Руководство FreeBSD для разработчиков — часть Проекта Документации FreeBSD, ничего специфичного о программировании ядра в нем нет, зато есть немного общей полезной информации. Руководство по Архитектуре FreeBSD — также является частью Проекта Документации FreeBSD, содержит описания некоторых низкоуровневых средств и процедур. Уделите внимание разделу номер 13 — Написание драйверов устройств для FreeBSD. Несколько интересных статей об устройстве ядра можно найти на сайте FreeBSD Diary. Страницы из раздела номер 9 системного справочника, содержат важную документацию по функциям ядра. Страница справочника &man.geom.4;, а также слайды Пола-Хеннинга Кампа — общее представление о подсистеме GEOM. Страницы справочника &man.g.bio.9;, &man.g.event.9;, &man.g.data.9;, &man.g.geom.9;, &man.g.provider.9;, &man.g.consumer.9;, &man.g.access.9;, а также другие, связанные с вышеупомянутыми и раскрывающие специфический функционал подсистемы GEOM. Страница справочника &man.style.9; — документирует соглашения о стиле оформления кода, которые обязаны быть соблюдены если вы планируете передать ваш код в Subversion репозиторий FreeBSD. Подготовка Для того, чтоб заниматься разработками для ядра, желательно иметь два отдельных компьютера. Один из них предназначен для среды разработки и исходных кодов, а второй — для запуска тестов отлаживаемого кода. Второму компьютеру для работы достаточно иметь возможность выполнять начальную загрузку по сети и монтирование файловых систем по сети. В этой ситуации, если отлаживаемый код содержит ошибки и вызовет аварийную остановку системы, то это не повлечет порчу или утерю исходного кода . Второму компьютеру даже не потребуется иметь свой монитор, достаточно будет соединения асинхронных портов кабелем RS-232 или соединения при помощи KVM-устройства. Но так как далеко не у каждого есть два или более компьютеров под рукой, есть пара способов подготовить иную живую систему для разработки кода для ядра. Один из них — это разработка в VMWare или QEmu виртуальной машине (это лучшее из доступного, после, конечно-же, выделенного для тестов компьютера). Настройка системы для разработки Прежде всего необходимо иметь в ядре поддержку . Добавьте следующие строки в файл конфигурации ядра: options INVARIANT_SUPPORT options INVARIANTS Для большей информативности при отладке включите поддержку WITNESS, которая будет предупреждать вас в случае возникновения взаимоблокировок: options WITNESS_SUPPORT options WITNESS Также включите отладочные символы, если планируете выполнять отладку по дампам аварийных отказов makeoptions DEBUG=-g Установка отладочного ядра обычным способом (make installkernel) не даст привычного результата: файл ядра будет называться kernel.debug и будет находиться в /usr/obj/usr/src/sys/KERNELNAME/. Для удобства, отладочное ядро необходимо скопировать в /boot/kernel/. Также удобно иметь включенный отладчик ядра, так вы сможете исследовать паники сразу-же после их возникновения. Для включения отладчика добавьте следующие строки в файл конфигурации ядра: options KDB options DDB options KDB_TRACE Для автоматического запуска отладчика ядра после возникновения паники может понадобиться установить переменную sysctl: debug.debugger_on_panic=1 Паники системы будут происходить, поэтому уделите внимание кэшу файловой системы. Обычно, при включенном механизме softupdates, последняя версия файла может быть утеряна если паника произошла раньше сбрасывания кэша на устройство хранения. Выключение механизма softupdates (посредством монтирования файловой системы с опцией sync) значительно сказывается на производительности и, опять-же, не гарантирует целостности данных. Как компромисс, можно сократить задержки сбрасывания кэша механизма softupdates. Есть три переменных sysctl, значения которых необходимо изменить (лучше всего — прописав их в /etc/sysctl.conf): kern.filedelay=5 kern.dirdelay=4 kern.metadelay=3 Значения этих переменных — секунды. Для отладки паник ядра необходимы дампы памяти. Так как паника ядра может сломать файловую систему, дамп сначала сохраняется в сырой раздел. Обычно, это своп-раздел. Поэтому, размер своп-раздела должен быть не меньше размера ОЗУ компьютера. При последующей загрузке дамп копируется в обычный файл. Это происходит сразу-же после проверки и монтирования файловых систем, но перед активированием раздела свопа. Такое поведение контролируется следующими переменными /etc/rc.conf: dumpdev="/dev/ad0s4b" dumpdir="/usr/core" Переменная dumpdev указывает на раздел подкачки, а dumpdir сообщает системе куда перемещать дамп ядра при следующей загрузке. Сохранение дампа ядра — процесс медленный, и, если у вашего компьютера много оперативной памяти (>256M) и если паники случаются часто, то ожидание сохранения дампов может начать раздражать (вспомним, что над дампом происходит две операции: сохранение в своп-файл и перемещение на файловую систему). В таком случае может оказаться удобным ограничивание объема используемой системой памяти путем установки переменной в /boot/loader.conf: hw.physmem="256M" Если паники случаются часто и размер файловых систем большой (или же вы просто не доверяете softupdates и фоновой проверке файловых систем), рекомендуется отключить фоновую проверку файловых систем посредством установки переменной в /etc/rc.conf: background_fsck="NO" В этом случае файловые системы будут проверяться только при необходимости. Также заметьте, что в случае использования фоновой проверки, новая паника может случиться в то время, когда проверяются диски. Другими словами, наиболее безопасный способ — не иметь много локальных файловых систем, а использовать второй компьютер в качестве NFS-сервера. Начало проекта Для написания нового класса GEOM необходимо создать поддиректорию в любой доступной пользователю директории. Совсем не обязательно, чтоб ваш модуль изначально размещался в /usr/src. Makefile Правилом хорошего тона является создание Makefile-ов для каждого нетривиального проекта, примером которого конечно-же является создание модулей ядра. Создание Makefile — дело не сложное благодаря исчерпывающему набору вспомогательных средств, предоставляемых системой. В вкратце, вот как должен выглядеть Makefile для модуля ядра: SRCS=g_journal.c KMOD=geom_journal .include <bsd.kmod.mk> Этот Makefile (с измененными именами файлов) подойдет к любому модулю ядра. Класс GEOM может размещаться в одном единственном модуле ядра. Если для сборки вашего модуля требуется больше, чем один файл, то перечислите их имена, разделенные пробельными символами, в переменной SRCS. Программирование в ядре FreeBSD Выделение памяти Прочитайте &man.malloc.9; — выделение памяти лишь немного отличается от своего эквивалента, используемого в пространстве пользовательских процессов (userland). Наиболее приметно то, что malloc() и free() принимают дополнительные параметры, которые описаны в странице справочника. Тип malloc_type необходимо объявить в секции деклараций файла с исходным кодом, например: static MALLOC_DEFINE(M_GJOURNAL, "gjournal data", "GEOM_JOURNAL Data"); Для того, чтобы можно было использовать этот макрос, необходимо включить следующие заголовочные файлы: sys/param.h, sys/kernel.h и sys/malloc.h Существует еще один механизм выделения памяти — UMA (Universal Memory Allocator), описанный в &man.uma.9;. Это специфический метод, преимущественно предназначенный для быстрого выделения памяти под списки, состоящие из элементов одинакового размера (например, динамические массивы структур). Очереди и списки Ознакомьтесь с &man.queue.3; Во множестве случаев вам необходимо будет организовывать и управлять такой структурой данных, как списки. К счастью, эта структура данных реализована несколькими способами в виде макросов на Си, а также включена в систему. Наиболее гибкий и часто употребляемый тип списка — TAILQ. Этот тип списка также один из наиболее требовательных к памяти (его элементы - с двойными связями), а также — наиболее медленный (однако счет идет на несколько инструкций ЦПУ, поэтому последнее утверждение не следует воспринимать в всерьез). Если важна скорость получения данных, то возьмите на вооружение &man.tree.3; и &man.hashinit.9;. BIOs Структура bio используется для всех операций ввода/вывода, касающихся GEOM. Она содержит информацию о том, какое устройство ('поставщик geom') должно ответить на запрос, тип запроса, смещение, длину и указатель на буфер, а также набор определенных пользователем флагов и полей . Важным моментом является то, что bio обрабатываются асинхронно. Это значит, что во многих частях кода нет аналога к &man.read.2; и &man.write.2; функциям из пространства пользовательских процессов, которые не возвращают управление пока не выполнится системный вызов. Скорее, по завершении обработки запроса (или в случае ошибки при обработке) как извещение вызывается определенная пользователем функция. Асинхронная модель программирования в чем-то сложней, нежели чаще используемая императивная модель, используемая в пространстве пользовательских процессов; в любом случае, привыкание займет некоторое время. В некоторых случаях могут быть использованы вспомогательные функции g_write_data() и g_read_data(), но далеко не всегда. В частности, эти функции не могут использоваться когда захвачен мьютекс; например, мьютекс GEOM-топологии или внутренний мьютекс, удерживаемый в ходе выполнения .start() или .stop(). Программирование в системе GEOM Ggate Если максимальная производительность не требуется, то более простой способ совершать преобразования данных — это выполнять их в пространстве пользовательских процессов посредством ggate (GEOM gate). К недостаткам следует отнести невозможность простого переноса кода в ядро. Класс GEOM Класс GEOM выполняет преобразования данных. Эти преобразования могут быть скомпонованы друг с другом в виде дерева. Экземпляр класса GEOM называют geom. В каждом классе GEOM есть несколько методов класса, которые вызываются когда экземпляра класса нет в наличии (или же они не привязаны к конкретному экземпляру класса). .init вызывается тогда, когда системе GEOM становится известно о классе GEOM (например, когда загружается модуль ядра). .fini будет вызван в случае отказа GEOM системы от класса (например, при выгрузке модуля). .taste вызывается, когда в системе появляется новый класс или поставщик geom (provider). Если соответствие найдено, то эта функция обычно создает и запускает экземпляр geom. .destroy_geom вызывается при необходимости разрушить экземпляр geom. .ctlconf будет вызван, когда пользователь запросит изменение конфигурации существующего экземпляра geom Также определены функции событий GEOM, которые копируются в экземпляр geom. Поле .geom в структуре g_class — это список (LIST) экземпляров geom, реализованных из класса. Эти функции вызываются из g_event потока ядра. Softc softc — это устаревший термин для приватных данных драйвера (driver private data). Название вероятней всего происходит от устаревшего термина software control block. В системе GEOM softc это структура (точнее: указатель на структуру) которая может быть присоединена к экземпляру geom и может содержать приватные данные экземпляра. У большинства классов GEOM есть следующие члены: struct g_provider *provider : поставщик geom предоставляемый данным экземпляром geom uint16_t n_disks : Количество потребителей geom (consumer), обслуживаемых данным экземпляром geom struct g_consumer **disks : Массив struct g_consumer*. (Невозможно обойтись одинарным указателем, потому что система GEOM создает для нас структуры struct g_consumer*) Структура softc содержит состояние экземпляра geom. У каждого экземпляра есть свой softc. Метаданные Формат метаданных в той или иной мере зависит от конкретного класса, но обязан начинаться с: 16-байтного буфера для подписи — строки с завершающим нулем (обычно это имя класса) uint32 идентификатора версии Подразумевается, что классы geom знают как обращаться с метаданными с идентификаторами версий ниже, чем их собственные. Метаданные размещаются в последнем секторе поставщика geom (поэтому обязаны целиком умещаться в нем). (Все это зависит от реализации, но весь существующий код работает подобно описанному и поддерживается библиотеками.) Маркирование/создание экземпляра geom Последовательность событий следующая: пользователь запускает служебную программу &man.geom.8; программа решает каким классом geom ей придется управлять и ищет библиотеку geom_CLASSNAME.so (которая обычно находится в /lib/geom). она открывает библиотеку при помощи &man.dlopen.3;, извлекает вспомогательные функции и определения параметров командной строки. Вот так происходит создание/маркирование нового экземпляра geom: &man.geom.8; ищет команду в аргументах командной строки (обычно это ) и вызывает вспомогательную функцию. Вспомогательная функция проверяет параметры и собирает метаданные, которые записываются во все вовлеченные поставщики geom. Это повреждает (spoil) существующие экземпляры geom (если они были) и порождает новый виток тестирования поставщиков geom. Целевой класс geom опознает метаданные и активирует экземпляр geom. (Приведенная выше последовательность событий зависит от конкретной реализации, но весь существующий код работает подобно описанному и поддерживается библиотеками.) Структура команд geom Вспомогательная библиотека geom_CLASSNAME.so экспортирует структуру class_commands, которая является массивом элементов struct g_command. Эти команды одинакового формата и выглядят следующим образом: команда [-опции] имя_geom [другие] Общими командами являются: label — записать метаданные в устройства, чтобы они могли быть опознаны в процессе тестирования и использованы в соответствующих экземплярах geom destroy — разрушить метаданные, за которым последует разрушение экземпляров geom Общие опции: -v : детальный вывод -f : принудить Некоторые операции, к примеру маркирование метаданными и разрушение метаданных могут быть выполнены из пространства пользовательских процессов. Для этого, структура g_command содержит поле gc_func, которое может быть установлено на функцию (в том-же .so), которая будет вызвана для обработки команды. В случае, когда gc_func равно NULL, команда будет передана модулю ядра: функции .ctlreq класса GEOM. Экземпляры geom У экземпляров классов GEOM есть внутренние данные, которые хранятся в структурах softc, а также есть некоторые функции, посредством которых они реагируют на внешние события. Функции событий: .access : просчитывает права доступа (чтение/запись/исключительный доступ) .dumpconf : возвращает информацию о экземпляре geom; формат XML .orphan : вызывается, когда отсоединяется любой из низлежащих поставщиков geom .spoiled : вызывается, когда производится запись в низлежащий поставщик geom .start : обрабатывает ввод/вывод Эти функции вызываются из ядерного потока g_down и в этом контексте не может быть блокировок (поищите определение блокировка в других источниках), что немного ограничивает свободу действий, но способствует быстроте обработки. Из вышеупомянутых, наиболее важной и выполняющей полезную работу функцией является .start(), которая вызывается всякий раз, когда поставщику geom, управляемому экземпляром класса, приходит запрос BIO. Потоки выполнения системы geom Системой GEOM в ядре ОС создаются и используются три потока выполнения (kernel threads): g_down : Обрабатывает запросы, приходящие от высокоуровневых сущностей (таких, как запросы из пространства пользовательских процессов) на пути к физическим устройствам g_up : Обрабатывает ответы от драйверов устройств на запросы, выполненные высокоуровневыми сущностями g_event : Отрабатывает в остальных случаях, как-то создание экземпляра geom, просчитывание прав доступа, события повреждения и т.п. Когда пользовательский процесс запрашивает прочитать данные X по смещению Y файла, происходит следующее: Файловая система преобразует запрос в экземпляр структуры bio и передает его системе GEOM. Файловая система знает, что экземпляр geom должен обработать запрос, так как файловые системы размещаются непосредственно над экземпляром geom. Запрос завершается вызовом функции .start() в потоке g_down и достигает верхнего экземпляра geom. Верхний экземпляр geom (например, это секционировщик разделов (partition slicer)) определяет, что запрос должен быть переадресован нижестоящему экземпляру geom (к примеру, драйверу диска). Вышестоящий экземпляр geom создает копию запроса bio (запросы bio ВСЕГДА копируются при передаче между экземплярами geom при помощи g_clone_bio()!), изменяет поля смещения и целевого поставщика geom и запускает на обработку копию при помощи функции g_io_request() Драйвер диска также получает запрос bio, как вызов функции .start() в потоке g_down. Драйвер обращается к контроллеру диска, получает блок данных и вызывает функцию g_io_deliver() используя копию запроса bio Теперь, извещение о завершении bio всплывает в потоке g_up. Сначала в потоке g_up вызывается функция .done() секционировщика разделов, последний использует полученную информацию, разрушает клонированный экземпляр структуры bio посредством g_destroy_bio() и вызывает g_io_deliver() используя первоначальный запрос Файловая система получает данные и передает их пользовательскому процессу За информацией о том, как данные передаются в структуре bio между экземплярами geom, смотрите &man.g.bio.9; (обратите внимание на использование полей bio_parent и bio_children). Важный момент в том, что НЕЛЬЗЯ ДОПУСКАТЬ БЛОКИРОВОК В ПОТОКАХ G_UP И G_DOWN. Вот неполный перечень того, что нельзя делать в этих потоках: Вызывать функции msleep() или tsleep(). Использовать функции g_write_data() и g_read_data(), так как они блокируются в момент обмена данными с потребителями geom. Ожидать ввод/вывод. Вызывать &man.malloc.9; и uma_zalloc() с установленным флагом M_WAITOK. Использовать &man.sx.9; Это ограничение на код GEOM призвано избежать от засорения пути запроса ввода/вывода, так как блокировки обычно не имеют четких временных границ, и нет гарантий на занимаемое время (также на то есть и другие технические причины). Это также значит, что в вышеупомянутых потоках сколь-нибудь сложные операции выполнить нельзя, например: любое сложное преобразование требует выделения памяти. К счастью решение есть: создание дополнительных ядерных потоков. Ядерные потоки выполнения, предназначенные для использования в коде geom Ядерные потоки выполнения создаются функцией &man.kthread.create.9;, в своем поведении они схожи с потоками, созданными в пространстве пользовательских процессов, но есть одно отличие: они не могут известить вызвавший их поток о своем завершении; по завершению — необходимо вызывать &man.kthread.exit.9; В коде GEOM обычное назначение этих потоков — разгрузить поток g_down (функцию .start() ) от обработки запросов. Эти потоки подобны обработчикам событий (event handlers): у них есть очередь событий (которая наполняется событиями от разных функций из разных потоков; очередь необходимо защищать мьютексом), события из очереди выбираются одно за другим и обрабатываются в большом блоке switch(). Основное преимущество использования отдельного потока, который обрабатывает запросы ввода/вывода, то, что он может блокироваться по мере необходимости. Это, несомненно, привлекательно, но должно быть хорошо обдумано. Блокирование — хорошо и удобно, но может существенно снизить производительность преобразований данных в системе GEOM. Особо требовательные к производительности классы могут делать всю работу в функции .start(), уделяя особое внимание ошибкам при работе с памятью. Еще одно преимущество потока обработчика событий это сериализация всех запросов и ответов, приходящих с разных потоков geom в один поток. Это также удобно, но может быть медленным. В большинстве случаев, обработка запросов функцией .done() может быть оставлена потоку g_up. У мьютексов в ядре FreeBSD (&man.mutex.9;) есть одно различие с их аналогами из пространства пользовательских процессов — во время удержания мьютекса в коде не должно быть блокировки. Если в коде необходимо блокирование, то лучше использовать &man.sx.9;. С другой стороны, если вся ваша работа выполняется в одном потоке, вы можете обойтись вообще без мьютексов.
Index: head/ru_RU.KOI8-R/articles/hubs/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/hubs/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/hubs/article.xml (revision 46680) @@ -1,1145 +1,745 @@
Поддержка зеркал FreeBSD JunKuriyama
kuriyama@FreeBSD.org
ValentinoVaschetto
logo@FreeBSD.org
DanielLang
dl@leo.org
KenSmith
kensmith@FreeBSD.org
ДмитрийМорозовскийПеревод на русский язык:
&tm-attrib.freebsd; - &tm-attrib.cvsup; &tm-attrib.general; $FreeBSD$ $FreeBSD$ Рабочий вариант статьи, описывающей процесс создания и поддержки зеркала FreeBSD и адресованной администраторам зеркал.
На текущий момент заявки на подключение новых зеркал не принимаются. Контактная информация Координаторы системы зеркал доступны по электронной почте по адресу mirror-admin@FreeBSD.org. Помимо этого, существует &a.hubs;. Требования к зеркалам FreeBSD Дисковое пространство Одним из наиболее важных требований является дисковое пространство. В зависимости от набора релизов, архитектур и степени полноты зеркала вам может потребоваться огромный объем диска. Не лишним будет помнить, что официальное зеркало, скорее всего, - должно быть полным. Репозиторий CVS и веб-страницы всегда должны + должно быть полным. Веб-страницы всегда должны зеркалироваться полностью. Кроме того, учтите, что приводимые оценки объема относятся к состоянию на момент последнего редактирования данной статьи (&rel2.current;-RELEASE/&rel.current;-RELEASE). Дальнейший процесс разработки и последующие релизы только увеличат требуемый объем. Кроме того, разумно будет зарезервировать некоторое (10-20%) дополнительное пространство спокойствия ради. Вот некоторые оценки объема: - Полное зеркало FTP: 1.0 TB + Полное зеркало FTP: 1.4 TB - Репозиторий CVS: 5.4 GB + Комплект изменений CTM: 10 GB - Комплект изменений CTM: 3.2 GB + Веб-страницы: 1 GB - - - Веб-страницы: 463 MB - Текущее использование диска зеркалом FTP можно посмотреть на ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes. Требования к сетевой связности и пропускной способности Разумеется, у вас должно быть подключение к интернет. Требуемая пропускная способность ваших каналов зависит от предполагаемого профиля использования вашего зеркала. Если вы собираетесь копировать некоторые части FreeBSD для локального использования на вашей машине или в интранете, требования могут быть много мягче, чем для публичного зеркала. Для официального зеркала необходимая пропускная способность увеличивается еще больше. Мы можем дать лишь очень грубые оценки: Зеркало для локального доступа: фактически минимум не определен, но канал шириной менее 2 Mbps может сделать процесс обновления мучительно медленным. Неофициальное публичное зеркало: 34 Mbps выглядит неплохо для начала. Официальное зеркало: рекомендуется канал шириной более 100 Mbps; кроме того, ваша машина должна стоять как можно ближе к граничным маршрутизаторам вашей сети. Системные требования, процессор и память Эти требования в первую очередь определяются максимальным ожидаемым количеством клиентов (устанавливается администратором сервера). Также, на требуемые ресурсы влияет список сервисов, которые вы будете предоставлять. Зеркала FTP и/или HTTP не требуют особенно много ресурсов. Будьте на чеку, если планируете предоставлять rsync. Выбор rsync может иметь огромное влияние на требования к аппаратным ресурсам, поскольку rsync признан "прожорливым" по памяти. Вот некоторые советы по конфигурации аппаратной части сервера: Для умеренно посещаемого сайта, предоставляющего - Rsync, можно использовать процессор + rsync, можно использовать процессор с частотой 800MHz - 1 GHz и по крайней мере 512MB памяти. Скорее всего, данная конфигурация может считаться минимальной для официального зеркала. Для регулярно посещаемого сайта вам потребуется больше памяти (хорошим стартом будет 2GB) и больше процессорной мощности, что может означать требование многопроцессорной (SMP) платформы. Кроме того, вам потребуется быстрая дисковая подсистема, в первую - очередь, для работы с репозиторием CVS (крайне рекомендуем RAID). + очередь, для работы с репозиторием SVN (крайне рекомендуем RAID). Контроллер SCSI, оборудованный собственной памятью, также может ощутимо ускорить процесс, поскольку большая часть сервисов связана с большим количеством дисковых запросов небольшого размера. Предоставляемые сервисы Всякое зеркало должно предоставлять набор основных сервисов. Помимо требуемого минимального набора, существуют дополнительные сервисы, которые администратор сервера может пожелать предоставлять. Этот раздел описывает, какие сервисы вы можете предоставлять, и какие действия для этого потребуются от вас. FTP (требуется для FTP зеркала) Это один из наиболее базовых сервисов; его предоставление требуется для каждого зеркала, распространяющего файлы FreeBSD по FTP. Доступ по FTP должен быть анонимным, и не должны применяться какие-либо ограничения по соотношению объема передано/принято (что вообще является, на наш взгляд, странным подходом). Закачка (upload) файлов на сервер не требуется (и должна быть запрещена в разделе FreeBSD). Кроме того, архив файлов FreeBSD должен быть доступен с путем /pub/FreeBSD. Для предоставления анонимного FTP доступа может быть использован целый ряд программ (перечислены в алфавитном порядке): /usr/libexec/ftpd: базовый FTP-даемон FreeBSD. Не забудьте прочитать &man.ftpd.8;. ftp/ncftpd: коммерческий пакет, свободен для использования в учебных целях. ftp/oftpd: FTP-даемон, написанный в основном с точки зрения защищенности. ftp/proftpd: Модульный и очень гибкий FTP-даемон. ftp/pure-ftpd: Еще один FTP-даемон, разработанный с позиций защищенности. ftp/twoftpd: См. предыдущий пункт. ftp/vsftpd: очень защищенный (very secure) ftpd. - - - ftp/wu-ftpd: - ftpd от Вашингтонского Университета (Washington - University). Несколько потерял популярность из-за большого - количества найденных в прошлом ошибок защиты. Если вы решите - использовать его, помните о необходимости отслеживания - обновлений. - ftpd, - proftpd, - wu-ftpd и, возможно, + proftpd и, возможно, ncftpd являются наиболее часто встречающимися FTP серверами. Прочие распространены среди существующих зеркал в существенно меньшей степени. Дополнительным поводом для рассмотрения может являться возможность гибко ограничивать количество одновременных соединений, что поможет вам удержать в нужных рамках потребление пропускной способности ваших каналов и машинные ресурсы. Rsync (необязательный сервис для FTP зеркала) Rsync часто используется для предоставления доступа к FTP-области FreeBSD, чтобы другие зеркала могли синхронизироваться по вашему. Протокол rsync во многом отличается от FTP, в частности, он гораздо гуманнее с точки зрения пропускной способности каналов, поскольку не требует передачи измененного файла целиком (передаются лишь различия). Взамен Rsync требует значительных объемов памяти. Размер каждого процесса зависит от размера синхронизируемого модуля (в основном от количества директорий и файлов). Rsync может использовать в качестве транспортного протокола rsh или ssh (по умолчанию); также, может использоваться внутренний протокол rsync (этот метод предпочтителен для публичных rsync-серверов). Поддерживается авторизация клиентов и различные ограничения. Для протокола rsync существует единственный пакет: net/rsync HTTP (требуется для веб-страниц, дополнителен для FTP зеркал) Если вы хотите поддерживать зеркало веб-страниц FreeBSD, вам потребуется установить веб-сервер. Дополнительно, вы можете предоставлять HTTP доступ к FTP-набору файлов FreeBSD. Выбор веб-сервера остается на усмотрение администратора зеркала. Некоторые из наиболее популярных веб-серверов перечислены ниже. www/apache13: Apache — самый широко распространённый в Интернете веб-сервер, активно используемый проектом FreeBSD. Вы можете также использовать веб-сервер Apache следующего поколения, доступный в коллекции портов как www/apache22. www/thttpd: Для обслуживания большого количества запросов к статическим документам сервер thttpd может оказаться более эффективным, чем Apache. thttpd отлично оптимизирован по производительности при работе под FreeBSD. www/boa: Boa — еще одна альтернатива thttpd и Apache. Этот сервер должен быть ощутимо более высокопроизводительным, чем Apache, для полностью статических страниц. На время написания данного документа, впрочем, он не так хорошо оптимизирован под FreeBSD, как thttpd. - - - - CVSup (желателен для зеркал репозитория CVS) - - CVSup предоставляет очень эффективный - механизм распространения файлов. Он работает подобно - rsync и был разработан специально для - использования с репозиториями CVS. Если вы планируете предоставлять - доступ к репозиторию CVS FreeBSD, стоит делать это посредством - CVSup. Помимо этого, можно использовать - AnonCVS, FTP, - rsync или HTTP, но использование - CVSup наиболее разумно. - Автором CVSup является &a.jdp.email;. - CVSup непросто установить на платформе, - отличной от FreeBSD, поскольку он написан на языке Modula-3 и требует - соответствующего окружения. &a.jdp; создал усеченную версию M3, - достаточную для работы CVSup, которую - намного проще установить. Подробности можно прочитать здесь: Ezm3. - Относящиеся к теме пакеты: - - - net/cvsup: - Порт CVSup (клиент и сервер), требующий для сборки пакет - lang/ezm3. + www/nginx: + Nginx — + высокопроизводительный веб-сервер, отличающийся низкими + требованиями к объему оперативной памяти и обладающий + ключевыми функциональными возможностями для построения + современной веб-инфраструктуры. Функциональные + возможности включают следующее: HTTP-сервер, обратный + прокси для HTTP, почтовый прокси сервер, кеширование, + балансировка нагрузки, сжатие, ограничение количества + запросов, мультиплексирование и повторное использование + соединений, поддержка разгрузки SSL (SSL offload) и + вещания медиапотоков (media streaming). - - - net/cvsup-mirror: - Набор для CVSup-зеркала, требующий - net/cvsup-without-gui, - и конфигурирующий его в процессе установки. Возможно, некоторым - администраторам потребуется другой набор установок. - - - Может также оказаться полезным пакет - net/cvsup-without-gui. - Если вы предпочитаете пакет, собранный статически, загляните по - этой - ссылке. Эта страница все еще описывает ошибку S1G. Возможно, - в будущем Джон создаст универсальный сайт для загрузки статически - собранных вариантов CVSup для различных платформ. - - При помощи CVSup можно распространять - любые коллекции файлов (не только репозитории CVS), однако его - конфигурация может быть непростой. Известно, что - CVSup потребляет ощутимое количество - процессорного времени как на сервере, так и на клиенте, поскольку - сравнивает большое количество файлов. - - - AnonCVS (дополнителен для зеркал репозитория CVS) - - Если вы копируете репозиторий CVS, можно дополнительно - предоставить к нему анонимный доступ. Для начала, предупреждение: - спрос на этот сервис не так уж велик, подготовка его требует - некоторого опыта, и, наконец, вы должны знать, что делаете. - - Существует два основных способа удаленного доступа к репозиторию - CVS: через pserver и через - ssh (доступ через rsh мы - рассматривать не будем). Для анонимного доступа наиболее подходит - pserver; впрочем, некоторые сайты дают доступ - и посредством ssh. Для последнего будет полезной - специальная - программа, - предназначенная для использования в качестве шелла для учетной - записи анонимного ssh-доступа. Она использует вызов chroot, - поэтому репозиторий CVS должен располагаться внутри домашнего - каталога анонимного пользователя, что приемлемо не для всех - сайтов. Данное ограничение не распространяется на доступ через - pserver, однако последний вариант может быть - связан с дополнительным риском с точки зрения безопасности. - Никаких дополнительных программ для обеспечения анонимного - CVS-доступа не потребуется, поскольку &man.cvs.1; входит в базовую - поставку FreeBSD. Вам нужно будет разрешить запуск - cvs из inetd, для чего - необходимо добавить в файл /etc/inetd.conf - строку вида - - cvspserver stream tcp nowait root /usr/bin/cvs cvs -f -l -R -T /anoncvstmp --allow-root=/home/ncvs pserver - - Обратитесь к странице справочника &man.cvs.1; за дополнительной - информацией по опциям. Кроме того, страницы - info по CVS описывают, как удостовериться в том, - что вы предоставляете доступ только для чтения. Рекомендуется - создать непривилегированную учетную запись, желательно с именем - anoncvs. Потребуется также создать файл - passwd в каталоге - /home/ncvs/CVSROOT и установить пароль (пустой - или anoncvs) для пользователя - anoncvs. Создание файловой системы - /anoncvstmp в памяти не необходимо, но - рекомендуется для ускорения работы: в ней &man.cvs.1; будет создавать - временную структуру каталогов, которая не используется по завершении - операции, но сильно замедляет работу, если требуются операции записи - на реальный диск. Пример описания такой файловой системы в файле - /etc/fstab: - - /dev/da0s1b /anoncvstmp mfs rw,-s=786432,-b=4096,-f=512,-i=560,-c=3,-m=0,nosuid 0 0 - - Эти установки (разумеется, тщательно подобранные) предложил - &a.jdp.email;. - Как вести зеркало FreeBSD Теперь вам известно, какая потребуется машина и как предоставлять сервисы, но не как получить их самому. :-) В этом разделе описывается процесс ведения зеркала и поддержания его в актуальном состоянии, в том числе какие инструменты использовать и какие сайты выбирать в качестве источников для синхронизации. - - FTP + + Зеркалирование FTP-области Файлы, доступные по FTP, составляют большую часть зеркала. Они включают дистрибутивные наборы, необходимые для установки по сети, ветви (branches), в которых отражено текущее состояние исходных текстов, образы ISO для записи компакт-дисков с дистрибутивами для установки, образами живых файловых систем и пакетами, дерево портов, исходные дистрибутивы для сборки портов и кучу готовых пакетов. И, разумеется, все вышеописанное — для разных версий FreeBSD и различных архитектур. - - При помощи программ для FTP-зеркалирования - - - Для выкачивания файлов вы можете использовать программу - FTP-зеркалирования. - Вот некоторые из наиболее часто использующихся: - - - - ftp/mirror - - - - ftp/ftpmirror - - - - ftp/emirror - - - - ftp/spegla - - - - ftp/omi - - - - ftp/wget - - - - Ранее наиболее популярным вариантом был - ftp/mirror, хотя из-за того, что - эта программа написана на &man.perl.1;, существуют различные - ограничения, в особенности при зеркалировании больших файловых - структур, таких как FreeBSD. Утверждается, впрочем, что в текущей - версии последняя проблема исправлена за счет дополнительного - алгоритма сравнения структуры каталогов. - - Вообще говоря, протокол FTP не лучшим образом подходит для - поддержки зеркала. Измененный файл передается целиком; кроме того, - невозможно создание единого потока данных, который мог бы повысить - эффективность передачи за счет большого TCP-окна. - - - - При помощи rsync - - Более эффективным будет синхронизация FTP-области при помощи + Наиболее эффективным будет синхронизация FTP-области при помощи rsync. Для этого следует установить пакет net/rsync, который был описан в разделе . Поскольку доступ по протоколу rsync не является обязательным, выбранный вами сайт может его не поддерживать. Возможно, вам придется немного поискать в сетевой окрестности зеркало, поддерживающее rsync. Поскольку от количества клиентов rsync ощутимо зависит загрузка сервера, большинство администраторов вводят ограничения доступа. Для поддержания зеркала вам следует связаться с администратором сайта, с которым вы будете синхронизироваться, для уточнения локальных правил и, возможно, для внесения в них исключения для вас (поскольку вы также поддерживаете зеркало). Строка для синхронизации FreeBSD по rsync выглядит примерно так: - &prompt.user; rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/ + &prompt.user; rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/ Загляните в документацию по rsync, также доступную по адресу http://rsync.samba.org/ за дополнительной информацией по различным опциям rsync. Обратите внимание, что в случае синхронизации модуля целиком (а не отдельного каталога) необходимо явно указать результирующий каталог, потому что каталог с именем модуля (в данном случае "FreeBSD") не создается. Для поддержания актуальности вам потребуется создать скрипт для запуска подобной команды из &man.cron.8;. - - - - При помощи CVSup - - Немногие сайты, в первую очередь центральный - ftp-master.FreeBSD.org предоставляют - для синхронизации FTP-области доступ по протоколу - CVSup. Вам потребуется клиент - CVSup, предпочтительно из пакета - net/cvsup (см. также - ). - Пример конфигурационного файла (supfile) для - синхронизации с - ftp-master.FreeBSD.org: - - # -# FreeBSD archive supfile from master server -# -*default host=ftp-master.FreeBSD.org -*default base=/usr -*default prefix=/pub -#*default release=all -*default delete use-rel-suffix -*default umask=002 - -# If your network link is a T1 or faster, comment out the following line. -#*default compress - -FreeBSD-archive release=all preserve - - Судя по всему, синхронизация при помощи - CVSup — лучший по эффективности - способ поддержки зеркала, однако он доступен лишь с небольшого числа - сайтов. - - - Прочтите документацию по CVSup, - например, &man.cvsup.1;, и обратите внимание на опцию - . Она может уменьшить объем операций - ввода-вывода, предполагая, что записанная информация о - каждом файле корректна. - - - - Зеркалирование CVS репозитория - - Существует несколько способов синхронизации - CVS репозитория. CVSup наиболее - общий метод. - - - Использование CVSup - - Программа CVSup немного описана - в ( и - ). - - Настроить CVSup зеркало очень просто. - Установка net/cvsup-mirror - проверит, что все нужные программы установлены и затем соберет всю - необходимую информацию для конфигурирования зеркала. - - - Не забудьте почитать полезную подсказку - здесь. - - - - - Другие методы - - Использование методов, отличных от - CVSup, не рекомендуется. Тем не менее, - мы кратко упомянем их. Поскольку большая часть зеркал дает доступ к - репозиторию CVS в числе прочих файлов, доступных по FTP, по пути - /pub/FreeBSD/development/FreeBSD-CVS, - могут быть использованы: - - - - FTP - - - - Rsync - - - - HTTP - - - - - AnonCVS не может использоваться для зеркалирования CVS - репозитория, так как CVS не разрешает сам доступ к репозиторию, - а только к извлечённым версиям модулей. - - - - Зеркалирование страниц WWW - Лучшим способом будет извлечение (check out) из репозитория CVS - модуля www. При условии наличия у вас копии - репозитория, все, что для этого потребуется — выполнить - команду + Веб-сайт &os; следует зеркалировать исключительно при + помощи rsync. - &prompt.user; cvs -d /home/ncvs co www + Командная строка для синхронизации веб-сайта &os; + выглядит примерно так: - и сформировать задание для cron, которое будет - регулярно выполнять операцию cvs up -d -P, - например, каждый раз после обновления копии репозитория. - Разумеется, файлы должны находиться в иерархии, доступной для - публичного веб-доступа. Мы сознательно не будем обсуждать здесь - процесс установки и конфигурации веб-сервера для этих целей. - - Если у вас нет локальной копии репозитория, можно использовать - CVSup для синхронизации копии веб-страниц. - Пример конфигурации можно найти в файле - /usr/share/examples/cvsup/www-supfile. - Приведем его здесь: - - # -# WWW module supfile for FreeBSD -# -*default host=cvsup3.de.FreeBSD.org -*default base=/usr -*default prefix=/usr/local -*default release=cvs tag=. -*default delete use-rel-suffix - -# If your network link is a T1 or faster, comment out the following line. -*default compress - -# This collection retrieves the www/ tree of the FreeBSD repository -www - - Использование пакета ftp/wget - или иных инструментов для создания веб-зеркал не рекомендуется. - - - Зеркала документации FreeBSD - - - Поскольку многие веб-страницы ссылаются на документацию, хорошей - идеей является поддержка зеркала документации FreeBSD совместно - с прочими зеркалами. Надо отметить, что этот процесс не столь - тривиален, как поддержка зеркала веб-страниц самих по себе. - - Для начала вы должны создать копию исходных текстов документации - (как и во многих других случаях, для этого предпочтителен - CVSup). Вот пример файла - конфигурации: - - # -# FreeBSD documentation supfile -# -*default host=cvsup3.de.FreeBSD.org -*default base=/usr -*default prefix=/usr/share -*default release=cvs tag=. -*default delete use-rel-suffix - -# If your network link is a T1 or faster, comment out the following line. -#*default compress - -# This will retrieve the entire doc branch of the FreeBSD repository. -# This includes the handbook, FAQ, and translations thereof. -doc-all - - Затем, вам потребуется несколько пакетов. К счастью, - специально для этого существует мета-порт - textproc/docproj. - Также, необходимо установить некоторые переменные окружения, - например SGML_CATALOG_FILES, и переменные - в файле /etc/make.conf, главным образом - переменную DOC_LANG (используйте файл - /usr/share/examples/make.conf как шаблон). - После этого можно выдать команду make - в главном каталоге документации (по умолчанию это - /usr/share/doc). Как и прежде, эти каталоги - должны быть доступны для вашего веб-сервера (проверьте, что ссылки - ведут в нужные места). - - - Процесс подготовки и построения документации, а также - многие сопутствующие вопросы, подробно описан в документе - Учебник по Проекту - Документирования &os;. Прочтите этот документ, - в особенности если у вас возникли проблемы со сборкой - стандартного комплекта документации. - - + &prompt.user; rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/ Как часто синхронизироваться? Каждое зеркало должно регулярно обновляться. Вам потребуется какой-то набор скриптов, выполняемых посредством &man.cron.8;. Поскольку каждый администратор, как правило, пишет такие скрипты сам и на свой лад, мы не можем выдать конкретных указаний. Общие же советы выглядят так: Создайте скрипт с командой, которая запустит нужное приложение для обновления зеркала. Рекомендуем использовать скрипт на языке обычного /bin/sh. Добавьте команд перенаправления вывода, чтобы записать диагностику работы в файл. Попробуйте, как ваш скрипт работает. По завершении проверьте логи. При помощи утилиты &man.crontab.1; добавьте ваш скрипт в таблицу регулярных заданий &man.crontab.5; соответствующего пользователя. Это должен быть пользователь, отличный от пользователя FTP-даемона, чтобы файлы в FTP-области без атрибута "чтение для всех" не были доступны анонимным FTP-пользователям. Данное свойство используется для тестирования перед выходом новых релизов, для того чтобы удостовериться, что все официальные зеркала содержат все необходимые файлы к моменту официального объявления релиза. Некоторые рекомендуемые установки частоты обновления: FTP-набор: раз в сутки - репозиторий CVS: раз в час - - - WWW-страницы: раз в сутки С какого сервера синхронизироваться Это важный вопрос, так что мы попытаемся пояснить, откуда берутся ответы. Для начала повторим еще несколько раз: никогда не синхронизируйтесь с ftp.FreeBSD.org . Организация системы зеркал Зеркала организуются по странам. Имена хостов всех официальных зеркал построены по принципу ftpN.CC.FreeBSD.org, где CC (country code) — домен верхнего уровня страны, где расположено зеркало, N — номер зеркала в данной стране. Этот же принцип применим к именам хостов - cvsupN.CC.FreeBSD.org, wwwN.CC.FreeBSD.org и т.п. Кроме того, есть зеркала без доменной части, обозначающей страну. Все они имеют очень хорошие внешние каналы и обслуживают большое число одновременных соединений. Имя ftp.FreeBSD.org на самом деле указывает на две машины, одна из которых в настоящее время находится в Дании, а другая в США. Ни одна из этих машин НЕ является основным сайтом, и потому не должна использоваться для синхронизации. Масса документации для живых пользователей указывает на ftp.FreeBSD.org, так что автоматическим системам ведения зеркал следует выбирать другие источники синхронизации. Кроме того, существует иерархия зеркал в терминах их удаленности от центра, или слоях. Основные сайты могут быть описаны как Зеркала нулевого слоя. Зеркала, синхронизирующиеся по ним, считаются слоем 1, следующие — слоем 2 и т.д. Официальные сайты приглашаются на низкие слои, однако следует помнить, что чем меньше номер слоя, тем выше требования к зеркалу, как было описано в . Помимо того, доступ к зеркалам 1 слоя может быть ограничен; безусловно ограничен доступ к основным сайтам. Иерархия слоев не отражается в DNS и, вообще говоря, нигде (кроме мастер-сайтов) не документирована. Тем не менее, официальные зеркала с малыми (1-4, как правило) номерами обычно представляют первый слой. (Это грубая оценка, и ни в коем случае не правило). Так откуда же мне синхронизироваться? Главное — НЕ с ftp.FreeBSD.org. Короткий ответ: с зеркала, которое расположено недалеко от вас в терминах Интернет, и/или доступ к которому наилучший. Я хочу получить копию зеркала хоть откуда-нибудь! Если у вас нет каких-либо специальных предпочтений или требований, см. . Это означает: Выберите те из них, с которыми вам работать быстрее всего (меньшее число промежуточных узлов и время отклика), и которые предоставляют нужные вам сервисы (такие как - rsync или - CVSup). + rsync). Свяжитесь с администраторами выбранного сервера, опишите ваши запросы и уточните их правила. Сконфигурируйте ваше зеркало, как описывалось выше. Я поддерживаю официальное зеркало, какой сайт мне выбрать? В основном, правила, описанные в , применимы. Дополнительно можно убедиться, что выбранный сайт принадлежит низкому слою. Другие соображения относительно официальных зеркал описаны в . Мне нужен доступ к основным сайтам! При наличии достаточных причин вы можете получить доступ к одному из основных сайтов. Доступ к ним ограничен; существуют специальные правила их использования. Наличие у вас статуса официального зеркала, безусловно, является хорошим подспорьем. В противном случае убедитесь, что ваша страна действительно нуждается еще в одном зеркале. Если их уже три или более, сначала свяжитесь с администратором соответствующей зоны DNS (hostmaster@CC.FreeBSD.org) или напишите в &a.hubs;. Доступ к одному из мастер-сайтов или подходящему зеркалу 1 уровня вам помогут обеспечить те же, кто помогал вам получить статус официального зеркала. В случае неудачи свяжитесь с mirror-admin@FreeBSD.org и попросите помощи у них. - Существует три основных сайта для синхронизации набора файлов FTP - и один для репозитория CVS. Веб-страницы и документация хранятся - в CVS, поэтому не имеют отдельных основных сайтов. + Существует один основной сайт для синхронизации набора файлов + FTP. ftp-master.FreeBSD.org Это основной сервер для синхронизации FTP набора. - ftp-master.FreeBSD.org поддерживает доступ по - rsync и - CVSup, в дополнение к FTP. - Использование этих протоколов описано в разделах - и - . + В дополнение к FTP, ftp-master.FreeBSD.org + поддерживает доступ по rsync. + Использование этих протоколов описано в + . Приветствуется предоставление зеркалами 1 уровня доступа к FTP-области по протоколу rsync. - - - cvsup-master.FreeBSD.org - - Это основной сервер для синхронизации репозитория CVS. - - cvsup-master.FreeBSD.org обеспечивает доступ - только по протоколу CVSup. - Детали см. в . - - Для получения доступа к этому серверу вам нужно связаться с - &a.cvsup-master;. Не забудьте сначала прочитать - Правила - доступа к центральному CVSup серверу FreeBSD! - - Подготовьте параметры авторизации, как описано здесь. - Не забудьте, что в качестве имени сервера команде - cvpasswd нужно указать - freefall.FreeBSD.org, несмотря на то, что - устанавливать соединение вы будете с - cvsup-master.FreeBSD.org. - Официальные зеркала Официальные зеркала обладают следующим свойствами: a) имеют запись в домене FreeBSD.org (обычно типа CNAME). b) присутствуют в списке официальных зеркал в Руководстве по FreeBSD и другой документации. На настоящий момент это все, что отличает их от прочих зеркал. Официальные зеркала не обязательно принадлежат к Первому уровню, однако, вряд ли можно найти зеркало уровня 1, не являющееся официальным. Отдельные требования к официальным зеркалам 1 уровня Описать требования для всех официальных зеркал не так просто, поскольку проект FreeBSD достаточно мягок в этом отношении. Несколько проще указать, что требуется от официальных зеркал уровня 1. Прочие официальные зеркала должны рассматривать этот список как настойчивые пожелания. - - Следующее относится в основном к набору файлов FTP, поскольку - репозиторий CVS всегда должен зеркалироваться полностью, - а веб-страницы представляют собой несколько особый случай. - - Зеркала 1 уровня должны: поддерживать полный список файлов предоставлять доступ для других зеркал обеспечивать доступ по протоколам FTP и rsync. Кроме того, администратор такого зеркала должен быть подписан на &a.hubs;. См. здесь для дополнительной информации о подписке. Администраторы зеркал, в особенности 1 уровня, должны очень внимательно следить за графиком релизов. Это поможет подготовиться к крупным всплескам нагрузки на зеркало, которые всегда происходят после очередного релиза. Кроме того, важно поддерживать актуальность зеркал (в особенности зеркал уровня 1). Если Зеркало1 не синхронизировалось в течение длительного времени, то зеркала следующего уровня будут синхронизироваться по устаревшей информации и т.д. Поддерживайте актуальность ваших зеркал! Как стать официальным зеркалом? На текущий момент заявки на подключение новых зеркал не принимаются. Статистика некоторых зеркал Вот несколько ссылок на статистику использования зеркал Статистика FTP сайтов ftp.is.FreeBSD.org - hostmaster@is.FreeBSD.org - (загрузка канала) (FTP процессы) (HTTP процессы) ftp.cz.FreeBSD.org - cejkar@fit.vutbr.cz - (загрузка канала) (FTP процессы) (rsync процессы) ftp2.ru.FreeBSD.org - mirror@macomnet.ru - (Bandwidth) (HTTP and FTP users) - - - - - - Статистика CVSup сайтов - - - - cvsup[23456].jp.FreeBSD.org - kuriyama@FreeBSD.org - (CVSup процессы) - - - - cvsup.cz.FreeBSD.org - cejkar@fit.vutbr.cz - - (CVSup процессы) - - - - cvsup4.ru.FreeBSD.org - maxim@FreeBSD.org - - (CVSup процессы)
Index: head/ru_RU.KOI8-R/articles/ipsec-must/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/ipsec-must/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/ipsec-must/article.xml (revision 46680) @@ -1,355 +1,355 @@
Независимое исследование работы IPsec во FreeBSD DavidHonig
honig@sprynet.com
1999-05-03 &tm-attrib.freebsd; &tm-attrib.opengroup; &tm-attrib.general; $FreeBSD$ Вы только что установили и настроили IPsec, и оно, кажется, заработало. Как это можно проверить? Я опишу метод экспериментальной проверки правильного функционирования IPsec.
Постановка задачи Для начала предположим, что Вы настроили IPsec. Как Вы узнаете, что IPsec работает? Несомненно, соединения не будет, если Вы неверно его сконфигурировали. И оно, конечно, появится в выводе команды &man.netstat.1;, когда Вы всё сделаете верно. Но можно ли как-то подтвердить сам факт функционирования IPsec? Решение Для начала немножко криптографической теории: Шифрованные данные равномерно распределены по области определения, то есть каждый символ имеет максимальную энтропию; Сырые и несжатые данные как правило избыточны, то есть их энтропия меньше максимально возможной. Предположим, что у Вас имеется возможность измерить энтропию входящего и исходящего трафика на сетевом интерфейсе. В этом случае Вы сможете легко отличить зашифрованные данные от открытых, причём даже в том случае, когда часть данных в режиме шифрования передаётся в открытом виде, к примеру внешние заголовки IP, которые используются для маршрутизации. MUST Универсальный Статистический Тест для Генераторов Случайных Чисел Уэли Маурера (Ueli Maurer's Universal Statistical Test for Random Bit Generators), сокращённо MUST позволяет быстро измерить энтропию последовательного набора данных. Используемый алгоритм похож на алгоритм сжатия. В приложении приведён исходный код, позволяющий измерять энтропию последовательных кусков данных размером около четверти мегабайта. Tcpdump Ещё нам нужен способ сохранения информации, проходящей через интерфейс. Программа &man.tcpdump.1; позволяет сделать это в случае, если Вы сконфигурировали своё ядро с поддержкой Пакетного Фильтра Беркли (Berkeley Packet Filter). Команда tcpdump -c 4000 -s 10000 -w dumpfile.bin сохранит 4000 пакетов в файл dumpfile.bin. В данном примере объём записываемой информации в каждом пакете не может превышать 10,000 байтов. Эксперимент Повторите следующие шаги эксперимента: Откройте два окна терминала и свяжитесь в одном из них с каким-нибудь компьютером через канал IPsec, а в другом — с обычным, незащищённым компьютером. Теперь начните сохранять пакеты. В шифрованном окне запустите команду &unix; &man.yes.1;, которая будет выдавать бесконечный поток символов y. Немножко подождите и завершите её. Затем переключитесь в обычное окно (не использующее канал IPsec) и сделайте то же самое. Заключительный этап: запустите MUST, передав ему для обработки только что сохранённые пакеты через командную строку. Вы должны увидеть что-то вроде изображённого чуть ниже. Заметьте, что безопасное соединение имеет 93% (6,7) от ожидаемого значения (7,18), а обычное соединение — всего лишь 29% (2,1). &prompt.user; tcpdump -c 4000 -s 10000 -w ipsecdemo.bin &prompt.user; uliscan ipsecdemo.bin Uliscan 21 Dec 98 L=8 256 258560 Measuring file ipsecdemo.bin Init done Expected value for L=8 is 7.1836656 6.9396 -------------------------------------------------------- 6.6177 ----------------------------------------------------- 6.4100 --------------------------------------------------- 2.1101 ----------------- 2.0838 ----------------- 2.0983 ----------------- Замечание Этот эксперимент показывает, что IPsec действительно распределяет передаваемые байты по области определения равномерно, как и любое другое шифрование. Однако этот метод не может обнаружить множество других изъянов в системе (хотя я таковых не знаю). Для примера можно привести плохие алгоритмы генерации или обмена ключами, нарушение конфиденциальности данных или ключей, использование слабых в криптографическом смысле алгоритмов, взлом ядра и т. д. Изучайте исходный код, узнавайте, что там происходит. Определение IPsec IPsec представляет собой протокол безопасного обмена информацией по Internet. Существует в виде расширения к IPv4; является неотъемлемой частью IPv6. Содержит в себе протокол шифрования и аутентификации на уровне IP (межмашинное host-to-host взаимодействие). SSL защищает только лишь конкретный прикладной сокет; SSH защищает вход на машину; PGP защищает определённый файл или письмо. IPsec шифрует всю информацию, передаваемую между двумя машинами. Установка IPsec Большинство современных версий FreeBSD уже имеют поддержку IPsec. Вероятно, Вы должны будете лишь добавить опцию в конфигурационный файл ядра, и после сборки и инсталляции нового ядра, сконфигурировать соединение IPsec с помощью команды &man.setkey.8;. Более подробно о том, как запустить IPsec во FreeBSD можно прочесть в Руководстве пользователя. src/sys/i386/conf/KERNELNAME Для того, чтобы захватывать сетевой трафик при помощи &man.tcpdump.1;, следующие строки должны присутствовать в конфигурационном файле ядра. Не забудьте после модификации запустить &man.config.8;, и, как обычно, пересобрать и установить новое ядро. device bpf Универсальный Статистический Тест Маурера (размер блока — 8 бит) Оригинал нижеприведённого кода находится по этому адресу. /* ULISCAN.c ---blocksize of 8 1 Oct 98 1 Dec 98 21 Dec 98 uliscan.c derived from ueli8.c This version has // comments removed for Sun cc This implements Ueli M Maurer's "Universal Statistical Test for Random Bit Generators" using L=8 Accepts a filename on the command line; writes its results, with other info, to stdout. Handles input file exhaustion gracefully. Ref: J. Cryptology v 5 no 2, 1992 pp 89-105 also on the web somewhere, which is where I found it. -David Honig honig@sprynet.com Usage: ULISCAN filename outputs to stdout */ #define L 8 #define V (1<<L) #define Q (10*V) #define K (100 *Q) #define MAXSAMP (Q + K) #include <stdio.h> #include <math.h> int main(argc, argv) int argc; char **argv; { FILE *fptr; int i,j; int b, c; int table[V]; double sum = 0.0; int iproduct = 1; int run; extern double log(/* double x */); printf("Uliscan 21 Dec 98 \nL=%d %d %d \n", L, V, MAXSAMP); if (argc < 2) { printf("Usage: Uliscan filename\n"); exit(-1); } else { printf("Measuring file %s\n", argv[1]); } fptr = fopen(argv[1],"rb"); if (fptr == NULL) { printf("Can't find %s\n", argv[1]); exit(-1); } for (i = 0; i < V; i++) { table[i] = 0; } for (i = 0; i < Q; i++) { b = fgetc(fptr); table[b] = i; } printf("Init done\n"); printf("Expected value for L=8 is 7.1836656\n"); run = 1; while (run) { sum = 0.0; iproduct = 1; if (run) for (i = Q; run && i < Q + K; i++) { j = i; b = fgetc(fptr); if (b < 0) run = 0; if (run) { if (table[b] > j) j += K; sum += log((double)(j-table[b])); table[b] = i; } } if (!run) printf("Premature end of file; read %d blocks.\n", i - Q); sum = (sum/((double)(i - Q))) / log(2.0); printf("%4.4f ", sum); for (i = 0; i < (int)(sum*8.0 + 0.50); i++) printf("-"); printf("\n"); /* refill initial table */ if (0) { for (i = 0; i < Q; i++) { b = fgetc(fptr); if (b < 0) { run = 0; } else { table[b] = i; } } } } }
Index: head/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml (revision 46680) @@ -1,497 +1,497 @@
Часто задаваемые вопросы по спискам рассылки &os; The &os; Documentation Project 2004 2005 The &os; Documentation Project $FreeBSD$ $FreeBSD$ Эта статья посвящена часто задаваемым вопросам (FAQ) по спискам рассылки &os;. Если вы хотите помочь поддерживать данный документ, напишите письмо в &a.doc;. Последняя версия данного документа доступна на WWW сервере &os;. Вы можете получить данную статью в виде одного большого HTML файла, используя HTTP протокол или в виде простого текста, форматов PostScript, PDF, и других с FTP сервера &os;. Возможно вы захотите Найти FAQ. Введение Цель этого документа ответить на часто задаваемые вопросы, касающиеся списков рассылки &os;. Хотя FAQ задумывались для снижения количества задаваемых повторяющихся вопросов, они стали восприниматься, как ценные источники информации. Этот документ - попытка представить консенсус всего сообщества, и поэтому он не может считаться официальным. Если вы найдете технические неточности в данном документе или у вас есть предложения по добавлению новых пунктов, пожалуйста отправьте PR или напишите в &a.doc;. Спасибо. Зачем вообще нужны списки рассылки по &os;? Списки рассылки по &os; служат, как первичное средство связи &os; сообщества, они покрывают множество различных тем. Кто пользуется этими списками рассылки? Это зависит от темы обсуждения каждого конкретного списка рассылки. Некоторые списки больше ориентированны на разработчиков, некоторые на всё сообщество &os; в целом. Список существующих на сегодняшний день списков рассылки доступен здесь. Доступны ли списки рассылки по &os; для каждого? Повторюсь, это зависит от характера обсуждаемых тем в каждом конкретном листе. Пожалуйста прочтите устав списка рассылки перед отправлением в него письма и соблюдайте его при каждом отправлении. Это будет полезно каждому получить больше опыта по работе со списками рассылки. Если после просмотра выше расположенного списка, вы до сих пор не знаете в какой список рассылки направить письмо, то вам наверняка подойдёт freebsd-questions (но прежде прочтите ниже). Заметьте, что для отправки письма в список рассылки необязательно быть подписанным на него. Это поможет легче присоединиться к сообществу &os; и способствует открытому обмену идей. Но, из-за небрежности некоторых людей некоторые списки проводят политику предварительного ручного просмотра сообщений от не подписанных пользователей, чтобы убедиться в их целесообразности. Как я могу подписаться? Вы можете использовать web интерфейс Mailman для подписки на любой из открытых списков рассылки. Как мне отписаться? Вы можете использовать вышеупомянутый интерфейс или следовать инструкциям, находящимся в конце каждого письма, отправленного в этот список рассылки. Пожалуйста, не посылайте письма с отказом от подписки в сами публичные списки. Во-первых, вы так не отпишитесь, а во-вторых, вызовете раздражение подписчиков, и вероятно получите неприятные высказывания в свой адрес. Это классическая ошибка при работе со списками рассылки; старайтесь не повторять её. Доступны ли архивы? Да. Архивы доступны здесь. Доступны ли списки рассылки в дайджест формате? Да. Посмотрите web интерфейс Mailman. Этикет списков рассылки Участие в любом списке рассылки, как и в любом другом сообществе требует общего базиса для общения. Пожалуйста, отправляйте только подходящие сообщения и следуйте общепринятым нормам этикета. Что я должен сделать перед отправлением письма? Вы уже сделали важный шаг, решив прочитать эту статью. Если вы новичок во &os;, то сначала ознакомьтесь с программным обеспечением и связанной с нею документацией, включающей множество книг и статьей. Могут быть интересными: Часто задаваемые вопросы по &os; (FAQ), Руководство по &os; , и статьи Как работать со списком рассылки FreeBSD-questions с максимальной отдачей, Что такое BSD, и Пособие для новичков во &os;. Вы можете получить нелицеприятные высказывания в свой адрес, если зададите вопрос, ответ на который есть в приведённой выше документации. Это не потому что добровольцы, работающие над данным проектом очень плохие люди, а после многократного ответа на одни и те же вопросы - раздражение берёт своё. Это особенно справедливо, если уже существует и доступен ответ на вопрос. Не забывайте, что вся работа по улучшению &os; выполняется добровольцами, и что мы только люди. Что считается несоответствующим письмом? Письма должны соответствовать уставу списка рассылки. Избегайте личных оскорблений. Как хорошие жители сети, мы должны держать себя по высоким стандартам поведения. Спам не разрешён. Нарушители данного правила будут забаненны. Что считается хорошим этикетом при посылке писем в списки рассылки? Пожалуйста, составляйте строки длиной примерно в 75 символов, так так не каждый использует модную почтовую программу с графическим интерфейсом. Пожалуйста, обращайте внимание на тот факт, что пропускная способность ограничена. Не каждый читает почту через высокоскоростное соединение. Если вы отправляете содержимое какого-нибудь файла, например config.log или объёмную трассировку стека, то, пожалуйста, размещайте его на каком-нибудь веб-сайте и присылайте просто ссылку на на него. Помните, что такие сообщения будут заархивированны, и это просто добавит ненужные байты к архиву. Оформляйте ваше сообщение, чтобы оно было читабельно и ПОЖАЛУЙСТА, НЕ КРИЧИТЕ!!!!!. Не упускайте из виду эффект, которое производит плохо отформатированное письмо, причём не только в списках рассылки &os;. Ваше сообщение будет просмотрено другими людьми, и если оно плохо отформатировано, имеет множество ошибок и/или восклицательных знаков, то это создаст нехорошее впечатление о вас. Пожалуйста, используйте подходящий язык общения для конкретного списка рассылки. Существует много не англоязычных рассылок. Мы понимаем, что для многих английский не родной язык и поэтому мы пытаемся сделать некие пособия. Считается плохим тоном критиковать людей не говорящих по-английски за лексические и грамматические ошибки. &os; имеет отличные продвижения в этом отношении. Пожалуйста, помогайте сохранять нам эту традицию. Пожалуйста, используйте совместимый со стандартами почтовый клиент (MUA). Много плохо отформатированных сообщений исходят от - неправильно + неправильно работающих или плохо сконфигурированных почтовых клиентов. Известно, что следующие почтовые программы могут посылать неправильно отформатированные сообщения без вашего ведома: exmh µsoft; Exchange µsoft; &outlook; Постарайтесь не использовать MIME: многие используют программы, которые не очень хорошо работают с MIME. Проверьте правильность настроек времени и временной зоны. Это может выглядеть немножко глупо, потому что ваши сообщения все равно будут доставляться, однако многие люди получают несколько сотен сообщений в день. Зачастую они сортируют входящие сообщения по теме и дате, и если ваше сообщение не будет предшествовать первому ответу, то они могут предположить, что оно потерялось и даже не взглянут на него. Основной объем информации, который вы должны предоставить, представляет собой вывод программ, таких, как &man.dmesg.8;, или консольные сообщения, которые обычно появляются в файле /var/log/messages. Не пытайтесь скопировать эту информацию, набрав ее снова; это действительно трудно, и здесь легко сделать ошибку. Чтобы послать содержимое файлов протоколов, сделайте копию файла и воспользуйтесь редактором для того, чтобы обрезать информацию, оставив только относящуюся к делу, либо скопируйте и вставьте текст в ваше сообщение. В случае вывода программ, таких, как dmesg, перенаправьте вывод в файл и включите его в письмо. Например, &prompt.user; dmesg > /tmp/dmesg.out Данная команда перенаправит информацию в файл /tmp/dmesg.out. При использовании операций копирования и вставки учтите, что некоторые такие операции отрицательно сказываются на формате строк. Особенно это стоит учесть при посылке содержимого файлов Makefile, где tab является важным символом. Это довольно часто встречающаяся проблема - в - базе данных сообщений об ошибках GNATS. + в + базе данных сообщений об ошибках. В Makefile символы tab меняются на пробелы, или раздражающие =3B escape последовательности. Каких правил этикета стоит придерживаться при ответе на уже существующее сообщение? Пожалуйста, включайте относящийся к теме текст из исходного письма. Сокращайте его до минимума, но не переусердствуйте. Любой, кто не читал исходное сообщение должен суметь понять о чём идёт речь. Это особенно важно для ответов, где исходное сообщение составляло сотни строчек. Отделяйте текст исходного сообщения от текста, добавляемого вами. Чаще всего строчки исходного сообщения предваряются > и пробелом. Отделяйте ваш текст от текста исходного сообщения пустыми строчками. Эти правила помогут сделать ваши сообщения более читабельными. Пожалуйста, убедитесь, что присваивания текста, который вы цитируйте корректны. Люди могут обидеться, если вы присвоите им слова, которые они не писали. Пожалуйста, не пишите ответ в начале. Это значит, что при ответе на сообщения, вставляйте ваши ответы в конец, после текста, копируемого из исходного сообщения. A: Потому что это не соответствует логическому ходу обсуждения. Q: Почему верхнее сообщение осуждает это? (Спасибо Рэнди Бушу (Randy Bush) за шутку.) Повторяющиеся темы в списках рассылки Участие в списках рассылки, как и участие в любом сообществе требует общего базиса для общения. Большое количество рассылок предполагают знание истории Проекта. В частности, существует несколько тем обсуждения, которые возникают у новичков. Обязанность каждого участника не создавать дискуссии на эти темы, тем самым помочь спискам рассылки не отрываться от обсуждаемых тем и обезопасить себя от разгорячённых бесед. Лучший способ предотвратить это - ознакомиться с архивами списков рассылки, чтобы понять, что происходило до этого. В этом случае, незаменимым окажется интерфейс поиска по спискам рассылки. (Если этот способ не принёс результатов, воспользуйтесь вашей любимой поисковой системой). Познакомившись с архивами, вы не только будете знать какие темы обсуждались до этого, а также узнаете какие тенденции общения существуют в данной рассылке, кто является участниками и какова конечная аудитория. Эти вещи довольно хорошо знать перед отправкой письма в любую рассылку, и это касается не только списков рассылки &os;. Нет сомнения, что архивы довольно объёмные и некоторые вопросы повторяются гораздо чаще чем другие, иногда в виде откликов (followups), где тема сообщения уже не соответствует новому положению дел. Тем не менее, старайтесь избегать повторяющихся тем. Что такое велосипедный навес ("Bikeshed")? В литературной нотации, велосипедный навес - это маленький внешний кожух, в который можно поместить один вид двухколёсного транспорта. Тем не менее, на языке &os;, этот термин ("bikeshed") относится к темам, которые достаточно просты, и на которые (почти) каждый может предложить собственное мнение, и часто (почти) каждый его и предлагает. Детали происхождения данного термина более подробно рассмотрены здесь. У вас должно иметься представление о данном понятии перед отправкой письма в любой список рассылки &os;. Bikeshed - это тема разговора, которая будет иметь тенденцию порождать немедленные мета-дискуссии и флэйм. Пожалуйста, помогайте сохранять списки рассылки настолько полезными для многих людей, насколько это возможно путём предотвращения bikeshed. Спасибо. Благодарности &a.grog.email; Первоначальный автор большинства материала по этикету списков рассылки, взятого из статьи Как работать со списком рассылки FreeBSD-questions с максимальной отдачей. &a.linimon.email; Создание черновой версии данного FAQ.
Index: head/ru_RU.KOI8-R/articles/new-users/article.xml =================================================================== --- head/ru_RU.KOI8-R/articles/new-users/article.xml (revision 46679) +++ head/ru_RU.KOI8-R/articles/new-users/article.xml (revision 46680) @@ -1,1025 +1,916 @@
Пособие для новичков во FreeBSD и &unix; AnneliseAnderson
andrsn@andrsn.stanford.edu
15 августа 1997 &tm-attrib.freebsd; &tm-attrib.ibm; &tm-attrib.microsoft; &tm-attrib.opengroup; &tm-attrib.general; $FreeBSD$ Поздравляем вас с установкой FreeBSD! Это вводное пособие предназначено для тех, кто является новичком в мире FreeBSD - и &unix;—так что оно начнётся с основ. - Предполагается, что вы используете дистрибутив &os; версии 2.0.5 - или более поздней, распространяемый &os;.org, и в вашей системе (на данный момент) имеется один - пользователь (это вы)—и вы хорошо ориентируетесь в DOS/&windows; - или &os2;. + и &unix;—так что оно начнётся с + основ.
Регистрация в системе и выход из неё Зарегистрируйтесь в системе (когда увидите приглашение login:) как пользователь, которого вы создали во время установки, или войдите в систему как пользователь root. (В вашей установленной системе уже имеется учётная запись для пользователя root; который может переходить хоть куда и делать всё, что угодно, в том числе удаление необходимых для работы файлов, так что будьте внимательны!) Обозначения &prompt.user; и &prompt.root; в последующем тексте означают приглашения системы (ваше может отличаться от него), причём &prompt.user; обозначает обычного пользователя, а &prompt.root; пользователя root. Чтобы выйти из системы (и получить новое приглашение login:) наберите &prompt.root; exit столько раз, сколько нужно. Да, нажимайте enter после набора команд, и помните, что &unix; чувствителен к регистру букв—набирайте exit, но не EXIT. Для завершения работы машины наберите &prompt.root; /sbin/shutdown -h now Или, для перезагрузки нужно набрать &prompt.root; /sbin/shutdown -r now или &prompt.root; /sbin/reboot Перезагрузку можно также выполнить нажатием клавиш CtrlAlt Delete. Подождите некоторое время, чтобы дать этой команде отработать. В последних релизах FreeBSD она эквивалента выдаче команды /sbin/reboot и гораздо, гораздо лучше, чем нажатие кнопки сброса. Вы ведь не хотите всё переустанавливать заново, не так ли? Добавление пользователя с привилегиями root Если при установке системы вы не создали ни одного пользователя, и поэтому вошли в систему как root, то теперь вы должны создать пользователя по команде &prompt.root; adduser При первом использовании утилиты adduser она может запрашивать сохранение некоторых параметров для использования их по умолчанию. вы можете сделать оболочкой, используемой по умолчанию, командный процессор &man.csh.1;, а не &man.sh.1;, если по умолчанию вам предлагается sh. В противном случае просто нажимайте enter для принятия всех предлагаемых по умолчанию вариантов. Эти значения по умолчанию сохраняются в файле /etc/adduser.conf, в форме, доступной для редактирования. Предположим, что вы создали пользователя jack с полным именем Jack Benimble. Назначьте пользователю jack пароль, если информационная безопасность имеет значение (даже если это дети, которые могут стучать по клавиатуре). Когда вам будет задан вопрос по включению пользователя jack в другие группы, наберите wheel Login group is ``jack''. Invite jack into other groups: wheel Это позволит входить в систему как пользователь jack и использовать команду &man.su.1; для того, чтобы стать пользователем root. Тогда вас не будут больше обвинять в том, чтобы вы входите в систему как пользователь root. Вы можете прекратить работы с adduser в любой момент, нажав Ctrl C, а в завершении ввода у вас будет шанс подтвердить заведение нового пользователя или набрать n в качестве отрицательного ответа. Вам может захотеться создать второго нового пользователя, для того, чтобы при редактировании файлов для входа пользователя jack имелся горячий резерв на тот случай, если что-то пойдёт не так. После того, как вы это сделаете, воспользуйтесь командой exit для возврата к приглашению ко входу в систему и зарегистрируйтесь в ней как пользователь jack. Вообще говоря, лучше всего основную массу работы выполнять, работая как обычный пользователь, который не имеет мощь и опасность пользователя root. Если вы уже создали пользователя и хотите, чтобы он мог выполнять команду su для получения привилегий root, вы можете войти в систему как root и отредактировать файл /etc/group, добавив пользователя jack в первую строчку (в группу wheel). Однако сначала вам нужно поупражняться с программой &man.vi.1;, текстовым редактором,—или использовать более простой редактор, &man.ee.1;, имеющийся в последней версии FreeBSD. Для удаления пользователя воспользуйтесь командой rmuser. Просмотр окружения Войдя в систему как обычный пользователь, оглянитесь вокруг и попробуйте выполнить некоторые команды, дающие доступ к источникам информации и помощи внутри FreeBSD. Вот некоторые команды и то, что они делают: id Говорит вам, кто вы! pwd Показывает, где вы находитесь—текущий рабочий каталог. ls Выдаёт список файлов, находящихся в текущем каталоге. ls -F Выдаёт перечень файлов, находящихся в текущем каталоге, добавляя символы * после выполнимых файлов, / после каталогов и @ после символических ссылок. ls -l Выдаёт перечень файлов в расширенном формате—размер, дата и права доступа. ls -a Вместе со всеми выдаёт и список скрытых dot-файлов (начинающихся с точки). Если вы являетесь пользователем root, то dot-файлы выдаются и без указания флага . cd Смена каталогов. cd .. перемещает на один уровень выше; обратите внимание на промежуток после cd. cd /usr/local перейдёт в указанное место. cd ~ перейдёт в домашний каталог человека, который вошёл в систему—к примеру, /usr/home/jack. попробуйте выполнить команду cd /cdrom, а затем ls для проверки того, что ваш CDROM смонтирован и работает. - view + less filename Позволяет вам просмотреть файл (с именем filename) без внесения в него изменений. - Попробуйте выполнить команду view + Попробуйте выполнить команду less /etc/fstab. Для выхода - наберите :q. + наберите q. cat filename Выдаёт содержимое filename на экран. если он слишком длинный и вы можете увидеть только его конец, нажмите ScrollLock и используйте клавишу стрелка вверх для движения назад; вы можете также использовать ScrollLock и со страницами справки. Нажмите ScrollLock снова для прекращения прокрутки. Вам может захотеться попробовать команду cat с некоторыми из dot-файлов в вашем домашнем каталоге—cat .cshrc, cat .login, cat .profile. В файле .cshrc вы заметите алиасы для некоторых из команд ls (они очень удобны). Вы можете создать другие алиасы, отредактировав файл .cshrc. Вы можете сделать эти алиасы доступными всем пользователям системы, поместив их в общесистемный конфигурационный файл для csh, /etc/csh.cshrc. Получение помощи и информации Вот несколько полезных источников получения помощи. Здесь Text обозначает что-то по вашему выбору, что вы вводите—обычно команду или имя файла. apropos text Всё, что содержит строку text в базе whatis. man text Страница справки по text. Это главный источник документации в &unix;-системах. man ls покажет вам все способы использования команды ls. Нажимайте Enter для передвижения по тексту, CtrlB для возврата на страницу назад, CtrlF для продвижения вперёд, q или CtrlC для выхода. which text Покажет, в каком месте из маршрута поиска пользователя находится команда text. locate text Все маршруты, где находится строчка text. whatis text Описывает, что делает команда text и её справочная страница. Команда whatis * расскажет вам обо всех двоичных файлах в текущем каталоге. whereis text Ищет файл text и выдаёт полный путь до него. Вы можете захотеть попробовать использоваться команду whatis с некоторыми полезными командами типа cat, more, grep, mv, find, tar, chmod, chown, date, и script. Команда more позволит вам читать постранично, как и в DOS, например, ls -l | more или more filename. Знак * работает как общий шаблон—например, ls w* выдаст перечень файлов, начинающихся с буквы w. Некоторые из этих команд работают не очень хорошо? Обе команды &man.locate.1; и &man.whatis.1; зависят от базы данных, которая перестраивается еженедельно. Если ваша машина будет оставаться включенной на выходные (и она работает под FreeBSD), то вы можете пожелать запускать определённые команды раз в день, неделю, месяц. Запускайте их как root и дайте каждой отработать, прежде чем запускать следующую. &prompt.root; periodic daily выдача опущена &prompt.root; periodic weekly выдача опущена &prompt.root; periodic monthly выдача опущена Если вам надоело ждать, нажмите AltF2 для перехода в другую виртуальную консоль, и войдите в систему снова. В конце концов, это многопользовательская и многозадачная система. Тем не менее эти команды, скорее всего, в процессе работы будут выдавать сообщения вам на экран; вы можете набрать clear в приглашении для очистки экрана. Пока они работают, вы можете смотреть в содержимое файлов /var/mail/root и /var/log/messages. Выполнение таких команд является частью системного администрирования—и как единственный пользователь &unix;-системы вы являетесь собственным системным администратором. Практически всё, для чего вам нужно быть пользователем root, это системное администрирование. Эти обязанности не описываются достаточно хорошо даже в тех больших толстых книгах по &unix;, в которых слишком много места отдаётся описанию работы с меню в оконных менеджерах. Вам может понадобиться одна из двух лучших книг по системному администрированию, либо автора Эви Немет UNIX System Administration Handbook (Prentice-Hall, 1995, ISBN 0-13-15051-7)—второе издание с красной обложкой; или автора Æleen Frisch Essential System Administration (O'Reilly & Associates, 2002, ISBN 0-596-00343-9). Я использую книгу Немет. Редактирование текста Для конфигурации вашей системы вам нужно редактировать текстовые файлы. Большинство из них будут находиться в каталоге /etc; и вам необходимо командой su получить полномочия пользователя root, чтобы их править. Вы можете использовать простой редактор ee, однако в смысле перспективности лучше изучить текстовый редактор vi. В каталоге /usr/src/contrib/nvi/docs/tutorial есть прекрасный учебник по vi, если у вас есть исходники системы. Перед тем, как редактировать файл, наверное, вы должны сохранить резервную копию. Предположим, что вы собираетесь отредактировать файл /etc/rc.conf. Вы можете воспользоваться командой cd /etc для перехода в каталог /etc и выполнить следующее: &prompt.root; cp rc.conf rc.conf.orig При этом файл rc.conf скопируется в rc.conf.orig, и в последующем вы сможете скопировать rc.conf.orig в файл rc.conf для восстановления оригинала. Но ещё лучше его переместить (переименовать), после чего скопировать обратно: &prompt.root; mv rc.conf rc.conf.orig &prompt.root; cp rc.conf.orig rc.conf потому что команда mv сохраняет исходную информацию о дате и владельце файла. Теперь вы можете редактировать rc.conf. Если вы захотите восстановить исходное состояние, то выполните mv rc.conf rc.conf.myedit (полагаем, что вы хотите сохранить отредактированную версию), а затем &prompt.root; mv rc.conf.orig rc.conf для возврата всего на место. Для редактирования файла наберите &prompt.root; vi filename Передвигайтесь по тексту при помощи клавиш со стрелками. Esc (клавиша отмены) переводит редактор vi в командный режим. Вот некоторые из них: x удалить символ, на котором находится курсор dd удалить целую строку (даже если на экране она не помещается в целую строку) i вставка текста в позиции курсора a вставка текста после курсора Сразу после набора i или a вы можете вводить текст. Esc возвратит вас обратно в командный режим, где вы можете набрать :w для записи ваших изменений на диск и продолжения редактирования :wq для записи и выхода :q! для выхода без сохранения изменений /text для перемещения курсора на text; - /Enter (клавиша ввода) для + /Enter (клавиша ввода) для поиска следующего экземпляра text. G для перехода в конец файла nG Для перехода к строке n в файле, где n является числом CtrlL для перерисовки экрана Ctrlb и Ctrlf для перемотки на экран назад и вперёд, как при работе с more и view. Поупражняйтесь с редактором vi в своём домашнем каталоге, создав новый файл по команде vi filename, добавляя и удаляя текст, сохраняя файл и вызывая его снова. Редактор vi преподносит некоторые сюрпризы, потому что он на самом деле достаточно сложный, и иногда вы можете неправильно вызвать команду, которая сделает нечто, чего вы не ожидали. (Некоторым людям действительно нравится vi—он более мощный, чем EDIT из DOS—посмотрите команду :r.) Для того, чтобы удостовериться, что вы находитесь в режиме команд, нажимайте Esc один или несколько раз, и начинайте снова с этого места, если возникли какие-то проблемы, часто сохраняйте текст командой :w и используйте :q! для того, чтобы прекратить работу и начать всё сначала (с вашей последней команды :w), если это нужно. Теперь вы можете выполнить cd для перехода в каталог /etc, su в пользователя root, использовать vi для редактирования файла /etc/group и добавлять пользователя в группу wheel, чтобы он имел полномочия пользователя root. Просто добавьте запятую и имя входа пользователя в конце первой строки этого файла, нажмите Esc и воспользуйтесь :wq для записи файла на диск и выхода. Работает всегда. (Вы не поставили пробел после запятой, ведь так?) - - Печать файлов из DOS - - На данный момент, скорее всего, принтер у вас не работает, так что - вот способ создания файла из справочной страницы, перемещения её на - дискету, а затем печать из DOS. Положим, что вы хотите внимательно - прочесть об изменении прав доступа на файлы (весьма важно). Вы можете - воспользоваться командой man chmod для того, чтобы - прочесть об этом. Команда - - - &prompt.user; man chmod | col -b > chmod.txt - - - удалит коды форматирования и перенаправит страницу справки в файл - chmod.txt, не выдавая её на экран. Теперь поместите - отформатированную dos-дискету в дисковод a, выполните - su, перейдя к пользователю root, и наберите - - - &prompt.root; /sbin/mount -t msdosfs /dev/fd0 /mnt - - - для монтирования дискеты в каталог /mnt. - - Теперь (и вам больше не нужно быть пользователем root, так что можете - набрать exit для возврата к пользователю jack) вы - можете перейти в каталог, где создали chmod.txt и - скопировать файл на дискету следующей командой: - - - &prompt.user; cp chmod.txt /mnt - - - и воспользоваться командой ls /mnt для получения - списка файлов каталога /mnt, которая теперь должна - показать файл chmod.txt. - - Вы также можете захотеть создать файл из - /sbin/dmesg, набрав - - - &prompt.user; /sbin/dmesg > dmesg.txt - - - и скопировав dmesg.txt на дискету. - /sbin/dmesg является протоколом загрузки системы, - который полезно понимать, потому что в нём перечисляется всё, что - обнаружила при загрузке FreeBSD. Если вы будете задавать вопросы в - списке рассылки &a.questions; или в конференции USENET—наподобие - FreeBSD не обнаруживает моего ленточного накопителя, что мне - делать?—отвечающие захотят узнать, что выдаёт - dmesg. - - Теперь вы можете (как root) отмонтировать гибкий диск, чтобы его - вынуть, по команде - - - &prompt.root; /sbin/umount /mnt - - - и перезагрузиться в DOS. Скопируйте эти файлы в каталог DOS, - вызовите их при помощи редактора DOS EDIT, &windows; Notepad или - Wordpad, или даже с текстовым процессором, внесите маленькое изменение, - чтобы файл сохранился, и напечатайте его обычным образом из DOS или - Windows. Надеемся, это срабатывает! Справочные страницы лучше всего - выглядят при печати командой DOS print. (Копирование - файлов из FreeBSD на смонтированный раздел DOS в некоторых случаях всё - ещё немного рискованная операция.) - - Процесс настройки принтера на печать из FreeBSD включает в себя - создание соответствующей записи в файле - /etc/printcap и создание нужного каталога очереди в - /var/spool/output. Если ваш принтер подключен к - lpt0 (то, что в DOS называется - LPT1), то вам достаточно только перейти в каталог - /var/spool/output и (как root) создать каталог - lpd, набрав: mkdir lpd, если её - ещё не существует. Тогда принтер должен реагировать, если при загрузке - системы он включён, а команда lp или - lpr должны посылать файл на принтер. Будет ли файл - действительно напечатан, зависит от его настройки, каковая описана в - Руководстве - FreeBSD. - - Другие полезные команды df выдаёт данные о занятом файлами пространстве и смонтированных файловых системах. ps aux показывает работающие процессы. ps ax является частоупотребительной формой. rm filename удаляет filename. rm -R dir удаляет каталог dir и все его подкаталоги—осторожно! ls -R выдаёт список файлов в текущем каталоге и всех его подкаталогах; я использовал вариант, ls -AFR > where.txt, для получения перечня всех файлов в / и (отдельно) /usr до того, как узнал о более эффективном способе поиска файлов. passwd для изменения пароля пользователя (или пароля root) man hier справочная страница по файловой структуре &unix; Используйте find для поиска filename в /usr или в любом из её подкаталогов при помощи команды &prompt.user; find /usr -name "filename" Вы можете использовать * в качестве шаблона внутри "filename" (это выражение должно быть в кавычках). Если вы укажете команде find на поиск в /, а не в /usr, то она будет искать файл(ы) во всех смонтированных файловых системах, включая CDROM и раздел DOS. Прекрасным пособием, описывающим команды и утилиты &unix;, является книга Abrahams & Larson, Unix for the Impatient (2nd ed., Addison-Wesley, 1996). Масса информации по &unix; есть и в Internet. Следующие шаги Теперь вы должны иметь инструменты, которые необходимо держать под рукой и умеете редактировать файлы, так что вы должны суметь запустить всё, что угодно. Много полезной информации содержится в Руководстве по FreeBSD (которое, скорее всего, есть на вашем жёстком диске) и Web-сайте FreeBSD. На CDROM, а также Web-сайте находятся различные пакеты и порты. В Руководстве рассказывается более подробно о том, как их использовать (получить пакет, если он существует, командой pkg_add /cdrom/packages/All/packagename, где packagename является именем файла пакета). На CDROM находится перечни пакетов и портов с их краткими описаниями в файлах cdrom/packages/index, cdrom/packages/index.txt и cdrom/ports/index, а более полные описания можно найти в /cdrom/ports/*/*/pkg/DESCR, где знаки * обозначают тематические подкаталоги с программами и названиями программ, соответственно. Если вы посчитаете, что Руководство является слишком сложной книгой (что с lndir и всё) по установке портов с CDROM, вот рецепт, который обычно срабатывает: Найдите нужный вам порт, скажем, kermit. На CDROM для него должен существовать каталог. Скопируйте этот подкаталог в каталог /usr/local (хорошее место для программного обеспечения, которое вы добавляете, и которое должно быть доступно всем пользователям) такой командой: &prompt.root; cp -R /cdrom/ports/comm/kermit /usr/local В результате должен образоваться подкаталог /usr/local/kermit, содержащий все файлы, что есть в подкаталоге kermit на CDROM. Затем создайте каталог /usr/ports/distfiles, если он ещё не существует, при помощи команды mkdir. Теперь проверьте содержимое /cdrom/ports/distfiles на предмет наличия файла с именем, говорящем о том, что это тот порт, который вы хотите иметь. Скопируйте этот файл в каталог /usr/ports/distfiles; в последних версиях вы можете пропустить этот шаг, и FreeBSD выполнит его за вас. В случае с kermit, дистрибутивного файла не существует. После этого по команде cd перейдите в подкаталог /usr/local/kermit, в котором есть файл Makefile. Наберите &prompt.root; make all install Во время выполнения порт обратится к FTP для получения всех архивных файлов, нужных ему и которых не найдено на CDROM или в каталоге /usr/ports/distfiles. Если сеть у вас ещё не работает, и файла для порта в каталоге /cdrom/ports/distfiles нет, вам потребуется получить дистрибутивный файл на другой машине и скопировать его в каталог /usr/ports/distfiles. Прочтите Makefile (при помощи команд cat, more или view), чтобы понять, как называется файл и куда нужно обратиться (основной сайт распространения), чтобы его получить. (Используйте двоичный тип передачи файлов!) Затем перейдите обратно в каталог /usr/local/kermit, найдите каталог с Makefile и наберите make all install. - - Ещё одной проблемой, встречающейся при установке портов или пакетов, - является их потребность в какой-то другой программе. - - После того, как установка будет выполнена, наберите команду - rehash для того, чтобы заставить FreeBSD перечитать - файлы, находящиеся в маршрутах поиска, чтобы система обнаружила их - появление. (Если вы получили массу сообщений path not - found при использовании whereis или - which, то вам необходимо сделать добавления к перечню каталогов в - команде определения маршрута в файле .cshrc, - находящемся а вашем домашнем каталоге. Задание маршрута в &unix; несёт - ту же самую функцию, что и в DOS, за исключением работы с текущим - каталогом (по умолчанию) по соображениям безопасности; если команда, - которую вы хотите выполнить, находится в текущем каталоге, вам нужно - набирать ./ перед названием команды, чтобы она - заработала; пробелов после слэша ставить не нужно.) Ваше рабочее окружение Ваш командный процессор является самой важной частью вашего рабочего - окружения. В DOS обычной оболочкой является command.com. Оболочка + окружения. Оболочка занимается интерпретацией команд, которые вы вводите в командной строке, и таким образом взаимодействует с остальной частью операционной системы. - Вы можете также писать скрипты командного процессора, которые похожи на - .bat-файлы DOS: это последовательности команд, которые должны выполняться + Вы можете также писать скрипты командного процессора, то есть + последовательности команд, которые должны выполняться без вашего участия. Вместе с FreeBSD устанавливаются два командный процессора: csh и sh. csh хорош для работы в командной строке, однако скрипты должны писаться на языке оболочек sh (или bash). Вы можете выяснить, какой командный процессор у вас используется, набрав echo $SHELL. Оболочка csh подходящая, однако tcsh может всё, что умеет csh и ещё больше. Она позволяет вам восстанавливать прошлые команды клавишами со стрелками и редактировать их. В нём есть автозавершение имён файлов по нажатию клавиши табуляции (в csh используется клавиша Esc) и он позволяет вам переключаться в каталог, в котором вы были ранее, по команде cd -. Также в tcsh гораздо легче изменять системное приглашение. Это гораздо упрощает жизнь. Вот три шага по установке нового командного процессора: Установите командный процессор как порт или пакет, как вы обычно - это делаете с другим портом или пакетом. Используйте - rehash и which tcsh - (предполагается, что вы устанавливаете tcsh) для - проверки того, что командный процессор установлен. + это делаете с другим портом или пакетом. Работая как пользователь root, отредактируйте файл /etc/shells, добавив в него строку с новой оболочкой, в нашем случае это /usr/local/bin/tcsh, и сохраните файл. (Некоторые порты могут делать это за вас.) Воспользуйтесь командой chsh для смены постоянно используемой вами оболочки на tcsh, либо наберите tcsh в командной строке для смены вашей оболочки без повторного входа в систему. Менять командный процессор для пользователя root на что-то, отличающееся от sh или csh, в ранних версиях FreeBSD и во многих других версиях &unix; может быть опасно; вы можете лишиться работающей оболочки при переходе системы в однопользовательский режим. Решением является использование su -m для того, чтобы стать пользователем root, что даст в качестве оболочки tcsh, но вы будете являться пользователем root, потому что оболочка является частью окружения. Вы можете сделать это постоянным, добавив в ваш файл .tcshrc в качестве алиаса по такой команде: alias su su -m При запуске tcsh он будет считывать файлы /etc/csh.cshrc и /etc/csh.login, как и csh. Эта оболочка также читает файл .login из вашего домашнего каталога, а также файл .cshrc, если только вы не создали файл .tcshrc. Это вы можете сделать простым копированием файла .cshrc в .tcshrc. Теперь, когда у вас установлен командный процессор tcsh, вы можете настроить приглашение командной строки. Все подробности можно найти на странице справки по tcsh, но всё же вот строка, которая помещается в ваш файл .tcshrc, которая может показать, сколько команд вы уже набрали, сколько сейчас времени и в каком каталоге вы находитесь. Она также выдаёт >, если вы являетесь обычным пользователем, и #, если вы являетесь пользователем root, однако tsch будет делать это в любом случае: set prompt = "%h %t %~ %# " Эта строка должна быть поставлена на то же самое место, что и существующая строка установки приглашения, если она есть, либо после строки "if($?prompt) then", если её нет. Закомментируйте старую строку; вы всегда сможете вернуться к ней обратно, если предпочтёте её. Не забудьте о пробелах и кавычках. Вы можете заставить перечитать .tcshrc, набрав source .tcshrc. Перечень других установленных переменных окружения вы можете получить, набрав env в приглашении командной строки. В результате, кроме всего прочего, будут показаны редактор, используемый по умолчанию, программа постраничной выдачи и тип терминала. Командой, полезной при входе в систему с удалённого места и невозможности запуска программы, потому что терминал не обладает некоторыми возможностями, является команда setenv TERM vt100. Остальное Работая как пользователь root, вы можете отмонтировать CDROM по команде /sbin/umount /cdrom, вытащить его из привода, вставить другой диск и смонтировать его командой /sbin/mount_cd9660 /dev/cd0a /cdrom, при этом предполагается, что cd0a является именем устройства для вашего привода CDROM. Самые последние версии FreeBSD позволяют вам монтировать CDROM просто по команде /sbin/mount /cdrom. Использование живой файловой системы—она находится на втором диске FreeBSD из набора CDROM—полезно при нехватке пространства. То, что находится в этой файловой системе, меняется от релиза к релизу. Вы можете попытаться поиграть в игры с CDROM. При этом применяется команда lndir, которая устанавливается с X Window System, и служит для указания программам, где искать необходимые файлы, потому что они находятся в файловой системе /cdrom, а не в /usr и её подкаталогах, где должны находиться. Прочтите справку по команде man lndir. Пожелания приветствуются Если вы используете это руководство, мне будет интересно знать, в каком месте оно написано непонятно и что упущено из того, что, по вашему мнению, должно быть включено ценного. Мои благодарности Eugene W. Stark, профессору информатики в SUNY-Stony Brook, и John Fieber за ценные советы. Annelise Anderson, andrsn@andrsn.stanford.edu
Index: head/ru_RU.KOI8-R/articles/releng/Makefile =================================================================== --- head/ru_RU.KOI8-R/articles/releng/Makefile (revision 46679) +++ head/ru_RU.KOI8-R/articles/releng/Makefile (revision 46680) @@ -1,34 +1,34 @@ # Article: FreeBSD Release Engineering # # The FreeBSD Russian Documentation Project # # $FreeBSD$ # $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng/Makefile,v 1.4 2005/07/01 06:51:22 gad Exp $ # -# Original revision: r38826 +# Original revision: r39631 # DOC?= article FORMATS?= html WITH_ARTICLE_TOC?=YES INSTALL_COMPRESSED?= gz INSTALL_ONLY_COMPRESSED?= SRCS= article.xml IMAGES_EN= branches-head.pic IMAGES_EN+= branches-releng3.pic IMAGES_EN+= branches-releng4.pic IMAGES_EN+= branches-releng5.pic IMAGES_EN+= branches-releng6.pic IMAGES_EN+= branches-releng7.pic IMAGES_EN+= branches-releng8.pic IMAGES_EN+= branches-releng9.pic CSS_SHEET_ADDITIONS= extra.css URL_RELPREFIX?= ../../../.. DOC_PREFIX?= ${.CURDIR}/../../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk"