在OpenWrt路由器上配置有线HP打印机
前言
作为学生,时常有打印的需求。而我的打印机不支持无线打印,每次打印都要打开电脑显然很麻烦。在房间网关更换为带usb接口的路由器后,便打算配置无线打印服务器。
必要条件
- 一台HP打印机。(我的是Hewlett-Packard Deskjet 1050)
- 一台带usb接口OpenWrt路由器。
- 一台电脑(最好有Linux环境)。
- 聪明的大脑。
- 灵巧的小手。
- 巧妙的上网方法。
编译OpenWrt
由于OpenWrt项目从LEDE17开始就不再提供预编译的CUPS软件,到现在的最新版(21.02.3)甚至没有内置在官方源码里,所以我们需要自行编译CUPS。
如果你不想编译,请直接跳到使用二进制包。编译的好处是可以把CUPS内置在固件镜像内,而且可以调整别的内容。
(以下内容参照OpenWrt官方wiki)
配置编译环境
本人是在Red Hat Enterprise Linux 9上编译的(Fedora/CentOS等同理),配置编译环境只用执行以下命令即可:
sudo dnf --setopt install_weak_deps=False --skip-broken install \
bash-completion bzip2 gcc gcc-c++ git make ncurses-devel patch \
rsync tar unzip wget which diffutils python2 python3 perl-base \
perl-Data-Dumper perl-File-Compare perl-File-Copy perl-FindBin \
perl-Thread-Queue
其他发行版的环境配置命令也可以在OpenWrt Wiki找到。
注意:如果你使用Windows Subsystem for Linux编译,请删去PATH里的Windows路径。
获取源代码
使用git把OpenWrt的源代码克隆下来:
git clone https://git.openwrt.org/openwrt/openwrt.git
checkout到一个稳定版(这里选择21.02.3)
cd openwrt/
git checkout v21.02.3
# 你也可以用 git tag 看看其他可用的版本
获取软件包列表
./scripts/feeds update -a
./scripts/feeds install -a
看看有没有CUPS软件包可用
make menuconfig
# 记得把终端窗口放大一点
打开菜单之后,按下 /
,输入libcups寻找源码仓库内是否含CUPS:
如果找到了(就如下图),那么恭喜你,你不用配置第三方源。
否则,请往下看。
在寻找完成之后,不要改动任何选项,选择Exit再按下
添加CUPS源码仓库
在源码目录内,运行以下命令以添加CUPS仓库:
echo "src-git cups https://github.com/TheMMcOfficial/lede-cups.git" >> feeds.conf.default
然后更新仓库列表
./scripts/feeds update -a
./scripts/feeds install -a
(如果你打开这个仓库,你会发现最后更新在2018年。请不要担心,这不意味着编译出的CUPS不可用)
更改配置
如果你的设备不在OpenWrt的官方支持列表里,请直接跳到使用二进制包。
打开OpenWrt的下载仓库,定位到你的设备的目录
然后向下,定位到config.buildinfo
,复制链接
回到终端,输入以下命令以使用你设备的配置
rm -f .config ; wget <你复制的链接> -O .config
make menuconfig
在菜单里Target Profile处选择你的设备
最后,在菜单首页选中
- Network(ing) -> Printing -> cups (不需要选中附加组件,且有可能编译失败)
- Library -> libcups
如果你想要把包内置在固件里的话,把包选择成 [*] ,否则,请选择成 [M] 。
按下保存并退出,就可以编译了。
开始编译
make -j $(nproc) defconfig download clean world
这可能会占满你电脑的资源并花费几个小时的时间。你可以在这期间休息一下。
安装CUPS
编译好之后,你应该能在以下目录找到文件
- 编译好的固件:
bin/targets/<设备平台>/<设备硬件>
- 编译好的包:
bin/targets/<设备平台>/<设备硬件>/packages
比如我使用联想新路由Mini,是Realtek MIPS平台,采用MT7620固件,那么我能在bin/targets/ramips/mt7620
找到固件。
- 如果你上面配置CUPS选择了[*],请刷入固件
- 如果你上面选择了[M],请安装包。(温馨提示:用
ls *cups*
可以找到名称里包含cups
的文件)此时固件的刷入是可选的。
使用二进制包
当然,你也可以不编译,使用别人现成的包。
你可以在以下地方下载编译好的CUPS包:
鉴别musl
和uClibc
ssh进入你设备的后台,运行以下命令
ls /lib/*uClibc* -l || ls /lib/*musl* -l
如果你看见了类似于以下的回复,你使用的是musl
ls: /lib/*uclibc*: No such file or directory
lrwxrwxrwx 1 root root 7 Apr 16 12:59 /lib/ld-musl-mipsel-sf.so.1 -> libc.so
如果你看见了类似于以下的回复,你使用的是uClibc
-rwxr-xr-x. 1 root root 21520 Apr 3 2009 /lib/ld-uClibc-0.9.30.1.so
lrwxrwxrwx. 1 root root 21 Apr 3 2009 /lib/ld-uClibc.so.0 -> ld-uClibc-0.9.30.1.so
-rwxr-xr-x. 1 root root 182840 Apr 3 2009 /lib/libuClibc++-0.2.2.so
-rw-r--r--. 1 root root 863992 Apr 3 2009 /lib/libuClibc++.a
lrwxrwxrwx. 1 root root 16 Apr 3 2009 /lib/libuClibc++.so -> libuClibc++.so.0
lrwxrwxrwx. 1 root root 20 Apr 3 2009 /lib/libuClibc++.so.0 -> libuClibc++-0.2.2.so
-rw-r--r--. 1 root root 294744 Apr 3 2009 /lib/libuClibc-0.9.30.1.so
选择合适的架构,然后上传安装。
配置打印机
好了之后(建议重启一下),打开浏览器,输入网址
http://<路由器的ip地址>:631/
进入CUPS管理界面。
点击Administration(应该会需要你输入root账户及密码),进入CUPS管理后台
点击按钮添加打印机。
记得勾选Share This Printer。
此时需要你选择一个驱动,不要惊慌。打开惠普Linux制图与打印,选择最新版本,下载tar.gz文件。
解压,进入ppd/hpcups目录
定位到你的打印机(如果打印机的ppd文件不在这里面,请在hplip包的其他地方找找。),解压出ppd文件
并上传到CUPS管理界面。
最后选择默认设置
就配置好你的打印机了。
最后你应该能在支持CUPS的系统设置里查找到你的打印机,不要忘记在本地设备上配置驱动哦!
后记
配置CUPS的初衷是更方便地打印。可惜到毕业之后才配置好,深感哀伤。总而言之,希望这篇文章能对你提供帮助。