第21章、系统设定工具(网络与打印机)与硬件侦测

21.1. CentOS 系统设定工具: setup
系统设定除了使用手动的方式编辑配置文件之外 (例如 /etc/inittab, /etc/fstab 等),其实在 Red Hat 系统的 RHEL, CentOS 及 Fedora 还有提供一支综合程序来管理的,那就是 setup 这个指令的功能!老实说, setup 其实只有在 Red Hat 的系列才有, 在其他的 Linux distributions 并不存在,因此,我并没有要求一定要学会这家伙。 只不过,setup 还是挺好用的,所以我们还是来玩玩吧!
这个 setup 的处理方法非常的简单,就是利用 root 的身份下达这个指令,如果你已经使用进程操作系统的话, 记得最好切换一下语系成为英文语系 (比较不会出现边框是乱码的情况) ,结果就会出现如下的画面了。
这里写图片描述
如上图所示,那就是 setup 提供的各项系统设定功能。这个画面的使用方式其实在图中的最底下一行有说明了, 可以利用 [tab] 按键在三个画面中切换,使用 Run Tool 可以开始设定该项目,使用 Quit 可以离开 setup 指令。 那么上面的主选单部分有哪些功能呢?这些设定的基本功能是这样的:

  • Authentication configuration:
    这是与使用者身份认证有关的设定,包括本机的账号与利用远程服务器提供的账号来登入本机等功能的设定;
  • Firewall configuration:
    简单的设定 (1)防火墙与 (2)SELinux 的启动模式 (Disable, Enforcing, Permissive)。 SELinux 请参考第十七章的说明, 防火墙则请参考服务器篇的解释了。这个地方的设定比较简单, 有时候可能会让你自己搞不清楚设定值的意义。所以,还是手动处理比较妥当;
  • Keyboard configuration:
    就是键盘按键的对应表。注意,这个设定仅与 tty 接口有关,至于 X Window 则不是以这个为设定值;
  • Network configuration:
    设定网络参数的地方,包括 IP, network, netmask, dns 等等,不过, 还需要看完服务器篇关于网络基础的介绍后, 才能够比较了解设定值的意义!
  • System services:
    其实就是第十八章提到的 ntsysv 的内容~亦即设定一些系统服务是否在开机时启动的地方;
  • Timezone configuration:
    安装的时候不是可以透过全世界地图挑选时区吗? 这个就是在安装完毕后重新选择时区的地方;
  • X configuration:
    设定 X Window 相关的设定,例如分辨率等等的。我们会在第二十四章再提到 X Window 方面的基础知识。

底下我们就来约略的介绍一下这些玩意儿吧 !除了网络 IP 的设定外,其余的部分会很快的带过去而已。 毕竟 setup 仅是一个统整的工具,每个设定项目其实都牵涉到各自的基础功能,那些基础功能还得要持续摸索的…

21.1.1. 使用者身份验证设定
在按下了『 Authentication configuration 』项目后,会出现如下画面:
这里写图片描述
我们的 Linux 除了使用自己提供的用户密码验证机制之外,还能够使用其他外部身份验证服务器所提供的各项验证功能喔。 在上面图示的左侧 User Information 的地方指的是:我们系统上的用户可以使用什么方式对外取得帐户信息, 也就是说,这部主机除了 /etc/passwd 的账号之外,还能够使用其他的账号来登入系统的。我们支持的账号管理服务器主要有 LDAP, NIS, Winbind 等。
至于右侧的 Authentication 则是登入时需要提供的身份验证码 (密码) 所使用的机制为何。 在预设的情况下,我们身份验证仅参考本机的 /etc/passwd, /etc/shadow 而已,而且使用 MD5 的密码验算机制, 因此上图右侧的部分仅会有最上方两个而已。事实上,这个部分的设定主要是修改了 /etc/sysconfig/authconfig ,同时还加入了各个服务器的客户端程序设定功能。
你一定会问,那么什么时候可以用到这个机制呢?思考一下,如果你的网络环境是计算机教室, 你希望每个同学都能够有自己的账号来登入每部主机。此时,你会希望每部主机都帮同学建立同一个账号吗? 那如果每一个同学都想要修改密码,那就糟了!因为每部主机都得要重新修改密码才行!这个时候账号管理服务器就很重要了。 他的功能有点像底下这样:
这里写图片描述
如上图所示,我 vbird 想要登入某一部主机时,这部主机会向外要求帐户信息,就是最上方那部服务器。 此时,你只要在最上方的服务器上将该账号设定好,并且在每部主机都利用 NIS 或 LDAP 功能来指定身份查询的方向, 那么 vbird 就能够使用同一组账号密码来登入每部主机了,这样管理是否很方便呢?因为只要管理一部服务器即可! 我们在服务器篇谈到 NIS 时再来实作这个环境!

