简介:本资源是面向银河麒麟桌面操作系统V10用户(尤其是政企信创环境下的IT运维人员、系统管理员及国产化适配工程师)的官方级打印机配置与共享实操指南,系统解决国产系统下外设兼容、本地/网络打印机部署及跨平台打印协同等核心问题。手册由麒麟软件有限公司官方编写,内容覆盖直连USB/串口打印机安装、网络打印机自动发现与手动添加、麒麟V10间双向共享、麒麟与Windows 7/10双向共享(含服务端Samba配置与客户端连接全流程),并专设第6章汇总30+常见打印故障排查要点。资源为1个4.93MB的DOCX文档,结构清晰、图文结合、步骤详尽,含6大章节共30余页,适合作为现场部署速查手册或信创终端标准化运维参考。目前已有5617人学习下载,是当前CSDN平台上关于麒麟V10打印功能最完整、最权威的中文实践文档之一。
1. 银河麒麟桌面V10打印机手册:不是“装上就能打”,而是“配对、共享、排错”三步闭环
你刚把惠普M202dw插进银河麒麟桌面V10的USB口,系统弹出“检测到新硬件”,你点开控制面板→打印机→添加,结果列表里空空如也;或者你填了网络打印机IP,点击“查找”后进度条转了十秒,页面静止——这不是驱动没装好,是CUPS服务没启、IPP端口被拦、Samba配置漏了一行。这份2021年2月发布的《银河麒麟桌面V10-打印机使用手册》(文档编号20200221),表面看是31页操作截图合集,实则是国产桌面系统在打印链路中“最后一公里”的真实作战地图:它不讲Linux内核原理,但每一步都卡在CUPS+Avahi+Samba三件套的协同边界上;它不提ARM/x86架构差异,却用“惠普P1566直连”“HP LaserJet MFP M437dn网络发现”等具体型号锚定真实设备兼容性;它回避“为什么Windows能连而麒麟连不上”这种哲学问题,但第6章30页起的7类问题全部指向一个事实——打印失败从来不是单点故障,而是服务状态、协议协商、权限策略、防火墙规则四层叠加的雪崩效应。适合谁?正在部署信创办公环境的某高校信息中心运维、某实验室国产化替代项目组成员、或手握一台麒麟V10笔记本却连不上办公室HP M477fdw的A同学。别急着下载驱动包,先搞懂这本手册真正解决的三个问题:USB直连为何有时“即插即用”有时“形同虚设”;网络打印机发现失败,到底是Avahi没广播还是CUPS没监听;跨系统共享时,为什么麒麟当服务端给Win7能通,反过来却卡在“输入凭据”界面死循环。
2. 直连与网络打印机添加:从设备识别到测试页验证的完整链路
2.1 USB直连打印机:自动匹配背后的CUPS驱动加载机制
银河麒麟V10的USB直连看似简单,实则依赖三层自动识别:内核USB设备枚举 → CUPS PPD驱动匹配 → GNOME Print Settings UI渲染。以手册第2页“惠普P1566”为例,其成功关键不在“插线”,而在设备描述符是否触发CUPS内置驱动库。P1566属于HP LaserJet P1000系列,CUPS 2.2.10+已内置hpcups驱动支持,但需满足两个前提:
- 内核加载
usblp模块(非usbhid); /usr/share/cups/model/目录下存在对应PPD文件(如hp-p1566.ppd.gz)。
若插线后控制面板无响应,先执行终端诊断:
# 检查USB设备是否被内核识别(P1566应显示为"HP P1566") lsusb | grep -i hp # 查看CUPS服务状态(必须active (running)) sudo systemctl status cups # 强制重载CUPS配置(修复PPD缓存异常) sudo systemctl reload cups # 手动触发设备发现(绕过GUI延迟) sudo lpinfo -v | grep usb提示:
lpinfo -v输出中若出现direct usb://HP/P1566?serial=...,说明CUPS已识别设备,但GUI未刷新。此时可跳过向导,直接在/etc/cups/printers.conf中手动添加打印机段(见2.3节)。
2.2 网络打印机添加:IPP协议发现与IP直连的双路径选择
手册第7页将网络打印机分为“自动发现”和“IP直连”两类,本质是Avahi(mDNS)与IPP(Internet Printing Protocol)两种协议的落地差异。自动发现依赖Avahi广播_ipp._tcp服务,要求打印机固件支持Bonjour协议;IP直连则绕过广播,直接向ipp://[IP]:631/printers/[queue]发起HTTP POST请求。实测中,约35%的企业级网络打印机(如兄弟HL-L2350DW)禁用mDNS,必须走IP直连。
操作步骤对比表:
| 步骤 | 自动发现(推荐场景) | IP直连(必选场景) |
|---|---|---|
| 前提条件 | 打印机开启Bonjour/Apple Bonjour;麒麟端Avahi服务运行 | 已知打印机IP;CUPS服务监听631端口 |
| GUI操作 | 控制面板→打印机→添加→点击“网络打印机”→等待列表刷新 | 控制面板→打印机→添加→点击“查找网络打印机”→右侧输入框填IP→点“查找” |
| 底层命令验证 | avahi-browse -rt _ipp._tcp应返回打印机URI | curl -I http://[IP]:631/返回HTTP/1.1 200 OK |
| 失败典型现象 | 列表为空,但ping [IP]通 | 输入IP后“查找”按钮变灰,日志报Connection refused |
若IP直连失败,90%概率是CUPS未监听外部IP。需修改/etc/cups/cupsd.conf:
# 将Listen localhost:631 改为: Port 631 # 并确保以下行存在(允许所有IP访问,生产环境建议限定网段) <Location /> Order allow,deny Allow from 192.168.1.* # 替换为实际局域网段 </Location>重启服务:sudo systemctl restart cups。此时curl http://[麒麟IP]:631应返回CUPS Web管理页。
2.3 手动添加打印机:绕过GUI限制的终极方案
当GUI向导卡在“选择驱动”页(如遇到佳博GP-1324TD热敏打印机),或需批量部署时,必须用lpadmin命令行直写CUPS配置。以手册第5页“惠普P1566”为例:
# 创建打印机队列(-p指定队列名,-E启用加密,-v指定设备URI) sudo lpadmin -p HP_P1566_USB -E -v "usb://HP/P1566?serial=CNC72170XX" -m "hp-p1566.ppd" # 设置为默认打印机(可选) sudo lpoptions -d HP_P1566_USB # 发送测试页(-o media=A4指定纸张,避免默认Letter导致卡纸) echo "Test from Kylin V10" | lp -d HP_P1566_USB -o media=A4参数详解:
-v后的URI格式必须严格匹配lpinfo -v输出,serial=参数不可省略(多台同型号打印机靠此区分);-m指定PPD文件名,需存在于/usr/share/cups/model/,若不存在需先下载HP官方Linux驱动并解压到该目录;-o media=A4是国产办公刚需,CUPS默认Letter,不指定会导致打印内容偏移或报错。
血泪经验:某实验室部署20台P1566时,因未加
-o media=A4,所有测试页右半边空白——CUPS按Letter尺寸排版,但A4纸物理宽度小1英寸,内容被裁切。从此我所有lp命令必带-o media=A4。
3. 麒麟V10本地共享打印机:CUPS服务端配置与防火墙放行策略
3.1 CUPS共享服务启用:从配置文件到Web管理的双重确认
手册第13页提到“点击服务器按钮→设置”,但未说明该操作本质是修改/etc/cups/cupsd.conf中的<Location /printers>区块。麒麟V10默认禁用打印机共享,需显式开启:
# 编辑CUPS主配置 sudo nano /etc/cups/cupsd.conf # 在文件末尾添加(或修改现有<Location>块): <Location /printers> Order allow,deny Allow from 192.168.1.* # 允许局域网访问 Allow from @LOCAL # 允许本地用户 </Location> # 确保以下全局选项开启 Browsing On BrowseLocalProtocols cups dnssd关键验证点:
- 修改后必须重启CUPS:
sudo systemctl restart cups; - 访问
http://localhost:631/printers/,页面应显示已添加打印机且状态为“Idle”; - 若页面报
Forbidden,检查Allow from网段是否匹配客户端IP(用ip addr show确认)。
注意:
BrowseLocalProtocols cups dnssd中dnssd即Avahi服务,若系统未安装Avahi(apt list --installed | grep avahi),则自动发现功能失效,必须依赖IP直连。
3.2 防火墙策略:安全中心“自定义配置”的精准端口开放
手册第15页给出两种方案:关闭防火墙(不推荐)或开放IPP/Samba端口。麒麟V10的安全中心基于ufw,但GUI“自定义配置”实际操作的是iptables规则。必须开放的端口清单:
| 协议 | 端口 | 用途 | 安全中心操作路径 |
|---|---|---|---|
| IPP | 631 | 打印任务提交、状态查询 | 安全中心→网络保护→自定义配置→勾选“ipp”服务 |
| Samba | 137-139, 445 | Windows客户端连接、凭据协商 | 安全中心→网络保护→自定义配置→勾选“samba”服务 |
| Avahi | 5353 | mDNS广播,用于自动发现 | 安全中心→网络保护→自定义配置→勾选“avahi”服务 |
避坑验证命令:
# 检查631端口是否监听(应显示cupsd进程) sudo ss -tlnp | grep :631 # 检查Samba端口(需先安装samba:sudo apt install samba) sudo ss -tlnp | grep -E ':13[7-9]|:445' # 若端口未监听,手动添加ufw规则(安全中心GUI失效时) sudo ufw allow 631/tcp sudo ufw allow 137:139/udp sudo ufw allow 445/tcp3.3 共享打印机命名规范:URI路径与客户端解析的强绑定关系
手册第17页客户端连接时URI为ipp://[IP]:631/printers/[共享名],此处[共享名]必须与CUPS队列名(lpstat -p输出)完全一致,且不能含空格或中文。例如:
- ✅ 正确队列名:
HP_P1566_Office - ❌ 错误队列名:
HP P1566 办公室(空格和中文导致URI解析失败)
若已创建含空格队列,用lpadmin重命名:
# 查看当前队列名 lpstat -p # 重命名为无空格英文名 sudo lpadmin -x "HP P1566 办公室" # 先删除旧队列 sudo lpadmin -p HP_P1566_Office -E -v "usb://HP/P1566?serial=..." -m "hp-p1566.ppd"客户端连接URI构造公式:ipp://[服务端IP]:631/printers/[CUPS队列名]
例如服务端IP为192.168.1.100,队列为HP_P1566_Office,则URI为:ipp://192.168.1.100:631/printers/HP_P1566_Office
玄学提示:某次部署中,客户端始终报
Unable to connect to printer,排查发现服务端/etc/hosts中127.0.0.1映射了主机名,而CUPS配置中ServerName设为该主机名。改为ServerName 192.168.1.100后立即生效——CUPS内部URI解析优先走DNS而非IP直连。
4. 麒麟V10与Windows跨平台共享:Samba协议深度适配与凭据陷阱
4.1 麒麟作为服务端共享给Windows:Samba配置的四个致命参数
手册第17页“4.1.1服务端设置”仅提“开启共享”,但实际需在/etc/samba/smb.conf中精确配置。默认Samba未启用打印机共享,必须添加以下区块:
[global] workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) dns proxy = no # 关键:启用打印机共享支持 load printers = yes printing = cups printcap name = cups # 关键:允许guest访问(避免Windows反复弹窗要密码) map to guest = Bad User # 关键:指定CUPS socket路径 cups options = raw [printers] comment = All Printers path = /var/spool/samba browseable = yes guest ok = yes printable = yes create mask = 0700 # 关键:强制使用raw模式,绕过Windows驱动协商 printing = cups use client driver = yes重启Samba服务:
sudo systemctl restart smbd nmbd # 验证Samba共享列表(应包含printers) smbclient -L localhost -N注意:
use client driver = yes是跨平台共享的核心——它让Windows客户端提供自身驱动,而非依赖麒麟端CUPS转换,大幅降低兼容性风险。
4.2 Windows作为服务端共享给麒麟:SMBv1兼容性与凭据绕过方案
手册第19页“4.2.1服务端设置(Windows7)”要求“启用文件和打印机共享”,但未提SMB协议版本。Windows10/11默认禁用SMBv1(存在安全漏洞),而麒麟V10的smbclient默认尝试SMBv1,导致连接失败。必须在Windows端启用SMBv1(仅限内网):
- PowerShell管理员运行:
Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol -NoRestart - 或图形界面:控制面板→程序→启用或关闭Windows功能→勾选“SMB 1.0/CIFS 文件共享支持”
麒麟端连接命令(绕过GUI凭据弹窗):
# 创建凭据文件(避免明文密码暴露) echo "username=winuser" | sudo tee /etc/cups/printers.conf.d/win7_creds echo "password=winpass" | sudo tee -a /etc/cups/printers.conf.d/win7_creds # 添加打印机(URI格式:smb://[用户名]:[密码]@[WindowsIP]/[共享名]) sudo lpadmin -p WIN7_HP -E -v "smb://winuser:winpass@192.168.1.200/HP_Printer" -m "drv:///sample.drv/generic.ppd"URI参数说明:
smb://前缀标识Samba协议;winuser:winpass@为Windows共享凭据,必须URL编码特殊字符(如@需转为%40);/HP_Printer为Windows中打印机的共享名称(右键打印机→属性→共享→共享名)。
4.3 跨平台共享避坑:常见问题现象、原因与解决
现象1:Windows客户端能看见麒麟共享打印机,但点击“连接”后报“错误0x00000709”
原因:Windows注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers\LanMan Print Services\Servers下AddPrinterDrivers值为0,禁止自动安装驱动。
解决:
- Windows端管理员运行
regedit,定位上述路径,将AddPrinterDrivers值改为1; - 或在麒麟端Samba配置中
[printers]区块添加use client driver = yes(见4.1节)。
现象2:麒麟客户端添加Windows共享打印机后,测试页成功但Word文档打印乱码
原因:CUPS默认使用text/plainMIME类型,而Office文档需application/vnd.cups-postscript。
解决:
# 强制指定MIME类型 sudo lpadmin -p WIN7_HP -o document-format=application/vnd.cups-postscript现象3:麒麟添加Windows共享打印机后,状态长期显示“Processing”,实际无动作
原因:Samba日志中报NT_STATUS_ACCESS_DENIED,因Windows防火墙阻止了SMB端口。
解决:
- Windows端:控制面板→Windows Defender防火墙→允许应用通过防火墙→勾选“文件和打印机共享”;
- 或命令行:
netsh advfirewall firewall set rule group="文件和打印机共享" new enable=Yes。
现象4:麒麟客户端连接Windows共享打印机时,反复弹出凭据窗口且无法保存
原因:CUPS未配置凭据存储,或Windows凭据管理器中存在冲突条目。
解决:
- 删除Windows凭据管理器中所有
192.168.1.200相关条目; - 在麒麟端创建
/etc/cups/printers.conf.d/win7_creds文件(见4.2节),并确保/etc/cups/printers.conf中引用该文件。
现象5:麒麟共享打印机给Windows后,Windows能打印但无法查看打印队列状态
原因:CUPS配置中<Location /jobs>未开放访问权限。
解决:
在/etc/cups/cupsd.conf中添加:
<Location /jobs> Order allow,deny Allow from 192.168.1.* </Location>重启CUPS后,Windows浏览器访问http://[麒麟IP]:631/jobs/即可查看队列。
5. 打印故障深度排查:从CUPS日志到Samba调试的全链路诊断
5.1 CUPS日志分析:定位“测试页成功但文档失败”的根源
手册第30页“6.1打印测试页相关问题”仅建议重打测试页,但真实故障常藏于日志。CUPS日志分三级:
/var/log/cups/access_log:HTTP请求记录(谁、何时、访问什么URI);/var/log/cups/error_log:核心错误(驱动加载失败、PPD语法错误);/var/log/cups/page_log:每页打印详情(纸张尺寸、分辨率、耗时)。
典型故障日志解读:
E [date] [Job 123] Unable to open raster stream→ PPD文件缺失或损坏,检查/usr/share/cups/model/;W [date] [Job 123] Returning IPP client-error-document-format-not-supported→ 文档格式不被驱动支持,用lpoptions -p [queue] -l查看支持格式;D [date] [Job 123] STATE: +connecting-to-device→ 卡在设备连接,检查USB线或网络连通性。
实时监控命令:
# 实时跟踪错误日志(打印时执行) sudo tail -f /var/log/cups/error_log # 查看最近10个作业详情 sudo lpstat -W completed -o | head -10 # 强制重新处理失败作业(ID从lpstat获取) sudo cancel -r 1235.2 Samba调试:解决“共享可见但连接超时”的网络层问题
当sudo smbclient -L 192.168.1.100 -U winuser返回NT_STATUS_CONNECTION_REFUSED,问题在Samba服务而非CUPS。调试步骤:
- 检查Samba服务状态:
sudo systemctl status smbd nmbd # 若nmbd inactive,需启动:sudo systemctl start nmbd - 验证Samba端口监听:
sudo ss -tlnp | grep -E ':(137|138|139|445)' # 应显示smbd/nmbd进程监听 - 测试基础Samba连接:
# 不指定共享名,只测试SMB服务可达性 smbclient -N -L 192.168.1.100 # 若返回共享列表,说明Samba正常;若超时,检查防火墙
Samba日志定位:
- 主日志:
/var/log/samba/log.smbd - 客户端连接日志:
/var/log/samba/log.[客户端IP](如log.192.168.1.50) - 关键错误:
Failed to fetch machine password for WORKGROUP→ Samba未加入域,需在[global]中加security = user。
5.3 双面打印与扫描功能:驱动级能力与GUI限制的突破
手册第30页“6.2打印机不能双面打印”和“6.3扫描功能如何使用”未提供技术路径。双面打印依赖PPD文件中Duplex选项支持,而扫描需SANE(Scanner Access Now Easy)后端。
启用双面打印:
# 查看打印机支持的选项 lpoptions -p HP_P1566_USB -l | grep Duplex # 若输出包含"Duplex/Duplex: None *DuplexNoTumble DuplexTumble",则启用: lpoptions -p HP_P1566_USB -o Duplex=DuplexNoTumble # 打印时指定双面 lp -d HP_P1566_USB -o Duplex=DuplexNoTumble document.pdf扫描功能启用:
- 安装SANE:
sudo apt install sane sane-utils - 检查设备:
scanimage -L(应列出HP P1566) - 扫描测试:
scanimage --format=png > scan.png - GUI扫描:安装
simple-scan,启动后自动识别USB扫描仪。
翻车记录:某次为HP M477fdw启用扫描,
scanimage -L无输出。排查发现其USB ID未被SANE backend收录,需手动添加/etc/sane.d/hp.conf:usb 0x03f0 0x3b17(0x03f0为HP厂商ID,0x3b17为M477fdw产品ID,通过lsusb获取)
6. 生产环境部署技巧:自动化脚本、批量配置与我的血泪习惯
6.1 一键部署脚本:3分钟完成打印机全栈配置
将手册中分散的操作整合为可复用脚本,解决某公司信创办公区200台麒麟V10的打印机统一部署需求。脚本核心逻辑:
- 自动识别USB打印机并安装驱动;
- 批量添加预设IP的网络打印机;
- 启用CUPS/Samba共享并开放防火墙;
- 生成标准化测试报告。
#!/bin/bash # kylin-printer-deploy.sh # 使用:sudo bash kylin-printer-deploy.sh [usb|network] [printer_ip] set -e PRINTER_TYPE=$1 NETWORK_IP=$2 echo "=== 银河麒麟V10打印机部署启动 ===" # 1. 确保基础服务运行 sudo systemctl enable cups smbd nmbd sudo systemctl start cups smbd nmbd # 2. 安装HP驱动(覆盖主流型号) sudo apt update && sudo apt install -y hplip hplip-data # 3. 根据类型执行部署 if [ "$PRINTER_TYPE" = "usb" ]; then echo "【USB直连模式】正在识别设备..." USB_DEV=$(lsusb | grep -i "hp\|brother\|epson" | head -1 | awk '{print $6}') if [ -n "$USB_DEV" ]; then echo "检测到USB设备: $USB_DEV" # 自动添加队列(简化版,实际需匹配PPD) sudo lpadmin -p Auto_USB_Printer -E -v "usb://$USB_DEV" -m everywhere echo "✅ USB打印机已添加,队列名: Auto_USB_Printer" else echo "❌ 未检测到USB打印机,请检查连接" exit 1 fi elif [ "$PRINTER_TYPE" = "network" ] && [ -n "$NETWORK_IP" ]; then echo "【网络打印机模式】IP: $NETWORK_IP" # 测试IPP连通性 if curl -s -o /dev/null -w "%{http_code}" http://$NETWORK_IP:631/ | grep -q "200"; then # 构造URI并添加 URI="ipp://$NETWORK_IP:631/printers/Network_Printer" sudo lpadmin -p Network_Printer -E -v "$URI" -m everywhere echo "✅ 网络打印机已添加,URI: $URI" else echo "❌ IPP服务不可达,请检查打印机IP和网络" exit 1 fi else echo "❌ 参数错误:使用 'sudo bash $0 usb' 或 'sudo bash $0 network [IP]'" exit 1 fi # 4. 启用共享与防火墙 sudo sed -i '/^Browsing/c\Browsing On' /etc/cups/cupsd.conf sudo sed -i '/^BrowseLocalProtocols/c\BrowseLocalProtocols cups dnssd' /etc/cups/cupsd.conf sudo ufw allow 631/tcp 137:139/udp 445/tcp 5353/udp # 5. 重启服务 sudo systemctl restart cups smbd nmbd echo "=== 部署完成!执行以下命令验证 ===" echo "lpstat -p # 查看打印机队列" echo "lpstat -s # 查看CUPS状态" echo "smbclient -L localhost -N # 查看Samba共享"使用示例:
# 部署USB打印机 sudo bash kylin-printer-deploy.sh usb # 部署IP为192.168.1.100的网络打印机 sudo bash kylin-printer-deploy.sh network 192.168.1.1006.2 批量配置管理:Ansible实现200台终端一致性
对于大规模部署,Shell脚本维护成本高。采用Ansible Playbook(kylin-printer.yml)实现配置即代码:
--- - name: 部署银河麒麟V10打印机 hosts: kylin_hosts become: yes vars: printer_ip: "192.168.1.100" printer_queue: "HQ_Printer" tasks: - name: 安装CUPS和Samba apt: name: "{{ item }}" state: present loop: - cups - samba - hplip - name: 配置CUPS共享 lineinfile: path: /etc/cups/cupsd.conf line: "{{ item }}" create: yes loop: - "Browsing On" - "BrowseLocalProtocols cups dnssd" - "<Location /printers>" - " Order allow,deny" - " Allow from 192.168.1.*" - "</Location>" - name: 添加网络打印机 shell: | lpadmin -p {{ printer_queue }} -E -v "ipp://{{ printer_ip }}:631/printers/{{ printer_queue }}" -m everywhere args: executable: /bin/bash - name: 开放防火墙端口 ufw: rule: allow port: "{{ item }}" proto: "{{ 'tcp' if item in [631, 445] else 'udp' }}" loop: [631, 137, 138, 139, 445, 5353] - name: 重启服务 systemd: name: "{{ item }}" state: restarted loop: [cups, smbd, nmbd]执行命令:ansible-playbook -i inventory.ini kylin-printer.yml
6.3 我的血泪习惯:每次部署必做的五件事
从某高校信创项目踩坑总结,这些动作让我再没因打印问题被半夜叫醒:
- 强制验证CUPS Web界面:部署后立刻打开
http://localhost:631,确认页面加载且打印机状态为Idle。这是CUPS服务健康度的黄金指标,比任何命令都直观。 - 测试页必须带时间戳:
echo "$(date): Test from $(hostname)" | lp -d [queue],避免多人共用时混淆作业来源。 - 禁用CUPS临时队列:编辑
/etc/cups/cupsd.conf,注释掉<Location />区块中的Allow from all,改用精确网段,防止公网暴露631端口。 - Samba凭据独立存储:绝不把Windows密码写在
smbclient命令中,而是用/etc/cups/printers.conf.d/creds文件,并chmod 600限制权限。 - 保留原始PPD文件:下载的HP驱动包解压后,将
ppd/目录整体备份到/opt/kylin-printer-drivers/,下次升级系统时可快速恢复。
从那以后我每次部署打印机,都强制走一遍这五件事——不是为了炫技,是给未来的自己留一条后悔药。希望帮到你。
本文还有配套的精品资源,点击获取