linux中国_ 发布的文章

系统资源监控

为使系统良好运转,Linux系统管理员经常需要监测cpu,内存,磁盘,网络等系统信息。Linux上已有iotop,top,free,htop,sar等丰富的常规工具来实现监测功能。今天让我们走进Collectl来了解这个集测试/监控/分析系统性能为一体的Linux工具。

Collectl作为一个轻量级的监控工具,在同类工具中是功能最全的。用户可监测不同的复杂系统矩阵值,并可保留数据以做之后的分析。不同于其他只用来监测特定系统参数的工具,Collectl可以同时监测不同的变量,并以合适的方式记录它们。

摘自Collectl官网 ...

不同于或聚焦于一小组统计数据、采用唯一输出方式,或采用迭代、作为守护进程运行的大部分监测工具,collectl可以同时全部实现。用户可选择各种子系统中的任一系统来监测包括内存,CPU,磁盘,索引节点,无线带宽,lustre,内存,网络,网络文件系统,进程,二次型,slabs,套接口及TCP等信息。

深入学习前让我们先看以下命令。

$ collectl
waiting for 1 second sample...
#<--------CPU--------><----------Disks-----------><----------Network---------->
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
   0   0   864   1772      0      0      0      0      0      1      0       0 
   5   2  1338   2734      0      0      8      2      0      0      0       1 
   1   0  1222   2647      0      0     92      3      0      2      0       1 
   1   0   763   1722      0      0     80      3      0      1      0       2

CPU使用率,磁盘输入输出和网络活动以每秒为单位来加载。对可以理解这些数据的人来说这些信息很容易读懂。这项列表在给定的时间间隔里会持续增加,并可直接形成一项文件跟踪日志。collectl工具提供了各种命令来对这些数据进行记录,查找及做其他处理。

安装collectl工具

对Ubuntu/Debian用户来说Collectl是默认资源,所以使用apt命令便可获取。

$ sudo apt-get install collectl

Fedora/CentOS用户使用yum命令便可获取。

$ yum install collectl

使用

必要的了解 - Collectl子系统

子系统是可检测到的不同系统资源类型。像CPU,内存,带宽等等都可构成一个子系统。只运行collectl命令将以批处理模式输出CPU,磁盘和网络子系统信息,我们在上文已看到相关内容。

从操作说明可以看到,Collectl可以识别以下子系统。

总计子系统

b - buddy info (内存片段)
c - CPU
d - Disk
f - NFS V3 Data
i - Inode and File System
j - Interrupts
l - Lustre
m - Memory
n - Networks
s - Sockets
t - TCP
x - Interconnect
y - Slabs (system object caches)

细节子系统

这是一系列的详细信息,大部分情况下都会由相应的总计数据衍生出来。目前“环境变量”和“进程”2类没有相应的总计数据。如果有3个磁盘,选择-sd,将只会看到3个磁盘组合出的单一信息。如果选择-sD,将会分别显示各磁盘信息。

C - CPU
D - Disk
E - Environmental data (fan, power, temp),  via ipmitool
F - NFS Data
J - Interrupts
L - Lustre OST detail OR client Filesystem detail
M - Memory node data, which is also known as numa data
N - Networks
T - 65 TCP counters only available in plot format
X - Interconnect
Y - Slabs (system object caches)
Z - Processes

使用“-s”来监测特定的子系统并向其添加子系统的识别项。现在让我们举几个例子。

1. 监测cpu使用率

用“-sc”实现CPU总使用率的监测

$ collectl -sc
waiting for 1 second sample...
#<--------CPU-------->
#cpu sys inter  ctxsw 
   3   0  1800   3729 
   3   0  1767   3599

使用“-C”观察各个单独的CPU使用情况。结果将会输出多行,分别对应一个CPU。

   $ collectl -sC
waiting for 1 second sample...

# SINGLE CPU STATISTICS

#   Cpu  User Nice  Sys Wait IRQ  Soft Steal Idle
      0     3    0    0    0    0    0     0   96
      1     3    0    0    0    0    0     0   96
      2     2    0    0    0    0    0     0   97
      3     1    0    0    0    0    0     0   98
      0     2    0    0    0    0    0     0   97
      1     2    0    2    0    0    0     0   95
      2     1    0    0    0    0    0     0   98
      3     4    0    1    0    0    0     0   95

如果需要,可以同时使用C和c来获取单项CPU监测数据和汇总数据。

2. 内存监测

使用m子系统查看内存。

$ collectl -sm
waiting for 1 second sample...
#<-----------Memory----------->
#Free Buff Cach Inac Slab  Map 
   2G 220M   1G   1G 210M   3G 
   2G 220M   1G   1G 210M   3G 
   2G 220M   1G   1G 210M   3G

