Розыски пропавшего принтера: /dev/lp0 Recover Howto

Проблема: срочно надо было отпечатать страницу на лазерном принтере, подключённом к параллельному порту - а принтер пропал...

С чего всё началось
Давным-давно я настроил CUPS - настроил и, как полагается, забыл. Работал и работает, как швейцарские часы. И тут надо было срочно распечатать страничку на лазерном принтере HP LaserJet 5L из ОпенОфиса - без проблем: Файл - Печатать - LaserJet 5L. И... тишина. Вечером надо отпечатать, а утром нести - принтер пропал очень вовремя.

Два вопроса
Собственно, всё же работало. WTF!?
Пробую лёгкой артиллерией - попытался рестартовать подсистему печати:

/etc/init.d/cupsys restart
Никаких изменений. Пробую печатать на струйник HP DeskJet 930C, подключённый к USB - работает, но в нём засохли картриджи. Вечер перестаёт быть томным!

Снёс лазерный принтер в CUPS, заново его поставил. То же самое: принтер появляется, по при попытке на него что-то распечатать отключается: Printer stopped и пишет, что не может соединиться с принтером в течении 30 секунд. Значит, дело в принтере. И потом, usb-шный струйник печатает, а лазерник нет. Значит, дело не в CUPS и надо "что-то в консерватории поправить".

Кто виноват?
Иду в каталог /dev и тихо выпадаю в осадок: устройства lp0 там нет. Кто его удалил!? Первая мысль - шут с ним с аптаймом в 72 дня, перезагружу - должен появиться. Ведь до этого всё работало! Потом отдёрнул руку от shutdown и решил так просто не сдаваться (забегая вперёд - это был правильный шаг).

Иду в логи искать ответ на первый вопрос. Всё, как на зло, тихо и спокойно. Начинаю "грепать по сорцам", и тут мне /var/log/daemon.log конфиденциально сообщает, что принтер в отключке вот уж неделю как:
Sep 20 18:24:58 localhost udev[885]: configured rule in '/etc/udev/rules.d/udev.rules[28]' applied, 'lp0' becomes 'usb/%k' Sep 20 18:24:58 localhost udev[885]: creating device node '/dev/usb/lp0' Sep 20 18:25:10 localhost udev[919]: removing device node '/dev/usb/lp0' Sep 20 18:25:10 localhost udev[1005]: removing device node '/dev/lp0'
Так, теперь понятно, кто виноват - udev, разработчиков его мать :-) Ну подфортил, прямо душу порадовал. Но у нас есть mknod и MAKEDEV - и ещё есть маны по ним, но читать маны вместо подготовки к выступлению - это уж слишком экстремально.

Что делать?
Теперь второй вопрос вырисовывается более конкретно: надо либо читать маны по MAKEDEV, либо погуглить. Оказалось, что я далеко не одинок.
Натыкаюсь на рецепт:
./MAKEDEV -v lp
Применил. Да, можно сказать, полегчало, и оно создало аж три устройства, но в /dev/.static/dev/ - не здорово, то есть здорово, но не там. Хочу, чтобы было, как прежде. Но на всякий случай проверяю:
cat ~/new.text > /dev/.static/dev/lp0
Печать идёт, и это радует. Но из ООО и других программ тишина.
Ладно, гуглю дальше. И тут добрая душа выдаёт то, что я так долго ждал: команду для mknod с номерами устройства:
mknod -m 666 /dev/lp0 c 6 0
Применяю, получилось!
Возвращаюсь в веб-панель CUPS. Сношу принтер и тут замечаю, что в разделе URL есть заветное Parallel port. А я всё заставлял его печатать в HP JetDirect. Аааа... Вот где собака порылась! Ставлю его, сообщаю /dev/lp0 и выбираю модель принтера. Жму "отпечатать тестовую страницу" - есть!

Выводы: отвалившейся принтер - ещё не повод делать себе и системе харакири. Немного погуглив, проблему победил, знаниями обогатился и маны mknod буду обязательно курить.

Ссылки:
Здесь, собственно, даются параметры для создания mknod-ом ссылки на параллельный порт. Товарища по блогу постигла та же напасть, и он её превозмог.
Хорошо почитать об этом же здесь и тут могут быть полезные сведения.

13 комментариев: |высказаться!| RSS-лента дискуссии.|
Igor комментирует...

А makedev выкинули же из ядер 2.6 (по крайней мере, в Slackware). Соответсвенно, и mknod, кажется, нет. Но я помню, как для сканера ещё в 2.4 я как раз делал mknod :)

virens комментирует...

А makedev выкинули же из ядер 2.6
Момент, утилита в состав ядра не входит :-) Если имелось в виду devfs - то да, выкинули. У меня udev, естественно, т.к. 2.6.15.7
И именно udev мне принтер и загубила. :-)

