在Debian下共享Windows打印机

Linux之家

我公司用的是SAMSUNG ML2100打印机,以前都是有什么需要打印的资料切换到Windows下打印出来,今天无意到三星的网站上看了看,该款打印机竟然有for Linux驱动,看来不如把它驱动起来直接在Linux下打印。

我的SAMSUNG ML2100挂在一个计算机名为server的Windows2000系统上,其共享名称为SAMSUNGM。我使用的Linux系统是Debian sid。

1.安装SMB

由于要从Linux中共享Windows中的打印机,所以使用SMB协议,当然也为了实现网络邻居,所以用root身份装了samba和smbclient。这个在其他系统中也可以通过系统组件的添加完成。

2.安装cups

用#apt-get install cupsys命令安装的时候,同时装了一堆像cupsys之类的补充程序和模块。以上所有软件的安装均是使用Debian自带的apt工具在线安装的,使用其它版本Linux的朋友可以使用它的软件包管理工具安装这些软件包。

3.下载安装SAMSUNG打印机的驱动

到三星的网站下了个最新的ML2100 For Linux的驱动,用root身份将下载下来的压缩文件解压,解压后查看里面的安装说明,需要安装GTK+ 1.2 libraries 和Ghostscript。这些我原来的系统里面就已经有了。进入解压后的目录images执行如下命令:

#./setup.sh

这时候居然发现是图形界面的安装程序,相当不错,避免了很多烦琐的命令配置。驱动程序同时也将它的一些工具安装到了/usr/local/linuxprinter目录下。

4.添加打印机

装完了上面所有的东西,会自动弹出一个打印机配置程序linuxprinter,是三星打印机驱动自带的。点击Add Printf按钮,选择相应的驱动(笔者选的是SAMSUNG ML1210SPL),选中后出现三个标签Connection、Settings、queoe。

我们所要做的就是设定好Connection,其它的选默认即可。

在下拉列表框中选择“Windows (SMB)”,然后要求你填写一些共享打印机的参数:

Server: server(共享打印机机器名)

Resource:SamsungM(打印机的共享名)

User:(用户名)

Password:(密码)

WorkGroup:(工作组,如果是同一组,不用填)

点击“OK”按钮,打印机就配置完毕。

打印了一张测试页试试,在打印机上等了几分钟都没有反应,看看服务器上打印机的任务列表,根本就没有打印任务。这个时候只有启动网络浏览器,键入http://localhost:631进入cups管理界面,点击“Manage Printers”,发觉其中报错如下:

“Unable to connect to SAMBA host, will retry in 60 seconds...ERROR: Connection failed with error NT_STATUS_ACCESS_DENIED”,原来是拒绝访问,是samba的配置有问题还是打印机的配置有问题?

好在网络是非常好的一个东西,在google上搜索了一下NT_STATUS_ACCESS_DENIED,就发觉了别人和我遇到了同样的问题,一个老外给出的解决方法是打印设备的地址必须如下填写:“smb:///:@/”,看了看我的打印设备填写的是smb://server/SamsungM,问题的原因找到了。

由于三星的驱动无法通过cups管理界面更改它的设备的配置,我用编辑器打开/etc/cups/printers.conf,手工修改其中的设置如下:

# Printer configuration file for CUPS v1.1.23

# Written by cupsd on 2005年01月06日 星期四 16时29分52秒

<DefaultPrinter lp>

Info Samsung ML-1210 Series (SPL)

Location

DeviceURI smb://workgroup/administrator@server/SamsungM

State Idle

Accepting Yes

JobSheets none none

QuotaPeriod 0

PageLimit 0

KLimit 0

</Printer>

修改的部分就是DeviceURI这段。再试,成功了,而且打印的速度比Windows下还要快,再也不用为了打印东西要换到Windows下了。