第?章设置开发系统 17 仪提供了这两个操作系统下的驱动程序,从而显得没有必要移植SANE。当然,如果有朝一 日SANE移植到了这些操作系统,而且也有了从TWAIN到SANE的转换接口,那么只要 这种移植和转换软件遵循一定的许可协议以使扫描仪厂商能够捆绑软件,就没有必要再编 写基于TWAIN驱动程序。 2.7.3数字相机 Liux上有许多支持手持式数字相机的程序,当然,前提是使用闪存或软盘来存储标准 JPEG图像的数字相机也支持使用这些介质来传输图像数据。一个新的名为gPhoto(http:/ gphoto.fix.no/gphoto/)的软件支持大概10种不同品牌的数字相机。此外,一些数字相机也 被SANE库所支持。 在网上有Frame Grabbers,TV tuners以及流行的Quickcam相机的软件驱动程序,在 HOWT()的硬件兼容性列表的相关部分可以找到指向这些资源的链接。 2.7.4家居自动控制设备 在这里笔者将简要提及能够控制现实世界中的电器的小玩意。有几个程序可以控制 X10CM11A(通常作为CM11A工具箱的一部分发售)的计算机接口模块。X10系统可以通 过家庭或办公室的电力线路来传送控制电源插座、电器开关的载体电流信号,以远程控制家 用设备的开关操作。X10载体电流传送协议受相关专利保护,但同时有详细的文档,并且在 网上可以找到与计算机接口相关的资料。在本书付印时,CM11A可能已经被CM14A所取 代。 Nirvis系统制造了一种称为Slink-e的RS-232设备,可以使用红外,Control-S,S-link/ Control--A1和Control-A协议来控制音像设备。它也可以接收远程红外信号,这样就使开发 人员可以为其编写应用程序来记录和重放远程控制信号或响应远程信号。但就笔者所知,在 | Linux上还没有该设备的驱动程序。但是可以从公司的站点(http:/www.nirvis.com)得 到相关的文档。除了上述功能外,该设备可以控制Soy200光盘库,除简单的排队功能外 外,还能定位相应的光道位置和检索光盘序列号(当然对其他品牌的光盘库做不到这一点): 同时,在Windows系统上,公司提供了能够与Internet上光盘数据库协同工作的CD播放 器。此外,Nirvuis迷们已经对部分协议成功的进行了逆向工程。 2.8完备型系统 为数不少的公司专门提供预装Linux的系统,其中的佼佼者有VA Research和Linux Hardware Solution公司。在Linux.org的hardware部分有这些)商的完整列表。 Corel Computer公司在他们的Netwinder系统(使用StrongARM CPU)中预装了Iin- ux,这一系统主要面向瘦客户机和Web服务器市场,并且价格相当便宜。Cobait Networks 公司提供-·种名为Qube的Linux服务器(非压缩包),它使用MIPS处理器,而SGI也将在 一些基子MIPS的工作站上支持Linux。 包括Del和Hewlett Packard在内的一些主流PC厂商最近宜布将在他们的部分服务 器和工作站.上预装Linux.。同时,尽管没有预装Linux的Compaq计算机,但其中仍有不少数
18 第1部分iux编栏上其包 量的Compaq机器实际运行的是Linux系统。IBM公司也宣布将支持I,inux,但是通过授权 销售商来预装系统。在本书即将出版的时候,此外,有传言说其他的P℃品牌也将宣布预装 Linux操作系统。 2.9便携系统 支持便携系统需要保持警惕的头脑,因为这类系统的开发周期很短,使用非常新的器 件,而且制造商也很少提供技术文档。尽管如此,在网上还是有大约在300种便携机使用 Linux的信息。硬件兼容性HOWTO列表中列出了许多链接,可以用来查找Linux对特定的 便携机型号及其特性的支持的最新信息。 注意:Linux支持许多掌上电脑,其中对最流行的3Com的PlamPilot支持最好。 I,inux支持自动电源管理(Automatic Power Management,APM)。但其中的挂起/恢复 特性可能会上作不正常,而且在X中恢复图形棋式也可能会出何题(如果在挂起前切换到 文本模式可能会好一些),问时,为了实现硬盘挂起功能,需要一·个额外的)S分区。一些便 携系统不允许软驱和光驱同时I作,这使得安装过程可能会出问题(尽管许多新的机型支持 从光驱引宇系统)。 2.10安装 在Red Hat Linux正式安装指南(Thc()fficial Red Hat Linux Installation Guide)上有怎 样安装Red Hat Linux系统的详细信息,该指南以从本书所附的Red Hat系统光盘的/ doc/rhmanual/日录下或若网上fp:/ftp.redhat.com/redhat/.redhat-5.2/i386/doc/rhmanu- al中找到。如果需要安装其他版本的Linux,就要参考该版本的文档。 笔者建议对机器的配置、安装时的选顶以及其后安装各软件包所用的命令建立一个完 整的口志文件。这个过程在最初很使人厌烦,但在安装第二个系统,或者升级以及由于崩溃 或安全原因而重装系统时,你会发现现在所做的-切非常有价值。此外,应当周期性的把口 志文件脱机保存或打印出来。笔者通常在/root/captains-log文件中保存这些日志信息,并将 其做成·个可执行的shll命令,如程序清单2.1所示。编辑文件时,笔者把改动部分作为 “here document”(参见bash的man页)通过管道输入给“patch”。此外,在口志中至关重要的 是记录代码的来源,笔若使用ncftp或lynx-source命令来做到这一点。 程序清单2.1 CAPTINGS LOG样例 #First,lets introduce some of the commands we will 女be using,The commands marked with"¥¥¥“will be #covered in detail in later chapters.Refer to the bash man page or the man page 井 cat -copies its input to its output diff compares two files
第2章设置f发系统 19 patch applies the changes in a diff #ncftp -ftp client program #lynx -text mode web broswer tar pack and unpack tar archives #cd -change current directory 林make -dirives the compilation process #echo display its arguments echo hello,world -says "hello world" # #These are some examples of shell magic,see the bash man page for more details: marks a comment line #foc-bar -set variable foo equal to bar export FOO=bar similar,but subprocesses will inherit value ·#echo$(too) substituse $(foo)into #xxx!yyy -pipe output of command xxx into command yyy #xxx >yyy -redirect the output of command xxx to file yyy XXx >>YYY -same,but append to file yyy #xxx <yyy -redirect input of command xxx from file yyy xxX -Line continuation character" yyy -.continuation of above line,i.e xxxyyy #xxx <<...EOF... ."Here document"-runs the program xxx #linel -.taking input from the following 其line2 -.fines in the script up to the line #..EOf.. .which begins with "...EOF... ##柱 #Gnozzle #This is a sample captains-iog entry to install #a ficticious package cailed gnozzle #datestamp produced using "date"command: #Mon Feb2221:39:26EST1999 download it cd /dist ncftp-r-D ttp://ftp.gnozzle.com/pub/bnozzle-0.63.tar.gz 并Cr., #lynx -source http://ww.gnozzle.com/gnozzle-0.63.tar.gz >gnozzle-0.63.tar.gz #Here we unpack the tarball,after first checking #t the directory structure cd /usr/local/src tar ztvf gnozzle-0.63/ #Here we create a permanent record of changes we #made using a text editor as a patch command.In this case,we changed the values of CC and PREFIX in the #fite Makefile.The patch has one hunk which spans #lines 1 through 7. #the tollowing patch was made like this: cp Makefile Makefile.orig emacs Makefile
20 第1部分Linux编程工其包 diff u Makefile.orig Makefile #beware of mangled whitespace (especially tabs)when #cutting and pasting. patch Makefile <.END.OF.PATCH... Makefile.orig Mon Feb2221:12:411999 +Makefile Mon Feb2221:13:141999 @@-1.7+1,7@@ VERSION=0.63 CC=pcc I CC=gcc CFLAGS=g -PREFIX·usr +PREFIX =/usr/local BIN=$(PREFIX)/bin LIB=(PREFIX)/bin MAN-$(PREFIX)/man /man1 ..END.OF.PATCH.· | #Here we build the program and instail it make clean | make make n install #see what it would do first make install #Here we create a new file with a couple lines of text cat >/etc/gnozzle.conf <..EOF... gnozzlelib=/usr/local/libgnozzle aflow ...EOF... #Here,we append a couple lines to the magic file. which is used by the some commands to #guess the type of a file.to add the characteristic signature of a gnozzle data file. cat/usr/share/magic..EOF... gnozzle 0 long FEDCBA98 Gnozzle data file ...EOf.. 壮#柱 Here are some more commands which are useful to create a logfile of everything which was done,from which you ###can extract pertinent details for the captains log. Their effect may not be apparent unless you have a Linux box up and running and try them. the script command runs another shell with all output redirected to a file.Not to be confused with a #"shelf script"which is a sequence of commands #to be executed by the shell.Do not tnciude "script" commands in a "shell script". #script install-101.log #PS4=.++ #set v-x ##do diffs so they can easily be extracted from log:
第2章设置开发系统 #diff -u Makefile.orig Makefile sed -e "s//+/" #·D control-D end script,and shell fgrep +install-101.tog sed -e s/++// 如果所购买的系统预装了Windows98,在第一次引导Windows时,你需要为所有安装 的硬件检查所使用的资源设置(O,IRQ和DMA)。这些信息在安装Iiux时很有价值。但 是,这样做会使你没有资格再拒绝Windows98许可协议的条款和返还相关款项。 完成安装之后,需要做Red Hat手册中Post Installation章节所列出的-一些半情.仅笔者 通常分两步做。首先,笔者重新组织磁盘布局以取消为了使安装程序顺利执行而做出的让 步,在升级的过程中也有同样的问题,付你可能不希望这样做。然后,使用脚本来禁止所有不 需要的守护进程(在安装过程中笔者允许所有的守护进程以获得引导序列中的所有信息), 禁止不必要的服务进程是保证机器不被攻击而能做的最重要也是最简单的事情之一。在笔 者的Linux Web页上:有完成这两步工作的脚本, 在完成安装以后,可能需要对软件进行升级,或由于许可或其他原因安装Red Hat未包 括的软件。比如,把Netscape升级到支持l28位加密的版本:安装Adobe Acrobat Reader软 件以处理PDF文件:安装SSH软件以支持安全、加密的远程登录、文件传输和远程程序执 行(SSH被用于商业用途时需要交纳许可费用);升级Wb服务器以支持SSL。此外,也许你 希望从Red Hat的FTP站点下载所有升级尤其是与安全性相关的升级程序。 下一步,安装在工作中需要用到的其他应用程序。先在htp:/rufus.w3.org/上的 RPM数据库中,找到与这些应用程序的RPM版本相关的信息。在需要确保安全的情况下, 除了少数来源绝对可靠的软件,不应安装其二进制版本;而应从RPM版本或源程序压缩包 (通常使用tr来压缩)进行安装,同时,对源代码也应进行检查。 2.11小结 谨慎的选择硬件能够简化安装过程。同时,随着更多的硬件「`商由于巾场的压力公布产 品的技术文档或对Linux提供直接的支持,以及Linux的各种发布版本更加稳定和支持吏 多的硬件设备,安装时可能出现间题也会越米越少,尽管如此,经常查阅nternet上.的硬件 信息数据库如HOWTO与SuSE来确认对特定硬件设备的支持,依然是一个良好的习惯,军 少这样做可以减少在安装过程中可能遇到的麻烦。花安装完系统之后,应该为系统信总做一 个详细的文档,以备在需要重装系统时参考。最后,在系统止常运行后,你也许会有兴趣试着 安装一些还没有被稳定支持的硬件