不难解释。 M用来查看更多内存的详细信息。

$ collectl -sM
waiting for 1 second sample...

# MEMORY STATISTICS 

# Node    Total     Used     Free     Slab   Mapped     Anon   Locked    Inact Hit%
     0    7975M    5939M    2036M  215720K  372184K        0    6652K    1434M    0
     0    7975M    5939M    2036M  215720K  372072K        0    6652K    1433M    0

这类似于免费报告吗?

3. 查看磁盘使用情况

d和D可以查看磁盘使用的概况和详细情况。

$ collectl -sd
waiting for 1 second sample...
#<----------Disks----------->
#KBRead  Reads KBWrit Writes 
      4      1    136     24 
      0      0     80     13

$ collectl -sD
waiting for 1 second sample...

# DISK STATISTICS (/sec)
#          <---------reads---------><---------writes---------><--------averages--------> Pct
#Name       KBytes Merged  IOs Size  KBytes Merged  IOs Size  RWSize  QLen  Wait SvcTim Util
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              1      0    2    1      17      1    5    3       2     2     6      2    1
sda              0      0    0    0      92     11    5   18      18     1    12     12    5

“--verbose”命令可以用来查看附加信息。和D命令不同,它将概况扩展,包含了更多信息。

$ collectl -sd --verbose

4. 同时报告多系统情况

如果想要同时得到CPU,内存和磁盘报告,那么同时使用子命令组合来实现。

$ collectl -scmd
waiting for 1 second sample...
#<--------CPU--------><-----------Memory-----------><----------Disks----------->
#cpu sys inter  ctxsw Free Buff Cach Inac Slab  Map KBRead  Reads KBWrit Writes 
   4   0  2187   4334   1G 221M   1G   1G 210M   3G      0      0      0      0 
   3   0  1896   4065   1G 221M   1G   1G 210M   3G      0      0     20      5

5. 显示统计时间

若要将每行的监测信息和时间一同显示,使用T选项。通过在“-o”参数来指定。

$ collectl -scmd -oT
waiting for 1 second sample...
#         <--------CPU--------><-----------Memory-----------><----------Disks----------->
#Time     cpu sys inter  ctxsw Free Buff Cach Inac Slab  Map KBRead  Reads KBWrit Writes 
12:03:05    3   0  1961   4013   1G 225M   1G   1G 212M   3G      0      0      0      0 
12:03:06    3   0  1884   3810   1G 225M   1G   1G 212M   3G      0      0      0      0 
12:03:07    3   0  2011   4060   1G 225M   1G   1G 212M   3G      0      0      0      0

使用“-oTm”可将时间换成毫秒显示。

6. 改变样本计数

collectl报告的每行都是一份快照或样本,它通常设定定期间隔如1秒来取样。i可用来设置时间间隔,c用来设置样本计数。

$ collectl -c1 -sm
waiting for 1 second sample...
#<-----------Memory----------->
#Free Buff Cach Inac Slab  Map 
   1G 261M   1G   1G 228M   3G

使用i命令可改变更新时间间隔。

$ collectl -sm -i2
waiting for 2 second sample...
#<-----------Memory----------->
#Free Buff Cach Inac Slab  Map 
   1G 261M   1G   1G 229M   3G

上面的命令设定每2秒收集一次内存信息。

7. 像iotop一样使用collectl

top命令将collectl像iostat/top工具一样进行智能统计。列表会持续更新,且可以使用不同字段实现排序。

$ collectl --top iokb

输出如下

# TOP PROCESSES sorted by iokb (counters are /sec) 09:44:57
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
 3104  enlighte 20  2683    3 S  938M   33M  0  0.00  0.00   0  00:09.16    0    4    0    0 /usr/bin/ktorrent 
    1  root     20     0    0 S   26M    3M  2  0.00  0.00   0  00:01.30    0    0    0    0 /sbin/init 
    2  root     20     0    0 S     0     0  3  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd 
    3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.02    0    0    0    0 ksoftirqd/0 
    4  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0 
    5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H 
    7  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.08    0    0    0    0 migration/0 
    8  root     20     2    0 S     0     0  2  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh 
    9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcuob/0

上面的输出很像top命令,并且它以磁盘数量降序排列进程。

若只想显示上面的5项进程,可用以下命令实现

$ collectl --top iokb,5

若想学习上面的列表里哪些字段可以排序,使用如下命令

$ collectl --showtopopts

下面是应用于进程或数据的最高排序类型列表。某些情况下你可能会使用某一字段进行排序,但它并非显示的一部分。

TOP PROCESS SORT FIELDS
进程排序字段

