ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

银河麒麟V10安装HP P1106打印机驱动全攻略:CUPS与HPLIP实战

2026/9/24 9:59:59 拓冰建站 浏览量
银河麒麟V10安装HP P1106打印机驱动全攻略:CUPS与HPLIP实战 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 CUPSLinux世界的打印总管CUPS全称是Common Unix Printing System翻译过来就是通用Unix打印系统。你可以把它理解成Linux系统里的“打印服务总调度台”。不管是本地USB打印机还是网络打印机最终都要通过CUPS来接收打印任务、转换成打印机认识的指令、然后发送给硬件。在银河麒麟V10里CUPS默认是安装了的但不一定默认启动。很多朋友装完系统插上打印机发现没反应第一反应是“驱动没装”其实有时候只是CUPS服务没跑起来。这个后面我会详细讲怎么排查。CUPS的配置文件主要在/etc/cups/目录下核心文件是cupsd.conf和printers.conf。cupsd.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-setup、hp-check、hp-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 V10。uname -m会显示CPU架构常见的有x86_64、aarch64ARM64、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 cupsenable的作用是设置开机自启避免每次重启后都要手动启动。有些朋友可能会遇到systemctl start cups报错的情况这时候可以看看错误信息常见的原因是配置文件有语法错误或者端口被占用。3.3 检查HPLIP是否已安装dpkg -l | grep hplip银河麒麟V10基于Debian体系所以用dpkg来查。如果输出里有hplip、hplip-data、printer-driver-hpcups等包说明已经安装了。如果什么都没输出那就需要手动安装。在联网环境下可以直接用apt安装sudo apt update sudo apt install hplip hplip-gui printer-driver-hpcupshplip-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是惠普的厂商ID002a是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?serialXXXXXX -m hp-laserjet_p1106.ppd.gz这里的参数解释一下-p指定打印机队列名称可以自己起比如HP_P1106-E表示启用打印机并接受打印任务-v指定设备URIUSB打印机的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权限是640或644。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驱动就可能出现乱码。确认一下当前使用的PPDlpstat -p HP_P1106 -l | grep PPD或者直接查看/etc/cups/ppd/HP_P1106.ppd文件的内容看看*NickName字段是什么。另一个原因是Ghostscript版本问题。CUPS在转换文档时会调用Ghostscript如果Ghostscript版本太老或者缺少某些过滤器也会导致输出异常。检查Ghostscriptgs --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_log7.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添加打印机、设置默认队列这几步。这样批量部署时能省不少时间。我在实际项目里就是这么干的一个脚本跑完十台机器五分钟全部搞定。比起一台台手动配置效率提升非常明显。而且脚本可以版本化管理以后换打印机型号或者系统升级改改参数就能复用。