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 и их приложениями.