Memory
  vsz    virtual memory
  rss    resident (physical) memory

Time
  syst   system time
  usrt   user time
  time   total time
  accum  accumulated time

I/O
  rkb    KB read
  wkb    KB written
  iokb   total I/O KB

  rkbc   KB read from pagecache
  wkbc   KB written to pagecache
  iokbc  total pagecacge I/O
  ioall  total I/O KB (iokb+iokbc)

  rsys   read system calls
  wsys   write system calls
  iosys  total system calls

  iocncl Cancelled write bytes

Page Faults
  majf   major page faults
  minf   minor page faults
  flt    total page faults

Context Switches
  vctx   volunary context switches
  nctx   non-voluntary context switches

Miscellaneous (best when used with --procfilt)
  cpu    cpu number
  pid    process pid
  thread total process threads (not counting main)

TOP SLAB SORT FIELDS

  numobj    total number of slab objects
  actobj    active slab objects
  objsize   sizes of slab objects
  numslab   number of slabs
  objslab   number of objects in a slab
  totsize   total memory sizes taken by slabs
  totchg    change in memory sizes
  totpct    percent change in memory sizes
  name      slab names

8. 像top一样使用collectl

为使collectl像top,我们只需以CPU使用率排序输出进程。

$ collectl --top

输出如下

# TOP PROCESSES sorted by time (counters are /sec) 14:08:46
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
 9471  enlighte 20  9102    0 R   63M   22M  3  0.03  0.10  13  00:00.81    0    0    0    3 /usr/bin/perl 
 3076  enlighte 20  2683    2 S  521M   40M  2  0.00  0.03   3  00:55.14    0    0    0    2 /usr/bin/yakuake 
 3877  enlighte 20  3356   41 S    1G  218M  1  0.00  0.03   3  10:10.50    0    0    0    0 /opt/google/chrome/chrome 
 4625  enlighte 20  2895   36 S    1G  241M  2  0.00  0.02   2  08:24.39    0    0    0   12 /usr/lib/firefox/firefox 
 5638  enlighte 20  3356    3 S    1G  265M  1  0.00  0.02   2  09:55.04    0    0    0    2 /opt/google/chrome/chrome 
 1186  root     20  1152    4 S  502M   76M  0  0.00  0.01   1  03:02.96    0    0    0    0 /usr/bin/X 
 1334  www-data 20  1329    0 S   87M    1M  2  0.00  0.01   1  00:00.85    0    0    0    0 nginx:

上面的命令也可用于显示子系统信息。

$ collectl --top -scm

9. 像ps一样列出进程

为像ps命令一样列出所有进程且没有后续更新,用“c”命令让其计数至1. $ collectl -c1 -sZ -i:1

上面的命令将会列出类似“ps -e”命令的所有进程。“procfilt”用于从所有进程中过滤出特定的进程信息。“procopts”用于指定另一组微调进程列表显示的命令。

10. 像vmstat一样使用collectl

Collectl有内置命令来完成像vmstat一样的功能。

$ collectl --vmstat
waiting for 1 second sample...
#procs ---------------memory (KB)--------------- --swaps-- -----io---- --system-- ----cpu-----
# r  b   swpd   free   buff  cache  inact active   si   so    bi    bo   in    cs us sy  id wa
  1  0      0  1733M   242M  1922M  1137M   710M    0    0     0   108 1982  3918  2  0  95  1
  1  0      0  1733M   242M  1922M  1137M   710M    0    0     0     0 1906  3886  1  0  98  0
  1  0      0  1733M   242M  1922M  1137M   710M    0    0     0     0 1739  3480  3  0  96  0

11. 子系统的详细信息

下面的命令以一秒为间隔,统计5次CPU信息并和时间一起显示出详细信息(冗长)。

$ collectl -sc -c5 -i1 --verbose -oT
waiting for 1 second sample...

# CPU SUMMARY (INTR, CTXSW & PROC /sec)
#Time      User  Nice   Sys  Wait   IRQ  Soft Steal  Idle  CPUs  Intr  Ctxsw  Proc  RunQ   Run   Avg1  Avg5 Avg15 RunT BlkT
14:22:10     11     0     0     0     0     0     0    87     4  1312   2691     0   866     1   0.78  0.86  0.78    1    0
14:22:11     15     0     0     0     0     0     0    84     4  1283   2496     0   866     1   0.78  0.86  0.78    1    0
14:22:12     17     0     0     0     0     0     0    82     4  1342   2658     0   866     0   0.78  0.86  0.78    0    0
14:22:13     15     0     0     0     0     0     0    84     4  1241   2429     0   866     1   0.78  0.86  0.78    1    0
14:22:14     11     0     0     0     0     0     0    88     4  1270   2488     0   866     0   0.80  0.87  0.78    0    0

