银河麒麟V10安装HP P1106打印机驱动全攻略:CUPS与HPLIP实战
2026/9/24 9:59:37 网站建设 项目流程

1. 为什么银河麒麟V10装HP P1106驱动值得单独写一篇

银河麒麟V10这个系统,这两年我在政企项目里接触得非常多。它的底层是Linux,桌面环境做得已经相当接近Windows的使用习惯,但一旦涉及到外设,尤其是打印机这种“老古董”级别的硬件,问题就来了。HP P1106这台机器,说出来大家都熟——惠普的经典入门级黑白激光打印机,皮实耐造,很多单位采购都是一批一批地买。但它的驱动在银河麒麟V10上,并不是插上USB线就能自动识别那么简单。

我前后在至少五六个不同架构的银河麒麟V10环境里装过这台打印机,有x86_64的,也有飞腾ARM64的,还有鲲鹏平台的。每次都会遇到一些新的小问题,有时候是CUPS服务没起来,有时候是HPLIP版本不匹配,有时候是权限问题导致打印队列卡死。所以我把这些经验整理出来,给正在踩坑或者即将踩坑的朋友一个参考。

这篇文章主要面向两类人:一类是刚接触银河麒麟V10的运维人员,需要在办公环境里快速把打印机跑通;另一类是有一定Linux基础但没怎么碰过CUPS打印系统的技术爱好者。我会从原理讲到实操,从命令行讲到图形界面,尽量让不同基础的人都能找到适合自己的路径。核心关键词就几个:银河麒麟V10、HP P1106、打印机驱动、HPLIP、CUPS,整篇内容都围绕这几个词展开。

2. 动手之前先把原理搞清楚:CUPS和HPLIP到底是什么关系

2.1 CUPS:Linux世界的打印总管

CUPS全称是Common Unix Printing System,翻译过来就是通用Unix打印系统。你可以把它理解成Linux系统里的“打印服务总调度台”。不管是本地USB打印机还是网络打印机,最终都要通过CUPS来接收打印任务、转换成打印机认识的指令、然后发送给硬件。

在银河麒麟V10里,CUPS默认是安装了的,但不一定默认启动。很多朋友装完系统插上打印机发现没反应,第一反应是“驱动没装”,其实有时候只是CUPS服务没跑起来。这个后面我会详细讲怎么排查。

CUPS的配置文件主要在/etc/cups/目录下,核心文件是cupsd.confprinters.confcupsd.conf控制服务本身的运行参数,比如监听端口、日志级别、访问权限等;printers.conf则是记录已经添加的打印机队列信息。你通过图形界面或者命令行添加的每一台打印机,最终都会写进printers.conf里。

CUPS的工作流程大致是这样的:应用程序发起打印请求,CUPS接收后根据打印队列的配置,调用对应的过滤器(filter)把文档转换成打印机支持的格式,比如PCL或者PostScript,然后通过USB或网络接口发送给打印机。HP P1106支持的打印语言是PCL5e和PCL6,所以我们需要确保CUPS能找到对应的驱动来处理格式转换。

2.2 HPLIP:惠普打印机的专属管家

HPLIP是HP Linux Imaging and Printing的缩写,是惠普官方为Linux系统提供的打印机驱动和工具套件。它包含了大量惠普打印机的PPD文件(PostScript Printer Description,打印机描述文件)、过滤器、以及一些管理工具比如hp-setuphp-checkhp-plugin等。

对于HP P1106来说,HPLIP里是有对应的驱动支持的。但问题是,银河麒麟V10自带的HPLIP版本可能比较老,或者缺少某些依赖包,导致安装过程中出现各种报错。另外,HP P1106属于“Host-based”打印机,也就是说它本身不具备完整的页面描述语言处理能力,需要依赖主机端的驱动来完成渲染工作。这类打印机在Linux下的支持相对复杂一些,因为惠普没有公开完整的协议文档,HPLIP里的驱动是通过逆向工程实现的。

所以整个安装思路就很清晰了:确保CUPS服务正常运行,然后通过HPLIP来提供HP P1106的驱动支持,最后在CUPS里添加打印机队列并配置好驱动。

2.3 为什么不用系统自带的“添加打印机”向导

银河麒麟V10的桌面环境里有一个“打印机”设置面板,看起来跟Windows的添加打印机流程很像。但实际用下来,这个图形化工具在添加HP P1106时经常搜不到正确的驱动,或者添加完了打印出来是乱码。原因在于它底层调用的还是CUPS和HPLIP,如果HPLIP的驱动数据库不完整,图形界面也巧妇难为无米之炊。

