前言
办公室里放了一台小主机安装了 PVE 当小服务器用,跑一些乱七八糟的服务,之前安装了 Windows 10 LTSC 版本,专门连接打印机实现办公室内共享。但是吧, 别的服务都跑在 LXC 的 Debian 容器上,单单为了一台打印机而装了 Windows 占用那么高的内存,还卡卡的,不符合我这折腾的习惯。
正好,PVE 更新了 8.2 系统,LXC 容器可以直接在 资源
处直接添加 Device Passthrough
,避免了直接编辑 conf 文件的麻烦。
那么话不多说,直接进入正题。
技术栈
-
PVE LXC 直通
-
OpenPrinting CUPS
-
HP Linux Imaging and Printing
PVE 下查看 USB 设备挂载路径并直通到 LXC 容器
PVE 8.2 的安装以及 LXC 容器的安装在这里不再赘述,如有需要可以看我这篇文章 《环境配置快速复制-PVE速配》 的内容。
PVE 查看 USB 设备挂载路径的方式很简单,在 PVE 的 shell 中执行 lsusb
命令进行查询,比如我这里
root@pve:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 045: ID 03f0:1053 HP, Inc Ink Tank 310 series
Bus 001 Device 003: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
可以看到 HP, Inc Ink Tank 310 series
这个打印机是 001
总线的 045
设备,那么它的设备路径就是 /dev/bus/usb/001/045
,记住这个路径,下面会用到。
打开需要配置为共享打印机的容器,点击 资源
添加 Device Passthrough
,Device Path
填写之前找到的设备路径 /dev/bus/usb/001/045
,添加即可。
安装 CUPS 软件及打印机驱动
apt install cups hplip -y
systemctl enable cups
systemctl start cups
之前安装了 CUPS
后,死活找不到打印机,一度怀疑是打印机太老了没有驱动,但是想想也不太可能,经过在网上多方查找之后,无果,尝试安装 Ubuntu 桌面版后却发现可以直接驱动打印机,最后一通查找才发现 hplip
里带有该打印机的 PPD 文件。
关于 cups 的配置修改如下
nano /etc/cups/cupsd.conf
-
把
Browsing Off
改为Browsing On
, 这样是为了让局域网内的其他设备能够搜索到打印机 把Listen localhost:631
改为Port 631
, 这样是能够让局域网访问WEB面板
-
需要确保 CUPS 正在侦听所有接口。
<Location />
Order allow,deny
</Location>
改为
<Location />
Order allow,deny
Allow @LOCAL
</Location>
-
为
/admin
目录添加访问权限
<Location /admin>
Order allow,deny
</Location>
改为
<Location /admin>
AuthType Default
Require valid-user
Order allow,deny
Allow @LOCAL
</Location>
-
保存并关闭文件。然后重新启动 CUPS 以使更改生效:
systemctl restart cups
查找添加打印机
进入 https://IP:631/admin
,在 Printers
项中点击 Find New Printers
,添加打印机(我这里是 HP, Inc Ink Tank 310 series ),选择对应名称的 ppd 文件安装,最后即可在 https://IP:631/printers/
查看到添加的打印机。
关于共享操作,各种系统下均可以在局域网中搜索到共享打印机,直接添加即可。