Linux mini-HOWTO

         

Как начать


Получите и прочтите AX25-HOWTO:

ftp:/sunsite.unc.edu/pub/Linux/docs/HOWTO/AX25-HOWTO/

Используя AX25-HOWTO, установите Amateur Radio ax.25 и систему Netrom, и убедитесь, что они работают должным образом. Тогда программное обеспечение может использоваться для соединения через ax.25 или Netrom с удаленным узлом, система готова перейти к использованию списков узлов типа BPQ Switch.



Ниже приводится список всех приложений


Ниже приводится список всех приложений и файлов, которые необходимы для установки работающей системы ax.25. Все приложения находятся в директории /usr/sbin/, а файлы настройки- в /etc/ax25/. Примечание: Kissattach используется в случае, если у вас есть TNC (Контроллер пакетной связи) в режиме Kiss.



Приложение kissattach



Приложение call



Приложение ax25d



Файл настройки ax25d.conf



Приложение axspawn



Файл настройки axspawn.conf



Файл настройки axports



Пользователь ax25 должен придумать несколько имен. Можно сделать список этих имен.

Имя Позывной Псевдоним Остальное

ax0 k5di-9 ax25 9600 baud ax1 k5di-10 ax25 1200 baud Netromk5di-1 #CRUCE Real Netrom netnodk5di-4 CRUCES Node node-list netbbsk5di-3 LCBBS BBS node-list netdxk5di-5 LCDXDX-Cluster



Хорошая идея - создать список, подобный данному, прежде чем вы начнете что-то изменять. Легко дать неправильное имя в контрольном файле.

Kissattach - это приложение, которое соединяет ядро с TNC, устанавливает адрес tcp/ip, скорость соединения, все это подготавливает последовательный порт для использования.

Axports - это файл, который определяет имя для портов ax.25 и говорит kissattach, какой использовать позывной, а также скорость и окно. Ниже приводится пример системы TNC.

# /etc/ax25/axports # Будьте очень внимательны при установке скорости. Это скорость в # бит/сек, с которой эти данные передаются из компьютера на TNC, и она не # имеет отношение к скорости передачи # # Формат этого файла такой: # имя позывной скорость разм.пакета окно описание # ax0 K5DI-9 9600 255 3 445.1 (9600 bps) ax1 K5DI-10 9600 255 1 145.07 (1200 bps)



AX25D - это приложение, которое читает файл настройки ax25d и отвечает на вызовы, направленные к этой системе. Ниже приводится образец ax25d.conf, у которого нет определенного Netrom. В действительности, все, что он будет делать, - это и есть ответы, направленные к k5di-9 и k5di-10. Отвечая, он запускает Node приложение и впускает в пользователя систему.

# /etc/ax25/ax25d.conf # # Файл настройки AX25D. # Порты AX.25 начинаются с '[' # [k5di-4 VIA ax0] default * * * * * 0 - root /usr/sbin/node node [k5di-4 VIA ax1] default * * * * * 0 - root /usr/sbin/node node




Следующий шаг - получение ax25d, чтобы заставить ответить на вызов, направленный CRUCES. Это легко сделать, как показано ниже
# /etc/ax25/ax25d.conf # # Файл настройки AX25D. # Порты AX.25 начинаются с '[' # [CRUCES VIA ax0] default * * * * * 0 - root /usr/sbin/node node [k5di-4 VIA ax0] default * * * * * 0 - root /usr/sbin/node node [CRUCES VIA ax1] default * * * * * 0 - root /usr/sbin/node node [k5di-4 VIA ax1] default * * * * * 0 - root /usr/sbin/node node


Если у вас случились неприятности, как root удалите процесс ax25d, если он запускается, и затем введите команду ax25d &. Так как ax25d загружает файл ax25d.conf, на экран будут выведены любые ошибки и строки, в которых встречаются эти ошибки, обнаруженые им.

Соединение от любого соседнего узла к k5di-4 или CRUCES, связывает с узлом k5di. Но Netrom не передает список узлов для CRUCES или k5di-4. Это происходит при изменении некоторых файлов настройки Netrom.


Netrom-Node mini-Howto


Karl Larsen
k5di@yahoo.com


Перевод: Александр Ермолаев, ASPLinux

В этом документе описывается установка пакета утилит ax25 для Amateur Radio, который создает Netrom Nodes для программы Node и программного обеспечения BBS от John-Paul Roubelat (F6FBB). Переключатель пакетов G8BPQ для DOS создает узел bbs. Возможно, у утилит Linux ax25 будет такая же способность. John Ackerman (N8UR) поместил сообщение на Linux-Ham SIG о том, что он создал узел BBS, а информация находится на его веб-сайте! Когда эта информация была испытана, не все работало должным образом, но многое из этой методики было изучено. Tomi Manninen: (OH2BNS) сделал подсказки. Узлы для BBS, Node и DX Cluster были сделаны и прекрасно работают.



Установка FBB и DXNet


Пакет FBB для BBS и программное обеспечение DXNet для Linux написаны для того, чтобы отвечать на вызовы, направленные к позывному, определенному в файлах настройки. В этих примерах позывной для FBB - k5di-3, а для DXNet - k5di-5.

Как только другое программное обеспечение ответит на вызовы k5di-3 и k5di-5, ax25d перестанет использоваться, а эти вызовы никогда не будут найдены в файле ax25d.conf. Но файл nrports нуждается в том, чтобы иметь дополнительную информацию, а еще 2 строки nrattach добавляются к файлу автозапуска. Стоки nrattach и файл "nrports" показаны ниже:

usr/sbin/nrattach -i 44.30.2.5 netrom /usr/sbin/nrattach -i 44.30.2.5 netbbs /usr/sbin/nrattach -i 44.30.2.5 netnod /usr/sbin/nrattach -i 44.30.2.5 netdx

# /etc/ax25/nrports # # Формат этого файла: # # имя позывной псевдоним разм.пакета описание # netrom K5DI-1 #CRUCE 235 Switch netnod K5DI-4 CRUCES 235 Real Node netbbs K5DI-3 LCBBS 235 FBB BBS netdx K5DI-5 LCDX 235 DXNet DX Cluster

Эти изменения составят желаемый список узлов, но вызов, направленный к LCBBS, не сработает. Запомните, что FBB отвечает на вызов, направленный к k5di-3, но не на псевдоним. Чтобы достичь этого, требуются изменения файла /usr/local/fbb/system/port.sys. Перед этими изменениями port.sys имел список для имени "netrom". С учетом этих изменений поменяйте местами "netrom" и "netbbs". Эта секция port.sys показана ниже:

#TNC NbCh Com MultCh Pacln Maxfr NbFwd MxBloc M/P-Fwd Mode Freq 0 0 0 0 0 0 0 0 00/01 ---- File-fwd. 1 8 1 ax0 250 4 1 10 30/60 XUWY UHF port 2 2 1 ax1 250 4 1 10 00/60 XUWY VHF port 3 6 1 netbbs 250 4 4 10 30/60 XUWY BPQ look 4 8 2 0 250 5 4 1000 5/15 TUWY Telnet #

Похожее изменение произошло с файлом "dxnet.cfg", где netrom поменялось местами с netdx. Когда эти изменения произойдут, и при этом прошло несколько часов, которые позволили Netrom отправить списки узлов, у любого соседнего узла будут составлены списки узлов к вашему Netrom для CRUCES и LCBBS и LCDX, и они все будут работать так же, как и при использовании G8BPQ Switch в DOS.



Установка Netrom


Netrom имеет приложения и файлы, которые управляют им. Ниже приведен список этих составляющих Netrom:

Приложение nrattach

Приложение netromd

Файл настройки nrports

Файл настройки nrbroadcast

Nrattach- это приложение, которое работает с ядром, и устанавливает порты и tcp-ip, используемые Netrom. Чтобы использовать nrattach, нужно поместить его в файл автозапуска. Например так:

/usr/sbin/nrattach -i 44.30.2.5 netrom /usr/sbin/nrattach -i 44.30.2.5 netnod

Nrattach получает некоторую информацию из файла настройки, именуемый nrports. Этот файл показан ниже:

# /etc/ax25/nrports # # Формат этого файл: # # name call-sign alias paclen description # имя позывной псевдоним разм.пакета описание # netrom K5DI-1 #CRUCE 235 Switch netnod K5DI-4 CRUCES 235 Real Node

Без всяких изменений остается файл nrbroadcast так, что остальные изменения будут происходить с файлом ax25d.conf. В этот файл обычно вставляется настоящее приложение netrom, именуемое k5di-1. Но при вызове, идущем к k5di-1 или #CRUCE, он получит нежелательные результаты. Уберите эту запись из файла ax25d.conf, и пользователь будет "занят", когда его вызывают.

