Бывает такая проблема что в конфиге принтерам назначены /dev/usb/lp0 и /dev/usb/lp1, а они вдруг меняются портами. Происходит это из-за того, что в Thinstation принтеры подключаются по принципу «кто первым встал — того и тапки», т.е. какой первым загрузился — того и /dev/usb/lp0.
Короче, исправляем.
Вот часть конфигурации Thinstation отвечающая за принтеры:
Принтер к ноде (/dev/usb/lp*) мы привязать не можем, зато можем создать фиксированный симлинк, поможет нам в этом udev, но для начала узнаем как идентифицируются наши принтеры.
При подключенных к клиенту принтерах запускаем по очереди на нём команды:
И ищем в выхлопе подходящий идентификатор, в нашем случае ATTRS{product}.
Создаём в packages/base/etc/udev/rules.d файл 12-printer-local.rules и в нём пишем правила, создающие симлинк к ноде по модели принтера:
Конфиг придётся переделать, задав симлинк девайса:
Пересобираем образ и теперь печать, независимо от того какую ноду получил девайс, пойдёт на нужный принтер. Количество правил зависит от зоопарка принтеров.
Ещё пара примеров использования:
1) если у вас несколько типов принтеров: куча HP LaserJet ***, Canon*** и какие нибудь фискальные FPrint***, то можно обойтись несколькими правилами:
2) у вас куча всяких принтеров, а вторым принтером стоят везде какие нибудь фискальные FPrint***, т.е. если атрибут содержит FPrint, то симлинк fprint, все остальные получают симлинк print.:
Короче, исправляем.
Вот часть конфигурации Thinstation отвечающая за принтеры:
PRINTER_0_DEVICE=/dev/usb/lp0
PRINTER_0_NAME=HP2055
PRINTER_0_TYPE=U
PRINTER_1_DEVICE=/dev/usb/lp1
PRINTER_1_NAME=HP2015
PRINTER_1_TYPE=U
Принтер к ноде (/dev/usb/lp*) мы привязать не можем, зато можем создать фиксированный симлинк, поможет нам в этом udev, но для начала узнаем как идентифицируются наши принтеры.
При подключенных к клиенту принтерах запускаем по очереди на нём команды:
udevadm info -a -n /dev/usb/lp0 | grep ATTRS{product}
udevadm info -a -n /dev/usb/lp1 | grep ATTRS{product}
И ищем в выхлопе подходящий идентификатор, в нашем случае ATTRS{product}.
Создаём в packages/base/etc/udev/rules.d файл 12-printer-local.rules и в нём пишем правила, создающие симлинк к ноде по модели принтера:
KERNEL=="lp*", ATTRS{product}=="HP LaserJet 2055", SYMLINK+="usb/hp2055"
KERNEL=="lp*", ATTRS{product}=="HP LaserJet 2015", SYMLINK+="usb/hp2015"
Конфиг придётся переделать, задав симлинк девайса:
PRINTER_0_DEVICE=/dev/usb/hp2055
PRINTER_0_NAME=HP2055
PRINTER_0_TYPE=U
PRINTER_1_DEVICE=/dev/usb/hp2015
PRINTER_1_NAME=HP2015
PRINTER_1_TYPE=U
Пересобираем образ и теперь печать, независимо от того какую ноду получил девайс, пойдёт на нужный принтер. Количество правил зависит от зоопарка принтеров.
Ещё пара примеров использования:
1) если у вас несколько типов принтеров: куча HP LaserJet ***, Canon*** и какие нибудь фискальные FPrint***, то можно обойтись несколькими правилами:
KERNEL=="lp*", ATTRS{product}=="*HP LaserJet*", SYMLINK+="usb/hp"
KERNEL=="lp*", ATTRS{product}=="*Canon*", SYMLINK+="usb/cnn"
KERNEL=="lp*", ATTRS{product}=="*FPrint*", SYMLINK+="usb/fp"
2) у вас куча всяких принтеров, а вторым принтером стоят везде какие нибудь фискальные FPrint***, т.е. если атрибут содержит FPrint, то симлинк fprint, все остальные получают симлинк print.:
KERNEL=="lp*", ATTRS{product}!="*FPrint*", SYMLINK+="usb/print"
KERNEL=="lp*", ATTRS{product}=="*FPrint*", SYMLINK+="usb/fprint"