FreeBSD: Раздача драйверов принтеров сервером Samba

Постановка задачи

Однажды в процессе установки принт-сервера на базе Samba я решил настроить раздачу драйверов принтеров для операционных систем семейства Windows NT x86 принт-сервером. Как обычно, все началось с поиска чужих наработок в Сети, однако, мне так и не попалась четкая и однозначная инструкция на русском языке. Пришлось действовать согласно Chapter 21 — Classical Printing Support документа The Official Samba 3.5.x HOWTO and Reference Guide, а затем написать свою интерпретацию содержащихся там рекомендаций.

Исходные данные

Имеется сервер с FreeBSD, на котором кроме всего прочего развернут принт-сервер на базе Samba. Т.к. настройка подобных принт-серверов многократно описана, и реализация раздачи клиентских драйверов принтеров не зависит от используемой подсистемы печати, я не буду заострять внимание на конфигурации принт-сервера, который использовался для выполнения действий, описанных ниже. Для того, чтобы приступить к настройке, достаточно знать имя принтера и иметь дистрибутив соответствующего Windows-драйвера. В качестве тестового принтера я использовал HP LaserJet 1200, которому было присвоено имя hp1200, и драйвер HP LaserJet 1200 Series PCL6 for Windows 2000/XP, поставляемый с принтером на компакт-диске.

Создание общей папки [print$]

Начать настройку следует с подготовки общей папки (далее шары) print$, которая предназначена для хранения драйверов принтеров, подключенных к серверу. Именно из нее загружаются драйверы, когда клиенты подключают сетевые принтеры. Шара print$ должна быть соответствующим образом определена в файле конфигурации smb.conf, по умолчанию находящемся в папке /usr/local/etc:

[print$]
comment = Драйверы принтеров
path = /data/samba-drivers
browseable = Yes
guest ok = Yes
read only = Yes
write list = admin

Указанные параметры имеют следующие значения: comment – комментарий шары в сетевом окружении (может иметь любое значение), path – физическое местонахождение папки на диске сервера, browseable – видимость шары в сетевом окружении (в нашем случае шару не видно в сетевом окружении, т.к. ее имя заканчивается на $, но она может быть подключена командой net use), guest – возможность чтения кем угодно (в рассматриваемом случае включена), read only – запрет записи (в рассматриваемом случае включен), write list – список пользователей, которым разрешена запись (только эти пользователи, root и пользователи, определенные параметром printer admin в секции [global] файла smb.conf, могут выгружать драйверы на сервер).
Общая папка print$ имеет несколько подпапок, соответствующих архитектуре операционных систем, для которых на сервере имеются драйверы: W32X86 — драйверы для «Windows NT x86», WIN40 — драйверы для «Windows 95/98», W32ALPHA — драйверы для «Windows NT Alpha_AXP», W32MIPS — драйверы для «Windows NT R4000», W32PPC — драйверы для «Windows NT PowerPC». Нас будет интересовать подпапка W32X86, т.к. именно в ней должны находиться драйверы для операционных систем семейства Windows NT x86. Необходимо создать эту папку и установить права на нее таким образом, чтобы пользователи, обладающие правами администрирования принтеров (смотрите выше), имели права на запись, а все остальные пользователи имели права на чтение. В рассматриваемом случае эта папка находится в папке /data/samba-drivers, принадлежит пользователю admin, на нее установлены права 755.

Идентификация файлов драйвера

Существует два способа идентификации (определения списка) файлов, которые входят в состав соответствующего драйвера: анализ соответствующего inf-файла, (не всегда) поставляемого вместе с драйвером, и анализ информации, которая выдается в окне свойств драйвера, установленного на компьютер c Windows.
Естественно, второй способ проще и удобнее первого, поэтому рассмотрим именно его. Все действия, описанные в данном разделе, должны выполняться на компьютере с Windows. В первую очередь необходимо подготовить необходимый драйвер. Затем нужно подключиться к принт-серверу и вручную установить подготовленный ранее драйвер. После этого необходимо выполнить команду Пуск » Настройка » Принтеры и факсы. В открывшемся окне Принтеры и факсы нужно выполнить команду меню Файл » Свойства сервера. В открывшемся окне Свойства: Сервер печати необходимо перейти на закладку Драйверы, выделить соответствующий драйвер и нажать кнопку Свойства. Откроется окно Свойства драйвера:

Свойства драйвера

Следует внимательно сохранить следующие данные, которые понадобятся позже: имя файла драйвера (HPBF312G.DLL); имя файла данных (HPBF312I.PMD); имя файла настройки (HPBF12E.DLL); имя файла справки (HPBF312I.HLP); имена зависимых файлов (HPBF12F.DLL, HPBF12H.DLL, HPBF12I.DLL, HPBF12J.DLL, HPBF12K.DLL, HPBAFD32.DLL, HPBFTM32.DLL); путь к драйверу (C:\WINDOWS\System32\spool\DRIVERS\W32X863\3).

