除了手动配置之外,其实系统提供了一个名为 setup 的命令给系统管理员使用喔!这个命令还能够配置网络呢。此外,我们也应该要知道如何在 Linux 底下连接打印机吧!否则一些数据怎么印出来?另外,如果你的主板支持 CPU 温度侦测的话,我们还能够利用 lm_sensors 这个软件功能来侦测硬件的电压、风扇转速、CPU 温度等资讯呢! |
系统配置除了使用手动的方式编辑配置档之外 (例如 /etc/inittab, /etc/fstab 等),其实在 Red Hat 系统的 RHEL, CentOS 及 Fedora 还有提供一支综合程序来管理的,那就是 setup 这个命令的功能罗!老实说, setup 其实只有在 Red Hat 的系列才有,在其他的 Linux distributions 并不存在,因此,鸟哥并没有很要求一定要学会这家伙的。只不过,setup 还是挺好用的,所以我们还是来玩玩吧!
这个 setup 的处理方法非常的简单,就是利用 root 的身份下达这个命令,如果你已经使用远程操作系统的话,记得最好切换一下语系成为英文语系 (比较不会出现边框是乱码的情况) ,结果就会出现如下的画面了。
如上图所示,那就是 setup 提供的各项系统配置功能。这个画面的使用方式其实在图中的最底下一行有说明了,可以利用 [tab] 按键在三个画面中切换,使用 Run Tool 可以开始配置该项目,使用 Quit 可以离开 setup 命令。那么上面的主菜单部分有哪些功能呢?这些配置的基本功能是这样的:
底下我们就来约略的介绍一下这些玩意儿吧!除了网络 IP 的配置外,其余的部分鸟哥会很快的带过去而已。毕竟 setup 仅是一个统整的工具,每个配置项目其实都牵涉到各自的基础功能,那些基础功能还得要持续摸索的...
在按下了『 Authentication configuration 』项目后,会出现如下画面:
我们的 Linux 除了使用自己提供的使用者口令验证机制之外,还能够使用其他外部身份验证服务器所提供的各项验证功能喔。在上面图示的左侧 User Information 的地方指的是:我们系统上的使用者可以使用什么方式对外取得帐号资讯,也就是说,这部主机除了 /etc/passwd 的帐号之外,还能够使用其他的帐号来登陆系统的。我们支持的帐号管理服务器主要有LDAP, NIS, Winbind 等。
至於右侧的 Authentication 则是登陆时需要提供的身份验证码 (口令) 所使用的机制为何。在默认的情况下,我们身份验证仅参考本机的 /etc/passwd, /etc/shadow 而已,而且使用 MD5 的口令验算机制,因此上图右侧的部分仅会有最上方两个而已。事实上,这个部分的配置主要是修改了/etc/sysconfig/authconfig ,同时还加入了各个服务器的用户端程序配置功能哩。
你一定会问,那么什么时候可以用到这个机制呢?思考一下,如果你的网络环境是计算机教室,你希望每个同学都能够有自己的帐号来登陆每部主机。此时,你会希望每部主机都帮同学创建同一个帐号吗?那如果每一个同学都想要修改口令,那就糟了!因为每部主机都得要重新修改口令才行啊!这个时候帐号管理服务器就很重要了。他的功能有点像底下这样:
如上图所示,我 vbird 想要登陆某一部主机时,这部主机会向外要求帐号资讯,就是最上方那部服务器。此时,你只要在最上方的服务器上将该帐号配置好,并且在每部主机都利用 NIS 或 LDAP 功能来指定身份查询的方向,那么 vbird 就能够使用同一组帐号口令来登陆每部主机了,这样管理是否很方便呢?因为只要管理一部服务器即可嘛!我们在服务器篇谈到 NIS 时再来实作这个环境喔!
Tips: 其实 NIS 与 LDAP 等等的,都是一种网络通讯协议,我们可以透过网络通讯协议来进行数据的传输。使用者帐号资讯当然也能够透过这个机制来管理罗!有兴趣的朋友请继续阅读鸟哥写的服务器篇罗~ ^_^ |
网络其实是又可爱又麻烦的玩意儿,如果你是网络管理员,那么你必须要了解区域网络内的 IP, gateway, netmask 等参数,如果还想要连上 Internet ,那么就得要理解 DNS 代表的意义为何。如果你的单位想要拥有自己的域名,那么架设 DNS 服务器则是不可或缺的。总之,要配置网络服务器之前,你得要先理解网络基础就是了!没有人愿意自己的服务器老是被攻击或者是网络问题层出不穷吧!^_^
但鸟哥这里的网络介绍仅止於当你是一部单机的 Linux 用户端,而非服务器!所以你的各项网络参数只要找到网络管理员,或者是找到你的 ISP (Internet Service Provider) ,向他询问网络参数的取得方式以及实际的网络参数即可。通常网络参数的取得方式在台湾常见的有底下这几种:
了解了网络参数的取得方法后,你还得要知道一下我们透过啥硬件连上 Internet 的呢?其实就是网络卡嘛。目前的主流网卡为使用以太网络协议所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络介面为 ethN (N 为数字)。举例来说,鸟哥的这部测试机上面有一张以太网卡,因此鸟哥这部主机的网络介面就是 eth0 罗 (第一张为 0 号开始)。
好了,那就让我们透过 setup 来配置网络吧!按下『 Network Configuration 』会出现如下画面:
上图中那个 eth1.bak 是系统捉错的文件,因为这个程序会跑到 /etc/sysconfig/network-scripts/ 目录下找出档名为ifcfg-ethN 的文件内容来显示的。因为鸟哥仅有一张网卡,因此那个 eth1 不要理会他!直接点选 eth0 之后就会产生如下的画面:
上图中那个 Name 与 Device 名称最好要相同,尽量不要修改他!这里的配置是这样的:
如果你是使用 ADSL 拨接的话,那么上面的配置项目就不适用了。你得要使用 (1)adsl-setup 来进行配置,然后再以 (2)adsl-start 来启动 ADSL 拨接,详细的方法我们会在服务器篇再来介绍的。上面谈的都是 IP 的取得方式,并没有谈到主机名称解析的部分 (DNS)。只有手动配置者才需要进行 DNS IP 的配置,使用 dhcp 及 adsl-start 者都不需要进行底下的动作啦!假设你的 DNS IP 为中华电信的 168.95.1.1 时,那就得这样配置:
[root@www ~]# vim /etc/resolv.conf
nameserver 168.95.1.1
|
重点是 nameserver 后面加上你的 DNS IP 即可!一切配置都妥当之后,你还得要进行一个任务,那就是重新启动网络看看罗!重新启动网络的方法很简单,这样做即可:
[root@www ~]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
|
由於网络涉及的范围相当的广泛,还包括如何进行网络除错的工作等,鸟哥将这部份写在服务器篇了,所以这里不再多费唇舌。假设你现在已经连上 Internet 了,那么防火墙的配置则不可不知啊!底下就来谈谈。
防火墙的认识是非常困难的,因为你必须要有很强的网络基础概念才行。CentOS 提供的这个简单的配置其实有时候反而会让我们困扰不已。基本上,这里仅是介绍『你可以这样做』,但并不代表『你必须这样做』!所以,有兴趣的还是得要再继续钻研网络技术喔! ^_^。好了,在按下 Firewall configuration 后,会出现如下画面:
上图中主要出现两个部分,一个是关於 SELinux 的部分,一个则是防火墙的部分。SELinux 我们在第十七章介绍过了,这里不再浪费篇幅。请依据你的需求配置 Enforcing, Permissive 或 Disabled 吧!(当然最好还是务必要启动 SELinux 啦!)
防火墙的部分,由於我们安装时建议不要启动防火墙,因此上图你会看到『 Disabled 』的部分被选择了。但是由於现在你的系统已经上网了 (假设已经上网了),那么你务必要启动防火墙来管理网络才好。由於默认你的防火墙会开放远程主机对你的登陆连线,因此最好使用 Customize (客户配置) 来改变配置比较好喔!按下『 Customize 』会出现如下图示:
这个地方不是三言两语讲的完的!包括信任装置,以及允许进入的服务器封包~很是麻烦。基本上,你只要这样想就好了:
基本上,这个动作仅是在创建 /etc/sysconfig/iptables 这个文件而已。而这个文件默认是不存在的 (因为我们没有启动防火墙啊!) 。这里你先有个概念即可,因为,我们未来会介绍以 shell script 的方式创建属於您自己的防火墙系统,细节我们会在服务器篇慢慢作介绍的啊!
如果你已经有网络了,记得在这个项目的配置中,於图 1.3.1 选择防火墙为『 Enable 』的状态,按下『 Customize 』进入图 1.3.2 当中取消 ssh 的勾选,最后再回到 1.3.1 当中按下『 OK 』来启动 Linux 用户端的防火墙配置吧!这样你的系统就具有最起码的防火墙功能罗! ^_^
某些情况底下你的键盘可能会发生一些对应错误的情况,举例来说,使用的键盘并非台湾常见的 104 按键导致很多英文对应不起来。此时你可以使用 setup 来修改喔!按下『 Keyboard configuration 』会出现如下的画面:
其实这个文件就仅会修改 /etc/sysconfig/keyboard 啦!很简单的配置项目。
我们在第十八章谈过系统服务的启动与关闭,当时介绍过 ntsysv 吧?没错~这个 System services 的项目就是会呼叫出 ntsysv 这支程序来处理服务的配置啦!详细的配置请回第十八章参考吧!这里不再浪费篇幅罗!因为....鸟哥实在太会碎碎念了,再加上图示,唔!好占篇幅~ @_@
我们知道地球是圆的,所以想要看王建民在纽约投球都得要三更半夜才有办法看的到!这也就是说,其实在同一个时间点全世界的时钟指的时间都不相同啊!我们的 Linux 是支持多国语系的国际化操作系统,所以你可以将这部主机拿到任何地方且不需要修改系统时钟,因为系统会主动的依据你提供的时区来变化时间的。当你将笔记本计算机带到美国纽约并且想要变更成为美国时间时,可以按下『 Timezone configuration 』的项目:
如上图所示,你在上半部画面中,可以使用键盘方向键来选择正确的位置,然后再用 [tab] 移动到 [OK] 即可!时区的配置,其实就是找出与 /etc/sysconfig/clock 有关的配置项目而已。实际上,上面图示出现的咚咚,就与/usr/share/zoneinfo/ 目录内的数据有关而已。
X Window System 我们会在第二十四章再来详细说明,这里仅是告知一下,如果你想要变更你的 X 窗口介面的解析度时,就可以使用这个项目了。不过要注意的是,这个项目的运行不可以使用类似 ssh 通讯协议连线后,在远程主机上运行这个配置项目。因为这个项目的运行会产生一个新的 X 终端机在 tty7 或 tty8 上头,因此,你如果使用远程连线机制的话,会看不到画面的啦!理解乎?
在你点选了『 X configuration 』之后,就会出现如下的图样。其中以硬件及配置两个页面较常被变更。先来瞧瞧图示吧:
如上所示,由於窗口解析度的范围与萤幕的支持有关,因此你必须要先处理萤幕的升级频率后才能够修改窗口解析度。所以我们会先处理『硬件』部分,鸟哥的萤幕是旧式的 4:3 传统萤幕,所以选择 1024x768 ,如果你的萤幕是新型的宽萤幕,那么请自行挑选适当的解析度吧。处理完毕后就能够开始配置窗口解析度了,如下所示:
如上图所示,此时会出现可调整的解析度啦!整理整理就能够显示出你想要的窗口解析度。其实这些配置都是修改 /etc/X11/xorg.conf 这个配置档啦!等到了第二十四章时,我们再来详细的谈谈这玩意吧!至於关於 X 方面的登录文件则在 /var/log/Xorg.0.log 罗!
鸟哥个人认为,这个 setup 的工具是很好用的~只是,如果能够完全清楚整个系统架构的话,再来玩这个小程序会比较好啦! ^_^。另外,原本的旧版 CentOS 还有提供打印机的配置功能,不过由於新版的数据已经转由 CUPS 负责列印,而列印可以使用浏览器介面来显示,因此就取消了这个 setup 的组件啦!底下我们就来玩玩如何简单的配置你的打印机吧!
打印机对於日常生活来说,很重要吧!呵呵~没错啊!尤其我们的 Linux 主机如果未来还要作为Printing server 的话,那么自然就得要先创建好打印机的连线啦!在本章里面我们仅谈论一下如何让你的 Linux 可以连接到打印机,让你的 Linux 可以顺利的将文件数据列印出来啦!现在就来谈谈先!
要谈论 Linux 的列印,首先就得要知道 Linux 底下整个列印的行为是怎样的一个流程呢?而且,也得要了解一下你的硬件是否支持列印工作嘛!在硬件部分,你必须要在 BIOS 将打印机的支持启动才行!不过,这大概都属於旧式打印机才需要的动作啦!为啥呢?因为现在打印机大部分都是 U盘 或者是网络打印机了,根本不需要使用 25 针序列埠的支持!
Tips: 为什么会谈到 25 针序列埠以及 BIOS 的支持呢?这是因为鸟哥曾经发生过一件糗事。由於鸟哥常用旧型主机的关系,所以总喜欢先在 BIOS 里面将没用到的装置项目全部取消 (disable),所以没有接打印机的情况下,当然连打印机的序列埠 (Parallel) 也关闭了。没想到后来为了测试打印机的连线取得一台旧式打印机,要命啊!连续测试两天的时间却无法顺利的列印出正确的文件资讯!最后才想到可能是 BIOS 内部的问题。进入 BIOS 将打印机支持启动成为 EPP/SPP 之后,俺的 Linux 就能够顺利的捉到打印机并进行列印~真想哭啊!不是感动的想哭,是气的想哭! |
除了主机本身的支持之外,你的打印机也必须要能够支持 Linux 才行!其实并不是 Linux 的问题啦!而是打印机制造商必须要能够提供给 Linux 用的驱动程序,这样你的 Linux 才能够使用该型号的打印机。老实说,鸟哥是 HP 打印机的爱好者,因为 HP 打印机对 Linux 的支持非常好!但是另一牌的 L 开头的打印机总是很慢或者不推出给Linux 用的驱动程序,所以该牌的打印机很难安装在 Linux 主机上!真困扰。
Tips: 因为鸟哥过去所待的研究室大多购买 HP 的打印机,所以测试打印机时完全没有出现任何问题。但是某天在家里使用鸟嫂购买的 L 牌的事务机时,连忙了三天却都无法连接到该打印机来顺利输出。最终查询 Linux 打印机支持网站,才发现该型号的事务机根本没有推出给 Linux 用的驱动程序,所以就无法顺利使用该打印机~最终...鸟哥就放弃该测试了~唉!真浪费时间! |
那到底你该如何确认你的打印机有支持 Linux 呢?或者是,如果你想要购买新的打印机时,如何查询该打印机能否在 Linux 上面安装呢?很简单,直接到底下的网站去查询一下即可喔!
举例来说,鸟哥现在的研究室有一部 HP 的 LaserJet P2015dn 打印机,我想要知道这部打印机对 Linux 的支持度好不好,那就先进入上述的网站连结,出现如下的画面:
在如上画面中请按下『 Printers 』来观察打印机的特色吧!会出现如下画面:
在上图中填入正确的厂牌 (HP) 以及正确的打印机型号 (LaserJet P2015dn) 后,请按下『 Show 』那个按钮,该网站就会从数据库内捉出支持度的情况给你看,如下图所示:
在显示的画面中,你最要注意的是那个企鹅数量啦!如果达到 3 只,那就代表支持度是非常完美的。两支企鹅是可接受的范围内。如果是小於一只企鹅时,那么该打印机对 Linux 的支持可能就是比较差的喔!还好,鸟哥这部含有网络功能的打印机还有两只企鹅的支持,等一下应该能够顺利安装到俺的 Linux 测试机上吧!
你有没有发现,在打印机还没有启动电源的情况底下,其实我们还是可以透过软件来将某个工作列印出来的,只是该项工作就会被放入到等待的环境中 (伫列) 。为什么会这样呢?这是因为整个列印的行为被区分为许多部分,每个部分都可以单独存在的啦!我们将整个部分绘制成下图来瞧瞧:
我们大概可以将上图区分为几个部分来说明:
Tips: 为什么需要列印伫列 (queue) 呢?因为打印机只能够给单一任务进行列印,没办法像 CPU 可以交错运行的!所以列印工作就得要排队等待打印机的列印,而打印机得要将前一份工作列印完毕后才能够列印下一份工作!否则如果是交错列印,那印出的东西不就混杂在一起了?这样说了解吗? ^_^ |
如果你的打印机具有网络卡,那么你当然可以使用网络连线到你的打印机上面罗!不过,这种打印机提供什么服务呢?也就是说,你可以使用什么连线协议来连上打印机呢?常见的打印机连线分享方式有底下这些:
CentOS 5.x 默认提供的就是 CUPS 的 IPP 协议喔!而且 CUPS 默认启动就启动了,因此,你可以随时随地的以 Web 介面配置自己的打印机呢!真是非常方便!那如果你的打印机是透过线材 (U盘/序列埠) 连上主机的呢?那就得要考虑底下的连接介面罗!
事实上,管理 Linux 的打印机是非常简单的一件事情,因为你只要启动 CUPS 之后,再以浏览器介面来管理即可。不过,在默认的情况底下,要进行浏览器介面的管理动作时,你必须要:
如果你想要在区域网络内将打印机的控制权挪出来给其他用户管理时,就得要修改 CUPS 的配置了。在这里,我们先以本机的方式来处理打印机的连线喔!首先,鸟哥以具有网络卡的打印机 HP LaserJet P2015dn 这部为例 (因为鸟哥也只有这部打印机具有网卡啊!),这部打印机的 IP 为 192.168.201.253,而鸟哥 Linux 测试机 IP 为192.168.201.250。然后,你可以这样做:
如果想要加入 CUPS 的网络打印机,那么你的打印机当然就得要支持 CUPS 认识的通讯协议罗!如何确定呢?首先,你必须要依照你打印机所提供的手册去配置好 IP ,以鸟哥上面的环境来说,我的打印机 IP 为 192.168.201.253 ,因此我可以这样确定该打印机是否存在喔:
# 1. 先确定 IP 是否正确: [root@www ~]# ping -c 3 192.168.201.253 PING 192.168.201.253 (192.168.201.253) 56(84) bytes of data. 64 bytes from 192.168.201.253: icmp_seq=1 ttl=255 time=0.464 ms 64 bytes from 192.168.201.253: icmp_seq=2 ttl=255 time=0.313 ms 64 bytes from 192.168.201.253: icmp_seq=3 ttl=255 time=0.356 ms --- 192.168.201.253 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.313/0.377/0.464/0.067 ms # 重点是有没有出现回应的时间参数,亦即是 time 那个栏位喔! # 2. 使用 nmap 测试打印机有没有出现列印相关的服务端口: [root@www ~]# nmap 192.168.201.253 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-05-27 22:07 CST Interesting ports on 192.168.201.253: Not shown: 1676 closed ports PORT STATE SERVICE 80/tcp open http 139/tcp open netbios-ssn 515/tcp open printer 9100/tcp open jetdirect MAC Address: 00:18:FE:9E:4C:58 (Unknown) Nmap finished: 1 IP address (1 host up) scanned in 3.875 seconds # 鸟哥这部打印机仅支持 LPD 服务 (515) 以及 HP 独家的服务 (9100) |
这样就确定我的打印机实际存在,且这部打印机仅支持 HP 独家的网络服务 (port 9100) 以及旧版的 LPD 服务而已,这个资讯很重要,因为等一下我们使用 CUPS 连线时,就得要使用这个 LPD 的服务喔!另外,请特别给他留意一下,那个 nmap 是个可以扫瞄主机端口的软件 (port scan) ,这个软件其实是黑客软件,他默认并没有安装到 CentOS 上,但是你可以使用『 yum install nmap 』来安装他。请注意,因为这个软件可以是恶意攻击的,因此千万不要用来查阅别人的主机,否则恐怕会有违法之虞喔!!
接下来,让我们来了解一下,系统有没有 CUPS 的支持吧!
再来查看看你的主机是否已经启动了 CUPS 呢?使用 netstat 这个命令看看:
[root@www ~]# netstat -tlunp | grep 631 tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 4231/cupsd udp 0 0 0.0.0.0:631 0.0.0.0:* 4231/cupsd |
确实有启动 631 端口以及 cupsd 的服务。接下来,我们可以直接连上 CUPS 了!请打开浏览器,然后在网址列输入『 http://localhost:631 』即可!因为浏览器要连接的并非正规的 WWW 服务端口,因此就得要加上冒号 (:) 来指定端口连接!顺利的话,应该可以出现如下画面:
主画面主要可以分为上下两个按钮列来说明,其中又以下方的按钮列为常见的操作项目。我们会用到的按钮大概就是:
不罗唆,赶紧来新增打印机看看!按下『 Add Printer 』项目吧:
上面图示中,最重要的其实是那个『 Name 』的项目,那就是你打印机的伫列名称!未来所有列印的工作都是放在该名称底下排队的!鸟哥的这个打印机名称比较复杂啦!你可以取个比较简单的名字,以后比较容易使用命令列软件来列印啦!至於位置 (Location) 与描述 (Description) 都是这个打印机的说明,可写可不写!写完后按下『 continue 』吧!
接下来则是选择这个打印机伫列所连线的打印机提供什么服务的列印功能?你可以看到前一小节我们使用 nmap 的时候就发现 port 9100 就是 HP JetDirect ,因此我们可以选择上图的第一个项目。由於这部打印机也提供 port 515 的 LPD 服务,因此你也可以选择上图的『 LPD/LPR Host or Printer 』项目。不过,在这里鸟哥选择的是第一项啦!选择完毕后再按下『 Continue 』进入打印机的实体位置项目,如下图:
上图有提供很多范例,我们由於使用到 port 9100 ,因此使用的就是 socket:// 那个范例使用的状态。填写正确的位置后,接下来按下『 Continue 』来继续选择打印机的型号吧!
如上图所示,我们选择的是 HP 的厂牌!厂牌选择完毕后会出现如下图的型号选择:
但上图中我们并没有看到 P2015dn 这部打印机的型号!那怎办?没关系,可以连线到 http://www.linuxfoundation.org/en/OpenPrinting 网站下载适当的驱动程序后,按下上图中的『浏览』按钮来选择该文件即可。不过,从该网站的介绍中,可以发现鸟哥的这部打印机似乎使用默认的 Postscript驱动程序即可,该网站也没有提供这部打印机的驱动程序啊!那怎办?没关系,在 /usr/share/cups/model/目录下就有默认的驱动程序啦!所以请按下『浏览』来处理一下!
如上图所示,选择正确的驱动程序,然后再按下『开启』按钮,最后按下『 Add Printer 』按钮就可以进入管理员口令输入画面:
到此为止我们的打印机配置就 OK 了!如果你回到 CUPS 的进站画面,并且点选 Printers 之后,就会出现如下的打印机画面:
上面画面中的按钮都看的懂吧?其中比较重要的是那个『 Set As Default 』项目,那就是配置为『默认打印机』,当你产生列印工作后,该工作默认就会丢给这个 hp_lj_p2015dn 的伫列来处理的意思喔。接下来,当然就是按下『 Print Test Page 』看看能否列印出正确的画面罗!如果可以顺利的列印,恭喜您!打印机配置成功!
上一小节提到的是网络打印机,那如果你的打印机是一般普通的具有 U盘 介面的打印机呢?由於打印机的装置档名为 /dev/usb/lp0 开始的名称,既然已经知道打印机名称了,那么我们先来注意看看 U盘 是否有捉到该打印机,由於我们的 Linux 已经能够处理随插即用 (PnP) 的装置,因此直接运行 ls 去查阅档名是否存在即可:
[root@www ~]# ll /dev/usb/lp0 crw-rw---- 1 root lp 180, 0 Jun 1 22:32 /dev/usb/lp0 # 这个文件会被自动的创建起来,你不需要手动创建这个文件喔! |
老实说,除非你的 U盘 打印机是非常冷门的机种,否则,我们的 CUPS 应该已经自动的捉到并且配置好该打印机罗!以鸟哥为例,鸟哥办公室的事务机为 HP Diskjet F380 ,如果使用列出 U盘 装置的 lsusb 时,可以看到:
[root@www ~]# lsusb
Bus 001 Device 001: ID 03f0:5511 Hewlett-Packard Deskjet F300 series
Bus 002 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0d62:a100 Darfon Electronics Corp. Benq Mouse
|
接下来,同样的我们使用 CUPS 的 Web 介面来配置一下这部打印机吧!在网址列输入 http://localhost:631 之后再按下『Manage Printers』会出现如下画面:
由上图我们可以发现 CUPS 已经捉到了打印机了!连驱动程序都安装妥当!这是怎么回事啊?这是因为 CentOS 提供了 HAL 的机制来处理 PnP 装置的缘故。关於 HAL 的机制我们会在下一小节再来讨论。不过由於这个装置使用的是 HAL 提供的装置档名,我们如果想要使用 /dev/usb/lp0 来作为打印机的输出档名的话,那么就自己来创建一个打印机的伫列吧!同样的在 CUPS 画面中按下『 Add Printer 』来新增一个打印机:
如上图所示,你要指定的是那个有 #1 的位置,那就是我们的第一个 U盘 插槽位置喔!
如上图所示,最后就会多出一个名为 deskjet_f380 的打印机名称,接下来当然就是『 Print Test Page 』测试看看能否列印罗。如果能够列印得出来,那就是配置妥当了。所以说, U盘 打印机的配置要简单太多罗! ^_^
想像一个状况,你仅有 U盘 打印机安装在 Linux 上头,整个办公室或实验室里面仅有这部打印机。虽然你可以加装列印服务器来使 U盘 打印机变成网络打印机,但总是得多花钱啊!有没有办法可以让你的本机打印机变成网络打印机呢?有的,那就是修改 CUPS 的配置即可。如何修改呢?我们还是透过 CUSP 的浏览器介面来处理即可喔!选择『Administration』会出现如下画面(在画面的最右边):
如上图所示,在箭头指定的地方进行勾选即可。勾选完毕后按下『 Change Settings 』就能够让你的 CUPS 变成列印服务器!而你原本的打印机就会成为:『ipp://你的IP:631/printers/打印机伫列名称』,举例来说,鸟哥这部 Laserjet p2015dn 在网络上看到的就会是:『ipp://192.168.201.250/printers/hp_lj_p2015dn』的名称啊!你可以在其他用户端计算机上面以这个 URI 来进行连线哩!
事实上我们刚刚在上面所进行的各项动作大多是在修改 /etc/cups/ 里面的几个文件而已啊!几个重要的文件为:
既然只是改了这几个配置档,你当然也可以使用 vim 去编辑,不过,因为涉及硬件连线的问题,因此还是建议使用 web 介面来进行修改啦。不过,某些时候如果你没有浏览器介面时,那么使用终端机介面的命令来修改也是可以的。我们底下只以鸟哥办公室拥有的这一部 HP P2015dn 的雷射打印机来作为范例喔!
首先你必须要前往打印机网站下载你的打印机驱动程序定义档。鸟哥之前已经查询过,这部打印机使用默认的 PPD 文件即可。所以鸟哥这部打印机的驱动程序定义档基本上在: /usr/share/cups/model/postscript.ppd.gz 。如果你有自己下载自己打印机的驱动程序时,请将你下载的文件放置到 /usr/share/cups/model/ 目录下,因为后续要操作的命令会到此目录中找寻驱动程序定义档喔!
接下来请确定你的 CUPS 是有启动的,而且打印机也已经打开电源了。启动 CUPS 的方法与检查是否启动 CUPS 的操作如下:
# 1. 重新启动 CUPS 的方法! [root@www ~]# /etc/init.d/cups restart 正在停止 cups: [ 确定 ] 正在启动 cups: [ 确定 ] [root@www ~]# netstat -tlunp | grep 631 tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 4939/cupsd tcp 0 0 :::631 :::* LISTEN 4939/cupsd udp 0 0 0.0.0.0:631 0.0.0.0:* 4939/cupsd # 因为 CUPS 启动的网络服务端口就是 port 631 !所以确定是启动的! # 2. 确认打印机提供的服务为何 [root@www ~]# nmap 192.168.201.253 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-06-03 00:43 CST Interesting ports on 192.168.201.253: Not shown: 1676 closed ports PORT STATE SERVICE 80/tcp open http 139/tcp open netbios-ssn 515/tcp open printer 9100/tcp open jetdirect # 再次强调,鸟哥这部打印机仅有提供 HP 自家的打印机协议 9100 端口! |
从上面的输出可以很清楚的看到鸟哥的打印机与 Linux 上面的 CUPS 都有顺利的运行中!其中还是要强调,你千万不要拿 nmap 去扫瞄别人家的系统!很可怕的!而由於上面输出的结果,我们也知道鸟哥这部打印机在网络上的连线方式为:socket://192.168.201.253:9100 的样式喔!这个地方也请先记录下来。
命令配置/删除打印机的方式就是透过 lpadmin 这个命令啊!这个命令的语法是这样的:
[root@www ~]# lpadmin [-p 自订伫列名] [-v URI] [-m PPD] [-E] <==创建打印机 [root@www ~]# lpadmin [-d 已存在的伫列名] <==配置成为默认打印机 [root@www ~]# lpadmin [-x 已存在的伫列名] <==删除此一打印机伫列 选项与参数: -p :后面接的就是打印机的伫列名称,这个名称可自订,但还是定为有意义较佳。 -v :后面接的就是装置的相关位置,常见的装置有: 序列埠 : parallel:/dev/lp0 U盘 : usb:/dev/usb/lp0 网络打印机 : ipp://192.168.201.253/ 提供特殊插槽: socket://192.168.201.253:9100 -m :后面接的通常就是 PPD 的定义档,注意,要放置到 /usr/share/cups/model/ 底下! -E :作为可接受 (accept) 此列印工作之意! # 1. 先列出本机上面所有已经存在的打印机吧! [root@www ~]# lpstat -a Deskjet_F300_series accepting requests since Tue Jun 2 00:48:59 2009 deskjet_f380 accepting requests since Mon Jun 1 23:34:21 2009 hp_lj_p2015dn accepting requests since Tue Jun 2 00:22:31 2009 # 2. 删除所有已经存在的打印机吧! [root@www ~]# lpadmin -x Deskjet_F300_series [root@www ~]# lpadmin -x deskjet_f380 [root@www ~]# lpadmin -x hp_lj_p2015dn [root@www ~]# lpstat -a lpstat: No destinations added. # 这样就确定没有任何存在的打印机罗! # 3. 加入 hp_p2015 打印机,打印机参数如前面两小节所示: [root@www ~]# lpadmin -p hp_p2015 -v socket://192.168.201.253:9100 \ > -m postscript.ppd.gz -E # 4. 因为仅有一部打印机,因此让此打印机成为默认列印打印机 [root@www ~]# lpadmin -d hp_p2015 |
其实这个 lpadmin 命令只是在升级 /etc/cups/ 目录里面的两个数据而已,一个是 /etc/cups/printers.conf ,这个文件主要是规范了打印机的相关装置、是否接受列印工作、打印机的伫列名称、页面的限制等等,反正就是整个打印机的规范就是了。至於这个打印机相关的 PPD 文件则是以打印机的伫列名称连结到 /etc/cups/ppd/ 目录下。不相信吗?让我们来瞧瞧 printers.conf 的文件内容吧!
[root@www ~]# cat /etc/cups/printers.conf # Printer configuration file for CUPS v1.2.4 # Written by cupsd on 2009-06-03 01:06 |
配置完打印机后,来观察一下目前的打印机状态吧!底下的 lpstat 是个不错用的观察命令喔!
[root@www ~]# lpstat [-adprt] 选项与参数: -a :列出目前可以接受列印工作的打印机伫列名称; -d :列出目前系统的默认打印机 (未指定列印伫列时,默认输出的打印机); -p :列出每部打印机目前的工作状态,包含工作的 ID; -r :列出目前 CUPS 服务是否有在运行? -t :列出目前列印系统中更为详细的资讯说明,很适合查询喔! # 1. 列出目前系统上面所有的打印机伫列与接受工作与否的情形 [root@www ~]# lpstat -a hp_p2015 accepting requests since Wed Jun 3 01:05:26 2009 # 有一部名为 hp_p2015 的打印机,从 2009/6/3 开始接受列印工作之意! # 2. 列出目前的『列印系统』状态,不止包括打印机而已。 [root@www ~]# lpstat -t scheduler is running <==CUPS 这个服务有在运行的意思 system default destination: hp_p2015 <==默认的打印机为这一部 hp_2015 device for hp_p2015: socket://192.168.201.253:9100 <==这部打印机的装置位址 hp_p2015 accepting requests since Wed Jun 3 01:05:26 2009 printer hp_p2015 is idle. enabled since Wed Jun 3 01:05:26 2009 # 这部打印机目前是发呆 (Idle) 的状态,但可接受列印工作! |
如果不清楚你的打印机状态,使用 lpstat 就能够看的清楚罗~接下来,让我们开始来使用列印命令产生列印工作吧!
如果你没有浏览器或者是说,你没有图形介面的软件时,可以透过 lpr 或者是 lp 这两个命令来列印某些文件或数据流重导向的东东。底下的测试会实际列印出数据来,因此,建议你可以先将打印机电源关闭,让 CUPS 可以接受列印伫列的工作,却无法输出到打印机,这样也方便我们后续管理命令的查询!所以,请将打印机的电源关闭先。来看看这两个命令如何操作吧!
[root@www ~]# lpr [-P printer伫列] [-# 列印份数] -U [username] file 选项与参数: -P :若没有默认打印机 (default) 或者想要由不同打印机输出时,可用 -P 指定打印机 -# :如果这份文件你想要列印多个副本时,用这个 -# 加上份数就对了! -U :有些打印机有限制可使用的使用者帐号,此时就得要使用这个选项; # 1. 指定 hp_p2015 这部打印机来列印 /etc/passwd 这个文件 [root@www ~]# lpr -P hp_p2015 /etc/passwd # 2. 关闭打印机后,将 /root/ 底下的文件档名输出到这部打印机 [root@www ~]# ll /root | lpr -P hp_p2015 |
要注意的是,因为鸟哥有指定默认打印机,因此上面的范例中,即使没有加上 [-P hp_p2015] 这个项目时,依旧能够顺利的列印。但如果你没有指定默认打印机,那么就一定要加上这个项目,否则 lpr 会不知到要将数据输出到哪里去喔!看完了 lpr ,再来聊聊 lp 这个命令的用法吧:
[root@www ~]# lp [-d printer伫列] [-n 列印份数] file 选项与参数: -d :后面接的是打印机的伫列名称。如果有多部打印机才需要指定; -n :就是列印的份数啊! # 1. 列印出 2 份 /etc/issue 数据 [root@www ~]# lp -d hp_p2015 -n 2 /etc/issue request id is hp_p2015-11 (1 file(s)) <==以 hp_p2015 来列印,工作号码为 11 |
我们已经有产生三个工作,但是第一个工作有顺利的列印 (打印机是开启的),因此还有两个工作尚未完成才对!那我们如何知道还有哪些列印工作在伫列内呢?可以使用底下的命令来观察喔!
[root@www ~]# lpq [-al] [-P 列印伫列] 选项与参数: -a :列出所有打印机上面在伫列当中的工作情况; -l :用其他较长格式来输出列印的相关资讯 (拥有者与文件大小等等) -P :后面接特定的打印机,与 -a 不同。 # 1. 显示出目前所有打印机的工作伫列状况 [root@www ~]# lpq -a Rank Owner Job File(s) Total Size active root 10 (stdin) 1024 bytes 1st root 11 issue 1024 bytes # 上面的意思是,有 2 份工作,第一个工作为来自 stdin 的数据流,列印号码为 10 , # 整份列印数据占去 1024 bytes 。同理,第二份工作为文件,档名为 issue。 # 2. 用更详细的资讯显示列印工作 [root@www ~]# lpq -l -P hp_p2015 hp_p2015 is ready and printing root: active [job 10 localhost] (stdin) 1024 bytes root: 1st [job 11 localhost] 2 copies of issue 1024 bytes # 你可以看到, issue 会被列印两份的数据! |
如果这些列印工作你想要取消呢?那就使用 lprm 吧!
[root@www ~]# lprm [-P printer伫列] job_id 选项与参数: -P :后面直接指定某部打印机的某个工作号码。注意,那个 job_id 就是刚刚我们使用 lpq 查看到的那个 Job 的号码啦! # 1. 将使用 lpq 看到的第 11 号列印工作取消! [root@www ~]# lprm 11 [root@www ~]# lpq -a Rank Owner Job File(s) Total Size active root 10 (stdin) 1024 bytes # 瞧!只剩下一个工作而已罗! |
整个命令模式处理打印机的任务大约到此为止,其他的,还是使用 Web 介面去管理比较方便啦!
假设你目前的 CentOS 主机上面接著一台 U盘 介面的打印机,这台 U盘 介面的打印机是 Samsung 的 ML-1210 打印机,请问,您可以如何安装这部打印机?
[root@www ~]# lpadmin -p samsung -v usb:/dev/usb/lp0 \ > -m Samsung-ML-1210-gdi.ppd -E |
另外,如果老是看到萤幕前面显示:『 Printer not connected; will retry in 30 seconds...』,很有可能是因为我们的装置代号输入错误,请使用『 lpstat -t 』查阅一下是否正确的配置好了?基本上,安装一部 Linux 有支持的打印机,真的是快速啦!
『工欲善其事,必先利其器』,这是一句大家耳熟能详的古人名言,在我们的资讯设备上面也是一样的啊!如同前面小节谈到的,如果你的打印机本身就没有提供给 Linux 系统用的驱动程序,那么我们就不要浪费时间在该打印机设备上了。同理可证,如果我们想要好好的使用 Linux 安装在自己的主机上面,那么主机上面的硬件资讯最好还是能够了解一下的好。现在一般主板也都有提供 CPU 电压与温度的侦测,那我们也能够透过 lm_sensors 这个软件来取得该数据喔!底下就让我们来玩玩吧!
现在我们知道系统硬件是由操作系统核心所管理的,由第二十章的启动流程分析中,我们也知道 Linux kernel 在启动时就能够侦测主机硬件并加载适当的模块来驱动硬件了。而核心所侦测到的各项硬件装置,后来就会被记录在 /proc 与 /sys 当中了。包括 /proc/cpuinfo, /proc/partitions, /proc/interrupts 等等。更多的 /proc 内容介绍,先回到第十七章的程序管理瞧一瞧先!
Tips: 其实核心所侦测到的硬件可能并非完全正确喔!因为他仅是『使用最适当的模块来驱动这个硬件』而已,所以有时候难免会误判啦 (虽然机率非常之低)!那你可能想要以最新最正确的模块来驱动你的硬件,此时,重新编译核心是一条可以达成的道路。不过,现在的 Linux 系统并没有很建议你一定要重新编译核心就是了。 |
那除了直接呼叫出 /proc 底下的文件内容之外,其实 Linux 有提供几个简单的命令来将核心所侦测到的硬件叫出来的~常见的命令有底下这些:
lspci, lsusb, iostat 是本章新谈到的命令,尤其如果你想要知道主板与各周边相关设备时,那个 lspci 真是不可多得的好工具!而如果你想要知道目前 U盘 插槽的使用情况以及侦测到的 U盘 装置,那个 lsusb 则好用到爆!至於 iostat 则是一个即时分析软件,与 vmstat 有异曲同工之妙!既然本节是想要使用 lm_sensors 分析各组件的温度与电压,那么这几个命令得要来使用看看才行啊! ^_^
基本上,想要知道你 Linux 主机的硬件配备,最好的方法还是直接拆开机壳去察看上面的资讯 (这也是为何第零章会谈计概啊)!如果环境因素导致您无法直接拆开主机的话,那么直接 lspci 是很棒的一的方法:
[root@www ~]# lspci [-vvn] 选项与参数: -v :显示更多的 PCI 介面装置的详细资讯; -vv :比 -v 还要更详细的细部资讯; -n :直接观察 PCI 的 ID 而不是厂商名称 范例一:查阅您系统内的 PCI 装置: [root@www ~]# lspci 00:00.0 Host bridge: Silicon Integrated Systems [SiS] 630 Host (rev 30) 00:00.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0) 00:01.0 ISA bridge: Silicon Integrated Systems [SiS] SiS85C503/5513 (LPC Bridge) 00:01.2 U盘 Controller: Silicon Integrated Systems [SiS] U盘 1.1 Controller (rev 07) 00:01.3 U盘 Controller: Silicon Integrated Systems [SiS] U盘 1.1 Controller (rev 07) 00:01.4 Multimedia audio controller: Silicon Integrated Systems [SiS] SiS PCI Audio Accelerator (rev 02) 00:02.0 PCI bridge: Silicon Integrated Systems [SiS] Virtual PCI-to-PCI bridge (AGP) 00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 630/730 PCI/AGP VGA Display Adapter (rev 21) # 不必加任何的参数,就能够显示出目前主机上面的各个 PCI 介面的装置呢! |
不必加上任何选项,就能够显示出目前的硬件配备为何。上面就是鸟哥的测试机所使用的主机配备。包括使用 SIS 这家公司推出的 630 主板芯片组,使用 U盘 驱动为 1.1 版的控制器,内建 SIS 的声卡,使用内建整合的 SIS 的 AGP 显卡,以及网络卡为螃蟹卡 (型号为 RTL-8139)。您瞧瞧!很清楚,不是嘛。
由於目前的主机配备实在太高档了,因此很多朋友学习 Linux 时,习惯以类似 Virtualbox 或 VMWare等虚拟机器进行模拟,此时你得要特别注意,你的硬件配备将是 Virtualbox 或 VMWare 模拟出来的,并不是原本的主机配备喔!实在是由於讨论区太多网友发问类似『我的螃蟹卡为何捉不到』等问题,询问后,才发现他使用 VMWare 模拟硬件。此时你就得要使用 lspci 去列出 Linux 核心捉到的硬件,而不是你原本的硬件啦!注意注意!
如果你还想要了解某个设备的详细资讯时,可以加上 -v 或 -vv 来显示更多的资讯喔!举例来说,鸟哥想要知道那个以太网络卡更详细的资讯时,可以使用如下的选项来处理:
[root@www ~]# lspci -s 00:0e.0 -vv
|
-s 后面接的那个怪东西每个设备的汇流排、插槽与相关函数功能啦!那个是我们硬件侦测所得到的数据罗!你可以对照底下这个文件来了解该串数据的意义:
其实那个就是 PCI 的标准 ID 与厂牌名称的对应表啦!此外,刚刚我们使用 lspci 时,其实所有的数据都是由 /proc/bus/pci/ 目录下的数据所取出的呢!了解了吧! ^_^
刚刚谈到的是 PCI 介面装置,如果是想要知道系统接了多少个 U盘 装置呢?那就使用 lsusb 吧!这个命令也是很简单的!
[root@www ~]# lsusb [-t] 选项与参数: -t :使用类似树状目录来显示各个 U盘 端口的相关性 范例一:列出目前鸟哥的测试用主机 U盘 各端口状态 [root@www ~]# lsusb Bus 001 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 002 Device 002: ID 0d62:a100 Darfon Electronics Corp. Benq Mouse # 如上所示,鸟哥的主机有两个 U盘 控制器 (bus),而 Bus 002 有接了一个设备, # 该设备的 ID 是 0d62:a100,对应的厂商与产品为 Benq 的鼠标。 |
确实非常清楚吧!其中比较有趣的就属那个 ID 号码与厂商型号对照了!那也是写入在/usr/share/hwdata/pci.ids 的东西,你也可以自行去查询一下喔!更多资讯我们留待下一小节再来讨论吧!
刚刚那个 lspci 找到的是目前主机上面的硬件配备,那么整部机器的储存设备,主要是硬盘对吧!请问,您硬盘由启动到现在,已经存取多少数据呢?这个时候就得要 iostat 这个命令的帮忙了!不过,默认 CentOS 并没有安装这个软件,因此你必须要先安装他才行!如果你已经有网络了,那么使用『 yum install sysstat 』先来安装此软件吧!否则无法进行如下的测试喔!
[root@www ~]# iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数] 选项与参数: -c :仅显示 CPU 的状态; -d :仅显示储存设备的状态,不可与 -c 一起用; -k :默认显示的是 block ,这里可以改成 K bytes 的大小来显示; -m :与 -k 类似,只是以 MB 的单位来显示结果。 -t :显示日期出来; 范例一:显示一下目前整个系统的 CPU 与储存设备的状态 [root@www ~]# iostat Linux 2.6.18-92.el5 (www.vbird.tsai) 06/03/2009 avg-cpu: %user %nice %system %iowait %steal %idle 0.35 0.31 0.25 0.03 0.00 99.06 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn hda 0.29 3.46 4.01 1116645 1295796 # 瞧!上面数据总共分为上下两部分,上半部显示的是 CPU 的当下资讯; # 下面数据则是显示储存装置 /dev/hda 的相关数据,他的数据意义: # tps :平均每秒钟的传送次数!与数据传输『次数』有关,非容量! # kB_read/s :启动到现在平均的读取单位; # kB_wrtn/s :启动到现在平均的写入单位; # kB_read :启动到现在,总共读出来的文件单位; # kB_wrtn :启动到现在,总共写入的文件单位; 范例二:每两秒钟侦测一次,并且共侦测三次储存装置 [root@www ~]# iostat -d 2 3 Linux 2.6.18-92.el5 (www.vbird.tsai) 06/03/2009 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn hda 0.29 3.46 4.01 1116645 1296276 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn hda 0.00 0.00 0.00 0 0 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn hda 0.00 0.00 0.00 0 0 # 仔细看一下,如果是有侦测次数的情况,那么第一次显示的是『从启动到现在的数据』, # 第二次以后所显示的数据则代表两次侦测之间的系统传输值!举例来说,上面的资讯中, # 第二次显示的数据,则是两秒钟内(本案例)系统的总传输量与平均值。 |
透过 lspci 及 iostat 可以约略的了解到目前系统的状态啊!还有目前的主机硬件数据呢!知道这些资讯后,我们就可以来玩一些比较不一样的东西罗! ^_^
在现在的计算机里面,你或许真的无法想像没有 U盘 介面装置的主机~因为不论我们的键盘、鼠标、打印机、扫描仪、闪盘等等,几乎都是使用到 U盘 来作为传输的介面的。所谓这 U盘 (Universal Serial Bus) 最早是在 1994 年被发展出来,到 1996 年前后发展出 version 1.0 ,当时的速度大约在 12Mbit/second,到了 2000 年发展出 version 2.0 ,这一版的速度则提高到 480Mbit/second,这也是目前使用最广泛的一个速度。2008 年则释出 U盘 3.0,这一版的速度比 2.0 要快十倍喔!不过目前市面上的产品还是非常的少见。(注2)
U盘 有很多的优点啦,包括他是可以延伸的,每个 U盘 port 都可以最多接到 127 个装置!速度又快,又具有 Plug and Play (随插即用) 的优点,所以近期以来被用来作为携带式装置的主要数据传输介面呢!
目前 U盘 1.1版本的控制器主要有两种规格,分别是:
由於我们的 Linux 会将这两种 U盘 的驱动程序加载,因此不论你的 U盘 是使用哪种芯片,我们的 Linux都可以顺利的侦测到并且正确的驱动的啦!至於 U盘 2.0 在 Linux 上都以 Enhanced Host Controller Interface (EHCI)来驱动的。我们使用 lsmod 来找一下 hci 这个关键字看看,鸟哥的测试主机驱动了多少 U盘 模块了呢?
[root@www ~]# lsmod | grep hci Module Size Used by uhci_hcd 25421 0 ohci_hcd 23261 0 ehci_hcd 33357 0 # 三个模块都有加载,再来找一下 ehci_hcd 的说明看看: [root@www ~]# modinfo ehci_hcd filename: /lib/modules/2.6.18-92.el5/kernel/drivers/usb/host/ehci-hcd.ko license: GPL author: David Brownell description: 10 Dec 2004 U盘 2.0 'Enhanced' Host Controller (EHCI) Driver srcversion: 006DD5CF82C35E943696BE7 ....(底下省略).... |
我们之前谈过 U盘 的磁碟代号是: /dev/sd[a-p] 之类的,类似 SCSI 硬盘的代号,这是因为 U盘 的磁碟装置使用 SCSI 相关的装置代号,因此,如果您要使用 U盘闪盘的话,嘿嘿!那么您的 Linux 主机就得要支持 SCSI 装置才行~
此外,为了让 U盘 磁碟装置顺利的被使用,因此,有时候还得要启动 usb-storage 模块才行~所以罗,光是有 U盘 的 uhci 模块还不行,还得要配合 usb-storage 啦~而一般 U盘 的装置都会被主动的侦测,核心也会主动的加载 U盘 装置的驱动模块,所以你应该不需要手动加载 usb-storage 才是。不过,如果老是无法驱动时,那么不妨手动加载 usb-storage 试看看。
顺利加载各个需要的模块之后,直接下达 fdisk -l 应该就可以看到您的 U盘 闪盘的装置代号才是!一般来说,如果是第一个 U盘 磁碟装置的话,应该可以看到一个名为 /dev/sda1 的装置,使用 mount 将他挂载起来即可啊!
在这里要强调的是,如果你是使用类似笔记本计算机的 2.5 寸硬盘作为随身硬盘的话,由於他就是硬盘的规格,因此你可以看到一个完整的 /dev/sda 之类的磁碟资讯,你也可以进行额外的分割。但如果是快闪碟的话,快闪碟并不是传统的硬盘,他并不是使用磁碟读取头与磁碟盘来记录数据,因此你只能使用 /dev/sda1 之类的档名来挂载,理论上是无法进行额外分割的喔!这部份要特别强调一下。
要驱动 U盘 打印机也很简单啊!只要做好 U盘 打印机的装置代号即可!反正我们的 usb 模块已经加载了嘛!目前的 CentOS 5.x 会主动的帮我们创建打印机的装置档名,所以底下的动作我们根本不需要进行。不过如果你的 Linux 是较老式的系统,那可能得要使用 mknod 来创建起 U盘 打印机才行。透过核心装置代码(注3)的查询,我们知道 U盘 打印机的主要/次要装置代码为 180 /0~15,所以,创建的方法为:
# 假设你已经有 /dev/usb/lp0 ,那我们来尝试创建 /dev/usb/lp1 看看 [root@www ~]# mkdir -p /dev/usb [root@www ~]# mknod /dev/usb/lp1 c 180 1 [root@www ~]# chown root:lp /dev/usb/lp1 [root@www ~]# chmod 660 /dev/usb/lp1 [root@www ~]# ls -l /dev/usb/lp1 crw-rw---- 1 root lp 180, 1 Jun 3 14:27 /dev/usb/lp1 [root@www ~]# echo "testing" > /dev/usb/lp1 |
在我们一般的生活当中,最常见的两种 U盘 装置就是闪盘与打印机了,所以鸟哥在这里仅就这两种装置来介绍启动的方法,如果您还有其他的 U盘 装置要驱动的话,请参考底下这一篇的内容啊!
玩计算机硬件的朋友们一定都听过所谓的『超频』这玩意儿,所谓的『超频』就是让系统原有的运行时脉添加,让 CPU/PCI/VGA 前端汇流排速度提升到非正规的频率,以取得较高的计算机效能。这在早期对於单价还是很贵的计算机来说,可以让我们花比较少的钱去获得比较高效能的计算机哩!不过,超频要注意的地方可不少,包括电压不可高出 CPU 的负荷、CPU 风扇必须要强有力,避免因为温度过高导致系统死机等等。
不过现今的计算机速度已经够快了,我们的 Linux 主机也实在不建议您超频,因为整体效能可能添加不了多少,但是却会让您的主机寿命减少、系统不稳定呢!而由早期超频的『技术培养』过程当中,我们知道『CPU 的温度、系统的相关电压』是影响主机是否稳定的一项重要指标喔!所以罗,如果能够随时掌握温度、电压,其实对於系统还是有一定程度的监控啦。
其实各大主要主板商与芯片组,都会有温度、电压的侦测器在主机内,这个我们可以在主板操作手册或者是在 BIOS 内的『 Monitor 』项目找到相关的温度、电压数据。在 Windows 系统当中,厂商有推出相关的软件来侦测,那么在 Linux 当中呢?呵呵!也是有啊!那就是 lm_sensors 这套好用的东西了!
目前较新的 Linux distributions 都默认会帮忙安装这套软件,但如果你的 Linux 是比较早期的版本,那么就只好请您自行前往 http://www.lm-sensors.org/ 官方网站直接下载 tarball 并且安装他罗~
由於 lm_sensors 主要是依据『主板芯片组的型号,带入相关的模块后,再侦测其温度、电压』的,如果该主板芯片组并不是 lm_sensors 所支持的模块,那自然就无法找出该芯片组的温压罗~所以啦,我们在使用 lm_sensors 之前,必须要确定主板是有提供温度、电压的,再来,必须要加载主板的驱动模块,然后才有办法使用 lm_sensors 来进行侦测。
好消息是, lm_sensors 本来就提供我们一个不错的主板芯片组侦测程序,那就是 sensors-detect 这个命令。侦测到主板芯片组后,将该资讯写入配置档当中,就可以使用 sensors 命令直接读取目前的 CPU、机壳、电源、风扇等等的资讯了!直接来作看看吧!
[root@www ~]# sensors-detect # sensors-detect revision 1.413 (2006/01/19 20:28:00) ....(中间省略).... It is generally safe and recommended to accept the default answers to all questions, unless you know what you're doing. <==就一直接受就对了! We can start with probing for (PCI) I2C or SMBus adapters. You do not need any special privileges for this. Do you want to probe now? (YES/no): y Probing for PCI bus adapters... Use driver `i2c-sis630' for device 00:00.0: Silicon Integrated Systems SIS630 Probe succesfully concluded. # 接下来的行为当中,反正你就一直按 Enter 就可以了!让他自动去侦测! To make the sensors modules behave correctly, add these lines to /etc/modprobe.conf: #----cut here---- # I2C module options alias char-major-89 i2c-dev #----cut here---- To load everything that is needed, add this to some /etc/rc* file: #----cut here---- # I2C adapter drivers modprobe i2c-sis630 modprobe i2c-isa # I2C chip drivers modprobe eeprom modprobe it87 # sleep 2 # optional /usr/bin/sensors -s # recommended #----cut here---- Do you want to generate /etc/sysconfig/lm_sensors? (YES/no): Copy prog/init/lm_sensors.init to /etc/rc.d/init.d/lm_sensors for initialization at boot time. |
上面就进行好型号的侦测,并且主动的创建了 /etc/sysconfig/lm_sensors 的参数配置档。不过我们依旧需要进行一些额外的处理!包括让系统启动主动加载模块的功能!这样我们就能够直接使用 lm_sensors 来侦测而不需要手动加载侦测模块啊!你可以这样做:
[root@www ~]# vi /etc/modprobe.conf alias char-major-89 i2c-dev # 将刚刚侦测到的模块给他写入到这个文件当中! [root@www ~]# vi /etc/rc.d/rc.local # I2C adapter drivers modprobe i2c-sis630 modprobe i2c-isa # I2C chip drivers modprobe eeprom modprobe it87 sleep 2s /usr/bin/sensors -s [root@www ~]# chkconfig --list lm_sensors lm_sensors 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 确定 lm_sensors 默认启动会启动即可!此时你可以重新 reboot , # 或者运行上述的 modprobe 之后,在进行底下的侦测罗! |
侦测的命令就是 sensors 啊!直接动作吧!
[root@www ~]# sensors it87-isa-0290 <==使用到的模块功能! Adapter: ISA adapter VCore 1: +1.55 V (min = +1.42 V, max = +1.57 V) VCore 2: +1.09 V (min = +2.40 V, max = +2.61 V) ALARM +3.3V: +1.25 V (min = +3.14 V, max = +3.47 V) ALARM +5V: +2.69 V (min = +4.76 V, max = +5.24 V) ALARM +12V: +5.82 V (min = +11.39 V, max = +12.61 V) ALARM -12V: -17.05 V (min = -12.63 V, max = -11.41 V) ALARM -5V: -7.40 V (min = -5.26 V, max = -4.77 V) ALARM Stdby: +2.07 V (min = +4.76 V, max = +5.24 V) ALARM VBat: +0.40 V fan1: 0 RPM (min = 0 RPM, div = 2) fan2: 0 RPM (min = 3000 RPM, div = 2) ALARM fan3: 2689 RPM (min = 3000 RPM, div = 2) M/B Temp: +33°C (low = +15°C, high = +40°C) sensor = diode CPU Temp: +37°C (low = +15°C, high = +45°C) sensor = thermistor Temp3: -5°C (low = +15°C, high = +45°C) sensor = disabled # 你可以发现一大堆的错误信息!没关系的!这是因为鸟哥的主板太旧, # 导致 lm_sensors 误判,所以输出的结果就会有点差异!至少转速与温度是正常的啦! |
基本上,只要这样的步骤,您的主机就可以主动的侦测温度与电压,还有风扇转速等等资讯。不过,事实上,由於主板设计的不同,所以侦测的结果很有可能是有误差的。以鸟哥的情况来说,我所使用的主板型号是太旧了,lm_sensors 确实捉到错误的资讯啊!此时或许就需要进行调校了。调校的步骤很简单,先确定使用 sensors 显示的结果每个项目代表的意义 (可以参考 BIOS 硬件侦测结果的顺序来排列) ,然后进入 /etc/sensors.conf 进行修改即可。
如果想要以图表输出的话,那么不妨搭配 MRTG 来进行网页绘图~这部分网络上面文章就比较多一点,也可以先参考鸟哥的一篇旧文章:
从上面的介绍中,我们不难发现目前新的 Linux distributions 大多能够类似窗口操作系统,就是能够即时的侦测随插即用硬件!例如 U盘 介面的各项硬件设备等等。那我们也知道其实所有的硬件都是文件,这些装置文件必须要使用 mknod 才能创建的!那到底 (1)硬件如何侦测与 (2)装置文件如何主动创建呢?这就与 udev 及 HAL 这两个东西有关了。
事实上,系统所有的硬件应该都是给核心管理的,但我们知道操作系统在内存内是受保护的,使用者根本无权使用操作系统核心。为了解决这个问题於是有 udev 的产生。这个 udev 是个使用者层级软件,他可以让使用者自行处理 /dev 底下的装置!如此一来就能够解决一般用户在使用类似 U盘 时,需要额外硬件的问题。(注4)
但我们如何知道系统上面多了个硬件呢?这时候就得要硬件抽象层 (Hardware Abstraction Layer, HAL) 的辅助了。HAL 可以将系统目前的所有硬件进行快照,并持续检视这个快照的内容(注5)。如果有新的 PnP 硬件插入时,HAL 就会发现目前的硬件与快照不同,此时就会通知 udev 进行新的装置的建置了!如此一来,两者的配合就能够让你的装置 PnP 罗!
目前这两个咚咚在 CentOS 上面都会是启动的,其中 udev 是在 /etc/rc.d/rc.sysinit 就启动了,而 hal 则是在 /etc/init.d/haldaemon 这个服务才启动。让我们检查看看是否真的有启动啊!
[root@www ~]# pstree -p | egrep '(udevd|hal)' |-hald(4814)---hald-runner(4815)-+-hald-addon-acpi(4822) | |-hald-addon-keyb(4827) | `-hald-addon-stor(4837) |-udevd(401) # 确实有启动喔!一个是 udevd 一个是 hald 啦! |
老实说,如果你已经启动了这两个家伙,那么其他的事不需要进行,交给这两个小玩意儿自己处理即可。但如果你想要多了解 udev 是如何进行装置的创建时,那么我们可以来玩玩底下的咚咚。
假设你想要将你的闪盘取名为较有趣的装置,不想再使用类似 /dev/sda1 之类的名称时,可以怎么作呢?我们可以透过更改 udev 的守则 (rule) 来使用 mknod 创建不同名称的装置文件。举例来说,鸟哥这部测试机的硬盘使用为 /dev/hda ,因此第一个 U盘 快闪碟装置应该是 /dev/sda1 才对!如果你的系统使用 SATA 磁碟,那么你的快闪碟可能就得要由 /dev/sdb1 开始编号起来了。
udev 创建装置文件的守则放置到 /etc/udev/rules.d/ 目录下,在该目录下的文件可以依序进行处理的。以最简单的语法来看,在该目录下可以使用的变量与对应可以是:
KERNEL=="核心能够分析到的档名", NAME="你要使用的装置档名" |
当然还有很多语法,不过这里我们先不介绍,有兴趣的查一下本文最后的连结去看看吧!假设鸟哥的 /dev/sda1 要取名字成为 /dev/vbirdusb ,你可以这样做:
# 1. 先在守则目录下新增一个文件,档名配置为 99-vbirdusb.rules 好了 [root@www ~]# cd /etc/udev/rules.d/ [root@www rules.d]# vi 99-vbirdusb.rules KERNEL=="sda1", NAME="vbirdusb" # 上面这一行就足够啦!注意,档名前的 /dev 不需要写入! # 2. 插入一支闪盘,然后检查看看: [root@www rules.d]# ll /dev/sda* /dev/vbirdusb brw-r----- 1 root disk 8, 0 Jun 3 16:43 /dev/sda brw-r----- 1 root disk 8, 1 Jun 3 16:43 /dev/vbirdusb # 唔! /dev/sda1 不见了!取而代之的是 /dev/vbirdusb 啦! [root@www rules.d]# mount /dev/vbirdusb /mnt [root@www rules.d]# df Filesystem 1K-blocks Used Available Use% Mounted on ....(中间省略).... /dev/vbirdusb 976064 192784 783280 20% /mnt # 很有趣吧!装置名称被鸟哥改过了! |
虽然这样很具有个性化的需求,不过总是不太可靠~万一哪天忘记自己有进行这些动作,偏偏用核心默认的档名去处理时,会发生很多不明的错误啊!所以将刚刚创建的数据反向删除回来吧!
# 1. 先卸载系统吧! [root@www ~]# umount /dev/vbirdusb # 2. 拔除闪盘,并将守则档删除! [root@www ~]# rm /etc/udev/rules.d/99-vbirdusb.rules # 3. 再插入闪盘,测试一下档名有没有恢复正常? [root@www ~]# ll /dev/sda* brw-r----- 1 root disk 8, 0 Jun 3 16:50 /dev/sda brw-r----- 1 root disk 8, 1 Jun 3 16:50 /dev/sda1 # 看起来,档名确实恢复正常罗! |
2009/09/15:简单修订一些语句,修改章节的习题,并没有改到什么重要的资讯。
出处:http://vbird.dic.ksu.edu.tw/linux_basic/0610hardware.php