改变"-s"变量查看不同的子系统。

总结

本文的介绍不过是对collectl这个强大工具的一些浅见。本文本希望展示它有多灵活,其实通过以上的讨论让我们了解了包括记录及回寻捕获的数据,以多种文件格式导出数据并将数据转换为可被广泛的工具分析的格式等等功能的实现。

collectl提供的另一大功能便是像服务一样运行,对远程Linux机器或完整的服务器集群提供远程监控,其表现堪称完美。

Collectl同另一批可用于处理分析收集数据的名为Collectl实用工具 (colmux, colgui, colplot)的功能相契合。如果有机会,我们在之后的文章中会介绍它们。

为更详细的了解Collectl工具,请登录它的主页来学习更多的功能。笔者建议查看FAQs来快速了解collectl,读取collectl文档获取深层次的例子。等价命令表也可定位至更多的像sar,iostat,netstat,top等和collectl功能部分等价的常用工具。


via: http://www.binarytides.com/collectl-monitor-system-resources-linux/

译者:icybreaker 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

树莓派已经庆祝了它的第二个生日。自从在2012.2.29初次登台以来,树莓派已经引导了一代新的微型、便宜的独板电脑。大量基于树莓派的DIY项目想法通过网络涌现,并且在开发世界中有许多使用案例将树莓派作为低成本学习媒介。为了庆祝它的第二个生日,我会在这篇文章中分享几个树莓派有趣的事实

  1. 100,000 块树莓派板子 在发行首日售出,并且现在已有超过 250万块板子 在世界范围内售出。
  2. 首批树莓派在中国台湾制造,,但是现在所有在售的板子在 英国制造
  3. 树莓派可以超频 (通过进入所谓的 turbo 模式)。 你可以修改 overclocking/overvolting options 或者在运行时使用raspi-config工具,或者在启动时修改启动参数/boot/config.txt。改变 overclocking/overvolting 选项不会影响你的保修。
  4. 树莓派不带MPEG-2解码器。 增加一个MPEG-2/VC-1编码授权会增加10%的板子价格。 因此,你可以在你需要的时候再 购买 MPEG-2/VC-1 序列号。购买的序列号与你的树莓派绑定在一起。
  5. 不可以在树莓派上(ARMv6)运行Windows 8,因为 Windows 8 要求ARMv7或者更高级的处理器。同样地,你不可以在树莓派上运行Ubuntu因为Ubuntu也只支持 ARMv7 后者更高
  6. 树莓派(Raspberry Pi)最初的名字是: "树莓"(Raspberry),这起源于以前对于微处理器以水果命名的传统。 "派"(Pi)指的是 "Python" 因为Python是第一个移植到树莓派的程序.
  7. 树莓派logo中的树莓实际上是一个3D 富勒烯 (或者巴克球),它一共有32面。 logo中的11面是可见的。凑巧的是,树莓派有一颗32位的ARM11处理器。
  8. Methematica, 一款商业的流行的计算软件,现在已经在树莓派上免费捆绑了
  9. (感谢加里•格兰特) Kickstarter上最大的基于树莓派的项目是 Kano,它的目的是发行一个计算机/编码工具箱来帮助各年龄段的人制造一套他们自己的电脑。项目已经从13,387名支持者中获得$1,522,160。
  10. 根据 Rastrack.co.uk,树莓派最流行的国家是英国。

就是这些。如果你有任何关于树莓派有趣的事实,欢迎随时插话。


via: http://xmodulo.com/2014/03/interesting-facts-raspberry-pi.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

VirtualBox是一个可以让你在一台物理主机上运行多个系统的软件。它支持Windows,Mac OS X 和Linux 并且是Oracle公司在维护它。

我们在这里写了很多关于VirtualBox的文章,你可以做一个快速的查找来查看所有关于VirtualBox的文章。

现在,这里有一个故事:VirtualBox有一个功能,允许用户快速的截取虚拟机会话的屏幕截图。这些截图可以通过粘贴板和宿主机共享。

这就是我们这里要说的了。当某一个Ubuntu 虚拟机中的功能启用后,这项截图的功能就不能够正常的工作了。这种现象一直是一个痛点,直到最近我们偶然发现了这个解决方法。

如果不采取我们发现的这个方法,当你在Ubuntu的虚拟机里面截完屏幕之后,截屏的图片将会被存储成全黑的文件,这样的文件会毫无用处。

我一直在苦苦寻找解决方法,但是一直都没有好运气,直到刚刚。

要开启Ubuntu下的虚拟机和宿主机之间的双向黏贴板的话,请在Ubuntu虚拟机上面点击 “设置”,之后找到“普通->高级标签”,选择这个功能来开启它。