21.1.2. 网络设定项目(手动设定IP与自动取得)
网络其实是又可爱又麻烦的玩意儿,如果你是网络管理员,那么你必须要了解局域网络内的 IP, gateway, netmask 等参数,如果还想要连上 Internet ,那么就得要理解 DNS 代表的意义为何。如果你的单位想要拥有自己的域名, 那么架设 DNS 服务器则是不可或缺的。总之,要设定网络服务器之前,你得要先理解网络基础就是了!
但这里的网络介绍仅止于当你是一部单机的 Linux 客户端,而非服务器!所以你的各项网络参数只要找到网络管理员, 或者是找到你的 ISP (Internet Service Provider) ,向他询问网络参数的取得方式以及实际的网络参数即可。 通常网络参数的取得方式在台湾常见的有底下这几种:

  1. 手动设定固定 IP :
    常见于学术网络的服务器设定、公司行号内的特定座位等。这种方式你必须要取得底下的几个参数才能够让你的 Linux 上网的:
    o IP ;
    o 子网掩码(netmask) ;
    o 通讯闸(gateway) ;
    o DNS 主机的 IP (通常会有两个,若记不住的话,硬背 168.95.1.1 即可)

  2. 网络参数可自动取得:
    常见于 IP 分享器后端的主机,或者是利用电规线路的在线网 (cable modem),或者是学校宿舍的网络环境等。 这种网络参数取得方式就被称为 dhcp ,你啥事都不需要知道,只要知道设定上网方式为 dhcp 即可。

  3. 透过 ADSL 宽带拨接:
    不论你的 IP 是固定的还是每次拨接都不相同 (被称为浮动式 IP),只要是透过宽带调制解调器『拨接上网』的,就是使用这种方式。 拨接上网虽然还是使用网络卡连接到调制解调器上,不过,系统最终会产生一个替代调制解调器的网络接口 (ppp0) , 那个 ppp0 也是一个实体网络接口!

了解了网络参数的取得方法后,你还得要知道一下我们透过啥硬件连上 Internet 的呢?网络卡。 目前的主流网卡为使用以太网络协议所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字)。 举例来说,我的这部测试机上面有一张以太网卡,因此我这部主机的网络接口就是 eth0 (第一张为 0 号开始)。
那就让我们透过 setup 来设定网络吧!按下『 Network Configuration 』会出现如下画面:
这里写图片描述
上图中那个 eth1.bak 是系统捉错的档案,因为这个程序会跑到 /etc/sysconfig/network-scripts/ 目录下找出文件名为 ifcfg-ethN 的档案内容来显示的。因为我仅有一张网卡,因此那个 eth1 不要理会他!直接点选 eth0 之后就会产生如下的画面:
这里写图片描述
上图中那个 Name 与 Device 名称最好要相同,尽量不要修改他!这里的设定是这样的:

  1. 如果你是使用手动设定的话,『 Use DHCP 』一定不能勾选,然后将底下的 Static IP, Netmask, Default gateway IP 设定值填上去即可。这三个设定值请符合你的网络管理员。
  2. 如果你是使用 DHCP 的自动取得 IP 方式,勾选『 Use DHCP 』后,将后面的三个设定清空,这样就设定好网络参数了;

如果你是使用 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 了,那么防火墙的设定则不可不知啊!底下就来谈谈。

21.1.3. 防火墙设定
防火墙的认识是非常困难的,因为你必须要有很强的网络基础概念才行。CentOS 提供的这个简单的设定其实有时候反而会让我们困扰不已。基本上,这里仅是介绍『你可以这样做』,但并不代表『你必须这样做』! 所以,有兴趣的还是得要再继续钻研网络技术!在按下 Firewall configuration 后,会出现如下画面:
这里写图片描述
上图中主要出现两个部分,一个是关于 SELinux 的部分,一个则是防火墙的部分。SELinux 我们在第十七章介绍过了,这里不再浪费篇幅。 请依据你的需求设定 Enforcing, Permissive 或 Disabled 吧!(当然最好还是务必要启动 SELinux !)
防火墙的部分,由于我们安装时建议不要启动防火墙, 因此上图你会看到『 Disabled 』的部分被选择了。但是由于现在你的系统已经上网了 (假设已经上网了), 那么你务必要启动防火墙来管理网络才好。由于默认你的防火墙会开放远程主机对你的登入联机, 因此最好使用 Customize (客户设定) 来改变设定比较好!按下『 Customize 』会出现如下图示:
这里写图片描述
这个地方不是三言两语讲的完的!包括信任网域,以及或许进入的服务器封包~很是麻烦。基本上,你只要这样想就好了:

  • Trusted Devices:这是信任网域, 如果你有两张网络卡,一张是 eth0 对内,一张是对外,假设是 eth1 ,那么如果你想要让 eth0 的进出封包都是为信任,那么这里就可以将 eth0 勾选。不过,要非常非常注意, 接到外部网域 (Internet) 的那张网络卡,千万不能勾选,否则大家就都能够透过那张网卡连到你的主机上! 在预设的情况中,这里都不要选择任何接口!
  • MASQUERADE Devices:这个是『封包伪装』的功能, 亦即是进行 IP 分享器的功能!如果你的 Linux 主机是作为类似 IP 分享器的功能, 那么对外那张网络卡就得要启动 MASQUERADE 才行!因为我们尚未谈到网络服务器,因此这里可千万不要随意选择。
  • Allow incoming:这里提到的就是各个服务的内部项目, 举例来说,你的 Linux 有提供 WWW 服务,又希望大家都能够来查阅, 那么这个时候就可以在 WWW 那个项目前面勾选!你要注意到的是,预设 Linux 都会开放 ssh 这个服务 (如上图), 记得先将他取消勾选!因为这个 ssh 现在很容易被攻击!所以不要开放人家使用这个服务联机到你的主机上。

