Kак объединить в сеть разрозненные группы компьютеров, когда они используют принципиально различные протоколы? Как совместить протоколы Appletalk, TCP/IP и Appleshare для организации общего доступа к файловому серверу с компьютеров Macintosh Apple, когда файловый сервер отличается от Apple? Как настроить Appletalk-совместимые принтеры, чтобы работать с ними смогли не только пользователи Macintosh?
ПРЕДЫСТОРИЯ
Я начинал с сети Macintosh, но вскоре пришлось перейти к рабочим станциям UNIX, серверам Linux и платформам Windows, а простая сеть постепенно превратилась в клубок проблем с кабелями и интеграцией сетевых компонентов и программных средств. То обстоятельство, что изначально это была сеть Macintosh, налагало отпечаток на ее дальнейшее развитие и затрудняло организацию совместного использования файлов. Продукты, о которых я расскажу ниже (см. Таблицу 1), были апробированы и отклонены из-за неудовлетворительных параметров производительности, времени безотказной работы и просчетов, сделанных мной или авторами программы.
Таблица 1. Продукты для организации совместного доступа к файлам. |
Первые три продукта предназначены для Macintosh; последний, CAP, — для платформы UNIX. CAP казался наиболее эффективным программным средством, до тех пор пока не потребовалось внести изменения в сеть. Выявленные мной просчеты состояли в следующем: в пакете Softwindows отсутствовала возможность осуществлять сетевое взаимодействие с хостом Macintosh, а CAP не позволял работать с CD-ROM, дискетой или жестким диском, содержащими иерархическую файловую систему Macintosh (Hierarchical File System, HFS), которая представляет собой часть OC Macintosh.
СУТЬ ПРОБЛЕМЫ
В результате изменений сеть включала все основные рабочие станции UNIX, несколько компьютеров под Windows и Macintosh Apple, а также портативный компьютер Macintosh Apple Duo. Рабочие станции UNIX могут работать с общими файлами с помощью сетевой файловой системы (Network File System, NFS). Разделение файлов на машинах Windows и UNIX возможно при установке общей файловой системы Internet (Common Internet File System, CIFS) на компьютерах Windows и Samba на машинах UNIX. Однако наличие компьютеров Macintosh вновь ставило проблему совместного использования файлов. К тому же Macintosh Apple Duo не имел ни CD-ROM, ни дисковода для дискеты, что также означало необходимость дальнейшей модификации сети. Наконец, требовалось обеспечить доступ к Postscript-совместимому принтеру Okidata OL610e/PS LED. Его можно либо непосредственно подключить к Duo, либо, как и было сделано, использовать в качестве сетевого с доступом по протоколу Appletalk.
С учетом всего сказанного итоговое решение должно было поддерживать протокол Appletalk для обеспечения совместного доступа к принтеру и подключенным к сети компьютерам Macintosh, а также протокол Appleshare для совместного использования файлов компьютерами Apple и остальной частью сети. Кроме того, из-за особенностей Macintosh Duo, требовалась поддержка файловой системы HFS для чтения по сети компакт-дисков Macintosh CD.
Только одна машина могла удовлетворять всем этим требованиям — та, что работает под управлением операционной системы Linux. Конечно, сейчас все это можно сделать и с помощью FreeBSD, но несколько лет назад только Linux справлялся с подобными проблемами. Linux и сейчас остается моим основным инструментом для решения задач интеграции и межсетевого взаимодействия Apple Macintosh, UNIX и Windows.
РЕШЕНИЕ
Оборудование. Для того чтобы портативный компьютер Macintosh Apple Duo и принтер Okidata Appletalk LED могли полнофункционально работать в сети, потребовалось небольшое количество дополнительного оборудования для соответствующей конфигурации сети.
Дело в том, что Macintosh Duo не имеет ни порта SCSI, ни сетевого адаптера. Современные компьютеры Apple этих недостатков лишены, но не мой старенький Duo.
- Устройство SCSI Micro Dock связывает Duo с диском SCSI (внешний CD-ROM) и системной шиной Apple Desktop Bus (порт ADB для клавиатуры и питания).
- Сетевой адаптер Dayna Pocket SCSI/Link позволяет подключить Duo по сети Ethernet к центральному концентратору с помощью неэкранированной витой пары по 10BaseT.
Чтобы принтер Appletalk работал в сети TCP/IP, необходим мост. Я использовал устройства, перечисленные ниже (но возможны и другие схемы). В принципе можно было бы обойтись и без них, так как в настоящее время компьютеры Apple поддерживают функции моста между Appletalk и TCP/IP, но в случае старого ПК приходится прибегать к различным уловкам.
- Соединители Farallon PhoneNet позволяют подключить принтер Okidata LED к сети.
- Устройство Dayna Mini Etherprint обеспечивает сопряжение между сетью Appletalk и сетью Ethernet.
Не все из этого оборудования удастся теперь приобрести, но взамен всегда найдется что-нибудь подходящее. Так, компания Farralon выпускает множество различных адаптеров, которые можно с успехом использовать вместо адаптеров Dayna.
Программное обеспечение. Чтобы надлежащим образом сконфигурировать сервер Linux Appleshare, нужно было найти все необходимые исходные тексты ядра системы и менеджера пакетов (Resource Pool Manager Server, RPMS), но теперь полный комплект включен в стандартный дистрибутив Red Hat 7.0 и средства инсталляции PowerTools. Для конфигурации сервера Appleshare понадобится Red Hat Package Management (RPM) и следующие пакеты.
- Kernel Source - исходные тексты ядра системы содержат драйверы устройств для поддержки HFS и других файловых систем и сетевых протоколов. Эти модули нужно скомпилировать в ваше ядро. Все драйверы HFS являются экспериментальными.
- hfsutils - утилиты для работы с иерархической файловой системой HFS обеспечивают чтение и запись на дискеты и CD-ROM Macintosh.
- Netatalk - набор программных средств Open Source Appletalk/Appleshare для доступа к внешним устройствам и прочему оборудованию Apple Macintosh по протоколу Appletalk.
После установки перечисленного программного обеспечения сервер сможет взаимодействовать с клиентами по протоколу Appletalk, поверх TCP/IP и Ethertalk. Дополнительно он может работать с HFS, Appleshare и другими файловыми системами. Это именно то, что требовалось.
ДЕТАЛЬНАЯ КОНФИГУРАЦИЯ
Конфигурация ядра. Я использовал исходный код ядра 2.4.x из пакета RPM в базовом дистрибутиве Red Hat 7.0 на дисках CD. После выполнения обновления до Red Hat 7.1 версия ядра стала 2.4.2-2. Ниже приводится последовательность действий по конфигурации ядра для работы с протоколами Appletalk и HFS. Предположим, что пакет уже установлен, и вы знаете, что надо делать дальше. Если это не так, файл README, расположенный в одном каталоге с исходными текстами ядра, поможет это сделать:
cd /usr/src/linux make clean; make menuconfig
Рисунок 1. Конфигурация Linux Kernel v2.4.2-2. |
С помощью клавиши «стрелка вниз» выберите опции настройки сети (см. Рисунок 1). Включите модуль поддержки протокола Appletalk (см. Рисунок 2). Нажмите клавишу табуляции для выхода в главное меню. Используя клавишу «стрелка вниз», выберите File systems (см. Рисунок 3).
Рисунок 2. Конфигурация Linux Kernel v2.4.2-2. |
Выберите экспериментальный модуль поддержки файловой системы Apple Macintosh (см. Рисунок 4). Нажмите клавишу табуляции для выхода, затем еще раз воспользуйтесь клавишей табуляции для выхода, в результате чего вы получите запрос о сохранении конфигурации ядра. Выполните следующие команды:
make dep make bzImage make modules make modules_install
Рисунок 3. Конфигурация Linux Kernel v2.4.2-2. |
Теперь ваше ядро поддерживает протокол Appletalk и файловую систему HFS.
Скопируйте файлы ядра в каталог /boot, внесите изменения в файл /etc/lilo.conf, запустите lilo и перезагрузите ваш компьютер с файла README, находящегося в каталоге /usr/src/linux/.
Рисунок 4. Конфигурация Linux Kernel v2.4.2-2. |
Конфигурация файловой системы. Работа по конфигурации программного обеспечения не так уж велика по объему, но чрезвычайно важна. Далее идет описание конфигурации для поддержки Appletalk посредством Netatalk.
Сначала необходимо конфигурировать файл /etc/fstab, чтобы описать точки монтирования для всех необходимых файловых систем CD, создав каталоги /mnt/cdrom/cdfs и /mnt/cdrom/hfs. Внесение следующих дополнений в /etc/fstab сделает более удобным доступ к CD. Например, если понадобится смонтировать диск HFS, это можно будет сделать непосредственно, применив команду mount /mnt/cdrom/hfs, причем при монтировании файловой системы будут использованы соответствующий драйвер файловой системы и параметры монтирования. В файл /etc/fstab были добавлены следующие строки:
/dev/cdrom /mnt/cdrom/cdfs iso9660 noauto,ro 0 0 /dev/cdrom /mnt/cdrom/hfs hfs noauto,fork=netatalk,ro, case=asis 0 0
Конфигурация Netatalk. Netatalk конфигурируется для печати с помощью записей из файла /etc/printcap, а также из файла .paprc для указания имени принтера Appletalk из каталога буферизации печати. Этот каталог указан в поле sd= секции принтеров в файле /etc/printcap. Ниже представлен файл /etc/printcap, содержащий фильтры для печати файлов в формате Postscript при помощи сетевого соединения Appletalk (pap):
lp|ps|OL610e: :sd=/var/spool/lpd/lp: :lp=/dev/null: :pl#63: :pw#85: :mx#0: :lf=/var/spool/lpd/lpd-errs: :if=/usr/lib/atalk/filters/ifpaprev: :of=/usr/lib/atalk/filters/ofpap: :tf=/usr/lib/atalk/filters/tfpaprev:
:if — применяемый к каждому файлу фильтр. Из спецификации ifpaprev видно, что фильтр :if является входным фильтром для pap и инвертирует порядок печати; :of — выходной фильтр для pap. Фильтр :tf указывает, что именно использовать для troff или вывода страниц вручную; фильтр tfpaprev инвертирует страницы после выполнения некоторого преобразования в Postscript. Более подробную информацию о файле и его содержимом можно получить, выполнив команду man printcap. В каталоге, указанном в поле :sd, должен находиться файл .paprc, в конце которого находится имя принтера на языке Appletalk:
OL610e/PS:LaserWriter
Чтобы определять это имя, можно выполнить команду nbplkup, которая отображает имена всех устройств в сети Appletalk. Поскольку все компьютеры связаны между собой, а Netаtalk выполняется, то эту команду можно запустить, чтобы определить, все ли можно найти:
# nbplkup secretariat:Netatalk 65280.87:4 secretariat:Workstation 65280.87:4 OL610e/PS:LaserWriter 21253.82:128
Запуск Netatalk осуществляется довольно просто, поскольку команда аналогична запуску любого демона — /etc/rc.d/init.d/atalkd. Файл /etc/atalk/config можно отредактировать так, чтобы команда atalkd не запускала в фоновом режиме никаких демонов. Этот способ позволяет отслеживать ошибки в момент их появления. Подобная настройка предоставляет подробную информацию, но процесс загрузки системы происходит более медленно. Как видим, настройка довольно проста. PAPD — демон печати для протокола Appletalk, AFPD — демон Appleshare, а ATALK_BRGROUND сообщает, запущен ли демон в фоновом режиме. Во время отладки системы демон следует запускать в приоритетном режиме.
# Конфигурация Appletalk # Данный параметр необходимо изменить, если требуется увеличить максимально допустимое число подключений AFPD_MAX_CLIENTS=5 # В качестве HOSTNAME следует указать имя машины на atalk ATALK_NAME='echo ${HOSTNAME}|cut -d.-f1 ' # Запускаемые демоны PAPD_RUN=yes AFPD_RUN=yes # Запрещение запуска демонов в фоновом режиме ATALK_BGROUND=no
После конфигурирования принтеров начинаем конфигурировать тома Appleshare для совместного использования /mnt/cdrom и домашних каталогов пользователей. Это достигается путем добавления в файл /etc/ atalk/AppleVolumes.default записей об /mnt/cdrom и каждом каталоге пользователя, с правом доступа к томам Appleshare. Чтобы отметить совместно используемые каталоги, я создавал самые простые записи в файле, однако при необходимости можно указать и большее число опций для поддержки паролей и кодовых страниц. Записи в файле //ЕТС/atalk/AppleVolumes.default выглядят следующим образом:
~ «User Home» /mnt/cdrom «CDROM Directories»
Хитрость заключается в том, чтобы те же назначения были доступны и для пакета Samba, а компьютеры под Windows и Macintosh могли бы использовать совместно одни и те же данные без переноса их вручную или каким-либо иным способом. Посмотреть список монтируемых при подключении разделов можно с помощью /etc/atalk/AppleVolumes.system. Пароли для них никогда не потребуются, поскольку это разделы системного уровня.
Поиск и устранение неисправностей несложен, сервисные программы сообщат о неправильной работе. При возникновении ошибок в первую очередь необходимо проверить, все ли в прядке с кабелем, включено ли питание и запущен ли демон atalkd. В противном случае проблема связана со сбоем при запуске, ее можно выявить путем анализа журнального файла /var/log/messages.
Так как мой компьютер выполнял функцию шлюза, в нем было несколько сетевых адаптеров. В результате я столкнулся с проблемой, когда заданный по умолчанию сетевой адаптер не подключался к сети Appletalk. В результате мне пришлось модифицировать файл /etc/atalk/atalkd.conf, чтобы указать, какую сетевую карту следует использовать в сети Appletalk. Внесенное изменение выглядит таким образом:
eth1 -seed -phase 2
В свою очередь, atalkd преобразовал файл к окончательному виду, показанному ниже, он выполнил самую сложную часть работы по определению всех необходимых номеров, включая используемые адреса:
0eth1 -seed -phase 2 -net 0-65534 -addr 65280.87
Следует отметить, что Netatalk версии 1.5, который поставлялся с PowerTools 7.1 на CD-ROM, не позволял работать с печатью. Программы преждевременно сохраняли дамп ядра, поэтому мне пришлось обратиться к прекрасно работавшей версии 1.4b2-asun2.1.3, поставляемой на PowerTools 7.0 CD-ROM. Впрочем, во избежание проблем с каталогом /usr/lib/atalk/filters необходимо войти в этот каталог и заново установить символические связи всех файлов для надлежащего размещения. Ниже показаны текущие файлы:
ifmpap@ | ifwmpap@ | ofmpap@ | tfmpap@ | tfwmpap@ |
ifmpaprev@ | ifwmpaprev@ | ofpap@ | tfmpaprev@ | tfwmpaprev@ |
ifpap@ | ifwpap@ | ofwmpap@ | tfpap@ | tfwpap@ |
ifpaprev@ | ifwpaprev@ | ofwpap@ | tfpaprev@ | tfwpaprev@ |
Чтобы автоматически выполнить все необходимые настройки инсталлируемых файлов, я написал следующий сценарий и запустил его с параметром *pap* для нахождения всех файлов, связи которых следует переопределить заново:
# !/bin/bash cd /usr/lib/atalk/filters for x in $* do rm -f $x ln -s ../../../sbin/psf $x done
Теперь все работает, как надо.
ЗАКЛЮЧЕНИЕ
В данной статье рассматриваются способы интеграции старого и нового оборудования Macintosh в сеть на основе протокола TCP/IP. Linux обеспечивает органичную поддержку для всех протоколов и файловых систем, необходимых для функционирования Macintosh Duo и принтеров Appletalk, организуя доступ к сети таким образом, что для Macintosh сеть работает и выглядит как группа компьютеров Macintosh.
Эдвард Л. Халетки в настоящее время работает в экспертной группе высокопроизводительных вычислений в Compaq Computer и занимается технологиями Tru64 и кластеризации Linux и их приложениями.