现在,理论上,当你开启Ubuntu的虚拟机之后,按下“截屏键”,或者按下“Ctrl+截屏键”,虚拟机就应该为当前的桌面会话来张截屏。

之后你就可以通过在宿主机上面使用粘贴板的功能来看到那些图片了。

但是!如果你同时启用了Ubuntu虚拟机中的“3D 加速”功能,那些图片将会变得漆黑一片。

为了解决这个问题,你必须关闭Ubuntu虚拟机的3D加速功能!

关闭3D加速功能可以这样做:在Ubuntu虚拟机种点击“设置”,之后找到“系统->显示->显卡”标签,关闭3D加速

现在你必须在Ubuntu的虚拟机中设置关闭3D加速才能让截屏正常工作。现在打开一个虚拟机尝试来截个屏幕吧。

希望这个方法能够帮到你!

希望你喜欢!


via: http://www.liberiangeek.net/2014/02/daily-ubuntu-tips-fix-black-screen-in-ubuntu-guest-with-virtualbox-screen-capture/

译者:FineFan 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

下面的教程将教给所有的 Linux 用户关于如何安全的擦除可用的硬盘驱动器(HDD)、固态硬盘驱动器(SSD)以及 USB 闪存驱动器空间,以使任何人都不能恢复被删除的文件。

是否有注意到,当你从系统中删除了一个文件,或从回收站中彻底删除后,它就会在文件系统中消失,但是,该文件实际上并未消失,它驻留在你的磁盘驱动器的可用空间中,仍然可以用数据恢复应用程序恢复回来。

这篇教程会提供两种方法。第一种是使用一款名叫 Wipe Free Space 的应用程序,它是由波兰开发者 Bogdan Drozdowski 开发的。第二种方法会使用众所周知的 BleachBit 软件。

虽然 BleachBit 是一款图形应用程序,Wipe Free Spac 是一款命令行软件,但开发者也提供了易用的图形用户界面(GUI),即使初级用户也可以容易使用,用来安全的擦除他们磁盘的可用空间。

选编者注:在继续往下阅读之前,最好知道这些应用程序会擦除未被使用的簇和块上的可用空间,也会擦除使用过的块上的所谓“闲置空间”,即删除文件和其他任意数据后可供再次使用的空间。

方法 1 - Wipe Free Space & Wipe Free Space GUI

从你的 Linux 发布版本的默认软件源仓库中可以很容易的就安装上 Wipe Free Space 命令行应用程序。可以使用基于 RPM 的 Linux 发行版二进制包,也可以直接用源代码来编译安装。

安装完成后,可以从这儿下载图形用户界面前端程序,保存在 home 目录下,解压缩,然后双击 run.sh (或者在终端窗口下执行 sh run.sh 命令)文件就可以打开。

应用程序打开后,你可以把 wipefreespace 目录的可执行文件路径添加进来,所以点击“浏览”按钮,到 /usr/bin/ 下查找。然后添加要被擦除的文件系统。

确保已经勾选了窗口左边的 "Wipe only with zeros" 选项。如果你需要勾选更多的选项,首先请查看手册来了解怎么使用,因为他们可能会使你的驱动器崩溃。现在,请点击“开始擦除”按钮开始执行。

方法 2 - BleachBit

这是最容易的方法,建议初级用户使用。从你的 Linux 发布版本的默认软件源仓库中很容易的就可以安装 BleachBit 应用程序。打开它,请确保您在侧边栏上的系统部分选中“可用磁盘空间”选项。点击“清除”按钮开始执行。

BleachBit 的可用空间选项

整个擦除操作会进行很长时间。在主窗口上你可以看到详细的进度。如果你在这篇教程中遇到问题,别犹豫,在下面发表评论吧。

Wipe Free Space GUI 0.5 下载:


via: http://news.softpedia.com/news/How-to-Wipe-Free-Disk-Space-in-Linux-429965.shtml

译者:runningwater 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

你好!这篇文章会覆盖不同的驱动。

首先"virtio console"是一种用于hypervisors的虚拟控制台驱动。

"IPMI top-level message handler"是用于IPMI系统的消息管理器。IPMI代表的是"Intelligent Platform Management Interface"(智能平台管理系统)。IPMI是一种不需要shell通过网络管理系统的接口。

"/dev/nvram support"允许系统读取和写入实时时钟的内存。通常上,这个特性用于在掉电时保存数据。

下面一个驱动支持Siemens R3964包驱动(Siemens R3964 line discipline)。这个是设备对设备协议

现在,我们可以进入PCMCIA字符设备驱动。然而,大多数这里的驱动是供货商/设备特定的。