所以我个人的习惯是:先用命令行把HPLIP和CUPS的底层环境确认好,再用图形界面或者命令行添加打印机。这样出问题了也容易定位。

3. 安装前的环境检查和依赖准备

3.1 确认系统版本和架构

第一步永远是确认你手上的银河麒麟V10到底是什么版本、什么架构。打开终端,执行:

cat /etc/os-release uname -m

/etc/os-release会显示系统版本信息,比如Kylin Linux Advanced Server V10或者Kylin Linux Desktop V10uname -m会显示CPU架构,常见的有x86_64aarch64(ARM64)、mips64等。这个信息很重要,因为不同架构下可用的软件包是不一样的。

我遇到过有朋友在飞腾ARM64的机器上直接下载了x86_64的HPLIP安装包,结果当然装不上。所以这一步千万别跳过。

3.2 检查CUPS服务状态

执行以下命令查看CUPS服务是否在运行:

systemctl status cups

如果显示active (running),说明CUPS已经在跑了。如果显示inactive (dead)或者failed,就需要手动启动:

sudo systemctl start cups sudo systemctl enable cups

enable的作用是设置开机自启,避免每次重启后都要手动启动。有些朋友可能会遇到systemctl start cups报错的情况,这时候可以看看错误信息,常见的原因是配置文件有语法错误或者端口被占用。

3.3 检查HPLIP是否已安装

dpkg -l | grep hplip

银河麒麟V10基于Debian体系,所以用dpkg来查。如果输出里有hpliphplip-dataprinter-driver-hpcups等包,说明已经安装了。如果什么都没输出,那就需要手动安装。

在联网环境下,可以直接用apt安装:

sudo apt update sudo apt install hplip hplip-gui printer-driver-hpcups

hplip-gui提供了图形化管理工具,虽然不是必须的,但有时候用hp-toolbox来查看打印机状态挺方便的。printer-driver-hpcups是惠普打印机通用的CUPS驱动包,HP P1106就靠它来提供PPD文件。

注意:在一些离线部署的环境里,apt源可能不可用。这时候需要提前下载好对应的deb包,用dpkg -i手动安装。依赖关系可以用apt-get install -f来修复。

3.4 确认USB打印机被系统识别

把HP P1106用USB线连接到电脑,然后执行:

lsusb

你应该能在输出里看到类似Bus 001 Device 003: ID 03f0:002a Hewlett-Packard这样的信息。03f0是惠普的厂商ID,002a是HP P1106的产品ID。如果看不到,说明USB连接有问题,可能是线缆故障或者接口供电不足。

再用dmesg看看内核有没有识别到打印机:

dmesg | tail -20

正常情况下会看到类似usblp 1-1:1.0: usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x002A的日志。如果内核没有识别到,CUPS和HPLIP再厉害也没用。

4. 命令行安装HP P1106驱动的完整流程

4.1 用hp-setup工具自动配置

HPLIP提供了一个叫hp-setup的命令行工具,可以自动检测USB打印机并配置驱动。这是最省事的方法:

sudo hp-setup -i

-i参数表示交互模式,会一步步引导你选择打印机、下载插件(如果需要的话)、配置队列。对于HP P1106,通常不需要额外下载二进制插件,因为它是基于HPCUPS驱动的。

运行过程中,工具会列出检测到的USB打印机,你选择对应的编号,然后确认一些参数,比如打印机名称、位置描述等。最后它会自动在CUPS里创建打印队列。

如果hp-setup运行成功,你可以直接跳到测试打印那一步。但实际经验告诉我,在银河麒麟V10上,hp-setup经常会在某个环节卡住或者报错,所以下面我还会讲手动配置的方法。

4.2 手动添加打印机队列

如果hp-setup不顺利,我们可以手动来。首先确认HPLIP的PPD文件在哪里:

find /usr/share/ppd -name "*p1106*" 2>/dev/null

或者更广泛地搜索:

find /usr/share/cups/model -name "*hp*" 2>/dev/null | head -20

正常情况下,你应该能找到类似/usr/share/ppd/hplip/HP/hp-laserjet_p1106.ppd.gz的文件。这个就是HP P1106的驱动描述文件。

接下来用lpadmin命令添加打印机:

sudo lpadmin -p HP_P1106 -E -v usb://HP/LaserJet%20P1106?serial=XXXXXX -m hp-laserjet_p1106.ppd.gz

