На официальном сайте Canon отсутствует драйвер принтера Pixma IP1500 для OpenSolaris, однако есть драйвер для Linux. Так как в OpenIndiana типизированные зоны для запуска приложений Linux отсутствуют, а печатать хочется, я реализовал иной способ запуска драйвера.
Приложение драйвера при запуске линкуется с теми SO-файлами, которые есть в системе, несмотря на различие в версиях между имеющимся и ожидаемым SO-файлами. Функции и переменные, специфические для glibc, вынесены в специальную библиотеку linux.so.1. В процессе динамической линковки эта библиотека присоединяется к приложению первой.
Этот драйвер был мной запущен с использованием модифицированного динамического линковщика (/opt/pixma1500/ld.so.1), его конфигурационного файла (/opt/pixma1500/reloc.conf) и специального SO-файла (/opt/pixma1500/linux.so.1). Команды запуска содержатся в /opt/pixma1500/bjfilterpixmaip1500.sh. Файлы драйвера и средств его запуска я собрал в пакет, который можно скачать тут (1МБ). Исходники проекта доступны в репозитории.
В отличие от метода запуска с использованием типизированной зоны, предложенный способ обладает следующими преимуществами:
- требует существенно меньше места на жестком диске: 2МБ против 1.5ГБ;
- драйвер срабатывает сразу после выбора команды печати, не надо ждать, пока загрузится зона;
- существенно проще процесс настройки.
Недостаток метода — применимость только к приложениям, не обращающимся к ядру напрямую.
Для установки драйвера следует выполнить команды:
wget http://www.os-solaris.ru/wp-content/uploads/2011/12/CANONip1500.pkg.7z
7z x CANONip1500.pkg.7z
sudo pkgadd -d CANONip1500.pkg
Скрипт /opt/pixma1500/bjfilterpixmaip1500.sh написан из предположения, что принтер доступен через файл устройства /dev/printers/1
Протестировать работоспособность пакета можно через распечатку файла в формате Postscript командой
cat 1.ps | /usr/bin/gs -r600 -g4958x7016 -q -dNOPROMPT -dSAFER -sDEVICE=ppmraw -sOutputFile=- — | /opt/pixma1500/bjfilterpixmaip1500.sh
Настройка OpenOffice:
Выбрать пункт меню GNOME: Приложения/Офис/Управление принтером. В появившемся окне нажать кнопку «Новый принтер…». В появившемся окне поставить переключатель в положение «Добавить принтер» и нажать «Далее». На следующем шаге выбрать из списка «Generic Printer». На следующем шаге ввести командную строку принтера
/usr/bin/gs -r600 -g4958x7016 -q -dNOPROMPT -dSAFER -sDEVICE=ppmraw -sOutputFile=- — |/opt/pixma1500/bjfilterpixmaip1500.sh
Затем нажать кнопку «Далее», ввести название принтера и нажать «Готово». Новый принтер появится в окне в списке установленных. Для удобства можно сделать его принтером по умолчанию.
PS: Аналогичным образом можно запускать под OpenSolaris и другие приложения, в том числе драйвера других принтеров, скомпилированные для Linux.
Пакет успешно протестирован на OpenSolaris 2009.06 и OpenIndiana 151a.
Андрей Соколов (keremet (at) solaris.kirov.ru)
Speak Your Mind