原始块设备驱动允许块设备绑定到设备文件上/dev/raw/rawN(RAW driver (/dev/raw/rawN))。这么做的好处是高效的零拷贝。然而,大多数软件更偏好通过/dev/sd** 或者 /dev/hd**访问存储设备。

下面,可以设置支持的原始设备的最大数量。

下面的驱动可以生成设备文件/dev/hpet (HPET - High Precision Event Timer)。

注意:你们中很多人可能会想知道为什么要启用这些设备文件问题。好的,这些设备文件充当了一个软件和硬件之间的接口。

通过这个驱动可以映射HPET驱动(Allow mmap of HPET)。映射是一个生成设备和文件在内存中的地址列表。文件接着可以通过内存地址更快地找到并且接着指挥硬盘从地址中得到数据。

"Hangcheck timer"用于检测系统是否被锁定。这个定时器监视着锁定进程。当一个进程被冻结了,定时器就开启。当定时器停止后,如果进程还没有重启或者关闭,那么定时器会强迫进程关闭。

引用Linus Torvalds的话:可移植性是对于那些无法写新程序的人而言的。

使用Trusted Computing Group(可信赖计算组)规范的TPM安全芯片会需要这个驱动(TPM Hardware Support)。

现在,我们可以进入I2C设备。I2C代表的是"Inter-Integrated Circuit"(内部集成电路)并经常被成为"eye two see"。然而,一些人会说"eye squared see"。I2C是一种串行总线标准。

一些旧的软件将I2C适配器作为类设备,但是如今的软件不会这么做(Enable compatibility bits for old user-space)。所以,这个驱动会提供对旧软件的向后支持。

接下来,可以生成I2C设备文件(I2C device interface)。

I2C可以通过这个驱动提供复用支持(I2C bus multiplexing support)。

I2C可以通过这个驱动支持GPIO控制的复用(GPIO-based I2C multiplexer)。

对于开发者用这个驱动可以在I2C和SMBus上执行不同的测试(I2C/SMBus Test Stub)。

I2C系统启用这个特性可以生成调试信息(I2C Core debugging messages)。

下一个驱动生成额外的I2C调试信息(I2C Algorithm debugging messages)。

引用Linus Torvalds的话:Linux中没有原始设备的原因似乎我个人任何原始设备是一个愚蠢的注意。

下面的驱动会使I2C驱动生成调试信息(I2C Bus debugging messages)。

接下来,我们有串行外设接口(Serial Peripheral Interface)支持(SPI support)。SPi是一种用于SPI总线的同步串行协议。

在这之后,有一个驱动用于高速同步串行接口(High speed synchronous Serial Interface support)支持(HSI support)。HSI是一种同步串行协议。

PPS同样在Linux内核中支持(PPS support)。

"IP-over-InfiniBand"驱动支持IP包通过InfiniBand(译注:一种无限带宽技术)传输。

在这之后,有一个调试驱动用于IP-over-InfiniBand(IP-over-InfiniBand debugging)。

SCSI的RDMA协议同样可以通过InfiniBand传输(InfiniBand SCSI RDMA Protocol)。

这里同样有一种通过InfiniBand传输iSCSI协议的扩展(iSCSI Extensions for RDMA (iSER))。

有时候,错误发生在了整个系统必须知道的核心系统中(EDAC (Error Detection And Correction) reporting)。这个驱动发送核心给系统。通常地,这类底层错误由处理器中报告并接着由这个驱动让其他系统进程知道或者处理错误。

这个驱动提供了在老版本中的sysfs中使用的过时EDAC的支持(EDAC legacy sysfs)。

EDAC可以用来设置发送调试信息给Linux的日志系统(Debugging)。

引用Linus Torvalds的话:没有人可以第一次创造如此好的代码,除了我。

"Machine Check Exceptions"(机器检测异常)(MCEs)通过这个驱动被转化成可读的信息(Decode MCEs in human-readable form (only on AMD for now))。MCEs是由CPU检测到的硬件错误。MCEs通常触发内核错误。

将MCE解码成可读的形式的过程可以被注射用于测试错误处理(Simple MCE injection interface over /sysfs)。

下一个驱动允许错误在内存中被检测到并纠正(Main Memory EDAC (Error Detection And Correction) reporting)。

下面,还有很多用于特定设备组的检测和纠正错误的驱动。

引用Linus Torvalds的话:理论和实践有时会冲突。那这个发生时,理论输了。每次都是。

现在我们可以进入实时时钟("Real Time Clock")。这通常缩写为"RTC"。RTC一直跟随着时间。

