戴文的Linux内核专题:21 配置内核 (17)

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

首先"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系统。

原文发布时间为:2014-04-07

时间: 2024-10-25 08:00:14

戴文的Linux内核专题:21 配置内核 (17)的相关文章

戴文的Linux内核专题:25 配置内核 (21)

戴文的Linux内核专题:25 配置内核 (21) 大家好!本篇我们将会配置Linux内核的网络文件系统支持.网络文件系统是一个可以通过网络远程访问计算机的远程文件系统. 首先,"NFS client support"驱动允许linux系统使用NFS网络文件系统.这里还有3个不同版本的NFS - (NFS client support for NFS version 2). (NFS client support for NFS version 3). (NFS client supp

戴文的Linux内核专题:22 配置内核 (18)

戴文的Linux内核专题:22 配置内核 (18) 你好!准备好阅读下一篇文章了么?在本篇中,我们将会讨论辅助显示.辅助显示是一些小的LCD屏幕:大多数小于或等于128x64.接着,我们会讨论用户空间IO驱动,一些虚拟驱动,Hyper-V,开发中驱动,IOMMU,和其他一些内核特性. 第一个配置辅助显示的驱动是"KS0108 LCD Controller".KS0108 LCD Controller是由三星制造的图形控制器. 下面可以设置LCD并口地址(Parallel port wh

戴文的Linux内核专题:23 配置内核 (19)

戴文的Linux内核专题:23 配置内核 (19) 欢迎进入Linux内核系列文章的下一篇!我们正在接近配置过程的终点.在这篇文章中,我们将会讨论固件驱动和文件系统驱动. 这个分类中的第一个驱动是寻找启动盘(BIOS Enhanced Disk Drive calls determine boot disk).有时,Linux不会知道哪个盘是启动盘.这个驱动允许内核询问BIOS.Linux接着在sysfs上存储信息.Linux需要知道这些来设置bootloader. 即使BIOS EDD服务被编

戴文的Linux内核专题:26 配置内核 (22)

戴文的Linux内核专题:26 配置内核 (22) 你好!本篇我们将继续配置"kernel hacks",接着我们会配置整个安全系统. Alpha和s390处理器需要配置下一个特性(Force weak per-cpu definitions).这个特性修复了一个在这类处理器中普遍存在的寻址问题.其他的处理器无需启用这个特性. 内核转储可以用这个特殊的调试工具测试(Linux Kernel Dump Test Tool Module).这个软件会允许内核开发者触发一个假错误来导致内核转

戴文的Linux内核专题:16 配置内核 (12)

戴文的Linux内核专题:16 配置内核 (12) 欢迎来享受Linux内核配置系列下一部分.如你所猜到的那样,内核支持大量不同的硬件.协议和特性. 下一组我们要讨论的特性是"EEPROM support".电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory)是一种掉电或者意外关闭后不会擦除内容的存储器. 内核支持在I2C卡上的EEPROM芯片包括FRAMs.ROMs和SRAMs (I2C EEPROMs /

戴文的Linux内核专题:27 配置内核 (23)

戴文的Linux内核专题:27 配置内核 (23) 欢迎来到内核配置的下一章!本篇中我们会配置密码API,虚拟化和运行库.密码学指的是在需要的计算机之间加密和安全通信的科学.用户可能加密数据以保证是收件人而不是黑客收到数据. Linux内核需要在内核中启用"Cryptographic algorithm manager"(密码算法管理器).这个特性提供了操作内核的加密特性所需的软件. 当启用这个它,用户空间提供了配置加密特性(Userspace cryptographic algori

戴文的Linux内核专题:05 配置内核 (1)

现在我们已经了解了内核,现在我们可以进入主要工作:配置并编译内核代码.配置内核代码并不会花费太长时间.配置工具会询问许多问题并且允许开发者配置内核的每个方面.如果你有不确定的问题或者特性,你最好使用配置工具提供的默认值.本系列教程会使读者逐步了解配置内核的整个过程. 配置代码前需要在源文件的文件夹内打开一个终端.当终端打开后,基于你喜好的配置界面,这里有几种不同的配置方法: make config - 纯文本界面 (最常用的选择). make menuconfig - 基于文本彩色菜单和单选列表

戴文的Linux内核专题:28 编译与安装

戴文的Linux内核专题:28 编译与安装 你好!在花费了大量的时间在配置你需要的内核后,你现在可以编译它了.源代码是纯文本形式的C代码.这对人来可读但是对机器可不是这样.编译会将代码转换成计算机可理解的一种称之为二进制码的形式(1是 [开],0 是 [关]).编译同样会将所有内核代码文件变成一个内核的文件. 为了编译内核,在内核源代码相同目录下,在终端内输入"make".这会花费一些时间.完成之后,必须通过"make modules"来编译模块.为了从一开始就简化

戴文的Linux内核专题:08 配置内核(4)

在这个第四部分里,我们将继续配置更多的设置和特性. 这里我们被问及关于"IBM Calgary IOMMU support (CALGARY_IOMMU)".这个选项将会提供对IBM xSeries x366和x460的IOMMU的支持.这也将让那些32位PCI的设备工作正常--在这些系统上不支持双地址周期(DAC : Double Address Cycle)--因为该系统设置在访问超过3GB内存的时候会有问题.如果需要这些IOMMU设备可以用"iommu=off"

戴文的Linux内核专题:09 配置内核(5)

Linux内核拥有许多可以配置的特性,接下来我们还有许多要配置. 下一个可以配置的特性是x86的随机数生成器(x86 architectural random number generator (ARCH_RANDOM)).记住,我们现在配置的是针对AMD64系统的内核代码.这个随机数生成器使用Intel x86的RDRAND指令.这并不通用,所以为了一个更轻量的内核我禁用了它. 接着,我们可以启用或者禁用"Supervisor Mode Access Prevention (X86_SMAP)