基本上,这个动作仅是在建立 /etc/sysconfig/iptables 这个档案而已。 而这个档案预设是不存在的 (因为我们没有启动防火墙!) 。这里你先有个概念即可,因为,我们未来会介绍以 shell script 的方式建立属于您自己的防火墙系统,细节我们会在服务器篇慢慢作介绍的!
如果你已经有网络了,记得在这个项目的设定中,于图 1.3.1 选择防火墙为『 Enable 』的状态,按下『 Customize 』进入图 1.3.2 当中取消 ssh 的勾选,最后再回到 1.3.1 当中按下『 OK 』来启动 Linux 客户端的防火墙设定吧! 这样你的系统就具有最起码的防火墙功能!

21.1.4. 键盘形式设定
某些情况底下你的键盘可能会发生一些对应错误的情况,举例来说,使用的键盘并非台湾常见的 104 按键导致很多英文对应不起来。 此时你可以使用 setup 来修改!按下『 Keyboard configuration 』会出现如下的画面:
这里写图片描述
其实这个档案就仅会修改 /etc/sysconfig/keyboard !很简单的设定项目。

21.1.5. 系统服务的启动与否设定
我们在第十八章谈过系统服务的启动与关闭, 当时介绍过 ntsysv 吧?这个 System services 的项目就是会呼叫出 ntsysv 这支程序来处理服务的设定!详细的设定请回第十八章参考吧!

21.1.6. 系统时钟的时区设定
我们知道地球是圆的,所以想要看王建民在纽约投球都得要三更半夜才有办法看得到!这也就是说, 其实在同一个时间点全世界的时钟指的时间都不相同!我们的 Linux 是支持多国语系的国际化操作系统, 所以你可以将这部主机拿到任何地方且不需要修改系统时钟,因为系统会主动的依据你提供的时区来变化时间的。 当你将笔记本电脑带到美国纽约并且想要变更成为美国时间时,可以按下『 Timezone configuration 』的项目:
这里写图片描述
如上图所示,你在上半部画面中,可以使用键盘箭头键来选择正确的位置,然后再用 [tab] 移动到 [OK] 即可! 时区的设定,其实就是找出与 /etc/sysconfig/clock 有关的设定项目而已。实际上,上面图示出现的咚咚,就与 /usr/share/zoneinfo/ 目录内的数据有关而已。

21.1.7. X 窗口接口分辨率设定
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 的组件!底下我们就来玩玩如何简单的设定你的打印机吧!

21.2. 利用 CUPS 设定 Linux 打印机
在本章里面我们仅谈论一下如何让你的 Linux 可以连接到打印机, 让你的 Linux 可以顺利的将文件资料打印出来!现在就来谈谈先!

21.2.1. Linux 的打印组件 (打印作业、队列、服务与打印机)
一、硬件支持度
要谈论 Linux 的打印,首先就得要知道 Linux 底下整个打印的行为是怎样的一个流程呢?而且, 也得要了解一下你的硬件是否支持打印作业!在硬件部分,你必须要在 BIOS 将打印机的支持启动才行! 不过,这大概都属于旧式打印机才需要的动作!为啥呢?因为现在打印机大部分都是 USB 或者是网络打印机了, 根本不需要使用 25 针串行端口的支持!
除了主机本身的支持之外,你的打印机也必须要能够支持 Linux 才行 !其实并不是 Linux 的问题!而是打印机制造商必须要能够提供给 Linux 用的驱动程序,这样你的 Linux 才能够使用该型号的打印机。 老实说,我是 HP 打印机的爱好者,因为 HP 打印机对 Linux 的支持非常好!但是另一牌的 L 开头的打印机总是很慢或者不推出给 Linux 用的驱动程序,所以该牌的打印机很难安装在 Linux 主机上!
那到底你该如何确认你的打印机有支持 Linux 呢?或者是,如果你想要购买新的打印机时, 如何查询该打印机能否在 Linux 上面安装呢?很简单,直接到底下的网站去查询一下即可!
http://www.linuxfoundation.org/en/OpenPrinting

举例来说,我现在的研究室有一部 HP 的 LaserJet P2015dn 打印机,我想要知道这部打印机对 Linux 的支持度好不好, 那就先进入上述网站连结,出现如下的画面:
这里写图片描述
在如上画面中请按下『 Printers 』来观察打印机的特色!会出现如下画面:
这里写图片描述
在上图中填入正确的厂牌 (HP) 以及正确的打印机型号 (LaserJet P2015dn) 后,请按下『 Show 』那个按钮, 该网站就会从数据库内捉出支持度的情况给你看,如下图所示:
这里写图片描述
在显示的画面中,你最要注意的是那个企鹅数量啦!如果达到 3 只,那就代表支持度是非常完美的。 两支企鹅是可接受的范围内。如果是小于一只企鹅时,那么该打印机对 Linux 的支持可能就是比较差的! 还好,我这部含有网络功能的打印机还有两只企鹅的支持,等一下应该能够顺利安装到俺的 Linux 测试机上吧!

