当前位置:Linux教程 - Linux - 让Linux“扫”起来

让Linux“扫”起来



           黄术

    一、 前言

    ---- Windows现在无疑已占据PC机操作系统第一的地位,但是我们不应只有DOS和Windows,现在自由软件Linux 在短短几年时间里,就发展成为一个相当完善的操作系统,成为UNIX世界的一朵奇葩。它以强大而稳定的功能吸引了众多的电脑爱好者,Windows下可以完成的工作,在Linux下也可以完成甚至速度更快。

    ---- 下面就是本人在Linux下安装和使用扫描仪的经过,通过本文不仅可以使Linux爱好者就使用ISA总线外设接口的即插即用设备(ISA Plug-And-Play device)的安装方法有深入的了解,而且可以详细的了解如何配置、编译、引导新内核。

    二、 问题的来源

    ---- 本人使用的机器:Compaq Prolinea 486/50 ,12M内存,4G硬盘,硬盘上有两个分区,一个安装了Windows 95,另一个分区安装了Red Hat 5.1,由于机器档次比较低,所以在Windows 95上安装完HP Scanjet 4p扫描仪驱动程序和软件后,机器运行速度及扫描速度非常慢,就决定在Linux下使用HP Scanjet 4p扫描仪。Linux的硬件安装一般需要用户知道硬件的配置(网卡、视像卡、SCSI卡等设备的品牌和型号),与Windows不完全一致,而且安装界面不友善,学习曲线长。本人使用的HP Scanjet 4p扫描仪与计算机相连的是一块HP Version 的Symbios Logic 53c416 SCSI卡(Symbios logic 53c400A SCSI Adapter也是可以连接HP Scanjet的),在安装过程中,先后出现了两个问题:

    ---- 1、本人安装的RedHat 5.1内核版本为2.0.34,不支持Symbios Logic 53c416 SCSI卡。虽然可以试一试通用SCSI卡:NCR 5380,但还是要升级内核,因为新的内核不仅会提供更多的设备驱动程序,而且新的内核版本比旧的版本效率更高,更稳定。还可以按照自己机器硬件情况来重新配置新内核,使升级后的内核更小,降低系统对内存的要求。

    ---- 2、HP Scanjet 4p扫描仪在Windows 95 上是即插即用的,打开机箱插上SCSI卡后,连接上扫描仪,重启动Windows后系统会提示用户已检查出新增的SCSI卡,然后要求安装驱动程序,即安装成功。但利用Loadin或重启动加载LILO运行Linux后,出现的内核引导信息却是:SCSI:0 hosts。(当然,这是在内核升级后。)

    ---- Linux现在已经支持PCI,USB总线,PCI,USB设备在Linux下可以自动检测和安装,真正的实现即插即用。但是ISA总线外设接口的即插即用设备并不是真正即插即用设备,在Linux下仍需手动的修改配置文件。

    三、内核升级

    ---- 1、获取内核源程序

    ---- 正式发布的Linux内核源程序是以 .tar.gz格式打包并压缩存储的。对每一个版本有一个名为:Linux-x.x.xx.tar.gz的文件,如对2.0.34版有Linux-2.0.34.tar.gz。这个文件包含了2.0.34版Linux内核的全部源代码。在升级内核的过程中,本人先后使用了了2.0.34、2.1.106、2.2.10、2.3.0、2.3.8版本内核。虽然2.2.10版本就已经支持了Sym53c416 SCSI卡,但在使用过程中个人认为2.3.0的内核是目前比较新,易于配置且稳定的版本。(下载地址ftp://metalab.unc.edu/pub/Linux/kernel/v2.3/linux-2.3.0.tar.gz

    ---- 2、解开源程序包

    ---- 在解开源程序包之前,首先要明确编译Linux内核所需要的磁盘空间,2.3.0版源代码内核约占13.8MB,解压后约占58MB,这还不包括编译所产生的所有文件,编译完成后总共大约要占63MB的磁盘空间,这取决用户的选择和配置,如选择编译的驱动程序的数量。所以,一般来说,如果系统上有许多的硬件设备,就要有足够的硬盘空间来容纳这个配置。

    ---- 确定你是以“root”的身份登录,然后 cd 到 /usr/src 。这个目录下应该已经存在一个叫做“linux”的子目录。这里存放的是你当前版本的Linux 原始程序码。如果系统在安装时没有选择安装内核的源代码,则这个目录至少应该有Linux内核的头文件,这些头文件在linux/include子目录下,它们在编译大多数Linux下的系统软件时是需要的。根据你目前使用的核心版本来修改这个子目录的名称。用“uname -r”命令来显示当前内核的版本号。所以,如果“uname -r”显示“2.0.34”,你就可以把“linux”改名为“linux-2.0.34”当然你也可以将“linux”子目录来一个“rm -rf linux”,反正只要确定在解开全部的源代码之前, /usr/src 目录下没有“linux”这个子目录就行了。

    ---- ... ...

    ---- 注意使用patch时要从低版本到高版本逐个修正。

    ---- 解开源代码的包装,你将会看到源程序的内容飞逝而过。当它完成以后,将会出现一个新的“linux”子目录。

    ---- 3、编译前的准备工作

    ---- 首先,要注意编译新的内核对系统其他软件的版本要求。在linux/Documention目录里,有一个Changes文件,它列出了正确编译内核和支持内核正确运行所需要的各种软件的版本说明。 2.3.0版本的内核对其他软件的版本要求如下:

    ---- ... ...

    ---- 如果系统上有一些编译和运行新内核必需的软件比较低,应在编译前予以更新。对于重要的软件必须升级,如:Gnu C、Kernel modutils等软件,下面列出了这些软件下载地址:

    ---- ... ...

    ---- 其次,检查一下/usr/include/asm,/usr/include/ linux,/usr/include/scsi是不是正确地符号连接到/usr/src/linux/include下的对应目录。如果不是,这样做:

    ---- ... ...

    ---- 最后,为了确保源程序目录树没有残留的.o文件和其它从属文件,使用如下命令清除:

    ---- huang# cd /usr/src/linux
      ---- huang# make mrproper ;此命令非常有用,如果你编译内核不成功,则利用它 还原你编译前的状态。

    ---- 4、配置内核

    ---- 在Linux目录下执行“make config”命令来配置内核。所谓配置内核就是选择支持哪些特性和编译哪些设备驱动。“make config”需要bash才能工作,它按 $BATH,/bin/bash,/bin/sh的顺序来搜寻bash。与“make config”等效的配置命令有“make menuconfig”,“make xconfig”,分别用菜单和X Window窗口的形式更方便的实现内核的配置。本人经常使用“make menuconfig”命令,因为它速度又快又直观。

    ---- 对于内核2.3.0版,它的内核配置分为17类,同时它提供了一个缺省的最小配置,我们可以在缺省配置的基础上进行添加。下面就是本人针对自己机器的内核配置,对广大Linux爱好者也会有参考价值。

    ---- 每一类问题都有待用户作出选择,对每一个问题一般有“Y”“N”两种选择,对某些问题还有第三种选择。选择“Y”表示对相应特性的支持或相应的设备驱动将被编译进内核,选择“N”则表示不把相应特性的支持或相应的设备驱动将被编译进内核,即内核不支持相应特性或设备。选择“M”则表示把对相应特性的支持或相应的设备驱动编译成可加载模块。可可加载模块是内核的一部分(通常是设备驱动程序)但是并没有编译到内核里面去。它们被分别编译,然后可以在任何时候插入运行中的内核或从中删掉。本人机器用的Symbois Logic 53c416 SCSI 卡必须把它编译成可加载模块才可以。

    ---- ... ...

    ---- 配置完成保存退出后,当前配置保存在 /usr/src/linux/.config文件中。

    ---- 5、修改SCSI.C

    ---- 首先,运行Windows 95 控制面板中HP Scanjet Scanners图标的General设置栏,按Info按钮会出现HP扫描仪的SCSI地址或在HP扫描仪说明书中查找到。

    ---- HP Scanjet 4p 的SCSI地址为:
      ---- HP C1130A 3540
      ---- 然后,执行“cd /usr/src/linux/drivers/scsi/”和“vi scsi.c”找到下面的部分,按照格式输入HP扫描仪的SCSI地址,存盘退出vi。

    ---- ... ...

    ---- 6、修改lilo.conf


      huang # cd /etc
      huang # vi lilo.conf
      将lilo.conf修改成如下格式:
      boot = /dev/hda
      timeout = 100
      prompt
      image = /vmlinuz ;把新内核做为缺省启动项
      label=linux2.3
      root = /dev/hda6
      read-only
      image = /boot/vmlinuz-2.0.34-0.6
      label = linux2.0
      root = /dev/hda6
      read-only
      other = /dev/hda1
      label = win
      table = /dev/hda

    ---- 7、编译内核
      ---- 内核配置完成后,依此执行以下命令:(当然也可以将以下命令编成一个可执行的批处理文件来执行,因为内核编译需要一段很长时间)

    huang# cd /usr/src/linux
      huang# make dep ;
      正确建立所有的从属文件,从属文件包括每个.c文件中引用的
      ;头文件.h的全路径名。
      huang# make clean ;
      清除核心编译的所有目的文件以及其它东西。
      huang# make zlilo ;
      编译核心,并安装核心,然后对它执行LILO,
      使你完成所有;开机重启动的准备工作。
      如果出现错误,内核未编译成功,则执行
      “make mrproper”然后从新配置内核,
      再执行“make dep”等命令)
      huang# make modules ;可加载模块的编译。
      huang# make modules_install ;可加载模块的安装。

    ---- 8、新内核引导
      ---- 以上工作完成无错误后,新的内核已经安装完毕,可以关机,试着用新内核引导了。如果新内核无法正常和稳定运行,重新用老的内核引导(见上面的lilo.conf文件,在LILO boot:后键如linux2.0)后,检查新内核的配置,尽量减少不必要的模块和驱动,重新编译后再作尝试。当新的内核能正常运行后,再逐渐恢复预期的内核配置。

    四、 SCSI卡的配置

    ---- ... ...

    五、 开始使用扫描仪

    ---- 1、到现在为止 HP Scanjet 4p扫描仪安装已经大功告成。下一步就是使用扫描仪进行扫描图件了。HP扫描仪的驱动程序下载地址是:

    ---- ftp://metalab.unc.edu/pub/Linux/apps/
      graphics/scanners/hpscanpbm-0.3a.tar.gz

    ---- 驱动程序下载解压后,生成一个hpscampbm.c文件,需要编译此文件:(可先修改成只适用于Linux系统的C语言程序)

    huang# gcc hpscanpbm.c -o hpscan
      huang# cp hpscan /bin
      2、 扫描程序的使用
      用“hpscan -help”可以显示软件的帮助信息。

    ... ...

    ---- 上述扫描方式是在命令行方式下使用的,不能象在Windows下有一个预览功能,不过没关系,如果你想象在Windows 下一样使用扫描仪,可以到以下地址

    ftp://sunsite.unc.edu/Linux/Incoming
      ftp://laue.phys.uwm.edu/pub/xforms/Contrib
      ftp://ta.twi.tudelft.nl/pub/dv/lemmens/

    ---- 下载Xscan Version 1.0 ,它是在 X-windows下运行的并有预览功能的软件。
      ---- 修改后的hpscan.c源程序

    发布人:netbull 来自:JJ的Linux世界