第二十一章、系统设定工具(网络与印表机)与硬体探测
最近更新日期: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 介面管理 USB 本机印表机 2.5 将 Linux 本机印表机开放成为网络印表机 2.6 手动设定印表机: lpadmin, lpstat, lpr, lp, lpq, lprm 3. 硬体资料收集与驱动,及 lm_sensors 3.1 硬体资讯的收集与分析: lspci, lsusb, iostat... 3.2 驱动 USB 装置 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 将印表机的支援启动才行! 不过,这大概都属于旧式印表机才需要的动作啦!为啥呢?因为现在印表机大部分都是 USB 或者是网络印表机了, 根本不需要使用 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 介面设定自己的印表机呢!真是非常方便! 那如果你的印表机是透过线材 (USB/序列埠) 连上主机的呢?那就得要考虑底下的连接介面啰!
![]() 事实上,管理 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 ’看看能否列印出正确的画面啰!如果可以顺利的列印,恭喜您! 印表机设定成功! ![]() 上一小节提到的是网络印表机,那如果你的印表机是一般普通的具有 USB 介面的印表机呢? 由于印表机的装置档名为 /dev/usb/lp0 开始的名称,既然已经知道印表机名称了,那么我们先来注意看看 USB 是否有捉到该印表机, 由于我们的 Linux 已经能够处理随插即用 (PnP) 的装置,因此直接执行 ls 去查阅档名是否存在即可:
老实说,除非你的 USB 印表机是非常冷门的机种,否则,我们的 CUPS 应该已经自动的捉到并且设定好该印表机啰! 以鸟哥为例,鸟哥办公室的事务机为 HP Diskjet F380 ,如果使用列出 USB 装置的 lsusb 时,可以看到:
接下来,同样的我们使用 CUPS 的 Web 介面来设定一下这部印表机吧!在网址列输入 http://localhost:631 之后再按下‘Manage Printers’会出现如下画面: ![]() 图 2.4.1 、由 HAL 机制顺利取得的 USB 印表机 由上图我们可以发现 CUPS 已经捉到了印表机了!连驱动程序都安装妥当!这是怎么回事啊? 这是因为 CentOS 提供了 HAL 的机制来处理 PnP 装置的缘故。关于 HAL 的机制我们会在下一小节再来讨论。 不过由于这个装置使用的是 HAL 提供的装置档名,我们如果想要使用 /dev/usb/lp0 来作为印表机的输出档名的话, 那么就自己来建立一个印表机的伫列吧!同样的在 CUPS 画面中按下‘ Add Printer ’来新增一个印表机: ![]() 图 2.4.2 、 输入伫列名称 ![]() 图 2.4.3 、指向第一个 USB 装置处 如上图所示,你要指定的是那个有 #1 的位置,那就是我们的第一个 USB 插槽位置喔! ![]() 图 2.4.4 、选择印表机的驱动程序 ![]() 图 2.4.5 、最终结果 如上图所示,最后就会多出一个名为 deskjet_f380 的印表机名称,接下来当然就是‘ Print Test Page ’测试看看能否列印啰。 如果能够列印得出来,那就是设定妥当了。所以说, USB 印表机的设定要简单太多啰! ^_^ ![]() 想像一个状况,你仅有 USB 印表机安装在 Linux 上头,整个办公室或实验室里面仅有这部印表机。 虽然你可以加装列印服务器来使 USB 印表机变成网络印表机,但总是得多花钱啊! 有没有办法可以让你的本机印表机变成网络印表机呢?有的,那就是修改 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 主机上面接着一台 USB 介面的印表机,这台 USB 介面的印表机是 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 真是不可多得的好工具!而如果你想要知道目前 USB 插槽的使用情况以及探测到的 USB 装置, 那个 lsusb 则好用到爆!至于 iostat 则是一个即时分析软件,与 vmstat 有异曲同工之妙! 既然本节是想要使用 lm_sensors 分析各元件的温度与电压,那么这几个指令得要来使用看看才行啊! ^_^ 基本上,想要知道你 Linux 主机的硬体配备,最好的方法还是直接拆开机壳去察看上面的资讯 (这也是为何第零章会谈计概啊)!
如果环境因素导致您无法直接拆开主机的话,那么直接 lspci 是很棒的一的方法:
不必加上任何选项,就能够显示出目前的硬体配备为何。上面就是鸟哥的测试机所使用的主机配备。 包括使用 SIS 这家公司推出的 630 主机板晶片组,使用 USB 驱动为 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 介面装置,如果是想要知道系统接了多少个 USB 装置呢?那就使用 lsusb 吧! 这个指令也是很简单的!
确实非常清楚吧!其中比较有趣的就属那个 ID 号码与厂商型号对照了!那也是写入在
/usr/share/hwdata/pci.ids 的东西,你也可以自行去查询一下喔!更多资讯我们留待下一小节再来讨论吧!
刚刚那个 lspci 找到的是目前主机上面的硬体配备,那么整部机器的储存设备, 主要是硬碟对吧!请问,您硬碟由开机到现在,已经存取多少资料呢?这个时候就得要 iostat 这个指令的帮忙了! 不过,预设 CentOS 并没有安装这个软件,因此你必须要先安装他才行!如果你已经有网络了, 那么使用‘ yum install sysstat ’先来安装此软件吧!否则无法进行如下的测试喔!
透过 lspci 及 iostat 可以约略的了解到目前系统的状态啊! 还有目前的主机硬体资料呢!知道这些资讯后,我们就可以来玩一些比较不一样的东西啰! ^_^ ![]() 在现在的电脑里面,你或许真的无法想像没有 USB 介面装置的主机~ 因为不论我们的键盘、滑鼠、印表机、扫描器、随身碟等等,几乎都是使用到 USB 来作为传输的介面的。 所谓这 USB (Universal Serial Bus) 最早是在 1994 年被发展出来,到 1996 年前后发展出 version 1.0 ,当时的速度大约在 12Mbit/second,到了 2000 年发展出 version 2.0 ,这一版的速度则提高到 480Mbit/second, 这也是目前使用最广泛的一个速度。2008 年则释出 USB 3.0,这一版的速度比 2.0 要快十倍喔! 不过目前市面上的产品还是非常的少见。(注2) USB 有很多的优点啦,包括他是可以延伸的,每个 USB port 都可以最多接到 127 个装置!
速度又快,又具有 Plug and Play (随插即用) 的优点,所以近期以来被用来作为携带式装置的主要资料传输介面呢!
目前 USB 1.1版本的控制器主要有两种规格,分别是:
由于我们的 Linux 会将这两种 USB 的驱动程序载入,因此不论你的 USB 是使用哪种晶片,我们的 Linux 都可以顺利的探测到并且正确的驱动的啦!至于 USB 2.0 在 Linux 上都以 Enahnced Host Controller Interface (EHCI) 来驱动的。我们使用 lsmod 来找一下 hci 这个关键字看看,鸟哥的测试主机驱动了多少 USB 模组了呢?
我们之前谈过 USB 的磁碟代号是: /dev/sd[a-p] 之类的,类似 SCSI 硬碟的代号, 这是因为 USB 的磁碟装置使用 SCSI 相关的装置代号,因此,如果您要使用 USB 随身碟的话,嘿嘿!那么您的 Linux 主机就得要支援 SCSI 装置才行~ 此外,为了让 USB 磁碟装置顺利的被使用,因此,有时候还得要启动 usb-storage 模组才行~ 所以啰,光是有 USB 的 uhci 模组还不行,还得要配合 usb-storage 啦~ 而一般 USB 的装置都会被主动的探测,核心也会主动的载入 USB 装置的驱动模组, 所以你应该不需要手动载入 usb-storage 才是。不过,如果老是无法驱动时,那么不妨手动载入 usb-storage 试看看。 顺利载入各个需要的模组之后,直接下达 fdisk -l 应该就可以看到您的 USB 随身碟的装置代号才是!一般来说,如果是第一个 USB 磁碟装置的话, 应该可以看到一个名为 /dev/sda1 的装置,使用 mount 将他挂载起来即可啊! 在这里要强调的是,如果你是使用类似笔记型电脑的 2.5 吋硬碟作为随身硬碟的话,由于他就是硬碟的规格,
因此你可以看到一个完整的 /dev/sda 之类的磁碟资讯,你也可以进行额外的分割。但如果是快闪碟的话,
快闪碟并不是传统的硬碟,他并不是使用磁碟读取头与磁碟盘来记录资料,因此你只能使用 /dev/sda1 之类的档名来挂载,
理论上是无法进行额外分割的喔!这部份要特别强调一下。
要驱动 USB 印表机也很简单啊!只要做好 USB 印表机的装置代号即可!反正我们的 usb 模组已经载入了嘛! 目前的 CentOS 5.x 会主动的帮我们建立印表机的装置档名,所以底下的动作我们根本不需要进行。 不过如果你的 Linux 是较老式的系统,那可能得要使用 mknod 来建立起 USB 印表机才行。 透过核心装置代码(注3)的查询,我们知道 USB 印表机的主要/次要装置代码为 180 /0~15, 所以,建立的方法为:
在我们一般的生活当中,最常见的两种 USB 装置就是随身碟与印表机了, 所以鸟哥在这里仅就这两种装置来介绍启动的方法,如果您还有其他的 USB 装置要驱动的话, 请参考底下这一篇的内容啊! ![]() 玩电脑硬体的朋友们一定都听过所谓的‘超频’这玩意儿,所谓的‘超频’就是让系统原有的运作时脉增加, 让 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 大多能够类似视窗作业系统,就是能够即时的探测随插即用硬体! 例如 USB 介面的各项硬体设备等等。那我们也知道其实所有的硬体都是文件,这些装置文件必须要使用 mknod 才能建立的! 那到底 (1)硬体如何探测与 (2)装置文件如何主动建立呢?这就与 udev 及 HAL 这两个东西有关了。 事实上,系统所有的硬体应该都是给核心管理的,但我们知道作业系统在记忆体内是受保护的,使用者根本无权使用作业系统核心。 为了解决这个问题于是有 udev 的产生。这个 udev 是个使用者层级软件,他可以让使用者自行处理 /dev 底下的装置! 如此一来就能够解决一般用户在使用类似 USB 时,需要额外硬体的问题。(注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 ,因此第一个 USB 快闪碟装置应该是 /dev/sda1 才对! 如果你的系统使用 SATA 磁碟,那么你的快闪碟可能就得要由 /dev/sdb1 开始编号起来了。 udev 建立装置文件的规则放置到 /etc/udev/rules.d/ 目录下,在该目录下的文件可以依序进行处理的。 以最简单的语法来看,在该目录下可以使用的变数与对应可以是:
当然还有很多语法,不过这里我们先不介绍,有兴趣的查一下本文最后的连结去看看吧! 假设鸟哥的 /dev/sda1 要取名字成为 /dev/vbirdusb ,你可以这样做:
虽然这样很具有个性化的需求,不过总是不太可靠~万一哪天忘记自己有进行这些动作,偏偏用核心预设的档名去处理时, 会发生很多不明的错误啊!所以将刚刚建立的资料反向删除回来吧!
![]()
![]() ( 要看答案请将滑鼠移动到‘答:’底下的空白处,按下左键圈选空白处即可察看)
简答题部分:
![]()
2005/10/25:准备准备~写一些跟硬体比较有关系的资料! 2005/11/08:准备完毕 USB 与 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:简单修订一些语句,修改章节的习题,并没有改到什么重要的资讯。 |
||||||||||||||||||||||||||||||||||||||||