下面的设定允许用户在Linux系统中使用RTC时间作为"挂钟"时间(Set system time from RTC on startup and resume)。这个挂钟是我们在桌面上或者通过"date"命令看到的时间。

另外,挂钟可以通过NTP服务器得到时间并与RTC同步(Set the RTC time based on NTP synchronization)。

一些系统有几个RTC,所以用户必须设置哪一个是默认 (RTC used to set the system time)。最好设置第一个(/dev/rtc0)为主时钟。

可以设置RTC系统的调试特性(RTC debug support)。

RTC可以使用不同的接口给予操作系统当前时间。使用sysfs会需要这个驱动(/sys/class/rtc/rtcN (sysfs)),而似乎用proc需要这个驱动 (/proc/driver/rtc (procfs for rtcN))。特殊的RTC字符设备可以生成并使用 (/dev/rtcN (character devices))。shell命令"hwclock"使用/dev/rtc,所以RTC字符设备。

下一个驱动允许在/dev接口上模拟RTC中断(RTC UIE emulation on dev interface)。这个驱动读取时钟时间并允许新的时间从/dev中检索。

RTC系统可以通过测试驱动测试(Test driver/device)。

下面,我们会讨论直接内存访问系统。DMA是硬件独立于处理器的内存访问过程。DMA增加的系统性能因为处理器将做得更少如果硬件自身做了更多的任务。不然,硬件会等待处理器完成任务。

这是调试DMA系统的调试引擎(DMA Engine debugging)。

接下来,有许多的供货商/设备特定驱动用于DMA支持。

一些DMA通过这个驱动支持大端读取和写入(Use big endian I/O register access)。

大端指的是二进制码的排列。英语国家的数字系统将数字的最大端放在左边。比如,数字17,最左的数字是放置十位的地方大于个位。在大端中,每字节最大的放在左边。字节有8位。比如:10110100。每一处都有相应的值128、64、32、16、8、4、2、1。所以提到的为被转换成十进制180。

DMA系统可以使用网络减小CPU使用(Network: TCP receive copy offload)。

"DMA Test Client"用于测试DMA系统。

下一篇文章中,我们会讨论显示/视频驱动。谢谢!

参考:Linus Torvalds的引用来自于:http://en.wikiquote.org/wiki/Linus_Torvalds


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-17.4875/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

欢迎来到下一篇Linux内核文章。在本篇里,我们将讨论输入/输出端口。

首先,PS/2鼠标和AT键盘需要"i8042 PC Keyboard controller"驱动。在USB之前,鼠标和键盘使用圆形端口的PS/2端口。AT键盘是一种84键使用AT端口的IBM键盘。AT端口有5针而PS/2口有六针。

使用COM口(有时也称RS232串口)的输入设备需要这个驱动(Serial port line discipline)。COM是一种串口,意味着每次传输一位。

TravelMate笔记本需要这个特殊的驱动来使用连接到QuickPort的鼠标(ct82c710 Aux port controller)。

对于PS/2 mice、AT keyboards 和 XT keyboards的并口适配器使用这个驱动(Parallel port keyboard adapter)。

"PS/2 driver library"用于PS/2鼠标和AT键盘。

可以启用"Raw access to serio ports"来允许设备文件作为字符文件来使用。

下面,下面有一个用于"Altera UP PS/2 controller"的驱动。

PS/2复用同样需要一个驱动(TQC PS/2 multiplexer)。

ARC FPGA平台对于PS/2控制器需要特殊的驱动(ARC PS/2 support)。

注意:我想要说清楚这篇文章中讨论的PS/2控制器并不是Sony的PlayStation上的游戏控制器。这篇文章讨论的是6针鼠标/键盘端口。控制器是一种有PS/2端口的卡。

"Gameport support"提供对15针gameport的支持。gameport是一种曾经被很多游戏设备使用直到USB端口的发明的15针口。

下一个驱动是在ISA或者PnP总线卡上的gameport驱动(Classic ISA and PnP gameport support)。ISA代表"Industry Standard Architecture"(工业标准架构)并且它是一种在PCI之前的并行总线标准。PnP代表"Plug-and-Play"(即插即用)并且他是一种在ISA之前的通用标准。

"PDPI Lightning 4 gamecard support"提供了一个有gameport的游戏卡的专有驱动。

SoundBlaster Audigy卡是一种专有gameport卡(SB Live and Audigy gameport support)。

ForteMedia FM801 PCI音频控制器在卡上有一个音频控制器(ForteMedia FM801 gameport support)。这个驱动只支持gameport。

下一步,我们可以进入"Character devices"。字符设备以字符传输数据。

首先,可以启用/禁用TTY(Enable TTY)。移除TTY会节约很多空间,但是许多终端和这类设备需要TTY。除非你知道你在做什么,否则不要禁用TTY。