二、打印组件
你有没有发现,在打印机还没有启动电源的情况底下,其实我们还是可以透过软件来将某个任务栏印出来的, 只是该项工作就会被放入到等待的环境中 (队列) 。为什么会这样呢?这是因为整个打印的行为被区分为许多部分, 每个部分都可以单独存在的!我们将整个部分绘制成下图来瞧瞧:
这里写图片描述
我们大概可以将上图区分为几个部分来说明:

  • 打印作业:
    例如 Open Office 这类较大型的办公室软件中,可以利用内建的程序产生打印的动作。 我们也可以使用类似 lpr 这类指令列程序来直接打印某个档案。打印软件产生的打印动作,就是产生一个打印的工作 (job), 这个打印作业就会进入排队等待 (队列, queue) 的环境中,等待打印服务来进行输出。
  • 打印队列:
    这是放置打印作业的重要项目!这个打印队列与打印服务有关。一般来说,打印队列会以打印机的名字来命名, 让大家知道你的打印作业将要使用哪部打印机输出之故。当打印作业放置到队列后,就开始等待打印服务的取用与输出了。
  • 打印服务:
    就是实际负责沟通队列内的打印作业与打印机的服务!打印服务其实就是将队列内的打印作业,将她的数据转成打印机认识的格式后, 直接交给打印机来输出而已。但是打印服务必须要认识与沟通打印机,因此他就得要连上打印机与驱动打印机才行。 目前常见的打印服务有 CUPS 与 LPRng ,不过以 CUPS 为主流!
    一般我们说的打印机驱动程序,其实就是将打印作业的数据转成打印机格式! 而目前常见的打印机格式为使用 Postscript 的打印格式,Linux 预设的 CUPS 本身就支持这种打印格式,因此, 只要你购买的打印机有支持 postscript ,那么安装起来应该是很轻松的。我们在上面提到的打印机支持网站中, 里面的驱动程序很多就是 postscript 打印机描述档案 (Postscript Printer Description (注1))
    那万一没有 PPD 档案呢?没关系,我们可以透过打印机制作商提供的其他定义档 (例如 Ghostscript) 来解释打印作业的数据, 让打印机认识该格式后,就能够顺利打印了!这也就是说,其实打印机驱动程序就是将数据转成打印机认识的格式后, 就能够加以输出了。而常见的格式为 Postscript 及 Ghostscript ! 那么这些打印的 PPD 驱动程序档放在哪里呢?其实就放在 /usr/share/cups/model/ 底下! CentOS 已经提供一些预设的驱动程序了,如果想要取得更新的 PPD 驱动程序档,请参考上面的打印机网站, 从那上头来下载即可!若想要直接下载全部的 PPD 档案,可以参考连结: http://www.linuxprinting.org/download/PPD/

21.2.2. CUPS 支持的联机模式
如果你的打印机具有网络卡,那么你当然可以使用网络联机到你的打印机上面啰!不过,这种打印机提供什么服务呢? 也就是说,你可以使用什么连接协议来连上打印机呢?常见的打印机联机分享方式有底下这些:

  • socket
    数据透过 internet socket(端口口)来传送,一般为 port 9100 或 35。如果想要进行数据的传输与打印,可以透过在浏览器上面输入: socket://host-printer:9100/ 来进行。不过,这种模式不常用就是了。
  • LPD (Line Pritner Daemon)
    LPD 是较早之前的打印服务,刚刚上头提到的 LPRng 就是使用这种方式的联机! LPD 主要是利用串行端口来达成打印的需求,打印机名称就是 LPT1/LPT2… 等等。 目前还是可以在比较早期的 Linux distributions 看到这种打印方式。
  • IPP (Internet Printing Protocol)
    这是目前比较流行的打印机打印协议,我们的 CUPS 预设也是支持这种协议!当启动 IPP 时,打印机会启动 port 631 ,打印的数据就是透过这个 port 来进行传送的。另外,如果你的打印机或者 Linux 主机启动了 ipp 之后,你可以直接使用浏览器,输入: ipp://printer_IP/printername,或者是: http:/printer_IP:631 就能够直接在线处理打印机的设定了!方便的很!
  • SMB (Server Message Block)
    这家伙就是网络上的芳邻!协议使用的是: smb://user:password@host/printer 。

CentOS 5.x 预设提供的就是 CUPS 的 IPP 协议!而且 CUPS 预设开机就启动了, 因此,你可以随时随地的以 Web 接口设定自己的打印机!真是非常方便! 那如果你的打印机是透过线材 (USB/串行端口) 连上主机的呢?那就得要考虑底下的连接接口!

  • parallel :平行串行端口,就是 25 针那种玩意儿!他是连接到 /dev/lp[0-2] 等装置。 在 CUPS 里面的装置使用格式为: parallel:/dev/lp0;
  • USB :一般越来越常见的 USB 打印机! CUPS 使用的格式为: usb:/dev/usb/lp0 。

