Linux下扫描仪的设置和使用比较麻烦,其实当前的许多问题是由于内核和SCSI驱动程序的一些缺陷造成的,如果使用较新的内核版本,只要经过简单的打补和重编译就可以让你的扫描仪在Linux下扫出一片斑斓色彩啦!
我使用的是中文Linux中最新的发布蓝点2.0和用户常用的Microtek Scanmaker X6扫描仪。使用其他linux发布或其他品牌的用户也可以通过类似的方法下载相关品牌的补丁和驱动程序。
第一步:下载相关文件。
首先,从最根本的开始——内核的SCSI驱动的源代码补丁。
蓝点使用的内核版本是2.2.16,只要以下网站的对应linux内核版本的补丁能支持就行了。当你在/usr/src目录里安装了内核源代码后,你可以从以下网站取得这个补丁Linux 2.2.15pre14-ppscsi1,如果你可以取得2.2.16的补丁就最好啦:http://people.redhat.com/twaugh/parport
接着是Linux系统必不可少的扫描仪驱动程序接口——SANE。你可以到http://www.mostang.com/sane下载最新的版本。我建议你不要拿RPM包而是下载源代码。因为我们要手工完成某些设置。
最后就是下载Microtek Scanmaker X6 驱动程序。在ftp://ftp.muc.de/people/bernds/mtek2可以找到microtek2后台控制程序的最新版本。
第二步:对内核打补丁。
为以防万一,在对内核打补丁前应该对内核进行备份,或者出现问题后从安装光盘里重新安装内核源代码软件包(光盘中/BluePoint/RPMS/kernel-source-2.2.16-1.i386.rpm)。
当你下载了内核补丁后,以root身份进入系统,把补丁放到/usr/src,即依次执行命令:
1、 mv ppSCSI*.patch /usr/src <回车>
2、 patch -p0 < ppSCSI*.patch <回车>
此时,内核已经被打好补丁了,到了设置和编译的步骤。
3、 进入源代码目录(/usr/src/linux):cd /usr/src/linux <回车>
4、 调用make源代码编译控制程序:make menuconfig <回车>
5、 在控制程序里“SCSI support”选项下(图1),选择“SCSI support”,对“SCSI support”和“Generic SCSI support”两项,按下y把SCSI支持内嵌到源代码里(显示出“*”号)或者按下M把SCSI支持编译为模块(显示出“M”号,使用该模块时必须动态加载)。我推荐选用内嵌到源代码里,这样使用扫描仪会比较方便。但如果编译后但它们不能工作……也许是它们必须建立为动态模块进行装载,那么你就要重新进行设置和编译。(图2)
6、 在控制程序里“SCSI support”选项下,进入“SCSI low level drivers”选项目录,选择“parallel port SCSI adapter”(并行SCSI适配器)和“Onspec 90c26 adapter”(Onspec 90c26适配器)。
7、 完成设置后,编译内核,编译和安装这些模块(用make modules和make modules_install命令)。修改你的启动文件并重启机器。这里我不细述如何安装和编译内核源代码,众多的linux入门书籍已经对此详细说明了。如果你以前没有编译过内核,务必查看一下相关的书籍或HOWTO文档。
第三步:编译和安装SANE和Microtek驱动程序
我取得的SANE是sane-1.0.2.tar.gz,Microtek驱动程序是microtek2-0.8.tar.gz。
当你取得了这两个文件后,就以root帐号进入系统,首先把SANE解包:tar -xvzf sane-1.0.1.tar.gz <回车>。然后把microtek2后台控制程序解包:tar -xvzf microtek2-0.8.tar.gz<回车>。
解包后你会看到两个新文件:microtek2.c和microtek2.h。把它们复制到SANE源代码的backend目录里,系统会告诉你文件已经存在,回答y强制覆盖旧文件。接着进入SANE的源代码目录并编译它:
cd sane-1.0.1 <回车> ./configure <回车> make <回车> make install <回车>
第四步:重启并加载驱动模块。
现在你已经成功在望了!在你重启机器之前,你必须先打开你的扫描仪的电源。因为SCSI驱动程序只在启动的时候检查第2并行口,如果扫描仪未通电,系统会报告找不到SANE设备。在你重启后,你还必须把你所编译的模块加载到内核里。
如果你的linux系统是蓝点2.0,要安装一个动态模块非常容易。实际上,你可以只安装最必要的模块,在运行时其他依赖模块被调用的时候会被自动的装入。先以root帐号登录系统,然后根据情况加载驱动模块:
如果在第二步中SCSI驱动被编译到内核里:insmod onscsi <回车>;
如果在第二步中SCSI驱动被编译为动态模块,你必须在使用insmod scsi_mod(scsi_mod即任何SCSI设备驱动模块)把它加载进来。要执行的命令是:insmod ppscsi <回车> ,然后才是insmod onscsi <回车>。
此时你就可以开始使用你的扫描仪了。但是这样你必须在每次启动后,都执行这些命令才能使用扫描仪。其实如果你想一劳永逸,只要把这两行命令加到在系统启动文件/etc/rc.d/rc.local的最后就行了(必须是root帐号才有权修改):
insmod ppscsi insmod onscsi
第五步:设置扫描仪设备
进入你的SANE的源代码的tools目录,里面有一个名为find-scanner的命令,运行它:./find-scanner -v。 它会找到你的扫描仪并告诉你它的设备位置(也许你必须使用Shift+PageUp把屏幕往上翻页才能看到这些信息)。它的位置通常是/dev/sg0或/dev/sga,有时候会同时出现两者。
接着键入命令指明扫描仪设备:ln -s /dev/sg0 /dev/scanner <回车>。如果让使所有的帐号都可以使用扫描仪,键入命令:chmod 666 /dev/sga <回车>(这里的dev/sg0都是指扫描仪设备的位置)
开始享受扫描乐趣!
现在,随时可以打入scanimage或者xscanimage享受扫描乐趣了!
另外我还推荐使用Xsane,它类似于xscanimage,不仅界面更漂亮,而且它可以作为Gimp的plugin程序,方法是各帐号的Gimp程序的plugin目录下做一个Xsane的链接就行了:ln usr/bin/xsane ~/.gimp/plug-ins/xsane -s <回车> 。这里的~表示当前用户帐号的家目录。
如果系统报告说找不到usr/bin/xsane文件,可能是你还没有安装它或者它被存放在其他目录下。你可以用命令which xsane <回车>查看它的存放位置。
这个扫描仪尽管不能在Gimp下进行图像预览(但单独运行时是可以的),但工作得非常出色。它还可以和StarOffice协作得非常好,只要在StarOffice下选择Acquire Image,你的扫描仪工具就跳出来了!