Вместо этого поместите его в netnod. Это позволит ax25d ответить на вызов, направленный к CRUCES. Это показано на примере ниже:

# /etc/ax25/ax25d.conf # # Файл настройки AX25D. # # Порты AX.25 начинаются с '['. # [CRUCES VIA ax0] default * * * * * 0 - root /usr/sbin/node node [k5di-4 VIA ax0] default * * * * * 0 - root /usr/sbin/node node [CRUCES VIA ax1] default * * * * * 0 - root /usr/sbin/node node [k5di-4 VIA ax1] default * * * * * 0 - root /usr/sbin/node node # # Порты NET/ROM начинаются с ' default * * * * * * - root /usr/sbin/node node

С этими изменениями широковещательный узел netrom включит узел K5DI-4:CRUCES и K5DI-1:#CRUCE. С помощью тестирования было определено, что вызов, идущий из любого узла к k5di-1 или #CRUCE, был занят, а вызов, идущий к k5di-4 или CRUCES, соединился с узлом на системе.



Где мне получить дополнительную информацию?


Кое-какая документация идет вместе с пакетом Leafnode (почитайте файлы INSTALL и README, да и исходные тексты тоже очень интересны). Если вы хотите больше узнать о "профессиональных" и "больших" серверах новостей, посмотрите INN FAQ (идущий вместе с пакетом INN). Для того чтобы узнать информацию о вашей программе чтения новостей, наберите "man имя_программы", или посмотрите другие файлы в каталоге /usr/doc.

Если у вас есть вопросы относительно систем новостей, просто спросите об этом в соответствующей конференции (посмотрите в иерархии news.software.*).

Если у вас есть вопросы относительно этого HOWTO, просто напишите мне (sutok@gmx.de).



Где взять Leafnode?


Leafnode доступен на ftp://ftp.troll.no/pub/freebies/. Автор - Arnt Gulbrandsen, служащий Troll Tech AS. Последняя версия 1.4. Кроме того, Leafnode включен в состав некоторых дистрибутивов (например, Debian). Однако, убедитесь, что у вас, как минимум, версия 1.4, в которой были исправлены некоторые критические ошибки.



Как его установить?


Небольшая помощь в установке идет вместе с пакетом, но давайте сделаем это вместе :-) - Если Leafnode v1.4 входит в состав вашего дистрибутива, достаточно мудро будет использовать скомпилированную версию и пропустить шаги с 1 по 4.

1.) Убедитесь, что на вашем компьютере нет другого запущенного сервера новостей. Когда вы наберете $ telnet localhost nntp, то вы должны получить сообщение об ошибке. В противном случае, нужно деинсталлировать INN, CNews или другой сервер новостей, и закомментировать строчку nntp в файле /etc/inetd.conf.

2.) Убедитесь, что существует пользователь "news" - проверьте его в файле /etc/passwd. Если нет, создайте его (просто наберите

$ adduser news

или сделайте нечто подобное при помощи утилит, поставляемых с вашим дистрибутивом).

3.) Распакуйте исходные тексты:

$ tar xfz leafnode-1.4.tar.gz

и перейдите в каталог

$ cd leafnode-1.4

4.) Скомпилируйте программу и установите ее

$ make; make install

5.) Отредактируйте файл /usr/lib/leafnode/config (он может находиться в другом месте. Например, в /etc/leafnode, если вы используете готовую версию из вашего дистрибутива). Строка "server =" должна указывать на сервер новостей вашего провайдера.

6.) Отредактируйте файл /etc/nntpserver. Он должен содержать имя вашего компьютера (localhost или другое, выдаваемое командой hostname). Если в каком-нибудь файле запуска (/etc/profile или /.bash_profile) определяется соответствующая переменная окружения, вы должны установить ей аналогичное значение.

7.) Отредактируйте файл /etc/inetd.conf: Убедитесь, что в нем нет строки, начинающейся с "nntp" (закомментируйте ее символом "#", если это так). Затем добавьте следующую строчку:

nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnode

Когда кто-то (например вы :-) подключится к вашему компьютеру на порт NNTP в качестве сервера запустится leafnode.

8.) Подключитесь к Интернет и запустите программу "fetch" от пользователя root или news. Когда fetch запускается в первый раз, он скачивает список групп новостей вашего пройвадера. Это может занять некоторое время, в зависимости от скорости соединения и количества групп.

9.) Запустите вашу любимую программу чтения новостей (slrn, (r)tin и knews - не очень плохое начало) и подпишитесь на все группы, которые хотели бы получать. Причем не только подпишитесь, но и зайдите в них, даже если они пусты.

10.) Снова запустите fetch и загрузите все новости групп, на которые подписаны.



Как мне его поддерживать?


Теперь ваша система новостей запущена и работает, но можно сделать еще несколько вещей. Отредактируйте файл /usr/lib/leafnode/config, чтобы установить время устаревания групп, т.е. когда старые сообщения должны удаляться. Если вы читаете какие-нибудь группы с большим трафиком, стандартное время в 20 дней возможно окажется слишком большим для вас - 4 дня или одна неделя, я думаю, вас больше устроит. Можно изменить это значение для всех групп ("expire = n" хранит все группы n дней) или для каждой группы отдельно, написав

groupexpire foo.bar n

для хранения сообщений группы foo.bar n дней.

Установка времени сама по себе не удаляет старые сообщения - это производит программа texpire. Она может быть запущена, как задание, из cron или из командной строки. Если ваш компьютер работает круглосуточно, можно добавить следующую строку в файл crontab пользователя news (чтобы изменить его, войдите как news и наберите "crontab -e" или наберите как root "crontab -u news -e"):

0 19 * * * /usr/local/sbin/texpire

Эта строка заставляет cron запускать texpire каждый день в 19:00 (man crontab). Если ваш компьютер работает не круглосуточно, то нужно время от времени самому запускать texpire, когда заметите, что fetch начал работать слишком медленно.



Как он работает?


Leafnode - "самый настоящий" NNTP сервер, т.е. вы можете также войти в него с другого компьютера (через Internet, локальную сеть и т.п.). Каждый раз, когда вы входите в группу, программа чтения новостей запрашивает ее у leafnode. Если группа не существует, leafnode создает пустой файл, названный согласно группе, в каталоге /var/spool/news/interesting.groups. Когда вы запустите fetch в следующий раз, он загрузит сообщения группы. Если группа новостей не посещалась определенное время, leafnode перестанет загружать ее статьи и удалит ее имя из /var/spool/news/interesting.groups. Аналогично, если вы случайно подписались на группу новостей с большим трафиком, то можно самостоятельно удалить оттуда свой файл, если не хотите загружать сообщения этой группы в течении следующей недели.

Недели для Вас не достаточно? Вы хотите уйти в отпуск на три недели и продолжать получать новости? К сожалению, в leafnode нет опции для настройки этого, но вы можете отредактировать файл leafnode.h и перекомпилировать leafnode. Просто установите время в секундах в константах TIMEOUT_LONG и TIMEOUT_SHORT. Другое, более простое решение определить задание для cron, выполняющееся каждую ночь "touch /var/spool/news/interesting.groups/*".

Если вы хотите узнать список всех доступных групп, загляните в файл /usr/lib/leafnode/groupinfo, где найдете короткое описание к каждой группе.

Если хотите снова загрузить список групп новостей (например, захотите почитать новую группу), просто удалите файл /var/spool/news/active.read. Fetch создаст его и получит новый список. Впрочем, вам не нужно следить за этим постоянно, т.к. fetch время от времени делает это сам.



Какой программой чтения новостей мне пользоваться?


Под Linux нет *настоящей* программы чтения новостей, впрочем, как нет и *настоящего* текстового редактора. Я пользуюсь emacs в режиме GNU, т.к. это самый гибкий редактор под Linux. Многие пользуются trn, nn и др., так что можете попробовать любую программу на свой вкус. Только одной программой не стоит пользоваться - Netscape. Он большой, нестабильный, с маленькими возможностями и иногда создает корявые сообщения. Впрочем, вам выбирать.

В любом случае, knews - это неплохая отправная точка, чтобы набрать первый опыт. Он очень дружественен и легок в понимании.



News Leafsite mini-HOWTO


Florian Kuehnert
sutok@gmx.de


Перевод: Павел Гашев, ASPLinux

Этот HOWTO поможет вам настроить Leafnode. Маленький беcплатный сервер новостей Usenet. С вопросами, замечаниями и предложениями обращайтесь к Florian Kuehnert (sutok@gmx.de). (C) 1998 by Florian Kuehnert.



Использование диска с ядром