致我的粉丝:如果你知道一个禁用TTY的理由,你能在下面发表你的答案并与我们共享么?谢谢!

下一步,可以启用/禁用"Virtual terminals"(虚拟终端)。再说一次,这个可以节约很多空间,但是虚拟终端很重要。

下一个驱动支持字体映射和Unicode转换(Enable character translations in console)。这用于转换ASCII到Unicode。

虚拟终端可以用这个驱动作为系统控制台(Support for console on virtual terminal)。系统控制台管理着登陆和内核信息/警告。

虚拟终端必须通过控制台驱动与物理终端交互(Support for binding and unbinding console drivers)。在虚拟终端可用之前,控制台驱动必须被加载。当虚拟终端关闭后,控制台终端必须被卸载。

下一个驱动提供了对Unix98 PTY驱动的支持(Unix98 PTY support)。这是Unix98伪终端。

有趣的事实:Linux内核允许某个文件系统一次在很多地方被多次挂载。

接下来,可以支持"Support multiple instances of devpts"(译注:允许多个"devpts"文件系统实例)。devpts文件系统用于伪终端的slave。

过时的PTY同样可以启用(Legacy (BSD) PTY support)。

可以设置最大数量的使用中的过时PTS(Maximum number of legacy PTY in use)。

下面的驱动可以用于提供对其他驱动不支持的串口的支持 (Non-standard serial port support)。

下面有一些用于特定板和卡的驱动。

这个驱动支持GSM MUX协议(GSM多路复用)(GSM MUX line discipline support (EXPERIMENTAL))。

下一个驱动启用kmem设备文件(/dev/kmem virtual device support)。kmem通常用于内核调试。kmem可以用于读取某些内核变量和状态。

Stallion卡上面有许多串口Stallion multiport serial support)。这个驱动特别支持这块卡。

下面,我们可以进入到串行设备驱动了。如前所述,串行设备每次传输一位。

第一个驱动用于标准串口支持(8250/16550 and compatible serial support)。

在这个驱动下,即插即用(Plug-and-Play)同样存在于串口中(8250/16550 PNP device support)。

下面的驱动允许串口用于连接一个终端后作为控制台(Console on 8250/16550 and compatible serial port)。

一些UART控制器支持直接内存访问(DMA support for 16550 compatible UART controllers)。UART代表的是"Universal Asynchronous Receiver/Transmitter"(通用异步收发)。UART控制器转换串行到并行,反之亦然。

下一步,这个驱动提供了标准PCI串行设备支持(8250/16550 PCI device support)。

16位PCMCIA串行设备由这个驱动支持(8250/16550 PCMCIA device support)。记住,PCMCIA是一种通常使用于笔记本的PC卡。

可以设置最大数量支持的串口(Maximum number of 8250/16550 serial ports),接着是在启动中注册的最大数量(Number of 8250/16550 serial ports to register at runtime)。

为了扩展像HUB6的串行能力,启用这个驱动(Extended 8250/16550 serial driver options)。

一个特殊驱动用于支持多于4种的过时串口(Support more than 4 legacy serial ports)。

当启用这个驱动后,可以共享串口中断(Support for sharing serial interrupts)。

使用这个驱动可以自动检测串口中断请求(Autodetect IRQ on standard ports)。

RSA串口同样也在Linux内核中支持(Support RSA serial ports)。RSA代表的是"Remote Supervisor Adapter"(远程管理适配器)。RSA是一种IBM特定的硬件。

下面,有不同的供应商/设备特定驱动。

下面有一个使用printk输出用户信息的TTY驱动(TTY driver to output user messages via printk)。printk(print kernel)是一种通常打印启动信息的特殊软件。任何由printk显示的字符串通常在/var/log/messages文件里。shell命令"dmesg"显示所有被printk使用的字符串。

下面,我们可以启用/禁用并口打印机的支持(Parallel printer support)。

接下来的驱动允许打印机作为一个控制台(Parallel printer support)。这意味着内核消息会被逐字地由打印机打印。通常地在这个系列中使用"print"(打印)这个单词时,意味这将输出信息到屏幕上。而这次,字面上的意思是将数据输出在纸上。

以下的驱动使设备文件在/dev/parport/中(Support for user-space parallel port device drivers)。这使得一些进程可以访问。

再说一次,Linux内核有许多特性和驱动,所以我们还会在下一篇文章中继续讨论更多的驱动。谢谢!

致粉丝:我们正在接近配置过程的终点。我有一张你们很多人想知道的内核话题列表。这些话题包含了安装内核、管理模块、加入第三方驱动、还有许多其他有趣的建议和要求。


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-16.4835/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出