21.2.3. 以 Web 接口控管网络打印机
事实上,管理 Linux 的打印机是非常简单的一件事情,因为你只要启动 CUPS 之后,再以浏览器接口来管理即可。 不过,在预设的情况底下,要进行浏览器接口的管理动作时,你必须要:

  • 必须要启动 CUPS 这个服务 (/etc/init.d/cups start);
  • 具有 root 的权限 (需要 root 的密码来设定);
  • 预设仅能在本机 (localhost) 管理,无法使用远程联机连到此 Linux 管理;

如果你想要在局域网络内将打印机的控制权挪出来给其他用户管理时,就得要修改 CUPS 的设定了。 在这里,我们先以本机的方式来处理打印机的联机!首先,我以具有网络卡的打印机 HP LaserJet P2015dn 这部为例 (因为也只有这部打印机具有网卡!),这部打印机的 IP 为 192.168.201.253,而我 Linux 测试机 IP 为 192.168.201.250。然后,你可以这样做:

一、确认打印机存在且支持 CUPS 认识的相关协议
如果想要加入 CUPS 的网络打印机,那么你的打印机当然就得要支持 CUPS 认识的通讯协议!如何确定呢? 首先,你必须要依照你打印机所提供的手册去设定好 IP ,以我上面的环境来说,我的打印机 IP 为 192.168.201.253 , 因此我可以这样确定该打印机是否存在:
这里写图片描述
这样就确定我的打印机实际存在,且这部打印机仅支持 HP 独家的网络服务 (port 9100) 以及旧版的 LPD 服务而已, 这个信息很重要,因为等一下我们使用 CUPS 联机时,就得要使用这个 LPD 的服务!另外,请特别给他留意一下, 那个 nmap 是个可以扫瞄主机端口口的软件 (port scan) ,这个软件其实是黑客软件,他默认并没有安装到 CentOS 上, 但是你可以使用『 yum install nmap 』来安装他。请注意,因为这个软件可以是恶意攻击的,因此千万不要用来查阅别人的主机,否则恐怕会有违法之虞!!
接下来,让我们来了解一下,系统有没有 CUPS 的支持吧!

二、查询你 Linux 主机是否启动 CUPS 服务
再来查看看你的主机是否已经启动了 CUPS 呢?使用 netstat 这个指令看看:
这里写图片描述
确实有启动 631 埠口以及 cupsd 的服务。接下来,我们可以直接连上 CUPS 了!请打开浏览器, 然后在网址列输入『 http://localhost:631 』即可!因为浏览器要连接的并非正规的 WWW 服务埠口, 因此就得要加上冒号 (:) 来指定埠口连接!顺利的话,应该可以出现如下画面:
这里写图片描述
主画面主要可以分为上下两个按钮列来说明,其中又以下方的按钮列为常见的操作项目。我们会用到的按钮大概就是:

  • Add Printer:新增打印机,就是从这个按钮开始的!
  • Manage Jobs:打印作业管理,如果有打印作业要取消的,这个就对了!
  • Manage Printers:管理打印机,包括是否启动或者是删除打印机等。

赶紧来新增打印机看看!按下『 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 』看看能否打印出正确的画面!如果可以顺利的打印,恭喜您! 打印机设定成功!

21.2.4. 以 Web 接口控管 USB 本机打印机
上一小节提到的是网络打印机,那如果你的打印机是一般普通的具有 USB 接口的打印机呢? 由于打印机的装置文件名为 /dev/usb/lp0 开始的名称,既然已经知道打印机名称了,那么我们先来注意看看 USB 是否有捉到该打印机, 由于我们的 Linux 已经能够处理即插即用 (PnP) 的装置,因此直接执行 ls 去查阅档名是否存在即可:
这里写图片描述
老实说,除非你的 USB 打印机是非常冷门的机种,否则,我们的 CUPS 应该已经自动的捉到并且设定好该打印机!我办公室的事务机为 HP Diskjet F380 ,如果使用列出 USB 装置的 lsusb 时,可以看到:
这里写图片描述
接下来,同样的我们使用 CUPS 的 Web 接口来设定一下这部打印机吧!在网址列输入 http://localhost:631 之后再按下『Manage Printers』会出现如下画面:
这里写图片描述
由上图我们可以发现 CUPS 已经捉到了打印机了!连驱动程序都安装妥当!这是怎么回事啊? 这是因为 CentOS 提供了 HAL 的机制来处理 PnP 装置的缘故。关于 HAL 的机制我们会在下一小节再来讨论。 不过由于这个装置使用的是 HAL 提供的装置文件名,我们如果想要使用 /dev/usb/lp0 来作为打印机的输出文件名的话, 那么就自己来建立一个打印机的队列吧!同样的在 CUPS 画面中按下『 Add Printer 』来新增一个打印机:
这里写图片描述
这里写图片描述
如上图所示,你要指定的是那个有 #1 的位置,那就是我们的第一个 USB 插槽位置!
这里写图片描述
如上图所示,最后就会多出一个名为 deskjet_f380 的打印机名称,接下来当然就是『 Print Test Page 』测试看看能否打印。 如果能够打印得出来,那就是设定妥当了。