Roman Lagunov комментирует...

А блоггер знатно глюканул.
Часа полтора назад хотел прочитать эту статью, мне вывалилась CSS. Пробовал разными браузерами, через разные прокси.

Ближе к телу. У меня нет принтера (пока) и udev тоже нет, но когда будут, в случае проблем, я знаю, где поискать ответы.
Спасибо за статью.

Igor комментирует...

Ну да, makedev для devfs. А так - надо написать правило для udev и перезапустить демон. По-моему, так правильнее решить проблему. При следующем запуске udev такая конструкция полетит опять.

virens комментирует...

2 Roman Lagunov
А блоггер знатно глюканул.
Единственное оправдание всему этому безобразию - они ваяют новый движок, который блоггер бетта. Но я на него - ни ногой :-) Надеюсь, это скоро кончится...
За статью спасибо udev :-]

2 Igor:
Ну да, makedev для devfs. А так - надо написать правило для udev и перезапустить демон.
Твоя правда - просто мне страницы надо было печатать, так что о красоте и правильности я думал в последнюю очередь. Надо будет осваивать эти премудрости...

При следующем запуске udev такая конструкция полетит опять.
Я так и не понял, пошто он его порубал :-) Но скорее всего так и будет. Спасибо, буду разбираться с udev на досуге, когда он, досуг, появится :-)

Igor комментирует...

Так он вырубил usb принтер судя по логам. Наверное, он не был включён. А вот параллельный порт почему не включил - не знаю.

Roman Lagunov комментирует...

@virens:
Про блоггер-бета слышал я такие разговоры, что скоро всем счастье будет, всех переведут на бету. Не знаю, правда или нет.

virens комментирует...

2Igor:
Так он вырубил usb принтер судя по логам. Наверное, он не был включён.
Всё правильно - в логах были подозрения на EMI (электромагнитные импульсы, какой-то урод в доме стены долбал дрелью), и udev переподключал все устройства на шине USB. Пошто он параллельный порт порубал - я не понял. Но буду разбираться. Главное, что сделал он это как нельзя кстати :-)

2 Roman Lagunov
Про блоггер-бета слышал я такие разговоры, что скоро всем счастье будет, всех переведут на бету.
Пока нет: они тестируют новый движок и по готовности постепенно будут перетаскивать всех на него. Пока что кто хчет приключений - переходят, кто не хочет (типа меня) - остаются.

сhitatel комментирует...

Уважаемый virens, вопрос "Кто виноват?" задавал не Чернышевский, а Герцен Александр Иванович: http://az.lib.ru/g/gercen_a_i/text_0010.shtml

С наилучшими пожеланиями.

virens комментирует...

2 сhitatel
Уважаемый virens, вопрос "Кто виноват?" задавал не Чернышевский, а Герцен
Ой, что-то меня бес попутал... в самом деле, как ж я так!? Спасибо за баг-репорт, буду править :-)

С такими внимательными комментаторами - жить и радоваться!

chitatel комментирует...

Уважаемый virens!
Вопрос "Кто виноват?" задавал Герцен, но вопрос "Что делать?" как раз (тут Вы были правы) Чернышевский Николай Гаврилович: http://az.lib.ru/c/chernyshewskij_n_g/text_0020.shtml

Короче:
"Кто виноват?" - Герцен.
"Что делать?" - Чернышевский.
Вот так вот, сложно у них, у писателей.

P.S."Что делать?", кстати, ещё и В.И.Ленин. :)

LXj комментирует...

Когда я в последний раз сталкивался с проблемой с СUPS, то заглянув в логи портежей (у меня Gentoo), обнаружил что при установке очередной новой мажорной версии CUPS мне советовали убить старый конфиг и переконфигурить всё с нуля. Помогло :)

Вскоре после этого брат забрал у меня свой принтер...

virens комментирует...

2 chitatel said...

Уважаемый virens!
Вопрос "Кто виноват?" задавал Герцен, но вопрос "Что делать?" как раз (тут Вы были правы) Чернышевский

Ну зачем я редактирую посты на работе, на бегу? А потом к ним не возвращаюсь... Даже стыдно. Да, конечно, Вы абсолютно правы - пофиксено :-)
Ещё раз спасибо за такое внимательное отношение к постам.

2 LXj
мне советовали убить старый конфиг и переконфигурить всё с нуля.
"Ну и методы у вас в Скотлант-ярде!" :-) Лихо. Запустил принудительное резервное копирование каталога /etc :-) А у меня udev пошалил и снёс принтер.

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

Подписаться на RSS-ленту комментариев к этому посту.