📄 0610hardware.htm
字号:
应该也是个不错的主意。但是,一般来说,我们没有很建议你一定要重新编译核心就是了。
关于核心的编译,瞧一瞧下个章节吧! ^_^
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
我们的 Linux 基本上有提供几个简单的指令来将核心所侦测到的硬体叫出来的~
这包括我们之前提到的∶
<ul><span class=text_import2>
<li><a href="0230filesystem.php#hdparm">hdparm</a>∶观察硬碟的种种资讯;
<li>lspci∶检查整个系统 PCI 介面的各项装置!很有用的指令;
<li><a href="0440processcontrol.php#dmesg">dmesg</a>∶观察核心运作过程当中所显示的各项讯息记录;
<li>iostat∶检查整个 CPU 与周边设备的 Input/Output 状态。
</ul></span>
无论如何,那个 lspci 真的是一个很不错用的指令,他可以直接将 /proc 底下的关于 PCI
介面的各项资料一口气的将他完整的呈现在你面前,可以让您很快速的了解到核心所侦测到的你的主机硬体呢!
那么就赶紧来看一看你的主机硬体配备吧! ^_^<br><br>
基本上,想要知道您 Linux 主机的硬体配备,最好的方法还是直接拆开机壳去察看上面的资讯,
如果环境因素导致您无法直接拆开主机的话,那么直接 lspci 是很棒的一的方法∶<br><br>
<hr><a name="lspci"></a><li><span class=text_import1>lspci</span></li>
<div class=block2>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>lspci [-vvn]</span>
<span class=term_say>参数∶
-v ∶观察更多的 PCI 装置的资讯;
-vv ∶比 -v 还要更详细的细部资讯;
-n ∶直接观察 PCI 的 ID 而不是厂商名称
范例∶</span>
<span class=term_hd>范例一∶查阅您系统内的 PCI 装置∶</span>
[root@linux ~]# <span class=term_command>lspci</span>
<span style="font: 8pt '细明体'">00:00.0 Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev c4)
00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP]
<span class=term_say>.....(中间省略).....</span>
00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 MX 440] (rev a3)</span>
<span class=term_say># 不必加任何的参数,就能够显示出目前主机上面的各个 PCI 介面的装置呢!
# 从上面的资料可以看出我的显示卡是 Nvidia 的,主机晶片则是 VIA 的,
# 网路卡则是 Realtek 的 8139 (亦即是螃蟹卡啊!)。</span>
</pre></td></tr></table>
基本上,我们可以由 lspci 立刻得到主机上面的各项设备,如果还想要知道他所占用的
IRQ 与 I/O port 时,可以加上『 lspci -vv 』来查阅啊!简单得不得了吧!
另外,您会发现上表当中的每一行最前面都有一组怪怪的数字,那是什么?
其实那就是我们的硬体侦测的数据啦!您可以对照著底下这个档案来查阅∶
<ul><span class=text_import2><li>/usr/share/hwdata/pci.ids</ul></span>
那个就是 PCI 的标准 ID 与厂牌名称的对应表啦!
此外,刚刚我们使用 lspci 时,其实所有的资料都是由 /proc/bus/pci/
目录下的资料所取出的呢!了解了吧! ^_^<br><br>
</div>
<hr><a name="iostat"></a><li><span class=text_import1>iostat</span></li>
<div class=block2>
刚刚那个 lspci 找到的是目前主机上面的硬体配备,那么整部机器的储存设备,
主要是硬碟对吧!请问,您硬碟由开机到现在,已经存、取多少资料呢?
这个时候就得要 iostat 这个指令的帮忙了!<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>iostat [-c|-d] [-k] [-t] [间隔秒数] [侦测次数]</span>
<span class=term_say>参数∶
-c ∶仅显示 CPU 的状态;
-d ∶仅显示储存设备的状态,不可与 -c 一起用;
-k ∶预设显示的是 block ,这里可以改成 K bytes 的大小来显示;
-t ∶显示日期出来;
范例∶</span>
<span class=term_hd>范例一∶显示一下目前整个系统的 CPU 与储存设备的状态</span>
[root@linux ~]# <span class=term_command>iostat</span>
Linux 2.6.12-1.1456_FC4 (localhost.localdomain) 10/27/05
avg-cpu: %user %nice %sys %iowait %idle
0.34 0.01 0.34 0.20 99.11
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
hda 0.55 2.64 3.28 6631507 8230880
hdb 0.21 4.52 9.10 11342022 22855752
<span class=term_say># 瞧!上面数据总共分为上下两部分,上半部显示的是 CPU 的当下资讯;
# 下面数据则是显示储存装置 /dev/hda, /dev/hdb 的相关数据,他的数据意义∶
# tps ∶平均每秒钟的传送次数!与资料传输『次数』有关,非容量!
# kB_read/s ∶开机到现在平均的读取单位;
# kB_wrtn/s ∶开机到现在平均的写入单位;
# kB_read ∶开机到现在,总共读出来的档案单位;
# kB_wrtn ∶开机到现在,总共写入的档案单位;</span>
<span class=term_hd>范例二∶每两秒钟侦测一次,并且共侦测三次储存装置</span>
[root@linux ~]# <span class=term_command>iostat -d 2 3</span>
Linux 2.6.12-1.1456_FC4 (localhost.localdomain) 10/27/05
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
hda 0.55 2.64 3.28 6631507 8231496
hdb 0.21 4.51 9.10 11342022 22855752
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
hda 0.00 0.00 0.00 0 0
hdb 0.00 0.00 0.00 0 0
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
hda 0.00 0.00 0.00 0 0
hdb 0.00 0.00 0.00 0 0
<span class=term_say># 仔细看一下,如果是有侦测次数的情况,那么第二次以后所显示的资料,
# 则代表两次侦测之间的系统传输值!举例来说,上面的资讯当中,
# 第二次显示的资料,则是两秒钟内(本案例)系统的总传输量与平均值。</span>
</pre></td></tr></table>
透过 lspci 及 iostat 可以约略的了解到目前系统的状态啊!
还有目前的主机硬体资料呢!知道这些资讯后,我们就可以来玩一些比较不一样的东西棉! ^_^
</div>
</div>
<hr><a name=hw_pre_usb></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>驱动 USB 装置∶</span><br>
<div class=block2>
在现在的电脑里面,你或许真的无法想像没有 USB 介面装置的主机~
因为不论我们的键盘、滑鼠、印表机、扫描器、随身碟等等,几乎都是使用到 USB 来作为传输的介面的。
所谓这 USB (Universal Serial Bus) 最早是在 1994 年被发展出来,
到 1996 年前后发展出 version 1.0 ,当时的速度大约在 12Mbit/second,
到了 1999 年发展出 version 2.0 ,这一版的速度则提高到 480Mbit/second。<br><br>
USB 有很多的优点啦,包括他是可以延伸的,每个 USB port 都可以最多接到 127 个装置!
速度又快,又具有 Plug and Play (随插即用)
的优点,所以近期以来被用来作为携带式装置的主要资料传输介面呢!<br><br>
<li><span class=text_import1>关于 USB 的晶片版本∶</span></li>
<div class=block2>
目前 USB 的控制器主要有两种规格,分别是∶<ul><span class=text_import2>
<li>OHCI (Open Host Controller Interface)∶主要由 Compaq 所发展,包括 Compaq, SiS, ALi
等等厂商发展的晶片都是用这个模组;
<li>UHCI (Universal Host Controller Interface)∶主要由 Intel 所发展,
包括 Intel, VIA 等等厂商发展的晶片都是使用这个模组。</ul></span>
但不论是哪一种 USB 的装置,这两种晶片都能够启动并且支援的。
不过,以使用上来说, UHCI 比较容易使用,但是他的驱动程式比较复杂一些,
可能也会消耗比较多的 CPU 资源就是了。<br><br>
</div>
也就是说,基本上,如果你使用 lsmod 时,会发现到 (O|U)HCI 之类的模组时,
那就表示您的 Linux 主机已经有载入 USB 的驱动程式了啦!
这也是目前 FC4 预设载入的模组之一啊!不过,如果您的 USB 装置比较多,
包括键盘、滑鼠、摇杆等等的 USB 装置时,那么可能还需要载入 USB Human Interface Device (HID)
模组才行呢!以鸟哥的 FC4 测试机来说,我的主机是 Intel 815 晶片的 (P-III 的 CPU),
由于没有提供 USB 2.0 ,所以,鸟哥自己买了一张 USB 2.0 的扩充卡。然后,使用 lsmod
出现如下的画面棉!<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>lsmod</span>
Module Size Used by
uhci_hcd 43345 0
ehci_hcd 48333 0
<span class=term_say># 我仅列出这两个模组而已~上面的是 UHCI 模组,底下则是 USB 增强模组。</span>
[root@linux ~]# <span class=term_command>modinfo ehci_hcd</span>
<span class=term_say>....省略.....</span>
description: 10 Dec 2004 USB 2.0 'Enhanced' Host Controller (EHCI) Driver
author: David Brownell
license: GPL
<span class=term_say>....省略.....
# 很有趣吧!说的是 Enhanced Host Controller 呢!</span>
</pre></td></tr></table>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 事实上,更多的 USB 装置的资讯都放置到 hotplug 这个套件里面呢~
你可以到 /etc/hotplug.d/ 目录下去查阅一下相关的说明喔!
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
<li><span class=text_import1>启动 USB 随身碟∶</span></li>
<div class=block2>
我们之前谈过 USB 的磁碟代号是∶ /dev/sd[a-p] 之类的,类似 SCSI 硬碟的代号,
这是因为 USB 的磁碟装置使用 SCSI 相关的装置代号,因此,如果您要使用 USB
随身碟的话,嘿嘿!那么您的 Linux 主机就得要支援 SCSI 装置才行~<br><br>
此外,为了让 USB 磁碟装置顺利的被使用,因此,有时候还得要启动 usb-storage 模组才行~
所以棉,光是有 USB 的 uhci 模组还不行,还得要配合 usb-storage 啦~
而一般 USB 的装置都会被主动的侦测,核心也会主动的载入 USB 装置的驱动模组,
所以您应该不需要手动载入 usb-storage 才是。不过,如果老是无法驱动时,
那么不妨手动载入 usb-storage 试看看。<br><br>
顺利载入各个需要的模组之后,直接下达 fdisk -l 应该就可以看到您的 USB
随身碟的装置代号才是!一般来说,如果是第一个 USB 磁碟装置的话,
应该可以看到一个名为 /dev/sda1 的装置,使用 mount 将他挂载起来即可啊!
详细的挂载 (mount) 与挂载点还有档案系统格式 (filesystem) 鸟哥在这里就不谈了,
翻翻第二篇的内容去! ^_^<br><br>
</div>
<li><span class=text_import1>启动 USB 印表机∶</span></li>
<div class=block2>
要驱动 USB 印表机也很简单啊!
只要做好 USB 印表机的装置代号即可!反正我们的 usb 模组已经载入了嘛!
要建立 USB 印表机的装置代号得使用 mknod 这个指令才行。
此外, USB 印表机装置的 major, minor 代号分别是 180 0,
所以,建立的方法为∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>mkdir -p /dev/usb</span>
[root@linux ~]# <span class=term_command>mknod /dev/usb/lp0 c 180 0</span>
[root@linux ~]# <span class=term_command>chown root:lp /dev/usb/lp0</span>
[root@linux ~]# <span class=term_command>chmod 660 /dev/usb/lp0</span>
[root@linux ~]# <span class=term_command>ls -l /dev/usb/lp0</span>
crw-rw---- 1 root lp 180, 0 Nov 7 16:03 /dev/usb/lp0
[root@linux ~]# <span class=term_command>echo "testing" > /dev/usb/lp0</span>
</pre></td></tr></table>
鸟哥这里是以 FC4 为范例,要注意, /dev/usb/lp0 的权限必须要与 /dev/lp0 相同,
所以,我这里还得要使用 chown 与 chmod 来变换该装置档案的权限才行。
建立好之后,就可以使用 cups 之类的软体来管理这一部印表机棉! ^_^。
事实上,除了比较早期的 Linux distributions 之外,较新的 distributions
已经帮我们建立好 /dev/usb/lp0 等档案装置了呢!真是方便!<br><br>
</div>
在我们一般的生活当中,最常见的两种 USB 装置,就是随身碟与印表机了,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -