Распознанный принтер, но не печать. CUPS

Qemu:

QEmu является полным и автономным собственным программным обеспечением. Вы используете его для эмуляции машин, это очень гибко и портативно. Главным образом это работает специальным 'recompiler', который преобразовывает двоичный код, написанный для данного процессора в другой (скажите, для выполнения кода MIPS Mac PPC или ARM в x86 ПК).

Для эмуляции больше, чем просто процессор Qemu включает длинный список периферийных эмуляторов: диск, сеть, VGA, PCI, USB, последовательные / параллельные порты, и т.д.

KQemu:

В конкретном случае, где оба источника и цели та же архитектура (как общий падеж x86 на x86), это все еще должно проанализировать код, чтобы удалить любые 'привилегированные команды' и заменить их контекстными переключениями. Для создания его максимально эффективным на x86 Linux существует модуль ядра под названием KQemu, который обрабатывает это.

Будучи модулем ядра, KQemu может выполнить большую часть кода, неизменного, заменяющего только самый низкий уровень ring0-только инструкции. В этом случае пространство пользователя Qemu все еще выделяет всю RAM для эмулированной машины и загружает код. Различие - то, что вместо того, чтобы перекомпилировать код, это называет KQemu для просканированного/исправления/выполнения его. Вся периферийная аппаратная эмуляция сделана в Qemu.

Это намного быстрее, чем плоскость Qemu, потому что большая часть кода неизменна, но все еще должна преобразовать код ring0 (большая часть кода в ядре VM), таким образом, производительность все еще страдает.

KVM:

KVM является несколькими вещами: сначала это - модуль ядра Linux — теперь включенный в магистраль — который переключает процессор в новое 'гостевое' состояние. Гостевое состояние имеет свой собственный набор кольцевых состояний, но привилегированные ring0 инструкции отступают к коду гипервизора. Так как это - новый режим процессора выполнения, код не должен быть изменен всегда.

Кроме переключения состояния процессора, модуль ядра также обрабатывает несколько частей низкого уровня эмуляции как регистры MMU (раньше обрабатывал VM), и некоторые части PCI эмулировали аппаратные средства.

Во-вторых, KVM является ветвлением исполняемого файла Qemu. Обе команды работают активно для хранения различий как минимум, и существуют усовершенствования в сокращении его. В конечном счете цель состоит в том, что Qemu должен работать где угодно, и если модуль ядра KVM доступен, он мог бы автоматически использоваться. Но для обозримого будущего, команда Qemu фокусируется на аппаратной эмуляции и мобильности, в то время как люди KVM фокусируются на модуле ядра (иногда перемещающий мелкие детали эмуляции там, если она улучшает производительность), и взаимодействующий через интерфейс с остальной частью кода пространства пользователя.

kvm-qemu исполняемый файл работает как нормальный Qemu: выделяет RAM, загружает код, и вместо того, чтобы перекомпилировать его или назвать KQemu, это порождает поток (это важно). Поток называет модуль ядра KVM для переключения на гостевой режим и продолжает выполнять код VM. На привилегированной команде это переключается назад на модуль ядра KVM, который, при необходимости, сигнализирует, чтобы поток Qemu обработал большую часть аппаратной эмуляции.

Одна из хороших вещей этой архитектуры - то, что гостевой код эмулирован в потоке posix, которым можно управлять с нормальными инструментами Linux. Если Вы хотите VM с 2 или 4 ядрами, kvm-qemu создает 2 или 4 потока, каждый из них называет модуль ядра KVM, чтобы начать выполняться. Параллелизм — если у Вас есть достаточно реальных ядер — или планирующий — если не — управляется нормальным планировщиком Linux, сохраняя код маленьким и удивляет ограниченный.

2
задан 26 March 2013 в 20:34
2 ответа

Решение оказалось несложным. Я использовал следующий код: (Удаляется перед существующими принтерами с помощью lpadmin -x PrinterName)

Для просмотра моего URI:

lpinfo -v

Я получил следующее:

:~# lpinfo -v
network http
network socket
direct scsi
network lpd
network ipp
serial serial:/dev/ttyS0?baud=115200
direct usb://HP/Deskjet%201000%20J110%20series?serial=CN19S21RWB05D2
network beh

Часть direct usb - это URI.

У меня уже был файл ppd. Я скопировал его в / etc / cups / ppd /

Затем я добавил принтер, используя:

:~# lpadmin -p Deskjet-1000-J110-series -E -v usb://HP/Deskjet%201000%20J110%20series?serial=CN19S21RWB05D2 -m /etc/cups/ppd/Deskjet-1000-J110-series.ppd 

Я получил эту ошибку: lpadmin: Невозможно скопировать файл PPD!

Как уже было указано (файл ppd) .. Я выполнил тест

lp -d Deskjet-1000-J110-series fileToPrint

И .. напечатано ...

1
ответ дан 3 December 2019 в 11:48

Выполнение hp-check -t предоставит вам дополнительную информацию о состоянии принтера, в частности, ОБНАРУЖЕННЫЕ УСТРОЙСТВА USB и УСТАНОВЛЕННЫЕ ОЧЕРЕДИ ПРИНТЕРА CUPS .

Вы проверили, работает ли чашек ?

% /sbin/service cups status
cupsd (pid  1453) is running...

Как вы проверяете, что файл был отправлен и отображаются [s] как завершенные ?

1
ответ дан 3 December 2019 в 11:48

Теги

Похожие вопросы