这里的参数解释一下:-p指定打印机队列名称,可以自己起,比如HP_P1106-E表示启用打印机并接受打印任务;-v指定设备URI,USB打印机的URI格式一般是usb://厂商/型号?serial=序列号-m指定PPD文件。

设备URI怎么获取?可以用这个命令:

lpinfo -v | grep usb

输出里会列出所有检测到的USB打印机及其URI。直接复制过来用就行。

4.3 设置默认打印机和测试

添加完成后,把它设为默认打印机:

lpoptions -d HP_P1106

然后打印一张测试页:

lp -d HP_P1106 /usr/share/cups/data/testprint

如果打印机开始转动并输出一张测试页,恭喜你,基本配置成功了。如果没反应,继续往下看排查部分。

4.4 图形界面配置的补充说明

有些朋友可能更习惯用图形界面。银河麒麟V10的“打印机”设置面板里,点击“添加”后选择“USB打印机”,然后在驱动选择界面里找到“HP”厂商,再找到“LaserJet P1106”型号。如果列表里没有,可以点击“从PPD文件安装”,手动指向/usr/share/ppd/hplip/HP/hp-laserjet_p1106.ppd.gz

图形界面的好处是直观,坏处是出错时提示信息不够详细。所以我建议先用命令行确认底层没问题,再用图形界面做日常管理。

5. 常见报错和排查技巧实录

5.1 CUPS服务起不来怎么办

这是最常见的问题之一。执行systemctl status cups看到failed,用journalctl -u cups -n 50查看具体错误。常见的几种情况:

第一种是配置文件语法错误。比如手动编辑过/etc/cups/cupsd.conf,不小心多了一个括号或者少了一个引号。可以用cupsd -t来测试配置文件语法:

sudo cupsd -t

它会告诉你哪一行有问题。

第二种是端口被占用。CUPS默认监听631端口,如果这个端口被其他程序占了,CUPS就起不来。用ss -tlnp | grep 631查看谁占用了端口。

第三种是权限问题。/etc/cups/目录和里面的文件权限不对,导致CUPS服务无法读取配置。正常情况下这些文件的所有者应该是root:lp,权限是640644

5.2 打印任务卡在队列里不动

有时候打印机添加成功了,但发送打印任务后,任务一直显示在队列里,状态是“正在处理”或者“已暂停”。这时候先检查打印机本身的状态:

lpstat -p HP_P1106 -l

如果显示printer HP_P1106 is idle,说明打印机就绪。如果显示disabled,需要启用:

cupsenable HP_P1106 cupsaccept HP_P1106

然后检查队列里的任务:

lpq -P HP_P1106

如果任务卡住了,可以取消后重试:

cancel -a HP_P1106

还有一个常见原因是USB通信问题。HP P1106是Host-based打印机,对USB传输的稳定性要求比较高。如果USB线太长或者质量不好,可能会导致数据传输中断。换一根短一点的优质USB线试试。

5.3 打印出来是乱码或者空白页

这个问题通常跟驱动不匹配有关。如果你用的PPD文件不是专门针对P1106的,而是用了通用HP LaserJet驱动,就可能出现乱码。确认一下当前使用的PPD:

lpstat -p HP_P1106 -l | grep PPD

或者直接查看/etc/cups/ppd/HP_P1106.ppd文件的内容,看看*NickName字段是什么。

另一个原因是Ghostscript版本问题。CUPS在转换文档时会调用Ghostscript,如果Ghostscript版本太老或者缺少某些过滤器,也会导致输出异常。检查Ghostscript:

gs --version

银河麒麟V10自带的Ghostscript版本一般在9.x以上,基本够用。如果版本太低,可以考虑手动升级。

5.4 hp-setup报“No device found”错误

明明lsusb能看到打印机,但hp-setup就是找不到。这种情况通常是因为HPLIP的服务没有正常运行。检查一下:

systemctl status hpiod systemctl status hpssd

这两个是HPLIP的后台服务,负责与打印机通信。如果没运行,启动它们:

sudo systemctl start hpiod sudo systemctl start hpssd

另外,有些版本的HPLIP需要python3-pyqt5等图形库支持才能正常运行hp-setup。如果是在纯命令行环境下,可以用hp-setup -i的交互模式,不需要图形界面。

5.5 权限问题导致普通用户无法打印

如果你用root配置好了打印机,但普通用户打印时提示权限不足,需要把用户加入lp组:

sudo usermod -a -G lp username

然后重新登录使组权限生效。CUPS默认允许lp组的成员管理打印任务。