Если вы экспортировали корневую файловую систему с правильным именем, и ваш NFS-сервер также является и RARP-сервером (что подразумевает общую подсеть у сервера и рабочей станции), то достаточно командой cat переписать его напрямую на диск. (Корневое устройство в ядре должно быть установлено в 0:255.) Это также предполагает, что корневой каталог рабочей станции находится на сервере в каталоге /tftpboot/IP-Address (это значение может быть изменено в процессе сборки ядра)



Использование загрузчика без RARP


В дополнение к параметру nfsroot задайте параметр nfsaddrs=:::: при запуске ядра. Ядро настроит интерфейс eth0 со следующими параметрами:

wst-IP

IP-адрес рабочей станции

srv-IP

IP-адрес NFS-сервера

gw-IP

IP-адрес шлюза

netm-IP

Маска подсети

hostname

имя рабочей станции



Использование загрузчика с RARP


Передайте ядру все необходимые в процессе загрузки параметры. Также добавьте туда строку nfsroot=:

где ip-адрес-сервера - это IP-адрес вашего NFS-сервера, а /путь/к/корневой/файловой/системе - это путь к корневой файловой системе рабочей станции на сервере.

Советы:

При использовании LILO используйте параметр "lock": просто наберите все правильные параметры вместе и добавьте слово "lock". Затем, в следующий раз, дайте LILO загрузиться автоматически.

При создании загрузочного диска для рабочей станции вы можете использовать опцию append= в файле lilo.conf.



Использование загрузочного ПЗУ (boot ROM)


Я лично подобное чудовище не использовал. Могу лишь дать несколько советов (со слов Christian Leutloff ):

Невозможно использование "обычных" ПЗУ.

Есть пакет netboot автора Gero Kuhlmann, который содержит загрузочные ПЗУ для Linux и дополнительную информацию. netboot можно найти на ближайшем Linux ftp-сервере или в виде пакета в дистрибутиве Debian (netboot-0.4).

Внимательно прочитайте документацию, поставляемую с вашим загрузочным ПЗУ.

Возможно вам придется разрешить tftpd на сервере - это зависит от способа загрузки ядра вашим загрузочным ПЗУ.

Я приветствую любую информацию о производителях загрузочных ПЗУ, способных загружать Linux. Не у всех есть возможность прошивать ПЗУ самостоятельно.



Мини-HOWTO: Корневой NFS


Andreas Kostyrka
andreas@ag.or.at


Перевод: Станислав Рогин, ASPLinux

В этом документе дается объяснение того, как настроить "бездисковую" рабочую станцию на Linux, корневая файловая система которой подключена через NFS. Новую версия этого Мини-Howto можно найти по адресу ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root или на любом его зеркале РЯДОМ С ВАМИ.



Общий обзор


В общих словах, при загрузке перед рабочей станцией возникают следующие проблемы:

Станция должна выяснить свой IP-адрес, и, если необходимо, полную конфигурацию Ethernet.

Также она должна знать, где находится NFS-сервер, и путь подключения корневой файловой системы на нем.

Существующая реализация системы NFSROOT в ядре Linux (начиная с версии 1.3.7x) позволяет следующие варианты:

IP-адрес может быть определен при помощи RARP, либо полная конфигурация Ethernet может быть передана ядру через параметры ядра через LILO или LOADLIN.

Путь NFS также может быть передан через параметры ядра. Если это не сделано, то RARP-сервер будет восприниматься, как и NFS-сервер, и использовать путь, встроенный в ядро по умолчанию (обычно это: /tftpboot/.)

Конфигурация станции может быть определена при помощи BOOTP.

До настройки бездисковой станции вы должны решить, использовать или нет LILO или LOADLIN. Плюс их использования - гибкость, минус - скорость. Ядро Linux без LILO загружается быстрее. Возможно, в некоторых случаях, вам просто не придется выбирать.



Проблемы с устройствами в каталоге /dev


Если в процессе загрузки вы получаете странные сообщения об интерфейсах tty, запустите скрипт MAKEDEV с клиентской машины в каталоге /dev. Говорят, что иногда это не работает на некоторых ОС серверов, в которых используются 64-битные номера устройств. Если вы с этим столкнетесь, пишите мне, с какой ОС у вас проблемы. Потенциальное решение - создать небольшой электронный диск (ramdisk) в начале процесса загрузки и пересоздавать заново все файлы устройств каждый раз.



/Sbin/init не запускается


Наиболее распространенная проблема с /sbin/init состоит в следующем - во многих дистрибутивах /sbin/init собран динамически. Поэтому на клиенткой стороне необходимо правильно настроить каталог /lib. Наиболее простой способ - заменить /sbin/init (для клиентской машины) на обычным образом (с использованием статических ссылок) собранную программу "Hello World". Так, по крайней мере, вы сможете определить возникла ли проблема с динамическими ссылками, или существует что-то более серьезное.



Сборка ядра


В ядре можно включить поддержку RARP . Вам необходимо будет сделать это при загрузке станции без параметров, передаваемых ядру. С другой стороны, он вам не нужен, если клиент не находится в одной подсети с сервером.

Ядро для рабочей станции должно содержать, как минимум, следующее:

Встроенную в ядро поддержку файловой системы NFS. (Не обязательно встраивать в ядро поддержку файловой системы ext2 - будет достаточно модуля)

Должен быть включен параметр "Корневая NFS"

Ethernet-драйвер для сетевой платы рабочей станции должен быть встроен в ядро.

В зависимости от вашей конфигурации, вам, возможно, нужно будет встроить поддержку RARP или BOOTBP для корневой NFS. (Я имею в виду вопросы, задаваемые make config после вопроса о поддержке файловой системы NFS)

Если станция будет загружаться без параметров ядра, то вам также надо настроить корневое устройство 0:255. Создайте несуществующее устройство командой mknod /dev/nfsroot b 0 255. После создания этого файла устройства, вы можете указать на загрузочное устройство с ядром командой rdev /dev/nfsroot.



Создание корневой файловой системы



Копирование файловой системы

Внимание: несмотря на то, что этот способ может подойти вам, он очень непродуктивен и неэффективен. Чтобы настроить корневую файловую систему для клиентов, читайте "Мини-HOWTO: Корневые файловые системы NFS клиентов на сервере " автора Ofer Maor .

После того, как вы решите, куда поместить корневое дерево, создайте его (например) командой mkdir -p , а затем запустите команду tar cClf / - | tar xpCf -.

Если вы собираетесь загружать ваше ядро без LILO, тогда корневой каталог должен быть следующим: /tftpboot/. Если вас такой каталог не устраивает, вы можете изменить его в основном файле Makefile исходных текстов ядра; найдите там строку вида: NFS_ROOT = NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\"" После изменения этой строки пересоберите ядро.


Изменения в корневой файловой системе

Удалите ненужные файлы и проверьте скрипты в каталоге /etc/rc.d. Некоторые важные замечания:

Самая важная вещь - настройка eth0. Рабочая станция должна иметь, по крайней мере, частично настроенный интерфейс eth0. Устанавливать IP-адрес рабочей станции равным IP-адресу сервера - не самое умное решение. (Так однажды случилось с автором в его ранних попытках)

Второй пункт, на который нужно обратить внимание - это файл /etc/fstab. Там нужно указать все необходимые настройки файловых систем nfs.

ВНИМАНИЕ: Не путайте корневые файловые системы сервера и рабочей станции. (Я исправил файл rc.inet1 сервера и долго удивлялся, почему рабочая станция все еще не работает)


Экспортирование файловой системы

Экспортируйте корневой каталог сервера рабочей станции. Смотрите exports(5). Скорее всего, после этого вам придется перезапустить nfsd/mountd. В дистрибутиве RedHat это можно просто проделать командами /etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start .


Настройка RARP

Настройте RARP где-нибудь в сети. Если вы загружаете ядро без параметра nfsroot, то RARP-сервер должен быть NFS-сервером. Обычно так и бывает. Для этого в ядро должна быть встроена поддержка RARP.

