最近升级日期:2009/09/15
1. CentOS 系统配置工具: setup
1.1 使用者身份验证配置 1.2 网络配置项目(手动配置IP与自动取得) 1.3 防火墙配置 1.4 键盘形式配置 1.5 系统服务的启动与否配置 1.6 系统时钟的时区配置 1.7 X 窗口介面解析度配置 2. 利用 CUPS 配置 Linux 打印机 2.1 Linux 的列印组件 (列印工作、伫列、服务与打印机) 2.2 CUPS 支持的连线模式 2.3 以 Web 介面控管网络打印机 2.4 以 Web 介面控管 U盘 本机打印机 2.5 将 Linux 本机打印机开放成为网络打印机 2.6 手动配置打印机: lpadmin, lpstat, lpr, lp, lpq, lprm 3. 硬件数据收集与驱动,及 lm_sensors 3.1 硬件资讯的收集与分析: lspci, lsusb, iostat... 3.2 驱动 U盘 装置 3.3 使用 lm_sensors 取得温度、电压等资讯: sensors-detect, sensors 3.4 udev与 hal 简介 4. 重点回顾 5. 本章习题 6. 参考数据与延伸阅读 7. 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=23898 ![]() 系统配置除了使用手动的方式编辑配置档之外 (例如 /etc/inittab, /etc/fstab 等),其实在 Red Hat 系统的 RHEL, CentOS 及 Fedora 还有提供一支综合程序来管理的,那就是 setup 这个命令的功能罗!老实说, setup 其实只有在 Red Hat 的系列才有, 在其他的 Linux distributions 并不存在,因此,鸟哥并没有很要求一定要学会这家伙的。 只不过,setup 还是挺好用的,所以我们还是来玩玩吧! 这个 setup 的处理方法非常的简单,就是利用 root 的身份下达这个命令,如果你已经使用远程操作系统的话, 记得最好切换一下语系成为英文语系 (比较不会出现边框是乱码的情况) ,结果就会出现如下的画面了。 ![]() 图1.0、 setup 的命令运行画面示意图 如上图所示,那就是 setup 提供的各项系统配置功能。这个画面的使用方式其实在图中的最底下一行有说明了, 可以利用 [tab] 按键在三个画面中切换,使用 Run Tool 可以开始配置该项目,使用 Quit 可以离开 setup 命令。 那么上面的主菜单部分有哪些功能呢?这些配置的基本功能是这样的:
底下我们就来约略的介绍一下这些玩意儿吧!除了网络 IP 的配置外,其余的部分鸟哥会很快的带过去而已。
毕竟 setup 仅是一个统整的工具,每个配置项目其实都牵涉到各自的基础功能,那些基础功能还得要持续摸索的... ![]() 在按下了『 Authentication configuration 』项目后,会出现如下画面: ![]() 图 1.1.1、Setup 命令的使用者身份认证机制 我们的 Linux 除了使用自己提供的使用者口令验证机制之外,还能够使用其他外部身份验证服务器所提供的各项验证功能喔。 在上面图示的左侧 User Information 的地方指的是:我们系统上的使用者可以使用什么方式对外取得帐号资讯, 也就是说,这部主机除了 /etc/passwd 的帐号之外,还能够使用其他的帐号来登陆系统的。我们支持的帐号管理服务器主要有 LDAP, NIS, Winbind 等。 至於右侧的 Authentication 则是登陆时需要提供的身份验证码 (口令) 所使用的机制为何。 在默认的情况下,我们身份验证仅参考本机的 /etc/passwd, /etc/shadow 而已,而且使用 MD5 的口令验算机制, 因此上图右侧的部分仅会有最上方两个而已。事实上,这个部分的配置主要是修改了 /etc/sysconfig/authconfig ,同时还加入了各个服务器的用户端程序配置功能哩。 你一定会问,那么什么时候可以用到这个机制呢?思考一下,如果你的网络环境是计算机教室, 你希望每个同学都能够有自己的帐号来登陆每部主机。此时,你会希望每部主机都帮同学创建同一个帐号吗? 那如果每一个同学都想要修改口令,那就糟了!因为每部主机都得要重新修改口令才行啊!这个时候帐号管理服务器就很重要了。 他的功能有点像底下这样: ![]() 图 1.1.2、身份管理服务器的功能示意图 如上图所示,我 vbird 想要登陆某一部主机时,这部主机会向外要求帐号资讯,就是最上方那部服务器。 此时,你只要在最上方的服务器上将该帐号配置好,并且在每部主机都利用 NIS 或 LDAP 功能来指定身份查询的方向, 那么 vbird 就能够使用同一组帐号口令来登陆每部主机了,这样管理是否很方便呢?因为只要管理一部服务器即可嘛! 我们在服务器篇谈到 NIS 时再来实作这个环境喔!
![]() 网络其实是又可爱又麻烦的玩意儿,如果你是网络管理员,那么你必须要了解区域网络内的 IP, gateway, netmask 等参数,如果还想要连上 Internet ,那么就得要理解 DNS 代表的意义为何。如果你的单位想要拥有自己的域名, 那么架设 DNS 服务器则是不可或缺的。总之,要配置网络服务器之前,你得要先理解网络基础就是了! 没有人愿意自己的服务器老是被攻击或者是网络问题层出不穷吧!^_^ 但鸟哥这里的网络介绍仅止於当你是一部单机的 Linux 用户端,而非服务器!所以你的各项网络参数只要找到网络管理员, 或者是找到你的 ISP (Internet Service Provider) ,向他询问网络参数的取得方式以及实际的网络参数即可。 通常网络参数的取得方式在台湾常见的有底下这几种:
了解了网络参数的取得方法后,你还得要知道一下我们透过啥硬件连上 Internet 的呢?其实就是网络卡嘛。 目前的主流网卡为使用以太网络协议所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络介面为 ethN (N 为数字)。 举例来说,鸟哥的这部测试机上面有一张以太网卡,因此鸟哥这部主机的网络介面就是 eth0 罗 (第一张为 0 号开始)。 好了,那就让我们透过 setup 来配置网络吧!按下『 Network Configuration 』会出现如下画面: ![]() 图 1.2.1 、 setup 的网络介面选择示意图 上图中那个 eth1.bak 是系统捉错的文件,因为这个程序会跑到 /etc/sysconfig/network-scripts/ 目录下找出档名为 ifcfg-ethN 的文件内容来显示的。因为鸟哥仅有一张网卡,因此那个 eth1 不要理会他!直接点选 eth0 之后就会产生如下的画面: ![]() 图 1.2.2 、 网络介面的各项网络参数配置示意图 上图中那个 Name 与 Device 名称最好要相同,尽量不要修改他!这里的配置是这样的:
如果你是使用 ADSL 拨接的话,那么上面的配置项目就不适用了。 你得要使用 (1)adsl-setup 来进行配置,然后再以 (2)adsl-start 来启动 ADSL 拨接, 详细的方法我们会在服务器篇再来介绍的。上面谈的都是 IP 的取得方式,并没有谈到主机名称解析的部分 (DNS)。 只有手动配置者才需要进行 DNS IP 的配置,使用 dhcp 及 adsl-start 者都不需要进行底下的动作啦! 假设你的 DNS IP 为中华电信的 168.95.1.1 时,那就得这样配置:
重点是 nameserver 后面加上你的 DNS IP 即可!一切配置都妥当之后,你还得要进行一个任务,那就是重新启动网络看看罗! 重新启动网络的方法很简单,这样做即可:
由於网络涉及的范围相当的广泛,还包括如何进行网络除错的工作等,鸟哥将这部份写在服务器篇了,所以这里不再多费唇舌。 假设你现在已经连上 Internet 了,那么防火墙的配置则不可不知啊!底下就来谈谈。 ![]() 防火墙的认识是非常困难的,因为你必须要有很强的网络基础概念才行。CentOS 提供的这个简单的配置其实有时候反而会让我们困扰不已。基本上,这里仅是介绍『你可以这样做』,但并不代表『你必须这样做』! 所以,有兴趣的还是得要再继续钻研网络技术喔! ^_^。好了,在按下 Firewall configuration 后,会出现如下画面: ![]() 图 1.3.1 、 setup 进入防火墙配置示意图 上图中主要出现两个部分,一个是关於 SELinux 的部分,一个则是防火墙的部分。SELinux 我们在第十七章介绍过了,这里不再浪费篇幅。 请依据你的需求配置 Enforcing, Permissive 或 Disabled 吧!(当然最好还是务必要启动 SELinux 啦!) 防火墙的部分,由於我们安装时建议不要启动防火墙, 因此上图你会看到『 Disabled 』的部分被选择了。但是由於现在你的系统已经上网了 (假设已经上网了), 那么你务必要启动防火墙来管理网络才好。由於默认你的防火墙会开放远程主机对你的登陆连线, 因此最好使用 Customize (客户配置) 来改变配置比较好喔!按下『 Customize 』会出现如下图示: ![]() 图 1.3.2 、 客制化防火墙抵挡机制的示意图 这个地方不是三言两语讲的完的!包括信任装置,以及允许进入的服务器封包~很是麻烦。基本上,你只要这样想就好了:
基本上,这个动作仅是在创建 /etc/sysconfig/iptables 这个文件而已。 而这个文件默认是不存在的 (因为我们没有启动防火墙啊!) 。这里你先有个概念即可,因为,我们未来会介绍以 shell script 的方式创建属於您自己的防火墙系统,细节我们会在服务器篇慢慢作介绍的啊! 如果你已经有网络了,记得在这个项目的配置中,於图 1.3.1 选择防火墙为『 Enable 』的状态,按下『 Customize 』进入图 1.3.2 当中取消 ssh 的勾选,最后再回到 1.3.1 当中按下『 OK 』来启动 Linux 用户端的防火墙配置吧! 这样你的系统就具有最起码的防火墙功能罗! ^_^ ![]() 某些情况底下你的键盘可能会发生一些对应错误的情况,举例来说,使用的键盘并非台湾常见的 104 按键导致很多英文对应不起来。 此时你可以使用 setup 来修改喔!按下『 Keyboard configuration 』会出现如下的画面: ![]() 图 1.4.1 、键盘形式选择 其实这个文件就仅会修改 /etc/sysconfig/keyboard 啦!很简单的配置项目。 ![]() 我们在第十八章谈过系统服务的启动与关闭, 当时介绍过 ntsysv 吧?没错~这个 System services 的项目就是会呼叫出 ntsysv 这支程序来处理服务的配置啦!详细的配置请回第十八章参考吧!这里不再浪费篇幅罗! 因为....鸟哥实在太会碎碎念了,再加上图示,唔!好占篇幅~ @_@ ![]() 我们知道地球是圆的,所以想要看王建民在纽约投球都得要三更半夜才有办法看的到!这也就是说, 其实在同一个时间点全世界的时钟指的时间都不相同啊!我们的 Linux 是支持多国语系的国际化操作系统, 所以你可以将这部主机拿到任何地方且不需要修改系统时钟,因为系统会主动的依据你提供的时区来变化时间的。 当你将笔记本计算机带到美国纽约并且想要变更成为美国时间时,可以按下『 Timezone configuration 』的项目: ![]() 图 1.6.1 、 setup 的时区选择 如上图所示,你在上半部画面中,可以使用键盘方向键来选择正确的位置,然后再用 [tab] 移动到 [OK] 即可! 时区的配置,其实就是找出与 /etc/sysconfig/clock 有关的配置项目而已。实际上,上面图示出现的咚咚,就与 /usr/share/zoneinfo/ 目录内的数据有关而已。 ![]() X Window System 我们会在第二十四章再来详细说明,这里仅是告知一下, 如果你想要变更你的 X 窗口介面的解析度时,就可以使用这个项目了。不过要注意的是,这个项目的运行不可以使用类似 ssh 通讯协议连线后,在远程主机上运行这个配置项目。因为这个项目的运行会产生一个新的 X 终端机在 tty7 或 tty8 上头, 因此,你如果使用远程连线机制的话,会看不到画面的啦!理解乎? 在你点选了『 X configuration 』之后,就会出现如下的图样。其中以硬件及配置两个页面较常被变更。 先来瞧瞧图示吧: ![]() 图 1.7.1 、 setup 的 X 解析度配置 如上所示,由於窗口解析度的范围与萤幕的支持有关,因此你必须要先处理萤幕的升级频率后才能够修改窗口解析度。 所以我们会先处理『硬件』部分,鸟哥的萤幕是旧式的 4:3 传统萤幕,所以选择 1024x768 ,如果你的萤幕是新型的宽萤幕, 那么请自行挑选适当的解析度吧。处理完毕后就能够开始配置窗口解析度了,如下所示: ![]() 图 1.7.2 、 setup 的 X 解析度配置 如上图所示,此时会出现可调整的解析度啦!整理整理就能够显示出你想要的窗口解析度。 其实这些配置都是修改 /etc/X11/xorg.conf 这个配置档啦!等到了第二十四章时,我们再来详细的谈谈这玩意吧! 至於关於 X 方面的登录文件则在 /var/log/Xorg.0.log 罗! 鸟哥个人认为,这个 setup 的工具是很好用的~只是,如果能够完全清楚整个系统架构的话, 再来玩这个小程序会比较好啦! ^_^。另外,原本的旧版 CentOS 还有提供打印机的配置功能,不过由於新版的数据已经转由 CUPS 负责列印, 而列印可以使用浏览器介面来显示,因此就取消了这个 setup 的组件啦!底下我们就来玩玩如何简单的配置你的打印机吧! ![]() 打印机对於日常生活来说,很重要吧!呵呵~没错啊!尤其我们的 Linux 主机如果未来还要作为
Printing server 的话,那么自然就得要先创建好打印机的连线啦!在本章里面我们仅谈论一下如何让你的 Linux 可以连接到打印机,
让你的 Linux 可以顺利的将文件数据列印出来啦!现在就来谈谈先! ![]()
要谈论 Linux 的列印,首先就得要知道 Linux 底下整个列印的行为是怎样的一个流程呢?而且, 也得要了解一下你的硬件是否支持列印工作嘛!在硬件部分,你必须要在 BIOS 将打印机的支持启动才行! 不过,这大概都属於旧式打印机才需要的动作啦!为啥呢?因为现在打印机大部分都是 U盘 或者是网络打印机了, 根本不需要使用 25 针序列埠的支持!
除了主机本身的支持之外,你的打印机也必须要能够支持 Linux 才行!其实并不是 Linux 的问题啦!而是打印机制造商必须要能够提供给 Linux 用的驱动程序,这样你的 Linux 才能够使用该型号的打印机。 老实说,鸟哥是 HP 打印机的爱好者,因为 HP 打印机对 Linux 的支持非常好!但是另一牌的 L 开头的打印机总是很慢或者不推出给 Linux 用的驱动程序,所以该牌的打印机很难安装在 Linux 主机上!真困扰。
那到底你该如何确认你的打印机有支持 Linux 呢?或者是,如果你想要购买新的打印机时, 如何查询该打印机能否在 Linux 上面安装呢?很简单,直接到底下的网站去查询一下即可喔! 举例来说,鸟哥现在的研究室有一部 HP 的 LaserJet P2015dn 打印机,我想要知道这部打印机对 Linux 的支持度好不好, 那就先进入上述的网站连结,出现如下的画面: ![]() 图 2.1.1 、 打印机支持网站的主画面 在如上画面中请按下『 Printers 』来观察打印机的特色吧!会出现如下画面: ![]() 图 2.1.2 、 选择打印机示意图 在上图中填入正确的厂牌 (HP) 以及正确的打印机型号 (LaserJet P2015dn) 后,请按下『 Show 』那个按钮, 该网站就会从数据库内捉出支持度的情况给你看,如下图所示: ![]() 图 2.1.3 、 鸟哥的打印机对 Linux 的支持度 在显示的画面中,你最要注意的是那个企鹅数量啦!如果达到 3 只,那就代表支持度是非常完美的。
两支企鹅是可接受的范围内。如果是小於一只企鹅时,那么该打印机对 Linux 的支持可能就是比较差的喔!
还好,鸟哥这部含有网络功能的打印机还有两只企鹅的支持,等一下应该能够顺利安装到俺的 Linux 测试机上吧!
你有没有发现,在打印机还没有启动电源的情况底下,其实我们还是可以透过软件来将某个工作列印出来的, 只是该项工作就会被放入到等待的环境中 (伫列) 。为什么会这样呢?这是因为整个列印的行为被区分为许多部分, 每个部分都可以单独存在的啦!我们将整个部分绘制成下图来瞧瞧: ![]() 图 2.1.4、 列印行为之各组件示意图 我们大概可以将上图区分为几个部分来说明:
![]() 如果你的打印机具有网络卡,那么你当然可以使用网络连线到你的打印机上面罗!不过,这种打印机提供什么服务呢? 也就是说,你可以使用什么连线协议来连上打印机呢?常见的打印机连线分享方式有底下这些:
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 , 因此我可以这样确定该打印机是否存在喔: 这样就确定我的打印机实际存在,且这部打印机仅支持 HP 独家的网络服务 (port 9100) 以及旧版的 LPD 服务而已, 这个资讯很重要,因为等一下我们使用 CUPS 连线时,就得要使用这个 LPD 的服务喔!另外,请特别给他留意一下, 那个 nmap 是个可以扫瞄主机端口的软件 (port scan) ,这个软件其实是黑客软件,他默认并没有安装到 CentOS 上, 但是你可以使用『 yum install nmap 』来安装他。请注意,因为这个软件可以是恶意攻击的,因此千万不要用来查阅别人的主机,否则恐怕会有违法之虞喔!! 接下来,让我们来了解一下,系统有没有 CUPS 的支持吧!
再来查看看你的主机是否已经启动了 CUPS 呢?使用 netstat 这个命令看看:
确实有启动 631 端口以及 cupsd 的服务。接下来,我们可以直接连上 CUPS 了!请打开浏览器, 然后在网址列输入『 http://localhost:631 』即可!因为浏览器要连接的并非正规的 WWW 服务端口, 因此就得要加上冒号 (:) 来指定端口连接!顺利的话,应该可以出现如下画面: ![]() 图 2.3.1、 CUPS 进站画面 主画面主要可以分为上下两个按钮列来说明,其中又以下方的按钮列为常见的操作项目。我们会用到的按钮大概就是:
不罗唆,赶紧来新增打印机看看!按下『 Add Printer 』项目吧: ![]() 图 2.3.2、 CUPS 新增打印机的画面示意图 上面图示中,最重要的其实是那个『 Name 』的项目,那就是你打印机的伫列名称!未来所有列印的工作都是放在该名称底下排队的! 鸟哥的这个打印机名称比较复杂啦!你可以取个比较简单的名字,以后比较容易使用命令列软件来列印啦! 至於位置 (Location) 与描述 (Description) 都是这个打印机的说明,可写可不写!写完后按下『 continue 』吧! ![]() 图 2.3.3、选择打印机所提供的服务项目 接下来则是选择这个打印机伫列所连线的打印机提供什么服务的列印功能?你可以看到前一小节我们使用 nmap 的时候就发现 port 9100 就是 HP JetDirect ,因此我们可以选择上图的第一个项目。 由於这部打印机也提供 port 515 的 LPD 服务,因此你也可以选择上图的『 LPD/LPR Host or Printer 』项目。 不过,在这里鸟哥选择的是第一项啦!选择完毕后再按下『 Continue 』进入打印机的实体位置项目,如下图: ![]() 图 2.3.4、填写打印机的实际连线方式,要填正确! 上图有提供很多范例,我们由於使用到 port 9100 ,因此使用的就是 socket:// 那个范例使用的状态。 填写正确的位置后,接下来按下『 Continue 』来继续选择打印机的型号吧! ![]() 图 2.3.5、选择打印机的实际型号(驱动程序确认) 如上图所示,我们选择的是 HP 的厂牌!厂牌选择完毕后会出现如下图的型号选择: ![]() 图 2.3.6、选择打印机的实际型号(驱动程序确认) 但上图中我们并没有看到 P2015dn 这部打印机的型号!那怎办?没关系,可以连线到 http://www.linuxfoundation.org/en/OpenPrinting 网站下载适当的驱动程序后, 按下上图中的『浏览』按钮来选择该文件即可。不过,从该网站的介绍中,可以发现鸟哥的这部打印机似乎使用默认的 Postscript 驱动程序即可,该网站也没有提供这部打印机的驱动程序啊!那怎办?没关系,在 /usr/share/cups/model/ 目录下就有默认的驱动程序啦!所以请按下『浏览』来处理一下! ![]() 图 2.3.7、选择驱动程序文件 如上图所示,选择正确的驱动程序,然后再按下『开启』按钮,最后按下『 Add Printer 』按钮就可以进入管理员口令输入画面: ![]() 图 2.3.8、输入管理员帐号口令(默认用 root) 到此为止我们的打印机配置就 OK 了!如果你回到 CUPS 的进站画面,并且点选 Printers 之后,就会出现如下的打印机画面: ![]() 图 2.3.9、打印机的控制画面 上面画面中的按钮都看的懂吧?其中比较重要的是那个『 Set As Default 』项目, 那就是配置为『默认打印机』,当你产生列印工作后,该工作默认就会丢给这个 hp_lj_p2015dn 的伫列来处理的意思喔。 接下来,当然就是按下『 Print Test Page 』看看能否列印出正确的画面罗!如果可以顺利的列印,恭喜您! 打印机配置成功! ![]() 上一小节提到的是网络打印机,那如果你的打印机是一般普通的具有 U盘 介面的打印机呢? 由於打印机的装置档名为 /dev/usb/lp0 开始的名称,既然已经知道打印机名称了,那么我们先来注意看看 U盘 是否有捉到该打印机, 由於我们的 Linux 已经能够处理随插即用 (PnP) 的装置,因此直接运行 ls 去查阅档名是否存在即可:
老实说,除非你的 U盘 打印机是非常冷门的机种,否则,我们的 CUPS 应该已经自动的捉到并且配置好该打印机罗! 以鸟哥为例,鸟哥办公室的事务机为 HP Diskjet F380 ,如果使用列出 U盘 装置的 lsusb 时,可以看到:
接下来,同样的我们使用 CUPS 的 Web 介面来配置一下这部打印机吧!在网址列输入 http://localhost:631 之后再按下『Manage Printers』会出现如下画面: ![]() 图 2.4.1 、由 HAL 机制顺利取得的 U盘 打印机 由上图我们可以发现 CUPS 已经捉到了打印机了!连驱动程序都安装妥当!这是怎么回事啊? 这是因为 CentOS 提供了 HAL 的机制来处理 PnP 装置的缘故。关於 HAL 的机制我们会在下一小节再来讨论。 不过由於这个装置使用的是 HAL 提供的装置档名,我们如果想要使用 /dev/usb/lp0 来作为打印机的输出档名的话, 那么就自己来创建一个打印机的伫列吧!同样的在 CUPS 画面中按下『 Add Printer 』来新增一个打印机: ![]() 图 2.4.2 、 输入伫列名称 ![]() 图 2.4.3 、指向第一个 U盘 装置处 如上图所示,你要指定的是那个有 #1 的位置,那就是我们的第一个 U盘 插槽位置喔! ![]() 图 2.4.4 、选择打印机的驱动程序 ![]() 图 2.4.5 、最终结果 如上图所示,最后就会多出一个名为 deskjet_f380 的打印机名称,接下来当然就是『 Print Test Page 』测试看看能否列印罗。 如果能够列印得出来,那就是配置妥当了。所以说, U盘 打印机的配置要简单太多罗! ^_^ ![]() 想像一个状况,你仅有 U盘 打印机安装在 Linux 上头,整个办公室或实验室里面仅有这部打印机。 虽然你可以加装列印服务器来使 U盘 打印机变成网络打印机,但总是得多花钱啊! 有没有办法可以让你的本机打印机变成网络打印机呢?有的,那就是修改 CUPS 的配置即可。如何修改呢? 我们还是透过 CUSP 的浏览器介面来处理即可喔!选择『Administration』会出现如下画面(在画面的最右边): ![]() 图 2.5.1 、勾选可让 CUPS 成为列印服务器的功能 如上图所示,在箭头指定的地方进行勾选即可。勾选完毕后按下『 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 的操作如下:
从上面的输出可以很清楚的看到鸟哥的打印机与 Linux 上面的 CUPS 都有顺利的运行中!其中还是要强调,
你千万不要拿 nmap 去扫瞄别人家的系统!很可怕的!而由於上面输出的结果,我们也知道鸟哥这部打印机在网络上的连线方式为:
socket://192.168.201.253:9100 的样式喔!这个地方也请先记录下来。
命令配置/删除打印机的方式就是透过 lpadmin 这个命令啊!这个命令的语法是这样的:
其实这个 lpadmin 命令只是在升级 /etc/cups/ 目录里面的两个数据而已, 一个是 /etc/cups/printers.conf ,这个文件主要是规范了打印机的相关装置、是否接受列印工作、 打印机的伫列名称、页面的限制等等,反正就是整个打印机的规范就是了。 至於这个打印机相关的 PPD 文件则是以打印机的伫列名称连结到 /etc/cups/ppd/ 目录下。 不相信吗?让我们来瞧瞧 printers.conf 的文件内容吧!
配置完打印机后,来观察一下目前的打印机状态吧!底下的 lpstat 是个不错用的观察命令喔!
如果不清楚你的打印机状态,使用 lpstat 就能够看的清楚罗~接下来,让我们开始来使用列印命令产生列印工作吧!
如果你没有浏览器或者是说,你没有图形介面的软件时,可以透过 lpr 或者是 lp 这两个命令来列印某些文件或数据流重导向的东东。底下的测试会实际列印出数据来,因此,建议你可以先将打印机电源关闭, 让 CUPS 可以接受列印伫列的工作,却无法输出到打印机,这样也方便我们后续管理命令的查询! 所以,请将打印机的电源关闭先。来看看这两个命令如何操作吧!
要注意的是,因为鸟哥有指定默认打印机,因此上面的范例中,即使没有加上 [-P hp_p2015] 这个项目时,依旧能够顺利的列印。但如果你没有指定默认打印机,那么就一定要加上这个项目, 否则 lpr 会不知到要将数据输出到哪里去喔!看完了 lpr ,再来聊聊 lp 这个命令的用法吧:
我们已经有产生三个工作,但是第一个工作有顺利的列印 (打印机是开启的),因此还有两个工作尚未完成才对! 那我们如何知道还有哪些列印工作在伫列内呢?可以使用底下的命令来观察喔!
如果这些列印工作你想要取消呢?那就使用 lprm 吧!
整个命令模式处理打印机的任务大约到此为止,其他的,还是使用 Web 介面去管理比较方便啦!
假设你目前的 CentOS 主机上面接著一台 U盘 介面的打印机,这台 U盘 介面的打印机是 Samsung 的 ML-1210 打印机, 请问,您可以如何安装这部打印机?
另外,如果老是看到萤幕前面显示:『 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 内容介绍,先回到第十七章的程序管理瞧一瞧先!
那除了直接呼叫出 /proc 底下的文件内容之外,其实 Linux 有提供几个简单的命令来将核心所侦测到的硬件叫出来的~ 常见的命令有底下这些:
lspci, lsusb, iostat 是本章新谈到的命令,尤其如果你想要知道主板与各周边相关设备时,那个 lspci 真是不可多得的好工具!而如果你想要知道目前 U盘 插槽的使用情况以及侦测到的 U盘 装置, 那个 lsusb 则好用到爆!至於 iostat 则是一个即时分析软件,与 vmstat 有异曲同工之妙! 既然本节是想要使用 lm_sensors 分析各组件的温度与电压,那么这几个命令得要来使用看看才行啊! ^_^ 基本上,想要知道你 Linux 主机的硬件配备,最好的方法还是直接拆开机壳去察看上面的资讯 (这也是为何第零章会谈计概啊)!
如果环境因素导致您无法直接拆开主机的话,那么直接 lspci 是很棒的一的方法:
不必加上任何选项,就能够显示出目前的硬件配备为何。上面就是鸟哥的测试机所使用的主机配备。 包括使用 SIS 这家公司推出的 630 主板芯片组,使用 U盘 驱动为 1.1 版的控制器, 内建 SIS 的声卡,使用内建整合的 SIS 的 AGP 显卡,以及网络卡为螃蟹卡 (型号为 RTL-8139)。 您瞧瞧!很清楚,不是嘛。 由於目前的主机配备实在太高档了,因此很多朋友学习 Linux 时,习惯以类似 Virtualbox 或 VMWare 等虚拟机器进行模拟,此时你得要特别注意,你的硬件配备将是 Virtualbox 或 VMWare 模拟出来的,并不是原本的主机配备喔!实在是由於讨论区太多网友发问类似『我的螃蟹卡为何捉不到』等问题, 询问后,才发现他使用 VMWare 模拟硬件。此时你就得要使用 lspci 去列出 Linux 核心捉到的硬件, 而不是你原本的硬件啦!注意注意! 如果你还想要了解某个设备的详细资讯时,可以加上 -v 或 -vv 来显示更多的资讯喔! 举例来说,鸟哥想要知道那个以太网络卡更详细的资讯时,可以使用如下的选项来处理:
-s 后面接的那个怪东西每个设备的汇流排、插槽与相关函数功能啦!那个是我们硬件侦测所得到的数据罗! 你可以对照底下这个文件来了解该串数据的意义:
其实那个就是 PCI 的标准 ID 与厂牌名称的对应表啦!
此外,刚刚我们使用 lspci 时,其实所有的数据都是由 /proc/bus/pci/
目录下的数据所取出的呢!了解了吧! ^_^
刚刚谈到的是 PCI 介面装置,如果是想要知道系统接了多少个 U盘 装置呢?那就使用 lsusb 吧! 这个命令也是很简单的!
确实非常清楚吧!其中比较有趣的就属那个 ID 号码与厂商型号对照了!那也是写入在
/usr/share/hwdata/pci.ids 的东西,你也可以自行去查询一下喔!更多资讯我们留待下一小节再来讨论吧!
刚刚那个 lspci 找到的是目前主机上面的硬件配备,那么整部机器的储存设备, 主要是硬盘对吧!请问,您硬盘由启动到现在,已经存取多少数据呢?这个时候就得要 iostat 这个命令的帮忙了! 不过,默认 CentOS 并没有安装这个软件,因此你必须要先安装他才行!如果你已经有网络了, 那么使用『 yum install sysstat 』先来安装此软件吧!否则无法进行如下的测试喔!
透过 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盘 模块了呢?
我们之前谈过 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, 所以,创建的方法为:
在我们一般的生活当中,最常见的两种 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、机壳、电源、风扇等等的资讯了! 直接来作看看吧!
上面就进行好型号的侦测,并且主动的创建了 /etc/sysconfig/lm_sensors 的参数配置档。不过我们依旧需要进行一些额外的处理! 包括让系统启动主动加载模块的功能!这样我们就能够直接使用 lm_sensors 来侦测而不需要手动加载侦测模块啊! 你可以这样做:
侦测的命令就是 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 这个服务才启动。让我们检查看看是否真的有启动啊!
老实说,如果你已经启动了这两个家伙,那么其他的事不需要进行,交给这两个小玩意儿自己处理即可。
但如果你想要多了解 udev 是如何进行装置的创建时,那么我们可以来玩玩底下的咚咚。
假设你想要将你的闪盘取名为较有趣的装置,不想再使用类似 /dev/sda1 之类的名称时,可以怎么作呢? 我们可以透过更改 udev 的守则 (rule) 来使用 mknod 创建不同名称的装置文件。举例来说, 鸟哥这部测试机的硬盘使用为 /dev/hda ,因此第一个 U盘 快闪碟装置应该是 /dev/sda1 才对! 如果你的系统使用 SATA 磁碟,那么你的快闪碟可能就得要由 /dev/sdb1 开始编号起来了。 udev 创建装置文件的守则放置到 /etc/udev/rules.d/ 目录下,在该目录下的文件可以依序进行处理的。 以最简单的语法来看,在该目录下可以使用的变量与对应可以是:
当然还有很多语法,不过这里我们先不介绍,有兴趣的查一下本文最后的连结去看看吧! 假设鸟哥的 /dev/sda1 要取名字成为 /dev/vbirdusb ,你可以这样做:
虽然这样很具有个性化的需求,不过总是不太可靠~万一哪天忘记自己有进行这些动作,偏偏用核心默认的档名去处理时, 会发生很多不明的错误啊!所以将刚刚创建的数据反向删除回来吧!
![]()
![]() ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看)
简答题部分:
![]()
2005/10/25:准备准备~写一些跟硬件比较有关系的数据! 2005/11/08:准备完毕 U盘 与 lm_sensors 的部分了~啊!拖了真久~还有 RAID 的说明也差不多哩! 2005/11/09:加入了 FC4 的 setup 命令,尤其是打印机的部分,可以参考参考! 2005/11/10:终於将 iSCSI 的装置写好了~这部份真的是很有趣!不过,一般使用者可能碰不到就是了。 2005/11/13:终於将 CUPS 架构配置好自己的 Printer 部分了! 2005/11/14:连同 LVM 也大致的给他写完了!那个 resize2fs 命令确实有趣! 2005/11/25:加入一个简单的练习题~利用 dd 配合 resize2fs 来制作备份的数据! 2009/04/30:将 LVM 移动到 第十五章 ,且拿掉 iSCSI 的说明了。 2009/04/30:将旧的基於 FC4 撰写的版本移动到 此处 。 2009/06/03:加入 udev 与 hal 的简单说明! 2009/09/15:简单修订一些语句,修改章节的习题,并没有改到什么重要的资讯。 |
||||||||||||||||||||||||||||||||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室