6. 不同架构平台的适配经验

6.1 x86_64平台

这是最顺利的平台。银河麒麟V10的x86_64版本软件源最全,HPLIP和CUPS的包都能直接apt安装。我在这类机器上装HP P1106,基本就是apt install hplip hplip-gui然后hp-setup -i两步搞定。

6.2 飞腾ARM64平台

飞腾平台上的银河麒麟V10,软件源里也有HPLIP,但版本可能稍老。我遇到过hp-setup在ARM64上运行时报Python脚本错误的情况,原因是某些Python依赖包的版本不匹配。解决办法是手动安装缺失的依赖,或者直接用lpadmin命令手动添加打印机,绕过hp-setup

另外,ARM64平台上Ghostscript的渲染速度会比x86_64慢一些,打印复杂文档时可能需要多等几秒。

6.3 鲲鹏ARM64平台

鲲鹏平台的情况跟飞腾类似,但我在鲲鹏上遇到过CUPS服务默认没安装的情况。需要先apt install cups,然后再装HPLIP。整体流程跟x86_64一致,只是软件包需要确认是aarch64架构的。

7. 日常维护和实用技巧

7.1 查看打印历史记录

CUPS会记录所有打印任务的历史,存放在/var/log/cups/page_log里。如果你想知道谁在什么时候打印了多少页,可以查看这个文件:

tail -f /var/log/cups/page_log

7.2 备份打印机配置

配置好一台打印机不容易,建议把配置文件备份一下:

sudo cp /etc/cups/printers.conf /etc/cups/printers.conf.bak sudo cp /etc/cups/ppd/HP_P1106.ppd /etc/cups/ppd/HP_P1106.ppd.bak

这样以后重装系统或者迁移到其他机器时,直接恢复这两个文件就能快速重建打印队列。

7.3 定期清理打印队列

如果打印任务经常卡住,可以设置一个定时任务定期清理:

cupsdisable HP_P1106 cancel -a HP_P1106 cupsenable HP_P1106

这三条命令的组合效果是:暂停打印机、清空所有任务、重新启用打印机。相当于给打印队列做一次“重启”。

7.4 网络共享打印

如果办公室里有多个同事需要用这台HP P1106,可以在银河麒麟V10上配置CUPS共享。编辑/etc/cups/cupsd.conf,找到Listen部分,确保监听在所有网络接口上:

Listen 0.0.0.0:631

然后在<Location /><Location /admin><Location /printers>这几个段落里,把Allow规则改成允许局域网网段访问,比如:

Allow 192.168.1.0/24

重启CUPS后,其他电脑就可以通过ipp://你的IP:631/printers/HP_P1106来添加这台共享打印机了。

注意:开放CUPS到局域网时,一定要确认防火墙规则,只允许可信网段访问631端口,避免被未授权设备滥用。

8. 我踩过的几个坑和最终建议

第一个坑是HPLIP版本和CUPS版本不兼容。有一次在一台老旧的银河麒麟V10上,系统自带的HPLIP是3.18版本,而CUPS是2.2版本,两者配合时hp-setup总是报错。后来手动升级HPLIP到3.20版本才解决。所以如果你的系统比较老,建议先看看HPLIP版本:

hp-check -t

这个命令会输出详细的诊断信息,包括版本、依赖、服务状态等,是排查问题的利器。

第二个坑是USB接口供电不足。HP P1106虽然功耗不大,但在某些工控机上,前置USB接口的供电能力有限,导致打印机时好时坏。后来换到后置USB接口就稳定了。如果你遇到打印机偶尔能识别偶尔不能,不妨换个USB口试试。

第三个坑是SELinux或AppArmor的干扰。银河麒麟V10默认可能开启了某种安全模块,会阻止CUPS访问USB设备。如果排查了半天都找不到原因,可以临时把安全模块设为宽容模式测试一下。当然,生产环境不建议长期关闭安全模块,而是应该添加相应的策略规则。

最后说一个实用建议:如果你需要在多台银河麒麟V10机器上部署同一款打印机,可以写一个简单的Shell脚本,把安装和配置步骤自动化。脚本里包含检查CUPS状态、安装HPLIP、用lpadmin添加打印机、设置默认队列这几步。这样批量部署时能省不少时间。

我在实际项目里就是这么干的,一个脚本跑完,十台机器五分钟全部搞定。比起一台台手动配置,效率提升非常明显。而且脚本可以版本化管理,以后换打印机型号或者系统升级,改改参数就能复用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询