Для включения RARP выполните команду (и впишите ее в соответствующий скрипт в каталоге /etc/rc.d:


/sbin/rarp -s

где

ip-адрес

- это IP-адрес рабочей станции

ethernet-адрес

- это Ethernet- адрес сетевой карты рабочей станции

Пример: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

Вместо цифровой формы IP-адреса можно использовать имя машины, если сервер сможет из этого имени определить IP-адрес (если настроены /etc/hosts или DNS)

Настройки BOOTP

Для настройки BOOTP вам надо должным образом отредактировать файл /etc/bootptab. Смотрите man bootpd(8) и booptab(5).

Выяснение Ethernet-адреса

Я не знаю Ethernet-адреса! Как его узнать?



Загрузитесь с диска с ядром, который вы сделали, и ищите строку с параметрами обнаруженной сетевой карты. Обычно она состоит из 6 шестнадцатеричных чисел - это и есть Ethernet-адрес карты.



Загрузите на рабочей станции любую операционную систему с TCP/IP. Затем выполните ping с сервера на рабочую станцию. Ищите в кэше ARP адрес станции командой: /sbin/arp -a




Ссылки


Клиент BOOTP находится по адресу: ftp://sunsite.unc.edu/system/Network/admin/bootpc.v045.tgz

Бездисковые станции можно настроить значительно проще и гибче при помощи initrd (включаемого в ядра Linux начиная с версии 2.0). initrd - очень хорошее решение для легко настраиваемых систем.

Для простых загрузок, при помощи bootpd, во всем вышеописанном нет необходимости, так как в ядрах Linux начиная с версии 2.0 существует возможность использовать BOOTP, вместо RARP. (Если быть более точным, при встраивании обоих в ядре используется более ранний сетевой ответ)

В каталоге Documentation исходных текстов ядра есть файл, описывающий корневые файловые системы NFS.

Существует патч для ядра, позволяющий подкачку на NFS. Его послали мне (в момент запарки на работе), но я каким-то образом умудрился его потерять. :(

Скорее всего его можно найти на сервере http://www.linuxhq.com/ в разделе неофициальных патчей.

Мой открытый ключ PGP можно найти при помощи finger адреса andreas@ag.or.at. Отпечаток ключа: F1 F7 43 D5 07 C4 6C 87 BF 6B 33 A2 2C EE 5A F9.



Мини-HOWTO: Корневые файловые системы NFS клиентов на сервере


Ofer Maor

Перевод: Станислав Рогин, ASPLinux

Цель этого документа - объяснить, как создать клиентские корневые файловые системы на сервере, к которому подключаются клиенты, использующие корневую файловую систему NFS. Вы можете найти последнюю версию этого документа в виде HTML или чистого текста по адресу: http://www.hcs.co.il/oferm/NFS-Root-Client/



Общий обзор


Когда мы будем создавать клиентский каталог, и попытаемся максимально уменьшить размер пространства на диске, используемого для клиентов, мы, в основном, займемся тем списком файлов, которые можно разделить , или подключить с сервера. В этом Howto я буду рекомендовать конфигурацию клиентов, базированную на моем личном опыте. Но перед началом запомните, что:

Этот документ не объяснит, как произвести корневое подключение NFS. Обращайтесь к мини-Howto "Корневые NFS", если вам нужна информация по этому вопросу.

Я основываю большую часть конфигурации моих клиентов на точках подключения и символьных ссылках. Большинство этих символьных ссылок могут быть заменены жесткими ссылками (hardlinks). Это вы будете выбирать для себя, по своему желанию. Использование жестких ссылок, вместо точек подключения и символьных ссылок, имеет свои преимущества, но может привести к недоразумениям. Файл не может быть удален, пока не удалятся все его жесткие ссылки. Таким образом, для того, чтобы предотвратить ситуацию, когда вы устанавливаете новую версию файла, а жесткие ссылки все еще указывают на старую версию, придется очень внимательно следить за каждой ссылкой, которую вы создаете.

При подключении каталогов сервера можно использовать два способа. Первый (наиболее часто встречающийся) - это подключать весь корневой каталог сервера в локальный каталог, а затем просто изменять путь или подключать туда отдельные каталоги. Мне лично не нравится подключать корневой каталог сервера на клиентах. Поэтому в этом документе предлагается путь подключения отдельных каталогов сервера на соответствующие места в системе клиента.

Этот документ основан на личном опыте построения клиентских каталогов в дистрибутиве Slackware версии 3.1. Некоторые вещи в других дистрибутивах могут различаться (особенно часть, касающаяся файлов rc.*), однако принципы должны остаться неизменными.



Создаем дерево каталогов


Первым делом надо создать саму структуру каталогов. Я создаю всех клиентов в каталоге /clients/имя_машины, я буду использовать это в примерах, приведенных ниже. Это, конечно, можно изменить на что-нибудь другое. Сначала создадим соответствующие каталоги в корневом каталоге клиента. Нужно создать следующие каталоги:

bin , dev , etc , home , lib , mnt , proc , sbin , server , tmp , usr , var

и другие, которые вы возможно захотите иметь в своей системе.

Каталоги local, proc, и dev будут использоваться отдельно на каждой машине, в то время как остальные каталоги будут частично или полностью с другими клиентами.



Создаем минимальную файловую систему, необходимую для загрузки



Создаем каталог dev.

Несмотря на то, что каталог dev может быть разделен, правильнее будет создать отдельный каталог для каждого клиента. Вы можете создать клиентский каталог dev при помощи соответствующего скрипта MAKEDEV, хотя, в большинстве случаев значительно проще скопировать его с сервера командой:



Создание дополнительных клиентов


Если вы следовали моим инструкциям, то все должно быть просто - зайдите в каталог /clients/ и наберите:

bash# cp -a hostname1 hostname2

и затем проверьте следующие точки:

Файлы rc.d/* соответствуют оборудованию и требуемой конфигурации программ, файл etc/HOSTNAME содержит правильную информацию, строка, касающаяся swap в файле fstab, заполнена правильно, символьные ссылки dev/mouse, dev/modem и dev/cdrom также верны.

Удачи....



Вступление


Этот мини-Howto был написан с целью помочь людям, которые хотят использовать корневое подключение NFS для создания каталогов клиентов на сервере. Надо заметить, что существует много способов, позволяющих добиться этого, в зависимости от вашего желания и возможностей. Если клиенты индивидуальны, и у каждой клиентской машины есть свой набор пользователей и администратор, то необходимо будет создать раздельные части клиентских каталогов, не разделенных с другими клиентскими точками. С другой стороны, если клиент предназначен для большого количества пользователей, и все они администрируются одним человеком (например, компьютерный класс), необходимо, чтобы наибольшее количество файлов были разделены для того, чтобы упростить администрирование. Этот документ сфокусирует свое внимание на втором варианте.



Загрузка


Теперь, вы сделали все для того, чтобы ваша машина загрузилась, скрестите пальцы и надейтесь, что все будет работать так, как оно должно :-).



Nvidia OpenGL Configuration mini-HOWTO


Robert B Easter
reaster@comptechnews.com
Перевод: Александр Ермолаев, ASPLinux

Этот miniHOWTO описывает способ, как установить драйвера OpenGL под Linux для видеокарты Nvidia. В дополнение к этому, документ объясняет, как установить XFree86, библиотеку OpenGL Utility (часть библиотеки Mesa), OpenGL Utility Toolkit (glut), полный набор страниц руководства по OpenGL, а также библиотеку Qt и ее расширения OpenGL, т.о. пользователи будут иметь основу для разработки OpenGL приложений под Linux.



Установка драйверов Nvidia OpenGL


-- удалите файлы libGL.*, которые идут с XFree86 / Mesa 3.3 -- файлы nvidia libGL.* должны заменить их cd /usr/X11R6/lib rm libGL.* cd modules/extensions rm libGL* rm libglx* cd /usr/lib rm libGL.*

cd /usr/src tar -xvzf NVIDIA_kernel-0.9-4.tar.gz tar -xvzf NVIDIA_GLX-0.9-4.xfree401.tar.gz cd NVIDIA_kernel-0.9-4 make cd .. cd NVIDIA_GLX-0.9-4.1 make cd

-- создайте основной файл конфигурации X - xf86config cd /etc/X11 Вы должны отредактировать XF86Config и записать следущие строки: vi XF86Config Load "dri" driver "nvidia" "1600x1200" (или ваше любимое разрешение) скопируйте шрифты TrueType из каталога шрифтов Windows и добавьте путь к этому каталогу

-- примечание: /usr/include/GL - символическая ссылка для /usr/X11R6/include/GL

Определение "nvidia" для драйвера в XF86Config вступает в силу при каждом запуске startx. Но драйвер NVdriver должен загружаться при каждом запуске системы:

insmod NVdriver

Вы можете разместить эту команду в одном из загрузочных файлов, например /etc/rc.d/rc.modules



Установка GLUT


Установка GLUT имеет некоторые хитрости. Я не очень знаком с программой imake, которая используется для управления файлами Makefile. И я не совсем понял, как установить GLUT, туда куда я хотел (/usr/lib). Во любом случае, это можно сделать вручную:

cd /usr/src tar -xvzf glut-3.7.tar.gz cd glut-3.7

ЧИТАЙТЕ файл: README.linux cd linux ЧИТАЙТЕ файл: README cp Glut.cf .. cd .. Отредактируйте файл Glut.cf: удалите все ссылки на Mesa. Если необходимо, то замените любые -lMesaGL -lMesaGLU на -lGL -lGLU. В частности, замените: OPENGL = $(TOP)/../lib/libMesaGL.so GLU = $(TOP)/../lib/libMesaGLU.so на: OPENGL = -lGL GLU = -lGLU

./mkmkfiles.imake cd lib/glut cp /usr/src/glut-3.7/linux/Makefile . Отредактируйте файл Makefile: удалите все ссылки на Mesa. Если необходимо, то замените любые -lMesaGL -lMesaGLU на -lGL -lGLU. В частности замените: OPENGL = $(TOP)/../lib/libMesaGL.so GLU = $(TOP)/../lib/libMesaGLU.so на: OPENGL = -lGL GLU = -lGLU

make ln -s libglut.so.3.7 libglut.so ln -s libglut.so.3.7 libglut.so.3 cp -d libglut.* /usr/lib cd .. cd gle -- соберите libgle, как общедоступную библиотеку gcc -shared -o libgle.so.3.7 *.o ln -s libgle.so.3.7 libgle.so ln -s libgle.so.3.7 libgle.so.3 cp -d libgle.* /usr/lib cd .. cd mui -- соберите libmui, как общедоступную библиотеку gcc -shared -o libmui.so.3.7 *.o ln -s libmui.so.3.7 libmui.so ln -s libmui.so.3.7 libmui.so.3 cp -d libmui.* /usr/lib cd ../man make install.man ldconfig

cd ../progs/demos/ideas make ./ideas -- проверьте компиляцию примеров -- смотрите, какие библиотеки должны быть использованы (-lX11 ...) в -- файлах Makefile. Программа Qt tmake доступна на www.troll.no, -- это более быстрый способ сделать Makefile, но вам нужно будет отредактировать его -- и добавить -l, если необходимо.



Установка Mesa


Примечание: Она дает вам файлы libGLU*, которые отсутствуют в XFree86. Полностью деинсталлируйте все библиотеки Mesa, которые могут идти со Slackware:

removepkg mesa

Процедуры установки различаются для разных дистрибутивов. Если нет никакого способа начисто удалить существующие библиотеки Mesa, тогда по крайней мере найдите, где они установлены: обычно в /usr или /usr/local. В примере ниже подразумевается, что библиотеки установлены в /usr. Установка над старой версией скорее всего безопасна. Ищите /usr/lib/libMesa* или /usr/local/lib/libMesa*

cd /usr/src tar -xvzf MesaLib-3.3.tar.gz cd Mesa-3.3 ./configure --prefix=/usr make make install

В этом месте, Mesa установила свою собственную версию подключаемого файла glx.h, заменив ту, которая была установлена с XFree86. Это вызовет проблемы с компиляцией некоторых программ, что можно исправить: скопируйте подключаемые файлы GL из каталога исходных текстов в каталог подключаемых файлов:

cp /usr/src/release/xc/include/GL/*.h /usr/X11R6/include/GL



Установка Qt


cd /usr/local tar -xvzf qt-x11-2.1.0.tar.gz mv qt-2.1.0 qt cd qt

Проверьте qt/configs/linux-g++-shared и убедитесь, что там нет ключей содержащих слово Mesa, например -lMesaGL -lMesaGLU должны быть -lGL -lGLU. Прочитайте файл INSTALL об установке переменных окружения.

./configure make

-- компиляция расширений opengl cd extensions/opengl/src

Проверьте Makefile и убедитесь, что там не содержится слов Mesa.

make ldconfig

cd ../examples Попробуйте собрать и запустить примеры.



у вас уже есть установленная


Если у вас уже есть установленная версия XFree86, вы можете переместить ее или удалить:


cd /usr mv X11R6 X11R6-old cd /etc mv X11 X11-old


Если это расположение неправильно для вашего дистрибутива Linux, вы должны их найти - попробуйте посмотреть в /var



cd /usr/src mkdir release cd release tar -xvzf X401src-1.tgz tar -xvzf X401src-2.tgz tar -xvzf X401src-3.tgz tar -xvzf doctools-1.2.tar.gz

-- распаковка страниц руководства (фактически, glx страницы уже есть) tar -xvzf mangl.tar.Z tar -xvzf manglx.tar.Z tar -xvzf manglu.tar.Z


Файл должен быть отредактирован, чтобы позволить установить эти страницы руководства с остальной частью дистрибутива:


cd xc/doc/man/GL Редактируйте файл: Imakefile SUBDIRS = glx gl glu


Когда вы распакуете файлы man*.tar.Z (см. выше), будут добавлены два новых каталога: gl и glu.



cd /usr/src/release cd doctools-1.2 make make install cd .. cd xc make World -- перед установкой убедитесь, что вы переместили или удалили прежнюю установку X make install make install.man


Когда X установлен и выполняется (позже), попробуйте использовать программу xman, чтобы просмотреть руководства gl,glx,glu и glut из секции 3.


Загрузка пакетов программ


Прежде всего драйверы OpenGL для видеокарт Nvidia требуют систему с ядром 2.2.12 или выше. Если вы не имеете его, тогда обновите вашу систему, а это уже тема другого HOWTO! Но, первый шаг должен быть сделан - это загрузка нового ядра с сайта:

http://www.kernel.org/

Также требуется XFree86 4.0 или выше, предпочтительнее 4.01. Его инсталляция будет описана позже.

Пакеты программ.

XFree86 4.0.1.

XFree86 содержится в трех файлах:

X401src-1.tgz

X401src-2.tgz

X401src-3.tgz

doctools-1.2.tgz

Doctools используется для подготовки X документации.

ftp://ftp.xfree86.org/

Включает glX, интерфейс для OpenGL X. Каждая графическая оконная система (MS Windows, X и т.п.) предоставляет платформенно-определенный интерфейс между OpenGL и системой, чтобы обеспечивать отображение GL контекста в окнах.

Страницы руководства OpenGL.

XFree86 идет только со страницами руководства glX. Если вы хотите полностью установить страницы руководства OpenGL, вы должны получить их сами.

mangl.tar.Z

manglx.tar.Z

manglu.tar.Z

ftp://sgigate.sgi.com:~ftp/pub/opengl/doc/

Эти страницы руководства представлены в формате, готовом для распаковки в каталог XFree86, см. ниже.

Mesa 3.3.

MesaLib-3.3.tar.gz

http://mesa3d.sourceforge.net/

Обеспечивает libGLU (GL Utility). GLU - библиотека предоставляет высокоуровневые функции для приложений. libGL.so - непосредственно OpenGL, является низкоуровневой библиотекой. Большинство приложений используют высокоуровневые библиотеки, подобные GLU.

Если у вас уже есть XFree86 4, необходимо установить библиотеку Mesa. GLU - стандартная часть большинства установок OpenGL и, как ожидается, она будет присутствовать в большинстве программ.

GLUT

glut-3.7.tar.gz

http://reality.sgi.com/mjk/glut3/

Glut обеспечивает графическую систему независимым интерфейсом между OpenGL и любой поддерживаемой графической системой. Например, в X Window скрываются подробности использования функций glX, при создании окна. Программисты могут один раз написать код и скомпилировать его для работы в MS Windows или X и т.п., при условии, что библиотека GLUT доступна на данной платформе.

Подобно GLU, GLUT - стандартная часть большинства установок OpenGL. Большинство примеров программ и даже некоторые приложения, сделаны с использованием libglut. Например, Руководство по программированию OpenGL (red book) использует Glut для своих примеров.

Вам нужно установить GLU и GLUT, если вы хотите иметь возможность компилировать большинство программ, которые можно свободно загрузить (исходный код). Некоторым программам могут даже быть необходимы эти библиотеки, если они связаны с ними динамически.

Qt

qt-x11-2.1.0.tar.gz или более новая версия

http://www.troll.no/


Qt - кросс- платформенная библиотека для создания GUI, которая позволяет легко создавать X приложения со стандартными элементами графического интерфейса (widget) - меню, полосы прокрутки, списки, флажки, кнопки, окна с MDI интерфесом и многие другие графические элементы. Используя Qt, программа может компилироваться в MS Windows и в X, без изменения кода. Это очень популярная GUI библиотека, и она использована для создания основных библиотек KDE (http://www.kde.org/).

Qt имеет расширение (qt/ententions/opengl) для OpenGL, которое обеспечивает создание OpenGL контекста в программах, написаных с помощью Qt. Она обеспечивает некоторую альтернативу GLUT и использует функции glX напрямую, плюс, добавляет полный доступ к qt элементам и кросс-платформенную переносимость.

Она полезна, если вы хотите компилировать или разрабатывать программы, основанные на Qt.

Драйверы NVIDIA.



NVIDIA_kernel-0.9-4.tar.gz



NVIDIA_GLX-0.9-4.xfree401.tar.gz



http://www.nvidia.com/

Ядро должно быть по адресу: /lib/modules/2.2.16/video/NVdriver, а файлы libGL.so и libGLcore.so в каталоге /usr/lib/ и библиотека Mesa должна находится там же. libGL.so - OpenGL. Эти файлы являются средствами nvidia для аппаратного ускорения OpenGL.

XFree86 4.0.1, кажется, содержит ядро Mesa 3.3, однако в нем отсутствуют некоторые файлы libGLU*, которые требуют многие программы.


Заключительные комментарии


К данному моменту вы должны иметь полностью функциональную систему OpenGL для выполнения и разработки OpenGL приложений.



Addmail?


Никаких вопросов - это все для автоматизации - вы лучше будьте уверены относительно того, что хотите сделать ... т.к. это МОЖЕТ быть троянский конь, знайте :))) (это не так, но вам необходимо знать, как создаются скрипты, прежде чем задавать вопросы). Он достаточно прост, чтобы понять - вот почему в нем я поместил комментарии . *ЕСЛИ* вы будете распространять этот скрипт - оставьте, пожалуйста, в нем мой Copyright! спасибо :).



Автоматизация


Хорошо, теперь, когда все, описанное выше, работает ... (если не работает - даже не думайте об автоматизации, пока все не будет работать ...) - теперь - нам нужен некоторый скрипт, чтобы избежать головной боли у "mailadministrator'а" или root'а, при добавлении пользователей в файл procmailrc ... Ниже будет приведен пример для "более опытных пользователей", так как некоторые вещи ДОЛЖНЫ быть изменены ... - это пример для "Способа B - строки Subject". Он может быть легко приспособлен к "Способу A". "Способ B" будет больше использоваться (он более дешев), чем способ "A" - лично я решил использовать "Способ B" ...



Что вы подразумеваете под "анонимным mailserver'ом"?


Вы можете создать учетную запись типа "anon0001@yourdom.dom" - и всю входящую на этот адрес почту пересылать на другой электронный адрес... никто не может просмотреть файл .procmailrc, и тогда ТОЛЬКО ВЫ будете знать этот адрес !



Дополнительная учетная запись на вашем компьютере


Вам нужно создать дополнительную учетную запись на компьютере. Я использовал в качестве примера (в этом HOWTO) "mailservice". Это может быть также "mailserver" или "mailtousers" - это только несколько разных имен, которые вы можете использовать.

! Создание не требует наличия прав root'а !

Вся почта для пользователей будет отправляться, при помощи этой учетной записи, на ваш компьютер или к пользователям не вашей системы ;). Только создайте ее как обычный пользователь. Вам нужно проверить все под этой учетной записью, а почтовый "администратор" может использовать эту учетную запись, чтобы управлять почтой, даже без прав root'а .. так - хорошая защита!



Файл "nosuchuser"?


Вы можете помещать в него все, что хотите - поместите туда некоторую необходимую информацию так, чтобы автор письма знал, что случилось с его "недошедшей" почтой.



Файлы "crontab"


Если вы не знаете, как работает crontab :), лучше почитать руководство :) ... Вам нужно создать файл "checkmail", который будет смотреть, если есть соединение с Интернет... - я использую ppp соединение :), Ниже приведен пример того, как, используя cron, проверять каждые 10 минут, имеется ли соединение ppp, и если оно есть, доставлять почту.


checkformail

Файл .checkformail будет вызываться (он должен быть исполняемым) - и будет проверять, есть ли ppp соединение. Если оно есть, то будет производиться доставка почты. Crontab будет использовать этот файл, если вы используете файл cronentry (см. ниже) ...

the .checkformail file will be called (needs to be executable as well) - and will look if the ppp link is up. If it is up - then it will fetch for mail. Crontab will use this file when you are using the below cronentry ...

"(*** < file > *** code ***) .checkformail"



Fetchmail


Я использовал версию 1.9 patch level 9 ... Я нашел ее на сайте sunsite.unc.edu, и использую только эту программу для забора почты в моих примерах - если вы хотите использовать другую, то вам выбирать! Вы можете узнать о дополнительных возможностях, прочитав man Fetchmail :). Вам нужно инсталлировать ее, будучи root'ом - так как я знаю, что это будет работать наверняка :)))



Имеются два разных способа ...


Способ 'A' - назовем его "(m(A))".

Почтовая система будет обращаться к заголовку письма и смотреть строку "to:" Это - лучший путь, так как это "настоящий почтовый адрес". Вы будете нуждаться в другой учетной записи на некотором сервере *И* вам будет нужен DNS (MX) вход (например, ваш собственный домен). Если системный администратор согласится помочь вам с этим, тогда не будет проблем! Системный администратор должен перенаправлять ВСЮ посланную почту на ваш почтовый домен (MX) -> на вашу учетную запись. Ему понадобится некоторое время, чтобы сделать это :) так будьте с ним любезны :)) Спасибо моему сисадмину (Fred), я получил свой почтовый домен. DNS вход может кое-чего стоить, и вы должны решить, брать его или нет.

Способ 'B' - назовем его "(m(B))". Почтовая система будет обращаться к строке subject и отправлять сообщения пользователю, обозначенному в этой строке. Если пользователь не найден, система будет отсылать почту назад. Вам будет нужен pop сервер с одной пользовательской учетной записью, и не будет нужен собственный DNS, не надо быть любезным с вашим сисадмином, который назначает почтовый адрес :). Вы можете использовать общедоступный почтовый сервер, а также ваш собственный или некий частный почтовый сервер. Для этого можно даже жертвовать собственным почтовым адресом :). Сначала я использовал первый способ, который работал больше года ... Я знаю, что это плохо, но не заставляю вас идти этим путем, так что не ругайте МЕНЯ - т.к. я только предлагаю некоторые решения проблем с почтой :) - вы можете использовать способ A.



Я меня все есть, что теперь?


Сейчас создайте дополнительную учетную запись - вы получите почтовый адрес, и/или DNS запись и перенаправление на вашу учетную запись на сервере... Также установите программы Procmail и Fetchmail.

Вам нужно создать файл .procmailrc, который будет содержать информацию о "доставке почты" вашим пользователям.

Вам нужно создать файл "nosuchuser", чтобы автор письма знал, что его почта не дошла к пользователю, если такого пользователя нет.

Для лучшей работы :) можно использовать crontab для проверки почты каждые XX минут, если у вас есть доступ к интернет.



Как я могу получить "домен" ?


Спросите провайдера - он должен помочь вам с этим. Может потребоваться несколько дней и даже недель для выяснения этого в Internic - ваш провайдер может помочь.



"Каркас (скелет)"


Необходимо иметь файл заголовка и файл конца.


Файл .procmailrc-header (заголовок)

Этот файл будет содержать заголовки и список пользователей .... Здесь будут добавленные и удаленные пользователи, поэтому это важный файл ... - лучше всего делать его резервную копию каждый раз, когда вы добавляете пользователя ... - когда-нибудь МОЖНО сделать что-то не так, и система начнет работать неправильно ...

"(*** < file > *** text ***) .procmailrc-header"



Компьютер


Может быть любой ... даже 8086 ... - но предпочтительней - 80386 :). Чем быстрее машина, тем быстрее выполняются на ней программы.



Конец


Это звучит как конец ... Если вы нашли любые нежелательные ошибки (или особенности :)), то свяжитесь со мной ... отправляйте мне любые комментарии и предложения. Если вам все не надоест после чтения этого документа, пожалуйста, посетитте http://tuc.ml.org/ хе-хе-хе.

Мои благодарности:

Hannes van de Vel: за поддержку, Tetsu Isaji: японский перевод и уведомление меня об ошибках :), Greg Hankins: за уведомление меня о нескольких ошибках в sgml версии, Linus Torvalds: конечно ... без его помощи этого howto не было бы вообще!



Linux?


Свободно распространяемая unix-подобная, posix-совместимая система - создатель Linus Torvalds ... Почему вы читаете этот HOWTO, если даже не знаете, что такое Linux ?



Локально мои домены работают, но удаленно нет


проверьте ваш файл "sendmail.cw", т.к. домены должны быть добавлены в него !



Мои пользователи могут писать/посылать почту тоже?


Это не имеет никакого отношения к тому, что я объяснил вам, читайте руководство к sendmail ... - чтобы ПРИНИМАТЬ почту, она должна быть доступна на сервере.



Моя кошка сдохла


Ну так в следующий раз не печатайте этот HOWTO на 200 граммовой бумаге, т.к. 10 страниц этого HOWTO будут весить 2 кг. - для кота это СЛИШКОМ ТЯЖЕЛО !



Моя собака сдохла


хмм - не могу ничего сказать по этому поводу ... Похороните и все ...



На сайте администратора


При использовании способа "A" необходимо сделать следующее ... на администраторском сайте вся почта для вашего домена должна идти на одного пользователя. Это довольно просто, и как только вы сделали - это будет работать.

Это возможно только при использовании более-менее новой версии sendmail; старый sendmail, скорее всего, работать не будет. Почитайте в руководстве о том, как заставить работать перенаправление почты.


(старый sendmail) Добавьте некоторые строки в файл sendmail.cf

Добавте следующие строки в ваш файл /etc/sendmail.cf, таким образом будет прочитан файл доменов .

"(*** < file > *** add ***) /etc/sendmail.cf"

# База данных обработаных доменов

Kmaildomains btree /etc/maildomains.db

# Добавте эти строки *В* Ruleset 98 !

R$+ < @ $+ . > $: $1 < @ $2 > . R$+ < @ $+ > $* $: $(maildomains $1@$2 $: $1 < @ $2 > $3 $) R$+ < @ $+ > $* $: $(maildomains $2 $: $1 < # $2 > $3 $) R$+ < @ $* > . $: $1 < @ $2 . >


(новый sendmail) Добавьте некоторые строки в файл sendmail.cf

Это работает с более новой программой sendmail (проверено с sendmail версий 8.8.7, 8.8.8). Игнорируйте способ A и добавьте следующие строки ...

"(*** < file > *** add ***) /etc/sendmail.cf"

# База данных обработаных доменов

Fw/etc/sendmail.cw Kvirtuser btree /etc/maildomains.db

*OR*

Fw/yourhomedir/sendmail.cw Kvirtuser btree /yourhomedir/maildomains.db


(новый sendmail) отредактируйте файл /etc/sendmail.cw (или /ваш_каталог/sendmail.cw)

Если ваш файл sendmail.cw расположен в другом месте, то замените "/etc/sendmail.cw" на "/ваш_каталог/sendmail.cw". Поместите этот файл в домашний каталог. Необязательно делать это под правами root'а. Более того, это может составить угрозу системе безопасности, если не используется должным образом!

Этот файл может уже существовать, или должен быть создан. Если он уже существует, убедитесь, что Вы не записываете поверх него другие данные - или можете почитать мою прекрасную оговорку (про ответственность) :)

Во-первых, создайте файл /etc/sendmail.cw, который будет использоваться, чтобы переслать почту, предназначенную домену, определенному пользователю ... имеется пример ... (как вы уже знаете, имя "mailservice" может быть любым, какое захотите - оно может быть даже вашим именем входа в системе (как мое - freaker).


"(*** < file > *** text ***) /etc/sendmail.cw"

mydomain.dom mailservice


создание файла /etc/maildomains

Сначала создайте файл /etc/maildomains, который будет использоваться, чтобы переслать почту, предназначенную домену, определенному пользователю ... имеется пример ... (как вы уже знаете, имя "mailservice" может быть любым, какое захотите - оно может быть даже вашим именем входа (как мое - freaker). (поместите файл /etc/maildomains в каталог /ваш_домашний_каталог/maildomains, как сказано выше, лишь измените соответствующим образом пути :)

Со СТАРЫМИ версиями sendmail:

"(*** < file > *** text ***) /etc/maildomains"

mydomain.dom mailservice


С более НОВЫМИ версиями sendmail:

"(*** < file > *** text ***) /etc/maildomains"

@mydomain.dom mailservice


пусть работает !

Со старыми и новыми версиями sendmail Вы должны сгенерировать базу данных btree. Для этого сделайте следующее:

With the old & new sendmail versionsyou need to generate the btree (database) files, you'll need to do the following:

cd /etc (or /yourhomedir) makemap btree maildomains < maildomains

и после этого перезапустите sendmail. Все должно РАБОТАТЬ ! удачи :)


Необходимо ли каждому пользователю иметь возможность входа в мою систему?


Нет .. но, для пользователей очень тяжело вообще не иметь доступа к интернет :) ... У вас может быть сеть с маскарадингом, и ваш компьютер может быть подключен к этой сети, поэтому пользователям надо будет отправлять почту подобным образом; можно также создать связь между почтой и доской объявлений; вы можете пересылать почту на шлюз fidonet :) Много разных причин для того, чтобы не давать пользователям возможности входа в систему.



Почему этот howto больше всех отличается от остальных?


потому что иногда чтение простого howto МОЖЕТ быть скучным ... я хотел добавить сюда кое-что свое ...



Почему, когда я позже делаю некоторые добавления, они оказываются удаленными ?


Внимательно читайте пункт 5.2, и вы увидите почему ...



Почему ты такой жестокий?


Я не жестокий :) я хороший :) я наилучший парень в мире, во вселенной! ТЕПЕРЬ ПРОВАЛИВАЙТЕ! (я только хотел в полной мере осветить тему и не слишком далеко уходить от нее - так вот :) это все).



Почему вы так "криво" используете это?


Потому что я не хочу тратить деньги - и потому, что хочу использовать это "криво" - я использую это - так к чему беспокоиться?



Почтовая учетная запись


Вам обязательно нужно иметь почтовую учетную запись, через которую можно работать с вашей почтой. Сервер должен поддерживать протокол POP. Вы должны иметь возможность работать с этим сервером, когда захотите (чтобы пользователи на нем могли посылать почту круглосуточно). Это может быть бесплатный почтовый сервис, а может быть коммерческий - иметь почтовую учетную запись на нем более, чем достаточно. По способу B (с использованием поля subject) вам не нужно чего-то больше, по способу A (с использованием строки to:) вам необходимы некоторые настройки - это будет описано.


DNS запись (MX)

Нужно, чтобы работал ваш собственный домен - почтовый домен ... это необходимо, так как администратор сервера не может использовать собственный домен для ваших пользователей - т.к. может возникнуть конфликт имен ваших пользователей с пользователями в его домене. Ваши письма фильтруются на том сервере. Это может что-то стоить - вы должны попросить сисадмина добавить адрес, указывающий на его сервер, однако - это должен быть другой домен.


Перенаправление на вашу учетную запись

Системный администратор должен отправлять *ВСЮ* почту вашего домена на ВАШУ учетную запись ... - это просто для него, когда он знает, как это сделать .. иначе ему необходимо прочитать руководство по sendmail (или qmail). Вы будете получать почту на вашу учетную запись и фильтровать в своем домене.



Помогите!


Внизу я опишу некоторые общие проблемы. Если у вас появятся другие проблемы, НЕ описанные в этом разделе, то пишите мне - и я добавлю их, упомянув, возможно, ваше имя/email :). **ДО** того, как написать мне - пожалуйста, посмотрите, не забыли ли вы чего-нибудь - и если хотите получить какую-либо помощь от меня, посылайте мне более детальную информацию, включая скрипты, и то, что вам необходимо. Не надо присылать никаких бинарных файлов - я их все равно не буду запускать.



Этот HOWTO предназначен для всех


Этот HOWTO предназначен для всех пользователей и серверов (linux), не имеющих постоянного подключения к Интернет ... У вас есть группа пользователей или организация, и вы желаете, чтобы все ваши пользователи имели адрес, по которому можно с ними связаться (e-mail), но вы не хотите платить за круглосуточное прямое подключение или за почтовые учетные записи... Или у вас есть внутренняя сеть - с сервером, использующим маскарадинг, и вы хотите, чтобы у всех ваших пользователей был e-mail, тогда можно использовать этот способ, чтобы сделать это. Лично я использую этот способ, чтобы у моих пользователей или членов группы была почта без круглосуточного подключения; т.к. наша группа некоммерческая - и у нас нет денег, чтобы платить за прямое подключение, с мгновенным доступом к электронной почте, и за разные ip адреса. Каждый получает адрес электронной почты, даже без доступа к интернету. Те, кто имеет доступ к интернету, могут получать почту на свой персональный адрес - через систему, описанную ниже. Ваши пользователи могут посылать почту, как они делали до этого, т.к. ваша система поддерживает передачу почты пользователей. Единственная вещь, которая должна быть изменена для пользователей - это то, что они добавляют свой адрес электронной почты (описывается ниже): 1 способ - в поле subject, 2 способ - в строке заголовка - "to:".

Предварительный выбор


Хорошо, как эта система работает ? Что вы можете сделать с ней ? Так или иначе, что это такое ? и ... - я имел обыкновение читать это ??? ... на все вопросы - есть ответы ...



Procmail


Я использовал версию 3.10 - опять же найденную на sunsite.unc.edu, и мне нравится он, как лучший агент доставки почты ... Лучше использовать его, чем "оригинальный" mda. ... То же самое, что и выше - procmail может устанавливаться под root'ом или под обычным пользователем, но :) лучше устанавливать под root'ом - т.к. я знаю, что это будет работать наверняка.



Пункты, представляющие интерес ...


Есть организация, для каждого в ней имеется адрес электронной почты, таким образом с ними можно контактировать.

Служба анонимной почты. Никто не сможет прочитать ваш "файл конфигурации почтовой системы" - никто не узнает, куда почта отсылается/пересылается.

Группа, которая не получает достаточно денег (не смейтесь), или работает бесплатно, а также если вы не ХОТИТЕ тратить на интернет деньги (хе-хе), но все же хотите дать каждому адрес электронной почты.

Сеть с маскарадингом - с сервером, соединенным с интернетом, необходимо использовать такую сеть, чтобы дать возможность пользователям иметь почту.

Вы хотите поместить некоторые "автоматически отправляемые" документы - как у меня сделано с моим HOWTO, статистикой и т.п. ... например, "info@yourmail.dom" или "document1@yourmail.dom".

Вам нужна только одна учетная запись на "главном" сервере, чтобы забирать с него почту, и около 200 учетных записей, которые вы можете создать на вашем сервере ...

Я использовал способ "B", было около 300 почтовых учетных записей - с сайтом; на 80486DX4-100 обработка занимала 1 минуту.



Работа с почтой в Linux в автономном режиме


Gunther Voet
freaker@tuc.ml.org


Перевод: Александр Ермолаев, ASPLinux

Используйте вашу почтовую систему в автономном режиме, получите почту для нескольких пользователей, имея только один почтовый ящик, без круглосуточного подключения к сети. Если вы не можете платить за постоянное круглосуточное подключение к сети, а пользователи хотят получать почту, используя ваш почтовый ящик; и вы не хотите платить за несколько почтовых ящиков вашему провайдеру, то используйте эту систему, имея только один почтовый адрес для нескольких почтовых ящиков ваших пользователей. Он будет круглосуточно доступен на сервере, где на вашу учетную запись будет приходить почта.

Разд. Copyrights



Разве вы не получали жалоб на свой чрезмерный язык?


Нет еще, но мог бы, я фильтрую все, что содержит слова 'чрезмерный' и 'язык' ('excessive' и 'language') :) я не знаю :))



Скрипт addmail


Этот скрипт будет добавлять пользователя в файл заголовка. Присоединим заголовок и конец друг к другу - таким образом, получим полный файл .procmailrc. Строка, начинающаяся со знака "#", означает комментарий, и он не обязателен - это только информация для вас. :)

"(*** < file > *** code ***) addmail (* chmod 500 *)"

#/bin/sh # # Copyright (c)1997 by Gunther Voet. rev 1.0.1 # пожалуйста, оставьте этот Copyright, когда будете распространять этот файл

echo "" echo "Addmail v1.0.1 by Gunther Voet, Freaker / TuC'97-98 (21/04/97)" echo ""

if [ $1 ]; then

if [ $2 ]; then

# создать резервную копию !

cp /home/mailserv/.procmailrc-header /home/mailserv/.procmailrc-backup

# Добавить (>>) информацию в заголовочный файл ...

echo ":0" >> /home/mailserv/.procmailrc-header echo "* ^Subject:.$1" >> /home/mailserv/.procmailrc-header echo "! $2" >> /home/mailserv/.procmailrc-header echo "" >> /home/mailserv/.procmailrc-header

# Скопировать содержимое заголовочного файла в .procmailrc - # и добавить к нему окончание (.procmailrc-footer)

cat /home/mailserv/.procmailrc-header > /home/mailserv/.procmailrc cat /home/mailserv/.procmailrc-footer >> /home/mailserv/.procmailrc

# Сделаем владельцем "mailserv" и чтение/запись ТОЛЬКО для группы user ...

chown mailserv /home/mailserv/.procmailrc chgrp users /home/mailserv/.procmailrc chmod 600 /home/mailserv/.procmailrc else echo "No DESTINATION mail address has been given ..." fi

else echo "usage:" echo "" echo "syntax: addmail from_user to_user(domain)" echo "" echo "example: addmail freaker freaker@myemail.dom" echo "" fi

Теперь этот скрипт будет добавлять информацию о пользователе и почтовый адрес в заголовочный файл, затем все это копируется в файл .procmailrc, после этого туда будет добавлен конец файла, и вы получите полный файл .procmailrc. Если вы захотите удалить пользователя, то просто отредактируйте файл .procmailrc-header и при следующем добавлении нового пользователя он будет удален из файла .procmailrc. Чтобы удалить его немедленно, надо удалить пользователя из обоих файлов - .procmailrc и .procmailrc-header.

Я думаю, что вы достаточно умны, чтобы написать скрипт, который автоматически добавляет пользователей при использовании обоих методов, при выполнении команды "adduser".



Скрипт автоматизации не работает:


файл сделан исполняемым?

путь к вашему shell - /bin/sh ?



Создание файла .fetchmailrc


Вам будет нужно создать файл .fetchmailrc, который будет содержать информацию (имя пользователя и пароль, а также агент доставки почты (mda), чтобы ее обрабатывать). Здесь дан пример файла ...

"(*** < file >*** text ***) .fetchmailrc"



Создание файла .procmailrc


Этот управляющий файл будет пересылать всю почту пользователям, указанным в нем. Как описано выше, имеется два способа - 1), использующий строку заголовка "to:", и 2), использующий поле "subject". Файл будет содержать имя пользователя, которому надо отправлять сообщения. Все знаки "#" означают комментарий и абсолютно не нужны, когда это не требуется - они приведены только для того, чтобы вы знали, что я делал ... - вы также, с помощью chmod, должны установить на файл права (600), чтобы группа и остальные не знали о частных адресах эх :) ... Требуется также принадлежность этого файла пользователю (например, "mailservice") :)). Файл "nosuchuser" отсылает письмо назад автору - если пользователь не найден в файле procmailrc ... - это делается для того, чтобы автор письма знал, что письмо не дошло до получателя.


для способа A

"(*** < file > *** text ***) .procmailrc"



Требования


Хорошо, вам нужен компьютер с Linux'ом, с соединением с Интернет! - вам вероятно нужен модем, правильно? Телефонная линия или любой другой способ соединения с сервером. Вы должны также иметь несколько программ типа Fetchmail, Procmail, дополнительную учетную запись и почтовую учетную запись, или DNS с почтовой учетной записью.



Вещи, которые вы должны знать


Не всякая организация, предоставляющая почтовый сервис (бесплатный) будет рада, когда вы соберетесь закачивать почту другим пользователям, или задумаете запустить анонимный почтовый сервер. Таким образом, пожалуйста, свяжитесь с вашим администратором почтового сервера до того, как захотите сделать это.

Это медленнее, чем прямой круглосуточный доступ, т.к. ваш сервер должен сначала установить соединение, прежде чем будет обрабатывать почту.

Потребуются некоторые усилия, чтобы организовывать, обрабатывать сообщения, и добавлять новых пользователей ... вам будет необходимо работать с этим! - это не происходит автоматически. (хотя, я сделал это полуавтоматически на моем сервере :), вы можете тоже попробовать).

Вам потребуется свободное место, когда будет много пользователей - можно продолжать работать на сервере ... когда они посылают файлы - будьте уверены, что у вас имеется достаточно свободного места.

Вся почта будет передаваться за раз, таким образом, последнее полученное сообщение будет послано получателю последним. "Первым вошел - первым вышел (FIFO)".

В первом способе (to:) нет проверки имени пользователя, но во втором (более дешевом) способе - пользователи не могут использовать строку subject, т.к. она будет задействована, чтобы послать почту получателю. Многие пользователи забывают использовать "subject" ... - они должны это точно знать.

Если вы получаете почту, (например 4 раза в день) - убедитесь, что она будет забираться регулярно, каждые 6 часов. Тогда процесс будет проходить более плавно.

Вы МОЖЕТЕ использовать эту систему и в онлайновом режиме :), так как почта будет забираться каждые XX минут. Но если вы в онлайне - зачем использовать другой сервер ?



Вы можете мне помочь, обнаружить почтовую учетную запись?


Нет! - этот howto для ВАШЕЙ стороны, я не забочусь о вашем провайдере, нельзя никак получить ваш адрес электронной почты.