21.2.5. 将 Linux 本机打印机开放成为网络打印机
想象一个状况,你仅有 USB 打印机安装在 Linux 上头,整个办公室或实验室里面仅有这部打印机。 虽然你可以加装打印服务器来使 USB 打印机变成网络打印机,但总是得多花钱! 有没有办法可以让你的本机打印机变成网络打印机呢?有的,那就是修改 CUPS 的设定即可。如何修改呢? 我们还是透过 CUSP 的浏览器接口来处理即可!选择『Administration』会出现如下画面(在画面的最右边):
这里写图片描述
如上图所示,在箭头指定的地方进行勾选即可。勾选完毕后按下『 Change Settings 』就能够让你的 CUPS 变成打印服务器! 而你原本的打印机就会成为:『ipp://你的IP:631/printers/打印机队列名称』,举例来说,我这部 Laserjet p2015dn 在网络上看到的就会是:『ipp://192.168.201.250/printers/hp_lj_p2015dn』的名称! 你可以在其他客户端计算机上面以这个 URI 来进行联机!

21.2.6. 手动设定打印机: lpadmin, lpstat, lpr, lp, lpq, lprm
事实上我们刚刚在上面所进行的各项动作大多是在修改 /etc/cups/ 里面的几个档案而已!几个重要的档案为:

  • /etc/cups/printers.conf:打印机的设定值,都写在这个档案中;
  • /etc/cups/cupsd.conf:CUPS 的主要配置文件,包括做为服务器之用途的设定。
  • /etc/cups/ppd/*.ppd:就是各个打印机的驱动程序 (PPD 配置文件);

既然只是改了这几个配置文件,你当然也可以使用 vim 去编辑,不过,因为涉及硬件联机的问题, 因此还是建议使用 web 接口来进行修改。不过,某些时候如果你没有浏览器接口时,那么使用终端机接口的指令来修改也是可以的。 我们底下只以我办公室拥有的这一部 HP P2015dn 的激光打印机来作为范例!

  1. 下载合适的 PPD 驱动程序定义档
    首先你必须要前往打印机网站下载你的打印机驱动程序定义文件。我以前已经查询过,这部打印机使用默认的 PPD 档案即可。 所以这部打印机的驱动程序定义文件基本上在: /usr/share/cups/model/postscript.ppd.gz 。 如果你有自己下载自己打印机的驱动程序时,请将你下载的档案放置到 /usr/share/cups/model/ 目录下, 因为后续要操作的指令会到此目录中找寻驱动程序定义文件!

  2. 启动 CUPS 以及打印机
    接下来请确定你的 CUPS 是有启动的,而且打印机也已经打开电源了。启动 CUPS 的方法与检查是否启动 CUPS 的操作如下:
    这里写图片描述
    这里写图片描述
    从上面的输出可以很清楚的看到我的打印机与 Linux 上面的 CUPS 都有顺利的运作中!其中还是要强调, 你千万不要拿 nmap 去扫瞄别人家的系统!很可怕的!而由于上面输出的结果,我们也知道我这部打印机在网络上的联机方式为: socket://192.168.201.253:9100 的样式!这个地方也请先记录下来。

  3. 使用 lpadmin 进行打印机的建立与删除
    指令设定/删除打印机的方式就是透过 lpadmin 这个指令!这个指令的语法是这样的:
    这里写图片描述
    这里写图片描述
    其实这个 lpadmin 指令只是在更新 /etc/cups/ 目录里面的两个数据而已, 一个是 /etc/cups/printers.conf ,这个档案主要是规范了打印机的相关装置、是否接受打印作业、 打印机的队列名称、页面的限制等等,反正就是整个打印机的规范就是了。 至于这个打印机相关的 PPD 档案则是以打印机的队列名称链接到 /etc/cups/ppd/ 目录下。 不相信吗?让我们来瞧瞧 printers.conf 的档案内容吧!
    这里写图片描述

  4. 打印机状态的观察
    设定完打印机后,来观察一下目前的打印机状态吧!底下的 lpstat 是个不错用的观察指令!
    这里写图片描述
    如果不清楚你的打印机状态,使用 lpstat 就能够看的清楚~接下来,让我们开始来使用打印指令产生打印作业吧!

  5. 利用 lpr 与 lp 来产生打印作业
    如果你没有浏览器或者是说,你没有图形接口的软件时,可以透过 lpr 或者是 lp 这两个指令来打印某些档案或数据流重导向的咚咚。底下的测试会实际打印出资料来,因此,建议你可以先将打印机电源关闭, 让 CUPS 可以接受打印队列的工作,却无法输出到打印机,这样也方便我们后续管理指令的查询! 所以,请将打印机的电源关闭先。来看看这两个指令如何操作吧!
    这里写图片描述
    要注意的是,因为我有指令默认打印机,因此上面的范例中,即使没有加上 [-P hp_p2015] 这个项目时,依旧能够顺利的打印。但如果你没有指令默认打印机,那么就一定要加上这个项目, 否则 lpr 会不知到要将数据输出到哪里去!看完了 lpr ,再来聊聊 lp 这个指令的用法吧:
    这里写图片描述

  6. 打印作业的观察 (lpq) 与删除 (lprm)
    我们已经有产生三个工作,但是第一个工作有顺利的打印 (打印机是开启的),因此还有两个工作尚未完成才对! 那我们如何知道还有哪些打印作业在队列内呢?可以使用底下的指令来观察!
    这里写图片描述
    如果这些打印作业你想要取消呢?那就使用 lprm 吧!
    这里写图片描述
    这里写图片描述
    整个指令模式处理打印机的任务大约到此为止,其他的,还是使用 Web 接口去管理比较方便!

  7. 一个简单的练习
    假设你目前的 CentOS 主机上面接着一台 USB 接口的打印机,这台 USB 接口的打印机是 Samsung 的 ML-1210 打印机, 请问,您可以如何安装这部打印机?

  8. 先下载 PPD 定义档,档名为: Samsung-ML-1210-gdi.ppd 到 /usr/share/cups/model/ 当中;
  9. 加入打印机,使用下列方法:
    这里写图片描述
  10. 开始给他测试练习一下:『 lpr -P samsung /etc/passwd 』如果有东西印出来,那就是 OK 啦!

另外,如果老是看到屏幕前面显示:『 Printer not connected; will retry in 30 seconds…』, 很有可能是因为我们的装置代号输入错误,请使用『 lpstat -t 』查阅一下是否正确的设定好了? 基本上,安装一部 Linux 有支持的打印机,真的是快速!

21.3. 硬件数据收集与驱动,及 lm_sensors
『工欲善其事,必先利其器』,这是一句大家耳熟能详的古人名言,在我们的信息设备上面也是一样的啊! 如同前面小节谈到的,如果你的打印机本身就没有提供给 Linux 系统用的驱动程序,那么我们就不要浪费时间在该打印机设备上了。 同理可证,如果我们想要好好的使用 Linux 安装在自己的主机上面,那么主机上面的硬件信息最好还是能够了解一下的好。 现在一般主板也都有提供 CPU 电压与温度的侦测,那我们也能够透过 lm_sensors 这个软件来取得该数据! 底下就让我们来玩玩吧!

21.3.1. 硬件信息的收集与分析: lspci, lsusb, iostat…
现在我们知道系统硬件是由操作系统核心所管理的,由第二十章的开机流程分析中,我们也知道 Linux kernel 在开机时就能够侦测主机硬件并加载适当的模块来驱动硬件了。 而核心所侦测到的各项硬件装置,后来就会被记录在 /proc 与 /sys 当中了。 包括 /proc/cpuinfo, /proc/partitions, /proc/interrupts 等等。 更多的 /proc 内容介绍,先回到第十七章的程序管理瞧一瞧先!
那除了直接呼叫出 /proc 底下的档案内容之外,其实 Linux 有提供几个简单的指令来将核心所侦测到的硬件叫出来的~ 常见的指令有底下这些:

  • fdisk:第八章曾经谈过,可以使用 fdisk -l 将分割表列出;
  • hdparm:第八章谈过的,可观察硬盘的信息与测试读写速度;
  • dmesg:第十七章谈过, 观察核心运作过程当中所显示的各项讯息记录;
  • vmstat:第十七章谈过,可分析系统 (CPU/RAM/IO) 目前的状态;
  • lspci:列出整个 PC 系统的 PCI 接口装置!很有用的指令;
  • lsusb:列出目前系统上面各个 USB 端口口的状态,与连接的 USB 装置;
  • iostat:与 vmstat 类似,可实时列出整个 CPU 与接口设备的 Input/Output 状态。

lspci, lsusb, iostat 是本章新谈到的指令,尤其如果你想要知道主板与各周边相关设备时,那个 lspci 真是不可多得的好工具!而如果你想要知道目前 USB 插槽的使用情况以及侦测到的 USB 装置, 那个 lsusb 则好用到爆!至于 iostat 则是一个实时分析软件,与 vmstat 有异曲同工之妙! 既然本节是想要使用 lm_sensors 分析各组件的温度与电压,那么这几个指令得要来使用看看才行!
基本上,想要知道你 Linux 主机的硬件配备,最好的方法还是直接拆开机壳去察看上面的信息 (这也是为何第零章会谈计概论) ! 如果环境因素导致您无法直接拆开主机的话,那么直接 lspci 是很棒的一的方法:

一、lspci
这里写图片描述
不必加上任何选项,就能够显示出目前的硬件配备为何。上面就是我的测试机所使用的主机配备。 包括使用 SIS 这家公司推出的 630 主板芯片组,使用 USB 驱动为 1.1 版的控制器, 内建 SIS 的声卡,使用内建整合的 SIS 的 AGP 显示适配器,以及网络卡为螃蟹卡 (型号为 RTL-8139)。 您瞧瞧!很清楚。
由于目前的主机配备实在太高档了,因此很多朋友学习 Linux 时,习惯以类似 Virtualbox 或 VMWare 等虚拟机进行模拟,此时你得要特别注意,你的硬件配备将是 Virtualbox 或 VMWare 模拟出来的,并不是原本的主机配备!实在是由于讨论区太多网友发问类似『我的螃蟹卡为何捉不到』等问题, 询问后,才发现他使用 VMWare 仿真硬件。此时你就得要使用 lspci 去列出 Linux 核心捉到的硬件, 而不是你原本的硬件!注意注意!
如果你还想要了解某个设备的详细信息时,可以加上 -v 或 -vv 来显示更多的信息! 举例来说,我想要知道那个以太网络卡更详细的信息时,可以使用如下的选项来处理:
这里写图片描述
-s 后面接的那个怪东西是每个设备的总线、插槽与相关函数功能!那个是我们硬件侦测所得到的数据! 你可以对照底下这个档案来了解该串数据的意义: /usr/share/hwdata/pci.ids
其实那个就是 PCI 的标准 ID 与厂牌名称的对应表! 此外,刚刚我们使用 lspci 时,其实所有的数据都是由 /proc/bus/pci/ 目录下的数据所取出的!

二、lsusb
刚刚谈到的是 PCI 接口装置,如果是想要知道系统接了多少个 USB 装置呢?那就使用 lsusb 吧!
这里写图片描述
其中比较有趣的就属那个 ID 号码与厂商型号对照了!那也是写入在 /usr/share/hwdata/pci.ids 的东西,你也可以自行去查询一下!更多信息我们留到下一小节再来讨论吧!

三、iostat
刚刚那个 lspci 找到的是目前主机上面的硬件配备,那么整部机器的储存设备, 主要是硬盘!您硬盘由开机到现在,已经存取多少数据呢?这个时候就得要 iostat 这个指令的帮忙了! 不过,预设 CentOS 并没有安装这个软件,因此你必须要先安装他才行!如果你已经有网络了, 那么使用『 yum install sysstat 』先来安装此软件吧!否则无法进行如下的测试!
这里写图片描述
这里写图片描述
透过 lspci 及 iostat 可以约略的了解到目前系统的状态! 还有目前的主机硬件数据!知道这些信息后,我们就可以来玩一些比较不一样的东西!

21.3.2. 驱动 USB 装置
在现在的计算机里面,你或许真的无法想象没有 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 的芯片版本
目前 USB 1.1版本的控制器主要有两种规格,分别是:

  • OHCI (Open Host Controller Interface):主要由 Compaq 所发展,包括 Compaq, SiS, ALi 等等厂商发展的芯片都是用这个模块;
  • UHCI (Universal Host Controller Interface):主要由 Intel 所发展, 包括 Intel, VIA 等等厂商发展的芯片都是使用这个模块。

由于我们的 Linux 会将这两种 USB 的驱动程序加载,因此不论你的 USB 是使用哪种芯片,我们的 Linux 都可以顺利的侦测到并且正确的驱动的!至于 USB 2.0 在 Linux 上都以 Enahnced Host Controller Interface (EHCI) 来驱动的。我们使用 lsmod 来找一下 hci 这个关键词看看,我的测试主机驱动了多少 USB 模块了呢?
这里写图片描述

二、启动 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 打印机的装置代号即可!反正我们的 usb 模块已经加载了! 目前的 CentOS 5.x 会主动的帮我们建立打印机的装置文件名,所以底下的动作我们根本不需要进行。 不过如果你的 Linux 是较老式的系统,那可能得要使用 mknod 来建立起 USB 打印机才行。 透过核心装置代码(注3)的查询,我们知道 USB 打印机的主要/次要装置代码为 180 /0~15, 所以,建立的方法为:
这里写图片描述
在我们一般的生活当中,最常见的两种 USB 装置就是随身碟与打印机了, 所以在这里仅就这两种装置来介绍启动的方法,如果您还有其他的 USB 装置要驱动的话, 请参考底下这一篇的内容!
http://www.linux-usb.org/USB-guide/book1.html

21.3.3. 使用 lm_sensors 取得温度、电压等信息: sensors-detect, sensors
玩计算机硬件的朋友们一定都听过所谓的『超频』这玩意儿,所谓的『超频』就是让系统原有的运作频率增加, 让 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 侦测温度、电压等硬件参数
侦测的指令就是 sensors 啊!直接动作吧!
这里写图片描述
基本上,只要这样的步骤,您的主机就可以主动的侦测温度与电压,还有风扇转速等等信息。 不过,事实上,由于主板设计的不同,所以侦测的结果很有可能是有误差的。以我的情况来说, 我所使用的主板型号是太旧了,lm_sensors 确实捉到错误的信息!此时或许就需要进行调校了。 调校的步骤很简单,先确定使用 sensors 显示的结果每个项目代表的意义 (可以参考 BIOS 硬件侦测结果的顺序来排列) ,然后进入 /etc/sensors.conf 进行修改即可。
如果想要以图表输出的话,那么不妨搭配 MRTG 来进行网页绘图~ 这部分网络上面文章就比较多一点,也可以先参考我的一篇旧文章:
http://linux.vbird.org/linux_security/old/04mrtg.php

21.3.4. udev与 hal 简介
从上面的介绍中,我们不难发现目前新的 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 ,你可以这样做:
这里写图片描述
这里写图片描述
虽然这样很具有个性化的需求,不过总是不太可靠~万一哪天忘记自己有进行这些动作,偏偏用核心预设的档名去处理时, 会发生很多不明的错误!所以将刚刚建立的数据反向删除回来吧!
这里写图片描述

猜你喜欢

转载自blog.csdn.net/kk53976047/article/details/79615429