Копирование файлов драйвера на принт-сервер

После сохранения данных необходимо тем или иным способом скопировать файлы драйвера на принт-сервер. Следует отметить, что файлы нужно копировать в корень папки print$\W32X86, не обращая внимание на то, что на компьютере с Windows они находятся в одной из подпапок папки W32X86. После того, как файлы будут скопированы, можно проверить их доступность, выполнив команду:

smbclient //localhost/print$ -U 'admin%<пароль>' -c 'cd W32X86; pwd; dir'

Добавление драйвера в список драйверов принт-сервера

После копирования нужных файлов необходимо добавить драйвер в список драйверов принт-сервера. Для этого следует выполнить команду:

rpcclient -U'admin%<пароль>' -c 'adddriver "Windows NT x86" \
"hp1200:HPBF312G.DLL:HPBF312I.PMD:HPBF312E.DLL:HPBF312I.HLP:NULL:RAW: \
HPBF312F.DLL,HPBF312H.DLL,HPBF312I.DLL,HPBF312J.DLL,HPBF312K.DLL,HPBAFD32.DLL,HPBFTM32.DLL"' \
localhost

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

rpcclient -U'admin%<пароль>' -c 'enumdrivers' localhost

Задание соответствия между принтером и драйвером

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

rpcclient -U'root%<пароль>' -c 'setdriver hp1200 hp1200' localhost

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

Заключение

В документе Chapter 21 — Classical Printing Support описана установка драйвера принтера Heidelberg Digimaster 9110 (PS). Я устанавливал драйвер совсем другого принтера по тому же алгоритму. С учетом того, что все прошло без ошибок с первого раза, я надеюсь, что эта статья пригодится в процессе установки драйверов для других моделей принтеров.

Понравилась статья?

 Подпишитесь на RSS или почтовую рассылку;

 Присоединяйтесь в Twitter, Facebook, Google+, VK;

 Поделитесь ссылкой в социальной сети или блоге:

11 комментариев к “FreeBSD: Раздача драйверов принтеров сервером Samba

  1. Уважаемые Посетители! Пишите, какие принтеры и с какими драйверами удалось настроить, а какие не удалось 😕

  2. Пытался настроить принтер hp laserget 2015n. При выполнении команды:

    rpcclient -U 'admin%pass' -c 'adddriver "Windows NT x86" \ "HP2015:unidrv.dll:HPC20155.GPD:unidrvui.dll:unidrv.hlp:NULL:RAW: \
    EP9RES.DLL, EP9RES.DLL, hpcdmc32.dll, hppdvq01.dll, hpz5r43e.dll, hpz6r43e.dll, hpzev43e.dll, hpzls43e.dll, hpzss43e.dll, hpzst43e.dll, hpzui43e.dll, mdigraph.dll, mdiui.dll, mxdwdrv.dll, mxdwdui.dll, pclxl.dll, SNAGITD8.DLL, unires.dll, XpsSvcs.dll"' \
    localhost

    вот такая ошибка:

    cli_start_connection: failed to connect to LOCALHOST (0.0.0.0). Error NT_STATUS_BAD_NETWORK_NAME Cannot connect to server. Error was NT_STATUS_BAD_NETWORK_NAME

    Я новичек в linux, посоветуйте что-нибудь для исправления данной ошибки.

  3. Всем приветище 🙂 Я не смогла установить принтер… canon pixma ip1800 на ХР 🙁 Драйвера скачала, в мастере установки путь указала, принтер установился, но маленький нюанс… Он не печатает вообще, то есть комп его видит, но команды принт не выполняет. В чём может быть проблема?

    • Если комп видит принтер, но принтер не печатает, то в кривом драйвере. Из консоли FreeBSD принтер печатает?

      • Эмммм… В смысле команда через командную строку? Просто я мало поняла, что такое консоль FreeBSD, и с чем её едят… Если объясните подробнее, то возможно найду где находится данный зверь в моём ЭВМ 😉

        • Звери живут в зоопарке, а Вы задали вопрос немного не в там, где следовало это сделать. Данный блог на 99% посвящен Linux и Unix. Судя по тому, что Вас отпугнуло слово «консоль», Вы не сталкивались с этими операционными системами. В этом нет ничего плохого, просто воспользуйтесь Гуглом или Яндексом 🙂

  4. Помогите найти драйвера к принтеру Star J255. Если найдёте…..а это возможно трудно будет, выкуплю драйвера!!!

Оставить комментарий