Linux内核配置菜单中文手册2.6.28
By ti8er | 12月 10, 2008
vim查找中文和英文
By ti8er | 11月 27, 2008
[^\x00-\xff] 匹配任意中文字符
把^去掉则匹配任意英文字符(非中文字符)
[\x00-\xff]
Xorg修改屏幕色深
By ti8er | 10月 29, 2008
命令:
startx — -depth 16
man startx
查看更多选项。
Xorg -help查看更多可用选项。
BLFS-CN半成品
By ti8er | 10月 27, 2008
给LaTeX CJK增加文泉驿正黑字体
By ti8er | 10月 19, 2008
这里是TeX中文高级功能:给自己BLFS下的 LaTeX CJK增加新字体:
上面已经提到了,给自己的LaTeX增加字体的简单方法,就是去网站上下载现成的字体包来安装。
如果你对那个新宋体(nsung)和新楷体(nkai)感到相当讨厌,想换自己喜欢的字体,那么该怎么办?
下面就来示范,如何在CJK中添加自己喜欢的文泉驿正黑体0.6.26祈祷版(UTF8编码)。
范例中的命令都是参考命令,请根据自己的路径和系统情况修改。
首先,假定你已经按照前面的方法(参看BLFS中文配置),安装好了LaTeX + CJK + (nsung + nkai 字体)。
一、安装fontforge字体管理程序
下载后解压,然后
./configure
make && make install
就可以安装到默认的地方:/usr/local/bin
这时你要确保你的PATH中已经有了/usr/local/bin这个路径,没有的话加上去。或者你在configure前面增加–prefix参数安装到别的地方也可以。
输入命令
fontforge -v
测试一下安装正确没有。
二、下载文泉驿正黑0.6.26祈祷版
http://downloads.sourceforge.net/wqy/wqy-zenhei-0.6.26-0.tar.gz?use_mirror=osdn
解压后,把ttf文件拷贝到相应的地方。假设你即将工作的目录为~/xfont:
cp *.ttf ~/xfont -v
三、拷贝CJK的工具脚本到工作目录
找到你之前CJK的解压目录,想想你当时解到了什么地方,不行就重新下载一个CJK来解压。
相关的工具脚本在CJK目录的:
utils/subfonts
目录下,我们目前需要的脚本为: subfonts.pe
参考命令:
cp ~/cjk-4.8.1/utils/subfonts/subfonts.pe ~/xfont -v
四、获得UTF8编码的通用字体规则包
因为我们要增加的是UTF8编译的字体包,所以需要一个UTF8编码的字体规范。这个包叫做:
Unicode.sfd
获取地址:
http://cvs.savannah.gnu.org/viewvc/freetype/freetype1-contrib/ttf2pk/data/
里面有很多规范包,UTF8的规范是Unicode.sfd;如果你需要GBK字体,那么下载相应的包。
下载后,把这个包拷贝到工作目录:
cp Unicode.sfd ~/xfont -v
五、开始生成元字体文件(注意:时间非常长!)
这时候,你的工作目录下,应该有三个文件:
Unicode.sfd
subfonts.pe
wqy-zenhei.ttf
输入下面的命令,将会自成LaTeX需要的相关元字体文件:
fontforge -script subfonts.pe wqy-zenhei.ttf wqyzh Unicode.sfd
这个命令运行的时间很长。
在我的垃圾笔记本上(Pentium M 1.7G HZ, 256MB 内存),时间为10个小时!
在我同事最新的豪华联想品牌机上(Pentium dual E2200 2.2 GHz*2,1G内存),需要的时间为24分钟37秒!
(我目前正在教她学Linux。注意,是:她!)
你可以这样来测试这个命令需要的时间:
time { fontforge -script subfonts.pe wqy-zenhei.ttf wqyzh Unicode.sfd ; }
这可以检验你的机器有多么好(或者是多么垃圾)
执行完毕后,将在你的工作目录生成600多个元字体文件(准确说应该是641个文件),注意观察元字体文件的类型,有tfm、enc、pfb、afm等4种文件。
六、制作映射包map
相关命令:
for i in *.tfm
do
cat >> wqyzh.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done
这时会在你的工作目录下生成wqyzh.map
md5sum wqyzh.map
5d78a9a096d7e4f9e30327fbd8e9110b wqyzh.map
这是我的校验码。
七、制作fd文件包c70wqyzh.fd
文件名:c70wqyzh.fd
内容为:
% This is c70wqyzh.fd for CJK package.
% created by Liu
% 2008-10-19 12:29
%
\ProvidesFile{c70wqyzh.fd}
\DeclareFontFamily{C70}{wqyzh}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{wqyzh}{m}{n}{<-> CJK * wqyzh}{}
\DeclareFontShape{C70}{wqyzh}{bx}{n}{<-> CJKb * wqyzh}{\CJKbold}
\endinput
这是我照抄c70nsung.fd内容的。大家可以参考一下,nsung和nkai的fd文件包应该放在:
~/texmf/tex/latex/CJK/UTF8/
目录下。还有一个fdx文件,我看说明是用了CJK的另一个工具生成的,也在utils/subfonts目录下,名为:makefdx.pl
我不太清楚这个包的作用,也照抄过来了,只是把里面所有的nsung 改为了wqyzh。
可以用sed来改
cp ~/texmf/tex/latex/CJK/UTF8/c70nsung.fdx c70wqyzh.fdx
sed -i ’s/nsung/wqyzh/g’ c70wqyzh.fdx
八、把所有元字体文件和map、fd、fdx文件放在相应的目录下
不难找到,前面安装的nsung字体,相应的文件都放置于目录
~/texmf/fonts和~/texmf/tex下了。我们只要照抄就可以了。
参考命令:
mkdir -v ~/texmf/fonts/type1/CJK/wqyzh
mkdir -v ~/texmf/fonts/tfm/CJK/wqyzh
mkdir -v ~/texmf/fonts/enc/CJK/wqyzh
mkdir -v ~/texmf/fonts/afm/CJK/wqyzh
cp -v *.pfb ~/texmf/fonts/type1/CJK/wqyzh
cp -v *.tfm ~/texmf/fonts/tfm/CJK/wqyzh
cp -v *.enc ~/texmf/fonts/enc/CJK/wqyzh
cp -v *.afm ~/texmf/fonts/afm/CJK/wqyzh
cp -v wqyzh.map ~/texmf/fonts/map/dvips/CJK/
cp -v c70wqyzh.fd{,x} ~/texmf/tex/latex/CJK/UTF8/
九、重整TeX字体数据库
首先运行texhash刷新字体库:
texhash
然后把map映射文件加入:
updmap –enable Map wqyzh.map
十、测试
用一个简单的tex文件来测试一下文泉驿字体安装好了没有:
\documentclass[12pt]{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{wqyzh}
这里是测试文泉驿正黑字体
\end{CJK}
\end{document}
如果成功执行的话,就说明你的字体安装成功了!
附件为字体测试PDF,大家可以比较。
Linux Kernel 2.6.26.4中文菜单手册
By ti8er | 10月 9, 2008
BLFS中文环境配置
By ti8er | 10月 5, 2008
BLFS中文环境配置PDF
http://ti8er.blog.ubuntu.org.cn/files/2008/10/blfs-chinese.pdf
裸机源码LINUX,做你从未做过的事(LFS+BLFS for UBUNTU菜鸟)
By ti8er | 09月 22, 2008
用UBUNTU已经两年了。从DAPPER-6.06到现在的HARDY-8.04(只用了一个月就不用了)。自我感觉开始的时候LINUX技术突飞猛进,一段时间后进展非常缓慢。觉得自己还是一个菜鸟级的初学者,也觉得UBUNTU掩盖了LINUX的很多东西,我用的只是它的外壳,然后动动鼠标打打命令而已。而且用UBUNTU你甚至都不用打命令,用新立得什么都装好了。后来我不满足于现状,慢慢学会了用dpkg来编译和打包内核。后来想想,能不能直接在一台全新的机器上(也就是裸机),从源码开始一步步编译出内核,进而编译出整个系统呢?
上网找了资料,很快就找到了,这就是LFS(linux from scratch,从零开始LINUX)。
相关的资料,网上都非常齐全。LFS的官方网站是
http://www.linuxfromscratch.org
上面有6.3版本的英文手册。
在国内有6.2版本的中文翻译手册,网址是
http://lamp.linux.gov.cn/Linux/LFS-6.2/index.html
国内还有一个比较不错的网站:
http://www.magiclinux.org
可能你会说:我已经有UBUNTU了,何必要费功夫去折腾源码LINUX?现在的UBUNTU已经将我折磨得够受了,声卡不响,显卡不行。
我可以告诉你,只要你完成了LFS,你的声卡和显卡问题根本就算不上什么问题。对于以上的问题,我摘录了LFS6.2中文手册的序言的部分内容,请大家阅读。希望这个摘录没有侵权。
-------------------------------------
为什么要读这本书呢?有许多原因,最主要的原因是可以学习如何直接从源代码安装一个 linux 系统。许多人也许会问:”当你可以下载和安装一个现成的 linux 系统时,为什么要如此麻烦地从源代码开始手动构建一个 linux 系统呢?”这是一个好问题,也是本书存在本节的原因。
LFS 存在的一个重要原因是可以帮助人们学习 linux 系统内部是如何工作的。构建一个 LFS 系统会帮助演示是什么使 linux 运转,各种组件如何在一起互相依赖的工作。最好的事情之一通过这种学习可以获得完全根据自己的需求定制 linux 系统的能力。
LFS 的一个关键的好处是它让用户对于系统有更多的控制,而不是依赖于他人的 linux 实现。在 LFS 的世界里,你自己坐在司机的位置,掌控系统的每一个细节,比如目录布局和启动脚本配置等等。你也能掌控在哪里、为何、以及怎样安装每一个程序。
LFS 的另一个好处是可以创建一个非常小巧的 linux 系统。当安装一个常规的发行版时,人们经常要被迫安装一些可能永远不会用到的程序。这些程序浪费宝贵的磁盘空间,或更糟的是占用 CPU 资源。要构建一个少于100兆(MB)的 LFS 系统并不困难,这比目前大多数的发行版要小很多。这听起来是不是仍然占用太多空间?我们中的一些人专注于创建非常小的嵌入式 LFS 系统。我们成功的构建了一个只运行 Apache 服务器的系统,大约占 8MB 磁盘空间。进一步的缩减能够减至 5MB 或更少。你用一个常规的发行版试试?!这也只是设计你自己的 linux 所带来的好处之一。[译者注]关于如何构建这样的 Apache 服务器系统的详情,请参见 youbest 兄的两篇大作”做一个功能单一,体积小巧的LFS[5M]“和”我们可以做的更小!《功能单一,体积小巧的LFS》续篇[600K]“。此外,本文译者金步国也有一篇文章《DIY一个实用的 mini-LAPP 服务器》[15MB],详细讲述了如果从源代码编译一个既实用又小巧的 Linux + Apache + PHP + PostgreSQL + OpenSSH + Iptables 服务器,如果你对服务器情有独钟,也很值得参考。
我们可以拿 linux 发行版与快餐店出售的汉堡打比喻,你不能决定自己正在吃的是什么。相反,LFS 没有给您一个汉堡。而是给您一张制作汉堡的配方。用户可以查阅配方,减掉不想要的配料,增加你自己的配料以增强汉堡的口味。当你对配方满意时,开始去制作它,您可以采用任何你喜欢的方式:或烤、或烘、或炸、或焙。
另外一个比方是把 LFS 与建筑房子比较。LFS 提供房子的框架蓝图,但是需要您自己去建筑它。LFS 包含了在这过程中调整计划的自由以及定制满足用户需求的参考。
自己定制 linux 系统的另一个好处是安全性。通过从源码编译整个系统,您能够审查任何东西,打上所有的安全补丁,而不需要等待别人编译好修补安全漏洞的二进制包。除非是您发现并制作的补丁,否则您无法确保新的二进制包一定被正确编译并修正了问题。
Linux From Scratch 的目标是构建一个完整的、可以使用的基础系统。不想构建自己的 linux 系统的读者,不会从本书中获益[译者不太赞同这句话,借用 d00m3d 的一句忠告:”對任何想深入了解的 Linux 愛好者,不論你現用哪個發行版,最少都應該做一次 LFS ,一定會終身受用的。”]。如果您仅仅想了解计算机启动的时候做了什么,我们推荐您查看 “From Power Up To Bash Prompt” HOWTO 文档,中文版位于 从按下电源开关到bash提示符 ,英文原版位于 http://axiom.anu.edu.au/~okeefe/p2b/ 或者 linux 文档工程(TLDP)网站 http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html 。那个 HOWTO 构建了一个类似本书的系统,但是它的焦点仅仅限制在创建一个能够启动并进入到 BASH 提示符的系统。 想想您的目标,如果您想构建一个实用的 linux 系统并通过这种方式进行学习,那么本书是您的最佳选择。
构建您自己的 LFS 系统的若干原因以上都列出来了。本节只是冰山一角。随着您 LFS 经验的增长,您将会发现 LFS 真正带给您的信息和知识的力量。
----------------------------------------------
我这里以一个初学者的身份再进一步的补充说明几个简单问题(作为初学者扫盲),以及6.3英文官方手册的几个BUG(一定要看),余下的部份大家去看看上面的网站就可以了。
1、我在一个操作系统(如UBUNTU)下载了LINUX内核源码,现在可以删除这个操作系统,开始用这个源码启动机器了吗?
回答:当然不行。源码只是文本文件,而机器是只认二进制文件的(也就是XP下的.exe可执行文件),如果二进制文件用于启动机器的话,将有着更严格的要求。你需要用一个工具来编译这些源码,使之成为内核二进制文件,同时还要进行一些相关操作才可以用它来启动机器。
2、LFS的原理是什么?是怎么操作的?
回答:LFS的基本原理是,在现有的具有编译能力(或者叫开发能力)的操作系统上,或者用可启动的具有编译能力的光盘,编译出全新的开发环境,然后在这个全新的开发环境,编译出相关的程序和内核,最后用这个内核启动机器。
具体的操作,可以看看官方的手册就明白了。
3、我已经会在UBUNTU下编译和安装内核,这和用LFS方式安装的内核有什么不同?
回答:你在UBUNTU下编译和安装的内核,利用了UBUNTU的编译工具和库文件,在用这个内核启动时,又用了UBUNTU下的应用程序和工具,因此和LFS相比有一些“不正宗”,或者叫“出老千”。而且在UBUNTU下编译内核的步骤是如此简单,用make-kpkg能够轻松创建内核。除了能够熟悉内核的配置选项以外,你几乎学不到其他的东西了。当然并不是说在UBUNTU下编译内核不重要,恰恰相反,这是你走向LFS的关键一步。因为LINUX内核的菜单,要熟悉它本身就是一项浩大的工作。
如果你学过编译内核,那么LFS对你是驾轻就熟。如果没有学过也没有关系,一步步来,照样能够完成工作。
如何在UBUNTU下编译内核,可以看这:http://forum.ubuntu.org.cn/viewtopic.php?f=50&t=34172
4、LFS不是也用到了现有的开发环境吗?和上面提到的有什么不同?
不同点是,LFS是先利用现有的开发环境,构建出新的开发环境,然后才用这个新的开发环境编译内核,并且编译相关的程序。在你最终完成并用新内核启动机器时,里面的东西全部都是你一步步从源码编译来的东西,没有一样是直接从UBUNTU上拿来用的。
5、这里是对LFS的比较详细的解释:
LINUX下所有的应用程序,不外乎是由配置文件(etc)、库文件(lib)、程序文件(bin)组成。而要生成这个应用程序,你需要源代码,同时需要一个开发环境,由连接器、编译器、库文件组成。
编译器将源代码编译为二进制代码,它本身也是程序,所以需要库文件;连接器告诉编译器连接到哪个库文件,同时将编译器产生的结果输出给机器执行。连接器本身也是程序,也需要库文件。因此可以知道,库文件是很重要的。在LFS里,库文件是GLIBC,编译器是GCC,连接器是Binutils(它是一个程序包,其中真正用于连接的程序是ld)。
LFS的运作过程:
假设你现有的环境为A,制作的开发环境为B,最终的环境为C。
那么,一开始,先用库文件A/编译器A/连接器A,制作出了连接器B。
我在这表示成:LIB-A+GCC-A+LD-A==>LD-B
然后用库文件A/编译器A/连接器B,制作出编译器B。
就是:LIB-A+GCC-A+LD-B==>GCC-B。
然后是用库文件A/编译器B/连接器B,制作出库文件B。
LIB-A+GCC-B+LD-B==>LIB-B
由于编译器GCC-B和连接器LD-B都用了原系统的LIB-A,所以不是“纯种”的。而新生成的库LIB-B在编译完LD-B和GCC-B后,将会进行一个重定向,使得它并不依赖于原来系统的库,所以是相对“纯正”的。一定要注意这点!这里是关键的转折点。
新的库文件仅仅是依赖于你要编译的新的内核头文件。同时要认识到你编译出的库文件,除非你没有给它指定内核的头文件,不然它都不会依赖和利用原系统的东西,因为,库文件不是“程序”!
这时候,编译器B/连接器B/库文件B都做好了。但是我们知道,这编译器和连接器不正宗。需要进行“过滤”处理:
这时,用编译器B利用库文件B自己再一次编译编译器B,这回利用的是新的正宗的库文件B。
LIB-B+GCC-B+LD-B==>GCC-B2
然后是连接器
LIB-B+GCC-B2+LD-B==>LD-B2
这时新生成的编译器和连接器,都用了新的库文件。我们可以认为它们是正宗的了。其实,这时候它们已经和原来的系统脱离关系了。
接下来,我们会用到一个虚根环境。这是一个利用现有系统的硬件来运行,但是所有的程序和库和配置文件都独立于原系统的环境。之所以用这个环境,是因为内核还没有被编译,很多应用程序还没有编译,机器还是不能启动的。为了使用这个虚根环境,会用LIB-B+GCC-B2+LD-B2这套开发工具编译出很多新的程序。
这时候不知道你会不会问:既然新的一套工具出来了,我直接编译内核不就得了?还那么麻烦?是的,我开始也这么想的,同时也是这么做的。我也建议好奇心强的LINUX FANS这么做看看是什么结果。
结果我可以告诉你:内核是编译好了,也可以启动内核,但是却没有办法控制。为什么?因为你没有BASH这个控制台。
你这时是不是才恍然大悟:天啊,我以为一个内核就能够完全开机并操作的呢!
内核启动了,需要一个init程序来进行初始化。
这个init就是所谓的“根进程”。没有这个程序,一切程序都无法运行。然后这个进程开始挂载、运行相应的程序。比如BASH。有了BASH还不行。BASH只是一个外壳(SHELL),它没有任何东西,比如我们经常打的ls命令,根本没有。因为ls本身就是个程序文件!还有mkdir等等命令,全部都是程序文件,都没有。也没有办法控制机器。因此这些程序全部都要从源码编译出来。
这时你可能还会问,为什么要用虚根环境?我直接在现有的环境下编不就成了?反正我用的是新的开发工具。
原因是:如果你没有搞好设置,新的开发工具可能还是会用到原有系统的东西,甚至会把编译好的程序安装到原来的系统,从而能破坏原来的系统。当然如果你非常清楚如何进行每一项设置的话是可以的,但是你有这样的水平,你用的估计已经就是你自己做出来的LFS系统了。为了避免不必要的麻烦(重定位程序、连接器等等操作是非常复杂的),才会使用虚根环境,直接与原系统隔离。
有了虚根环境,还会再一次编译库文件。这是因为之前编译的LIB-B是经过重定位装在别的地方的(可见重定位的麻烦),
你要编译一个新的没有重定位的库文件,装在默认的地方,以便将来你的程序都可以利用它。这时生成了LIB-C。
LIB-B+GCC-B2+LD-B2==>LIB-C。
然后,编译GCC和LD,将它们之前的重定位去掉。
LIB-C+GCC-B2+LD-B2==>LD-C
LIB-C+GCC-B2+LD-C==>GCC-C
这时候,最终的开发环境大功告成了。
现在,把所有内核启动需要的程序都进行编译。比如init,比如bash等。最后编译内核。设置好GRUB后用新内核、新程序
启动机器。至此,LFS工作全部完成。
6、在进行LFS时需要注意的关键地方和LFS6.3手册的一些BUG
第一,你需要注意的地方是你的环境变量PATH。你可以用命令:
echo $PATH
来查看。如果你和LFS手册一样建立的是/mnt/lfs/tools和/tools,那么你要确保:
在进入虚根环境之前,PATH的第一个必须要是/tools/bin,
如:
PATH=/tools/bin:/bin:/usr/bin
就是正确的。
在进入虚根环境之后,PATH的/tools/bin必须要是最后一个。
如
PATH=/bin:/usr/bin:/tools/bin
原因是PATH决定着系统在调用应用程序时的优先级,比如系统里同时有两个GCC,那么它会先用PATH排在前面的那个。这在LFS中被用来进行重定向了。如果你排错了顺序,那么将会用错程序,后面的步骤就会失败。
官方手册在第4章“设置工作环境”时,第一行的.bash_profile文件中没有将PATH进行设置,这是严重错误的地方,导致我第一次编译时失败,找了好久才找到原因。
因此,任何时候,都要确保你的PATH设置正确。
第二,你需要注意的是,如果你用的不是官方提供的2.6.22内核,而是用了更新的内核,比如我用了2.6.26.4。那么
这两个内核的头文件是不一样的。其中,2.6.26的内核在asm/目录下少了一个page.h的头文件。这个文件perl会用到。
因此为了欺骗perl,我拷贝了这个文件过来。新的内核用的机制有所不同,因此估计要等perl6出来了,我才可以删除这冒牌的头文件。
第三,官方的手册是6.3版本,上面的中文手册是6.2版本。这里面有一些地方是不太一样的。因此你要特别注意。
第四,没事不要用root来操作。这是为了防止出错毁掉你现在的系统。比如我进入了/mnt/lfs目录,想删除里面的bin目录,我了rm -fr /bin想删除,提示权限不够。这时我才发现,我打的是/bin,而不是bin。前者是“根目录”下的bin目录,后者是“当前目录”下的bin目录,这两个的差别是相当巨大的!我庆幸我使用的不是root,而是用了另外的用户名。否则现有的系统将由于失去了关键的二进制文件而直接崩溃!如果不信你试试!
第五,为了提高成功率,强烈建议用LFS官方的livecd6.3来开展工作。里面有所有需要的软件。而且就算你误操作删除了系统也不要紧,因为光盘是只读的,重启就又恢复了。(在光盘启动后输入startx会进入图形界面)
好了。你经过努力,终于完成了你的LINUX系统。其中不知道误操作了多少回,英文看不太懂猜了多少回。反正过程很艰苦,结果很幸福。
新系统和原来系统相比,有何优点?
速度!就是速度!
我的是华硕的笔记本,256MB内存,Intel Pentinum M 735,很垃圾的配置吧?但是就是这样一个垃圾机器,编译LINUX内核用了6分钟。而我之前在UBUNTU下用make-kpkg编译内核的时候,128MB的机器用了4个小时。512MB内存,双核CPU联想品牌机用了35分钟。就是这个区别。
还有一个区别,就是小巧,我的新内核只有2.7MB,其他应用程序只有40来MB。当然现在硬盘大了也无所谓了。
接下来你可能还是不会满足,因为现在这个系统是命令行模式的,没有图形桌面,也不能看网页(没有装W3M)。
那么,进入下一章,就是BLFS,Beyond linux from scratch,超越LFS。
BLFS教你怎么在建立好LFS后,配置系统,安装相关的软件,构建X桌面平台等等。这一章就比较灵活和广泛,在你有了前面LFS的基础后,这些都是简单的工作了。
其中要说的一点就是,如果你不想装KDE和GNOME桌面,而是装XFCE桌面的话,比如我,那么去www.xfce.org下载软件包,一项项编译安装就可以了。如果要在XFCE中使用SCIM输入法的话,在BLFS的wiki上可以查到。
对于一个从源码安装了LINUX的人来说,安装和使用SCIM只是学好了武功,小试牛刀而已了。
在进行BLFS时候的小技巧:
如果你这时候打算完全使用自己建立的LFS,不使用LIVECD了,那么你首先需要装上w3m这个网页文本浏览器。因为LFS本身没有安装网页浏览器,也无法使用图形浏览器。浏览器的使用可以看UBUNTU上的WIKI。要装w3m,你需要libssl和libgpm,自己想办法去搞到,在ubuntu.cn99.com/ubuntu上有下载的。我是先装了DPKG软件后,用DPKG直接安装deb包的。
在文本模式下如何复制粘贴:
你用w3m看英文的BLFS手册时,可能会发现这个命令相当长,想要复制粘贴。我是这么做的:先按S将当前网页保存到temp.txt文件,然后切控制台(你也可以用ctrl+z将w3m丢到后台,操作完成后用fg命令调回w3m,不过我喜欢切控制台,反正有6个。用ctrl+alt+F1-F6来切),切控制台后用vim来打开temp.txt,用v键可视化来选择相应的命令,选好后用:w temp写入temp文件(如果temp已经存在,用:w! temp强制写),然后ctrl+z放VIM到后台,用命令source temp就运行复制的命令了。别忘记了vim还在后台,你fg调出来,又可以继续复制运行这个网页上的所有命令了。
你看着是不是很头大?复制粘贴运行命令那么麻烦?可能是我本人没有找到更好的方法吧,但是我熟练后觉得并不慢,因为vim本身就是一个操作起来相当快速的编辑器。如果有人找到了更好的方法,麻烦贴出来给大家分享。
安装SCIM相应的网页:
http://wiki.linuxfromscratch.org/blfs/wiki/InputMethods
最后,可能你想要一个和UBUNTU差不多的系统,可以用DPKG和APT来管理软件包。我一开始也是这么想的。
于是我安装了DPKG,但是运行不了,需要sysv软件包的内容,于是我下载了sysv的软件包,发现只有.deb包的,没有tar压缩包的,弄了好久才发现dpkg用不了,但是dpkg-deb可以用来解deb包的(dpkg-deb -x命令)。于是解压后把相关程序拷贝
到了相关地方,dpkg可以用了!运行得和UBUNTU下一模一样。安装好包之后,用dpkg -l可以清楚地列出所有安装好的软件包。
我系统上用的wget和w3m就用了UBUNTU版本的(建议用dapper版本,hardy版本需要更新的glibc,意味着你需要编译新的库文件),但是我安装的APT不能用,提示无法识别系统的包类型。如果不能用APT,而仅仅用dpkg来安装出X桌面的话,意味着你要下载300多个.deb的包。。。。
后来我看了apt的源代码,发现在init.cc中有一段对系统进行判断。我想改掉内核的版本代码(改为ubuntu),来欺骗apt,没有成功。
我又想改掉apt的代码,不过由于本人的C++水平如此之烂,导致改变的代码不能用。后面只能放弃安装apt了。要是你C++厉害的话,估计这不成问题。
即使没有APT,用dpkg来安装一些简单的包也是不错的了。
做你从未做过的事,想怎么样就怎么样,这就是LINUX的魅力所在。最后,祝广大的UBUNTU初学者功力能够更进一层,早日成功!
Linux内核配置选项2.6.19.1
By ti8er | 04月 4, 2008
内容目录
1. Code maturity level options 2
2. General setup 常规安装选项 2
3. Loadable module support 引导模块支持 5
4. Block layer 6
5. Processor type and features 处理器类型及特性 8
6. Power management options (ACPI, APM) 17
7. Bus options (PCI, PCMCIA, EISA, MCA, ISA) 总线选项 22
8. Executable file formats 24
9. Networking support 网络支持。 25
10. Device Drivers 设备驱动 47
11. File systems 文件系统 82
12. Instrumentation Support 测试用的支持项目 86
13. Kernel hacking 内核调试。 86
14. Security options 安全选项。 88
15. Cryptographic options 密码选项。 88
16. Library routines 常规的库。 95
说明1:
文字中的Y表示选择进内核。M表示编成模块。N表示不选择。有的只能选Y,有的只能选M。
在make menuconfig 下,*表示Y,M表示M,空白表示N。
make xconfig下,√ 表示Y,· 表示M,空白表示N。
说明2:
菜单中,有的选项你选了Y才出现,有的选了Y,它反而不会出现。有的选项根本不会提供选择。所以我提供的菜单项应该不是最完整的设置选项。如果你碰到了新的选项,你可以认真看它的英文说明,或者通过上网搜索、在论坛提问等方式来了解它。
1. Code maturity level options
代码完成等级选项
1.1. Prompt for development and/or incomplete code/drivers
对开发中的或者未完成的代码和驱动进行提示。
LINUX下的很多东西,比如网络设备、文件系统、网络协议等等,它们的功能、稳定性、或者测试等级等等还不能够符合大众化的要求,还处于开发之中。这就是所谓的阿尔法版本:最初开发版本;接下来的是BETA版本,公开测试版本。如果这是阿尔法版本,那么开发者为了避免收到诸如“为何这东西不工作”的信件的麻烦,常常不会让它发布出去。但是,积极的测试和使用阿尔法版本对软件的开发是非常好的。你只需要明白它未必工作得很好,在某些情况有可能会出问题。汇报详细的出错情况对开发者很有帮助。
这个选项同样会让一些老的驱动的可用。很多老驱动在将来的内核中已经被代替或者被移除。除非你想要帮助软件的测试,或者开发软件,或者你的机器需要这些特性,否则你可以选N,那样你会在配置菜单中得到较少的选项。如果你选了Y,你将会得到更多的阿尔法版本的驱动和代码的配置菜单。
2. General setup 常规安装选项
2.1. Local version – append to kernel release
在你的内核后面加上一串字符来表示版本。这些字符在你使用uname -a 命令时会显示出来。你的字符最多不能超过64位。
2.2. Automatically append version information to the version string (LOCALVERSION_AUTO)
自动生成版本信息。这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。这需要Perl的支持。
由于在编译的命令make-kpkg 中我们会加入- – append-to-version 选项来生成自定义版本,所以这里选N。
2.3. Support for paging of anonymous memory (swap)
这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多的内存空间用来执行很大的程序。这个虚拟内存在LINUX中就是SWAP分区。除非你不想要SWAP分区,否则这里必选Y。
2.4. System V IPC (IPC:Inter Process Communication)
中间过程连接是一组功能和系统调用,使得进程能够同步和交换信息。这通常来说是好事,有一些程序只有你选择了Y才能运行 。特别地,你想在LINUX下运行 DOS仿真程序,你必须要选Y。
你可以用info ipc 命令来了解IPC。
一定要选Y。
2.4.1. IPC Namespaces (IPC_NS)
IPC命名空间,命名空间的作用是区别同名的东西,就比如李宁和张宁,都叫“宁”,加个姓才能区分。这个选项也是为不同的服务器提供IPC的多命名,达到一个IPC提供多对象支持的目的。不清楚的话选N。
2.5. POSIX Message Queues 可移植操作系统接口信息队列
可移植操作系统接口信息队列是IPC的一部分,在通信队列中有较高的优先权来保持通信畅通。如果你想要编译和运行在Solaris操作系统上写的POSIX信息队列程序,选Y,同时你还需要 mqueue 库来支持这些特性。它是作为一个文件系统存在(mqueue),你可以mount它。为保证以后的不同程序的协同稳定,如果不清楚,选Y。
2.6. BSD Process Accounting BSD进程统计
如果你选Y,用户级别的程序就可以通过特殊的系统调用方式来通知内核把进程统计信息记录到一个文件,当这个进程存在的时候,信息就会被内核记录进文件。信息通常包括建立时间、所有者、命令名称、内存使用、控制终端等。这对用户级程序非常有用。所以通常选Y是一个好主意。
2.6.1. BSD Process Accounting version 3 file format
选Y,统计信息将会以新的格式(V3)写入,这格式包含进程ID和父进程。注意这个格式和以前的 v0/v1/v2 格式不兼容,所以你需要升级相关工具来使用它。
2.7. Export task/process statistics through netlink (EXPERIMENTAL)
处于实验阶段的功能。通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N。
2.8. UTS Namespaces
通用终端系统的命名空间。它允许容器,比如Vservers利用UTS命名空间来为不同的服务器提供不同的UTS。如果不清楚,选N。
2.9. Auditing support 审计支持(AUDIT)
允许审计的下层能够被其他内核子系统使用,比如SE-Linux,它需要这个来进行登录时的声音和视频输出。没有 CONFIG_AUDITSYSCALL 时(即下一个选项)无法进行系统调用。
2.9.1. Enable system-call auditing support (AUDITSYSCALL)
允许系统独立地或者通过其他内核的子系统,调用审计支持,比如SE-Linux。要使用这种审计的文件系统来查看特性,请确保 INOTIFY 已经被设置。
上一项的子选项,两项要选就都选。我并不清楚审计的意义,可能是为了调用其他内核的东西吧。所以就都选了,因为我机器上还有个官方2.6.15-27内核。
2.10. Kernel .config support
这个选项允许.config文件(即编译LINUX时的配置文件)保存在内核当中。
它提供正在运行中的或者还在硬盘中的内核的相关配置选项。可以通过内核镜像文件 kernel image file 用命令 script scripts/extract-ikconfig 来提取出来,作为当前内核重编译或者另一个内核编译的参考。如果你的内核在运行中,可以通过/proc/config.gz文件来读取。下一个选项提供这项支持。
看起来好像是一个不错的功能,可以把编译时的 .config文件保存在内核中,以供今后参考调用。用来重编译和编译其他的内核的时候可以用上。你是一个编译内核的狂人的话,这项要选上(比如我,不过我总是会备份所有的 .config 文件)。
2.10.1. Enable access to .config through /proc/config.gz
上一项的子项,可以通过/proc/config.gz 访问当前内核的.config 。新功能,上一项选的话这个就选上吧。
2.11. Cpuset support
多CPU支持。这个选项可以让你建立和管理CPU集群,它可以动态地将系统分割在各个CPU和内存节点中,在各个节点是独立运行的。这对大型的系统尤其有效。
如果不清楚,选N。
2.12. Kernel->user space relay support (formerly relayfs)
内核系统区和用户区进行传递通讯的支持。这个选项在特定的文件系统中提供数据传递接口支持,它可以提供从内核空间到用户空间的大批量的数据传递工具和设施。
如果不清楚,选N。
2.13. Initramfs source file(s)
没有可选项。
2.14. Optimize for size (Look out for broken compilers!)
这个选项将在GCC命令后用 “-Os” 代替 “-O2″参数,这样可以得到更小的内核。警告:某些GCC版本会导致错误。如果有错,请升级你的GCC。
如果不清楚,选N。
这是优化内核大小的功能,没必要选。一个编译好的内核才7-10多M,大家不会少这么点空间吧。选上了可能会出一些问题。最好不选。
2.15. Configure standard kernel features (for small systems)
这个选项可以让内核的基本选项和设置无效或者扭曲。这是用于特定环境中的,它允许“非标准”内核。你要是选它,你一定要明白自己在干什么。
这是为了编译某些特殊用途的内核使用的,例如引导盘系统。通常你可以不选择这一选项,你也不用关心他的子选项。
3. Loadable module support 引导模块支持
3.1. Enable loadable module support
这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块,否则无法启动系统。在启动时不用到的功能,编成模块是最有效的方式。你可以查看MAN手册来了解:modprobe, lsmod, modinfo, insmod 和 rmmod.
如果你选了这项,你可能需要运行 “make modules_install” 命令来把模块添加到/lib/modules/目录下,以便 modprobe 可以找到它们。
如果不清楚,选Y。
3.2. Module unloading
这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选择了这个选项)。
如果不清楚,选Y。
3.2.1. Forced module unloading
这个选项允许你强行卸除模块,即使内核认为这不安全。内核将会立即移除模块,而不管是否有人在使用它(用rmmod -f 命令)。这主要是针对开发者和冲动的用户提供的功能。
如果不清楚,选N。
3.3. Module versioning support (MODVERSIONS)
有时候,你需要编译模块。有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。这有时可能会有点用。
如果不清楚,选N。
3.4. Source checksum for all modules
这个功能是为了防止你在编译模块时不小心更改了内核模块的源代码但忘记更改版本号而造成版本冲突。
如果不清楚,选N。
3.5. Automatic kernel module loading
允许内核自动加载模块。一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块。
如果不清楚,选Y。
4. Block layer
块设备。
4.1. Enable the block layer (BLOCK)
这选项使得块设备可以从内核移除。如果不选,那么 blockdev 文件将不可用,一些文件系统比如 ext3 将不可用。这个选项会禁止 SCSI 字符设备和 USB 储存设备,如果它们使用不同的块设备。
选Y,除非你知道你不需要挂载硬盘和其他类似的设备。不过此项无可选项。
4.1.1. Support for Large Block Devices (LBD)
如果你要用大于2TB的硬盘,选这个。
4.1.2. Support for tracing block io actions
对块设备进行跟踪和分析的功能。
4.1.3. Support for Large Single Files (LSF)
大文件支持。如果你准备建的文件大于2TB,选这个。
4.1.4. IO Schedulers 磁盘I/O调度器
I/O是输入输出带宽控制,主要针对硬盘,是核心的必須的东西。这里提供了三个IO调度器。
-
-
-
-
Anticipatory I/O scheduler
-
-
-
抢先式 I/O 调度方式是默认的磁盘调度方式。它对于大多数环境通常是比较好的选择。但是它和Deadline I/O 调度器相比有点大和复杂,它有时在数据调入时会比较慢。
-
-
-
-
Deadline I/O scheduler
-
-
-
Deadline I/O调度器简单而又紧密,在性能上和抢先式调度器不相上下,在一些数据调入时工作得更好。至于在单进程I/O磁盘调度上,它的工作方式几乎和抢先式调度器相同,因此也是一个好的选择。
看介绍这个好像比上面的更好,可以试试。不过按照我的平衡观点,好东西都会带来问题。
-
-
-
-
CFQ I/O scheduler
-
-
-
CFQ调度器尝试为所有进程提供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。
-
-
-
-
Default I/O scheduler 选择默认的I/O调度器
-
-
-
我选了Anticipatory I/O scheduler。
我这样理解上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。
期限式则是:所有的工作都有最终期限,在这之前必须完成。当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。
CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。
5. Processor type and features 处理器类型及特性
5.1. Symmetric multi-processing support (SMP) 对称多处理器支持。
这将支持有多CPU的系统。如果你的系统只有一个CPU,选N。反之,选Y。
如果你选N,内核将会在单个或者多个CPU的机器上运行,但是只会使用一个CPU。如果你选Y,内核可以在很多(但不是所有)单CPU的机器上运行,在这样的机器,你选N会使内核运行得更快。
注意如果你选Y,然后在Processor family选项中选择“586″ or “Pentium” ,内核将不能运行在486构架的机器上。同样的,多CPU的运行于PPro构架上的内核也无法在 Pentium 系列的板上运行。
使用多CPU机器的人在这里选Y,通常也会在后面的选项“Enhanced Real Time Clock Support”中选Y。如果你在这选Y,“Advanced Power Management” 的代码将不可用。
如果不清楚,选N。
5.2. Subarchitecture Type 子构架类型
-
-
-
PC-compatible
-
-
选这个如果你的机器是标准PC
-
-
-
AMD Elan
-
-
注意,如果你是 K6/Athlon/Opteron处理器不要选这个
-
-
-
Voyager
-
NUMAQ (IBM/Sequent)
-
Summit/EXA (IBM x440)
-
SGI 320/540 (Visual Workstation)
-
Generic architecture (Summit, bigsmp, ES7000, default)
-
Support for Unisys ES7000 IA32 series
-
-
5.3. Processor family
处理器类型。针对自己的CPU类型,选取相应的选项。
这里是处理器的类型。这里的信息主要目的是用来优化。为了让内核能够在所有X86构架的CPU上运行(虽然不是最佳速度),在这你可以选386。
内核不会运行在比你选的构架还要老的机器上。比如,你选了Pentium构架来优化内核,它将不能在486构架上运行。
如果你不清楚,选386。
-
-
-
- “386″
-
- “486”
-
- “586″
-
- “Pentium-Classic”
-
- “Pentium-MMX”
-
- “Pentium-Pro”
-
- “Pentium-II”
-
- “Pentium-III”
-
- “Pentium-4″
-
- K6, K6-II and K6-III
-
- “Athlon” K7 (Athlon/Duron/Thunderbird).
-
-Opteron/Athlon64/Hammer/K8
-
- “Crusoe”
-
- “Efficeon”
-
- “Winchip-C6″
-
- “Winchip-2″
-
- “Winchip-2A”
-
- “GeodeGX1″
-
- “Geode GX/LX”
-
- “CyrixIII/VIA C3″
-
- VIA C3-2 “Nehemiah”.
-
-
5.4. Generic x86 support
通用X86支持。
除了对上面你选择的X86 CPU进行优化,它还对更多类型X86 CPU的进行优化。这将会使内核在其他的X86 CPU上运行得更好。
对于供应商来说,他们非常需要这些功能,因为他们需要更通用的优化支持。
这个选项提供了对X86系列CPU最大的兼容性,用来支持一些少见的x86构架的CPU。如果你的CPU能够在上面的列表中找到,就里就不用选了。
5.5. HPET Timer Support
HPET时钟支持
允许内核使用 HPET 。HPET 是代替当前8254的下一代时钟,全称叫作高精度事件定时器。你可以安全地选Y。但是,HEPT只会在支持它的平台和BIOS上运行。如果不支持,8254将会激活。
选N,将继续使用8254时钟。
5.6. Maximum number of CPUs (2-255)
设置最高支持的CPU数,无法选择。我的显示为8。
5.7. SMT (Hyperthreading) scheduler support
超线程调度器支持
超线程调度器在某些情况下将会对 Intel Pentium 4 HT系列有较好的支持。
如果你不清楚,选N。
5.8. Multi-core scheduler support
多核调度机制支持,双核的CPU要选。
多核心调度在某些情况下将会对多核的CPU系列有较好的支持。
如果你不清楚,选N。
5.9. Preemptible Kernel 抢先式内核。
一些优先级很高的程序可以先让一些低优先级的程序执行,即使这些程序是在核心态下执行。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能。
下面有三个选项:
-
-
-
No Forced Preemption (Server) 非强迫式抢先。
-
-
这是传统的LINUX抢先式模型,针对于高吞吐量设计。它同样在很多时候会提供很好的响应,但是也可能会有较长的延迟。
如果你是建立服务器或者用于科学运算,选这项,或者你想要最大化内核的原始运算能力,而不理会调度上的延迟。
-
-
-
Voluntary Kernel Preemption (Desktop) 自动式内核抢先
-
-
这个选项通过向内核添加更多的“清晰抢先点”来减少内核延迟。这些新的抢先点以降低吞吐量的代价,来降低内核的最大延迟,提供更快的应用程序响应。这通过允许低优先级的进程自动抢先来响应事件,即使进程在内核中进行系统调用。这使得应用程序运行得更“流畅”,即使系统已经是高负荷运转。
如果你是为桌面系统编译内核,选这项。
-
-
-
Preemptible Kernel (Low-Latency Desktop) 可抢先式内核(低延迟桌面)
-
-
这个选项通过使所有内核代码(非致命部分)编译为“可抢先”来降低内核延迟。
这通过允许低优先级进程进行强制抢先来响应事件,即使这些进程正在进行系统调用或者未达到正常的“抢先点”。这使得应用程序运行得更加“流畅”即使系统已经是高负荷运转。代价是吞吐量降低,内核运行开销增大。
选这项如果你是为桌面或者嵌入式系统编译内核,需要非常低的延迟。
如果你要最快的响应,选第三项。我认为万物是平衡的,低延迟意味着系统运行不稳定,因为过多来响应用户的要求,所以我选第二个。
5.10. Preempt The Big Kernel Lock
抢先式大内核锁(早期Linux用于支持SMP系统时所采用的非细粒度锁)
这个选项通过让大内核锁变成“可抢先”来降低延迟。
选Y如果你在构建桌面系统。如果你不清楚,选N。
5.11. Machine Check Exception 机器例外检查
机器例外检查允许处理器在检测到问题(比如过热、组件错误)时通知内核。内核根据问题的严重程度来决定下一步行为,比如在命令行上打印告警信息,或者关机。你的处理器必须是 Pentium或者更新版本才能支持这个功能。 用cat /proc/cpuinfo来检测你的 CPU是否有mce 标志。
注意一些老的 Pentium 系统存在设计缺陷,会提供假的MCE事件,所以在所有P5处理器上MCE被禁用,除非在启动选项上明确 “mce”参数。同样地,如果MCE被编译入内核并在非标准的机器上导致错误,你可以用“nomce”启动参数来禁用MCE。
MCE功能会自动忽视非MCE处理器,比如386和486,所以几乎所有人都可以在这里选Y。
5.11.1. Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
检测AMD Athlon/Duron / Intel Pentium 4的非致命错误
允许这项特性,系统将会启动一个计时器,每5秒进行检测。非致命问题会自动修正(但仍然会记录下来),如果你不想看到这些信息,选N。这些信息可以让你发现要损坏的硬件,或者是非标准规格硬件(比如:超频的)。
这个功能只会在特定的CPU上起作用。
5.11.2. check for P4 thermal throttling interrupt.
检测P4节能器中断
当P4进入节能状态时,打印信息。
5.12. Toshiba Laptop support 东芝笔记本支持。
这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,可以直接设置BIOS。不过要注意它只在 Toshiba自己的 BIOS中起作用。假如你有一台Toshiba笔记本,而它的BIOS是Phoenix的,那这个选项仍然是无用的。
5.13. Dell laptop support
DELL笔记本支持。功能同上
5.14. Enable X86 board specific fixups for reboot
X86板的重启修复功能。
这将打开芯片或者主板上的重启修复功能 ,从而能够使之正常工作。这功能仅仅在一些硬件和BIOS的特定组合上需要。需要这项功能的征兆是重启时使系统卡死或者挂起。
目前,这个修复功能仅仅支持Geode GX1/CS5530A/TROM2.1.的组合。
选Y如果你需要这项功能,目前,选Y是安全的,即使你不需要它。否则,选N。
5.15. /dev/cpu/microcode – Intel IA32 CPU microcode support
是否支持Intel IA32架构的CPU。这个选项将让你可以更新Intel IA32系列处理器的微代码,显然你需要到网上去下载最新的代码,LINUX不提供这些代码。当然你还必须在文件系统选项中选择/dev file system support才能正常的使用它。如果你把它译为模块 ,它将是 microcode。
IA32主要用于高于4GB的内存。详见下面的“高内存选项”。
5.16. /dev/cpu/*/msr – Model-specific register support
是否打开CPU特殊功能寄存器的功能。这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。
5.17. /dev/cpu/*/cpuid – CPU information support
是否打开记录CPU相关信息功能。这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。
5.18. High Memory Support (4GB) 高容量内存支持
LINUX能够在X86系统中使用64GB的物理内存。但是,32位地址的X86处理器只能支持到4GB大小的内存。这意味着,如果你有大于4GB的物理内存,并非都能被内核“永久映射”。这些非永久映射内存就称为“高阶内存”。
如果你编译的内核永远都不会运行在高于1G内存的机器上,选OFF(默认选项,适合大多数人)。这将会产生一个“3GB/1GB”的内存空间划分,3GB虚拟内存被内核映射以便每个处理器能够“看到”3GB的虚拟内存空间,这样仍然能够保持4GB的虚拟内存空间被内核使用,更多的物理内存能够被永久映射。
如果你有1GB-4GB之间的物理内存,选4GB选项。如果超过4GB,那么选择64GB。这将打开 Intel 的物理地址延伸模式(PAE)。PAE将在IA32处理器上执行3个层次的内存页面。PAE是被LINUX完全支持的,现在的Intel处理器(Pentium Pro 和更高级的)都能运行PAE模式。注意:如果你选64GB,那么在不支持PAE的CPU上内核将无法启动。
你机器上的内存能够被自动探测到,或者你可以用类似于“mem=256M”的参数强制给内核指定内存大小。
-
-
-
off 如果不清楚,选OFF。
-
4GB 选这项如果你用的是32位的处理器,内存在1-4GB之间。
-
64GB 选这项如果你用的是32位的处理器,内存大于4GB。
-
-
5.19. Memory model 内存模式
5.19.1. Flat Memory 平坦内存模式。
这个选项允许你改变内核在内部管理内存的一些方式。大多数用户在这只会有一个选项:Flat Memory。这是普遍的和正确的选项。
一些用户的机器有更高级的特性,比如 NUMA 和内存热拔插,那将会有不同的选项。Discontiguous Memory(非接触式内存模式)是一个更成熟、更好的测试系统。但是对于内存热拔插系统不太合适,会被“Sparse Memory”代替。如果你不清楚“Sparse Memory”和“Discontiguous Memory”的区别,选后者。
如果不清楚,就选Flat Memory。
5.19.2. Sparse Memory 稀疏内存模式。
这对某些系统是唯一选项,包括内存热拔插系统。这正常。
对于其他系统,这将会被Discontiguous Memory选项代替。这个选项提供潜在的更好的特性,可以降低代码复杂度,但是它是新的模式,需要更多的测试。
如果不清楚,选择“Discontiguous Memory” 或 “Flat Memory”。
我的机器上只有这两个选项,我选Flat Memory。
5.20. 64 bit Memory and IO resources (EXPERIMENTAL)
64位内存和IO资源
这个选项将使内存和IO资源变成64位的。
实验选项,可以让内存和I/O变为64位。我的总线是32位的,所以还是不选了。选了不知道会不会出错。
5.21. Math emulation
数学仿真
LINUX可以仿真一个数学协处理器(用来进行浮点运算),如果你没有的话。486DX 和 Pentium 处理器内建有数学协处理器。486SX和386的没有,除非你专门加过487DX 或者387协处理器。所有人都需要协处理器或者这个仿真。
如果你没有数学协处理器,你需要在这选Y。如果你有了协处理器还在这选Y,你的协处理器仍然被用到。这意味着如果你打算把编译的内核用在不同的机器上,选Y是明智的选择。
如果不清楚,选Y,这将使内核增加66KB,无伤大雅。
5.22. MTRR (Memory Type Range Register) support
内存类型区域寄存器
在 Intel P6 系列处理器(Pentium Pro, Pentium II 和更新的)上,MTRR将会用来规定和控制处理器访问某段内存区域的策略。
如果你在PCI或者AGP总线上有VGA卡,这将非常有用。例如可将MTTR设为在显存的地址范围上使用“write-combining”策略,这样CPU可以在PCI/AGP总线爆裂之前将多次数据传输集合成一个大的数据传输,这样可以提升图像的传送速度2.5倍以上。选Y,会生成文件/proc/mtrr,它可以用来操纵你的处理器的MTRR。典型地,X server 会用到。
这段代码有着通用的接口,其他CPU的寄存器同样能够使用该功能。Cyrix 6×86, 6×86MX和 M II处理器有ARR ,它和 MTRR有着类似的功能。AMD K6-2/ K6-3有两个MTRR, Centaur C6有8个MCR允许复合写入。所有这些处理器都支持这段代码,你可以选Y如果你有以上处理器。
选Y同样可以修正SMP BIOS的问题,它仅为第一个CPU提供MTRR,而不为其他的提供。这会导致各种各样的问题,所以选Y是明智的。
你可以安全地选Y,即使你的机器没有MTRR。这会给内核增加9KB。
5.23. Boot from EFI support
EFI启动支持
这里允许内核在EFI平台上使用储存于EFI固件中的系统设置启动。这也允许内核在运行时使用EFI的相关服务。
这个选项只在有EFI固件的系统上有用,它会使内核增加8KB。另外,你必须使用最新的ELILO 登录器才能使内核采用EFI的固件设置来启动(GRUB和LILO完全不知道EFI是什么东西)。即使你没有EFI,却选了这个选项,内核同样可以启动。
大家应该用的是GRUB,所以选上这个也没什么用。
5.24. Enable kernel irq balancing (IRQBALANCE) 中断平衡。
这个选项使系统进行中断平衡。
如果你是双核CPU,如果不选这项,那么中断负荷都在第一个CPU上,其他的CPU可能得不到中断。
5.25. Use register arguments (REGPARM) 寄存器参数使用。
使用寄存器参数
用‘-mregparm=3’的参数编译内核。这使 gcc 使用更高效的应用程序二进制接口(ABI)来跳过编译时的前三个调用寄存器参数。这使得代码编译更精巧更快速。
如果你不选这个选项,默认的ABI将会使用。
如果不清楚,选Y。
5.26. Enable seccomp to safely compute untrusted bytecode (SECCOMP)
允许SECCOMP(快速计算)安全地运算非信任代码。
这个内核特性在程序出现数码错误,需要重新对非信任的代码进行运算时非常有效。它使用管道或者其他传输方式,使文件描述进程支持读/写的系统调用,这样可以利用SECCOMP隔离那些程序本身的空间。
一旦 seccomp 通过/proc/<pid>/seccomp运行,它将不能停止,任务也只能进行一些安全的被seccomp认证的系统调用。
如果不清楚,选Y。只有嵌入式系统选N。
5.27. Timer frequency 时钟频率
允许设置时钟频率。
这是用户定义的时钟中断频率 100HZ-1000 HZ ,不过 100 HZ 对服务器和NUMA系统更合适,它们不需要很快速的响应用户的要求,因为时钟中断会导致总线争用和缓冲打回。注意在SMP环境中,时钟中断由变量NR_CPUS * Hz定义在每个CPU产生。
其实和前面的抢先式进程差不多,就是多少频率来响应用户要求。我选了250HZ的。要快点的可以选1000HZ的。但是还是那句话,一切是平衡的。机器过快响应你,它自己的活就不知道做得好不好了。
5.27.1. 100 HZ (HZ_100)
100 HZ是传统的对服务器、SMP 和 NUMA的系统选项。这些系统有比较多的处理器,可以在中断较集中的时候分担中断
5.27.2. 250 HZ (HZ_250)
250 HZ对服务器是一个好的折衷的选项,它同样在SMP 和 NUMA 系统上体现出良好的反应速度。
5.27.3. 1000 HZ (HZ_1000)
1000 HZ对于桌面和其他需要快速事件反应的系统是非常棒的。
5.28. kexec system call (KEXEC) 快速重启调用。
kexec 系统调用
kexec是一个用来关闭你当前内核,然后开启另一个内核的系统调用。它和重启很像,但是它不访问系统固件。由于和重启很像,你可以启动任何内核,不仅仅是LINUX。
kexec这个名字是从 exec 系统调用来的。它只是一个进程,可以确定硬件是否正确关闭,所以如果这段代码没能正确为你进行初始化工作,请不要奇怪。它对设备的热拔插会有点帮助。由于它对硬件接口会乱写点东西,所以我没什么好的建议给你。
Linus本人都没话说,估计是受害不浅。我们当然不能上当,选N!
5.29. Support for hot-pluggable CPUs (EXPERIMENTAL)
对热拔插CPU的支持
选Y,可以做个实验,把CPU关闭和打开,也可以中止SMP系统。CPU可以通过/sys/devices/system/cpu 来进行控制。
5.30. Compat VDSO support (COMPAT_VDSO)
Compat VDSO 支持
如果你运行的是最新的glibc(GNU C函数库)版本( 2.3.3 或更新),选N,这样可以移除高阶的VDSO 映射,使用随机的 VDSO。
如果不清楚,选Y。
5.31. Firmware Drivers 固件驱动。
固件就是你板上的BIOS、各种显卡芯片之类的已经固化好的记录某些特定数据的东西。
-
-
-
BIOS Enhanced Disk Drive calls determine boot disk
-
-
BIOS加强磁盘功能,确定启动盘。
选y或M,如果你要使用BIOS加强磁盘服务功能来确定BIOS用哪个磁盘来启动。启动后这个信息会反映在系统文件中。
这个选项是实验性的,而且已经被确认在某些未测试选项下会启动失败。很多磁盘控制器的BIOS供应商都不支持这个特性。
-
-
-
BIOS update support for DELL systems via sysfs
-
-
用于DELL机器的BIOS升级支持。
-
-
-
Dell Systems Management Base Driver (DCDBAS)
-
-
DELL系统管理器的基本驱动。
6. Power management options (ACPI, APM)
电源管理选项(ACPI、APM)
6.1. Power Management support
电源管理支持
电源管理意味着你电脑上的某一部分在不用的时候可以关闭或者休眠。这领域有两个竞争对手:APM和ACPI。如果你需要两者之一,请把这里选上,再把下面的相关内容选上。
电源管理对于使用电池的笔记本相当重要。如果你有笔记本,请参照几个网站上的说明。
注意,即使你在这选N,在X86构架的机器上,LINUX会发出 hlt 指令如果没有任务,因此会让处理器休眠,达到节电的目的。
6.1.1. Legacy Power Management API (PM_LEGACY)
电源管理继承接口
为pm_register() (电源管理寄存器)和同类寄存器提供支持。
如果不清楚,选Y。
6.1.2. Power Management Debug Support
电源管理调试支持
这个选项提供详细的电源管理调试信息。当你调试和报告电源管理漏洞的时候非常有用,有点像电源管理的“中断”支持。
6.1.3. Driver model /sys/devices/…/power/state files (DEPRECATED)
驱动模式文件 /sys/devices/…/power/state (不赞成使用)
这个驱动模式通过系统文件类型启动,试图来给电源管理设备提供用户空间连通装置。这个特性从来没有能很好地工作过,除非是用来进行测试,否则它处在被移除之列。我们不清楚用通用的方法能否进行各种各样的设备电源管理,目前是专用的总线和驱动来替代相关功能。
6.2. ACPI Support 高级电源配置接口支持
高级电源设置接口(ACPI)支持需要整合了ACPI的平台(固件/硬件),并且这个平台要支持操作系统和电源管理软件的设置。这个选项会给你的内核增加70KB。
LINUX ACPI提供了相当强大的电源接口,甚至可以取代一些传统的设置和电源管理接口,包括PNP BIOS(即插即用BIOS)规范,MPS(多处理器规范),和APM(高级电源管理)规范。如果ACPI和APM同时被选上,先被系统调用的起作用。
6.2.1. AC Adapter AC 交流电源适配器
这个驱动给AC 交流电源适配器提供支持,它指示出系统是否在AC下工作。如果你的系统可以在AC和电池状态下切换,选Y。
6.2.2. Battery 电池
这个驱动通过/proc/acpi/battery 提供电池信息。如果你有使用电池的移动系统,选Y。
6.2.3. Button 按钮
这个驱动通过电源、休眠、锁定按钮来提交事件。后台程序读取/proc/acpi/event 来运行用户要求的事件,比如关机。这对软件控制关机是必要的。
6.2.4. Video (ACPI_VIDEO) 视频
提供ACPI对主板上的集成显示适配器的扩展支持驱动。详见ACPI2.0驱动范例,附录B,它提供了基本支持,比如定义视频的启动设备、返回EDID信息或者设置视频传输等等。
注意这仅仅是文字上的信息而已。它可能(或许不可能)在你的集成显卡设备上运行。
6.2.5. Generic Hotkey (EXPERIMENTAL) 通用热键。
实验中的整合式热键驱动。
如果不清楚,选N。
6.2.6. 05.03.05、<*> Fan 风扇
这个驱动对ACPI风扇设备提供支持,允许用户模式的程序进行风扇的基本控制(开、关、状态显示)
6.2.7. Dock
提供ACPI Docking station支持
Docking station是笔记本的扩展坞,就是用来扩展笔记本电脑功能的底座,通过接口和插槽,它可以连接多种外部设备(驱动器、大屏幕显示器、键盘、打印机、扫描仪……)。可以弥补轻薄笔记本电脑本身携带附件较少的缺陷,这种设计让用户在办公室里能够享受到台式机一样的便利和舒适,在移动办公时又能发挥笔记本的便携性。
6.2.8. Processor 处理器
这个驱动以空闲管理者方式给LINUX安装ACPI,使用ACPI C2 和 C3处理器状态来节约电能,如果你的系统支持的话。一些CPU频率调节的驱动需要这个功能。
-
-
-
-
Thermal Zone
-
-
-
温控区域
ACPI温控区域驱动。大多数笔记本和台式机支持ACPI温控区域。强烈要求你选Y,否则你的处理器可能会坏掉。
6.2.9. ASUS/Medion Laptop Extras
华硕笔记本扩展支持
6.2.10. IBM ThinkPad Laptop Extras
IBM笔记本扩展支持
6.2.11. Toshiba Laptop Extras
Toshiba笔记本扩展支持
6.2.12. (0) Disable ACPI for systems before Jan 1st this year 千年虫
6.2.13. Debug Statements
调试语句
ACPI驱动可以自定义报告详细的错误信息。选Y开启这项功能,这将让你的内核增加50KB。
6.2.14. ACPI0004,PNP0A05 and PNP0A06 Container Driver
ACPI0004,PNP0A05 和PNP0A06 容器驱动
这里允许物理上对CPU和内存的插入和移除。这对一些系统,比如NUMA,非常有用,这些系统支持ACPI基本的物理拔插。
如果选择M,这个驱动可以通过命令:“modprobe acpi_container”加入。
6.2.15. Smart Battery System
袖珍电池系统
这个驱动对袖珍电池系统提供支持,依赖于I2C (在选项Device Drivers —> I2C support) 。袖珍电池非常古老,也非常稀少,对于今天的ACPI支持的电池规范来说。
6.3. APM (Advanced Power Management) BIOS Support
高级电源管理BIOS支持。(APM)
ACPI和APM就好比XP和LINUX。我用了ACPI,这个就只编成模块放着,万一要用到再加模块。不清楚的可以先在机器上用ps -A|less看看有没有这个相关的进程。我的只有ACPID。
没有认真研究过下面的选项,也不列出来糊弄人了。要是用到APM的可以自己研究。
6.4. CPU Frequency scaling
-
-
-
CPU Frequency scaling
-
-
CPU变频控制
CPU变频控制允许你在运行中改变CPU的时钟速度。这是对于节约电能来说是一个不错的主意,因为CPU频率越低,它消耗的电能越少。
注意这个驱动不会自动改变CPU的时钟速度,你要么允许动态的频率调节器(看下面),要么使用用户工具。
如果不清楚,选N。
-
-
-
Enable CPUfreq debugging
-
-
是否允许调试CPU改变主频的功能,如果要调试,还需要在启动时加上参数。cpufreq.debug=<value> 1:变频技术的内核调试 2:变频技术的驱动调试 3:变频技术的调节器调试
-
-
-
CPU frequency translation statistics CPU频率统计功能
-
CPU frequency translation statistics details CPU频率统计功能(详细)
-
Default CPUFreq governor (performance) 默认的主频调节,圆括号内的是你选择的结果,这里表示以性能为主。
-
performance 性能优先
-
userspace 用户定义,可以设定频率。
-
-
‘performance’ governor性能调节器
-
‘powersave’ governor 节约电能调节器。
-
‘userspace’ governor for userspace frequency scaling 用户自定义调节器。
-
‘ondemand’ cpufreq policy governor 自动调节主频。
-
‘conservative’ cpufreq governor 传统方式调节
-
CPUFreq processor drivers 变频驱动模块
-
ACPI Processor P-States driver 报告处理器的状态。
-
AMD Mobile K6-2/K6-3 PowerNow! AMD移动版K6处理器的变频驱动。
-
AMD Mobile Athlon/Duron PowerNow! AMD移动版毒龙、雷乌的变频驱动。
-
Cyrix MediaGX/NatSemi Geode Suspend Modulation Cyrix处理器的变频驱动。
-
Intel Enhanced SpeedStep Intel的移动变频技术支持。
-
Use ACPI tables to decode valid frequency/voltage pairs 使用BIOS中的主频/电压参数。
-
Built-in tables for Banias CPUs 迅驰一代的主频/电压参数。
-
-
-
笔记本 : 什么是迅驰技术
2003年3月英特尔正式发布了迅驰移动计算技术,英特尔的迅驰移动计算技术并非以往的处理器、芯片组等 单一产品形式,其代表了一整套移动计算解决方案,迅驰的构成分为三个部分:奔腾M处理器、855/915系列芯片组和英特尔PRO无线网上,三项缺一不可 共同组成了迅驰移动计算技术。
奔腾M首次改版叫Dothan
在两年多时间里,迅驰技术经历了一次改版和一次换代。初期迅驰中奔腾M处理器的核心代号为Bannis,采用130纳米工艺,1MB高速二级缓存, 400MHz前端总线。迅驰首次改版是在2004年5月,采用90纳米工艺Dothan核心的奔腾M处理器出现,其二级缓存容量提供到2MB,前端总线仍 为400MHz,它也就是我们常说的Dothan迅驰。首次改版后,Dothan核心的奔腾M处理器迅速占领市场,Bannis核心产品逐渐退出主流。虽 然市场中流行着将Dothan核心称之为迅驰二代,但英特尔官方并没有给出明确的定义,仍然叫做迅驰。也就是在Dothan奔腾M推出的同时,英特尔更改 了以主频定义处理器编号的惯例,取而代之的是一系列数字,例如:奔腾M 715/725等,它们分别对应1.5GHz和1.6GHz主频。首次改版中,原802.11b无线网卡也改为了支持802.11b/g规范,网络传输从 11Mbps提供至14Mbps.
新一代迅驰Sonoma
迅驰的换代是2005年1月19日,英特尔正式发布基于Sonoma平台的新一代迅驰移动计算技术,其构成组件中,奔腾M处理器升级为Dothan核心、 90纳米工艺、533MHz前端总线和2MB高速二级缓存,处理器编号由奔腾M 730—770,主频由1.60GHz起,最高2.13GHz。915GM/PM芯片组让迅驰进入了PCI-E时代,其中915GM整合了英特尔 GMA900图形引擎,让非独立显卡笔记本在多媒体性能上有了较大提高。915PM/GM还支持单通道DDR333或双通道DDR2 400/533MHz内存,性能提供同时也降低了部分功耗。目前Sonoma平台的新一代迅驰渐渐成为市场主流。
-
-
-
Intel Speedstep on ICH-M chipsets (ioport interface) Intel ICH-M移动南桥芯片组的支持
-
Intel Pentium 4 clock modulation P4处理器的时钟模块支持。
-
Transmeta LongRun Transmeta处理器的支持。
-
VIA Cyrix III Longhaul VIA Cyrix处理器的支持。
-
shared options
-
/proc/acpi/processor/../performance interface (deprecated) 从/proc/acpi/processor/../performance获得CPU的变频信息。
-
Relaxed speedstep capability checks
-
-
不全面检测Intel Speedstep,有的系统虽然支持Speedstep技术,却无法通过全面的检测。
7. Bus options (PCI, PCMCIA, EISA, MCA, ISA) 总线选项
7.1. PCI support
PCI总线支持(一定要进内核,不能编成模块)
找找你的主板资料,看看你用的是不是PCI主板。PCI是总线系统的名称,是CPU用来与其他设备进行通信的通道。其他总线系统有ISA、EISA、MCA和VESA。如果你有PCI,选Y。否则,选N。
7.1.1. PCI access mode (Any)
PCI访问模式
在PCI系统中,BIOS可以检测PCI设备和确定它们的设置。但是,一些老的PCI主板有BIOS问题,如果这里选上会让系统当机。同时,一些嵌入式的基于PCI系统没有任何BIOS。LINUX可以在不使用BIOS的情况下尝试直接检测PCI硬件。
选上这个以后,你可以设定LINUX如果检测PCI设备。如果你选择“BIOS”,BIOS会用到。你选 “Direct”, BIOS不会用到。如果你选“MMConfig”,PCI加速的 MMCONFIG 会用到。如果你选“Any” ,内核先用 MMCONFIG ,然后 “Direct”,最后才是“BIOS”如果前面的都无法工作。如果不清楚,选“Any”。
-
-
-
-
BIOS
-
MMConfig
-
Direct
-
Any
-
-
-
7.1.2. PCI Express support
PCI Express 支持
这里自动支持 PCI Express 端口总线。用户可以选择 Native Hot-Plug support, Advanced Error Reporting support,
Power Management Event support,Virtual Channel support 4个选项来支持 PCI Express 端口(启动或者切换)。
我的板是PCI Express。大家可以用lshw|less来看看自己的PCI是什么类型。
-
-
-
-
Root Port Advanced Error Reporting support
-
-
-
高级启动错误报告支持。
7.1.3. Message Signaled Interrupts (MSI and MSI-X)
信息信号中断
这允许设备驱动开启MSI。MSI允许一个设备用非装订内存写入方式在自己的PCI总线中产生一个中断,而不是常规的IRQ针脚中断。
在内核启动时,用 ‘pci=nomsi’选项可以禁用PCI MSI中断。这将在整个系统禁用MSI。
如果不知道怎么做,选N。
7.1.4. Interrupts on hypertransport devices
高速传输设备中断
允许高速传输设备使用中断。
如果不清楚,选Y。
7.2. ISA support ISA总线
看看你主板上是否有ISA插槽。ISA是比较老的总线,现已基本被PCI取代。如果你没有老式的ISA设备,可以不选这项。不过我估计你的主板上应该会有ISA总路。因为我的INTEL 945板都还有一路,接老式打印机用的。选上备用。如果你认为你永远都不会用到那一路的话,可以不选。
7.2.1. EISA support
扩展工业标准架构总线(EISA)是为IBM 微通道开发的项目。EISA总线可以为IBM 微通道提供一些特性,如果你在使用很老的卡。目前EISA很少用到,已经被PCI取代。选Y,如果你为ESIA系统编译内核。否则,选N。
7.2.2. MCA support
IBM PS/2上的总线,现已淘汰,建议关闭。微通道总线IBM的台式机和笔记本上可能会有这种总线,包括它的p系列、e系列、z系列机器上都用到了这种总线。
7.2.3. NatSemi SCx200 support
松下的一种半导体处理器的驱动。
7.3. PCCARD (PCMCIA/CardBus) support
一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。我的IBM机器是办公用的,经常会临时接一些乱七八糟的设备。我自己都不知道哪些设备需要什么模块。所以这里我都搞成模块,免得以后接上用不了,又得切换到XP下。
7.3.1. PCCard (PCMCIA/CardBus) support
PCI Hotplug Support
PCI热插拨支持
选Y,如果你的主板有PCI热拔插控制器,这允许你热拔插PCI卡。
选M,将编译为模块,叫做pci_hotplug。
如果不清楚,选N。
一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。
8. Executable file formats
可执行文件格式。
8.1. Kernel support for ELF binaries
ELF支持
ELF(可执行和可链接格式)是一种用来连接不同架构和操作系统的可执行文件、库函数格式。选Y,你的内核可以运行ELF二进制文件,这也使你的内核增大13KB。
ELF现在基本代替了传统的 a.out 格式(QMAGIC and ZMAGIC用到),因为它是可移植的(可移植不代表它可以直接运行在不同构架和操作系统上),而且建立相关运行库文件非常容易。很多新的可执行文件都用ELF格式发布,你在这里当然要选Y。
8.2. Kernel support for a.out and ECOFF binaries
对 a.out 和 ECOFF 二进制文件的支持
A.out (Assembler.OUTput)是一种二进制文件格式,它用在最早的UNIX版本中。LINUX在QMAGIC 和 ZMAGIC两个镜像中使用A.out,直到它最近被ELF取代。ELF的转变开始于1995年。这个选项主要是给研究历史的人提供感兴趣的信息,或者你要是有那个年代的文件,你需要这个选项。
大多数人在这可以选N。如果你认为你有可能会用到这个格式,选M编译成模块。模块名为binfmt_aout。如果你系统的关键部件(比如/sbin/init 或者 /lib/ld.so)是 a.out 格式的的,你要在这选Y。
8.3. Kernel support for MISC binaries
内核对 MISC 二进制文件的支持
如果你在这选Y,它将可以将 wrapper-driven 二进制格式嵌入内核。当你使用一些程序的解释器时,比如 Java, Python, .NET或者Emacs-Lisp,或者当你经常通过DOS 仿真器运行DOS程序时,它将非常有用。当你在这个选项选Y,你可以简单地通过在shell打相应命令运行以上的程序,LINUX可以自动匹配正确的格式。
要使用 binfmt_misc 你可能需要挂载它:
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
你可以选M作为模块,以后再加载,模块名为 binfmt_misc。如果你不知道怎么办,选Y。
9. Networking support 网络支持。
配好了能上网,不想上网可以不选这里。实际上用默认的选项就可以上网了。要是不清楚就一律模块,以防备用。比如现在不用PPP的也要把它编成模块,不然网络供应商哪天改成让你验证,你没PPP拨号就废了。从网络部分的配置菜单的超级复杂(我用到了第9层菜单!一点开就让人倒吸凉气!),我们可以看出LINUX在网络方面的强大。可惜本人是菜鸟,要是有解释不对或者不到位的请原谅。
9.1. Networking support
网络支持
你在这应该选Y,除非你真正知道你在干什么。原因是一些程序必须要内核的网络支持才能工作,即使你的机器没有真正连上网络。如果你是从老的内核升级的,你要考虑升级你的网络工具,因为内核中有所更改,而相应的工具总是联合其中,依赖于内核的。
9.1.1. Networking options
-
-
-
- Network packet debugging (NETDEBUG)
-
-
网络传输包调试
如果你想要更多的有用的网络坏包调试信息,选Y,但是可能会和一些拒绝服务器攻击的信息冲突。
-
-
-
- Packet socket
-
-
包套接口(计算机为TCP/IP数据转换所保留的一系列存贮地址)
包协议被很多程序用来直接连接网络设备,而不需要内核执行中间网络协议,比如 tcpdump 。如果你要它们工作,选Y。
选m编译成模块。模块名: af_packet 。
如果不清楚,选Y。
-
-
-
-
- Packet socket: mmapped IO
-
-
-
包套接口: mmapped IO
如果你选Y,包协议驱动将使用一个IO结构,这可以加速连接。
如果不清楚,选N。
-
-
-
- Unix domain sockets
-
-
UNIX域套接口(计算机为TCP/IP数据转换所保留的一系列存贮地址)
如果你在这选Y,你将编入UNIX域套接口支持。套接口是标准UNIX结构,用来建立和访问网络连接。很多程序比如X Window 系统和系统信息使用这些套接口即使你的机器未连接上网络。除非你在一个嵌入式系统上工作,你必须要在这选Y。
选M编译成模块。模块名: unix 。注意一些重要的服务不会正确工作如果你选M,却忘记加载模块。
选Y,除非你知道在干什么。
-
-
-
- Transformation user configuration interface
-
-
用户设置接口转换
对用户设置接口转换功能进行支持,比如本地LINUX工具用到的 IPsec 。
如果不清楚,选Y。
-
-
-
- Transformation sub policy support (EXPERIMENTAL)
-
-
转换子规则支持
为开发者提供子规则支持。使用这个功能,两个规则可以整合成一个规则。子规则在内核里存活时间很短,是子程序形式。
如果不清楚,选N。
-
-
-
- PF_KEY sockets
-
-
PF_KEY 套接口
PF_KEYv2 套接口家族,与KAME相一致。如果你要使用 KAME端口的IPsec 工具,你需要这个选项。
选Y,除非你知道在干什么。
-
-
-
- TCP/IP networking
-
-
TCP/IP网络
这些是在 Internet 和本地以太网使用最多的协议。强烈推荐选Y(这会让内核增大144KB),因为一些程序,比如X window系统使用 TCP/IP ,即使你的机器没有连上网络。
你会得到自回环设备(LOOP-BACK),这样你可以 ping 自己(有趣!)
如果你选Y,并在后面的“/proc file system support”和“Sysctl support”也选上,你将可以通过/proc/sys/net/ipv4/*的虚拟文件来改变 TCP/IP 代码的工作方式。
简之:选Y。
-
-
-
-
- IP: multicasting
-
-
-
IP: 多播
这是在一个时间里访问多个地址的代码,将会增大内核2KB。你需要多播功能,如果你想要加入 MBONE(多路广播主干网),一个高带宽的,有声音和影像的高层广播网络。
对大多数人,在这可以安全地选N。
-
-
-
-
- IP: advanced router
-
-
-
IP: 高级路由
如果你想让你的LINUX机器作成路由,比如,用来转信和回环网络包,选Y。你将可以得到更多的选项来精确地控制你的路由进程。
在这的回答不会直接影响到内核。选N只是让配置程序跳过所有的关于高级路由的问题。
注意你的机器只可以作为路由如果你在内核允许IP转信。你可以通过在下面的选项选Y “/proc file system support” 和 “Sysctl support” ,然后在启动时,在挂载/proc后执行命令
echo “1″ > /proc/sys/net/ipv4/ip_forward
如果你开启 IP 转信,你可能需要 rp_filter ,它可以自动拒绝输入包,如果来源地址不在信任列表中。这有着良好的安全性,因为它可以防止IP欺骗,但是也可能会导致问题,比如你使用的是不对称路由(路由到主机的信息和主机到路由的信息使用不同的线路),或者你操作的非路由主机有多个IP地址。
要关闭 rp_filter 用:
echo 0 > /proc/sys/net/ipv4/conf/<device>/rp_filter
或者
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
如果不清楚,选N。
-
-
-
-
-
- Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)
-
-
-
-
选择IP: FIB 查找算法(不清楚选 FIB_HASH )
-
-
-
-
-
-
- FIB_HASH
-
-
-
-
-
这个 FIB 已通过验证,对很多用户都不错。
-
-
-
-
-
-
- FIB_TRIE
-
-
-
-
-
使用新的实验阶段的 LC 树来做为 FIB 查找算法 。这将改善查找状况,如果你有很多路由。LC树是一个很长的前缀匹配查找算法,在对于大的路由表的时候,比 FIB_HASH 要好。但是,它消耗更多的内存,也更复杂。
-
-
-
-
- IP: policy routing
-
-
-
IP:路由规则
通常,一个路由仅仅由包的最终目的地来决定如何应对一个接收包。如果你选Y,LINUX路由也可以考虑包的来源地,而且,包的TOS (Type-Of-Service,服务类型) 域也可以做为路由的参考之一。
如果不清楚,选N。
-
-
-
-
-
- IP: use netfilter MARK value as routing key
-
-
-
-
IP:使用网络过滤器标记值做为路由钥匙
如果你选Y,你可以对包含不同标志值的包来细化路由。
-
-
-
-
- IP: equal cost multipath
-
-
-
IP:多路径平等开支
通常,路由表对确定的给定包采用定义好的一致方式处理。如果你选Y,对同样的包类型可以采用不同的方式,可以有效地变换路径来传输这些包。路由以平等的开支方式考虑所有的这些路径,当匹配的包到达时,选择一条不确定的路径。
-
-
-
-
-
- IP: equal cost multipath with caching support (EXPERIMENTAL)
-
-
-
-
IP:多路径平等开支缓冲支持
通常,多路径平等开支方式不被路由缓冲支持。如果你选Y,可选的路由将被缓冲,在缓冲时将通过定义好的方式查找并选择一个路由。
如果不清楚,选N。
-
-
-
-
-
-
- MULTIPATH: round robin algorithm
- MULTIPATH: random algorithm
- MULTIPATH: weighted random algorithm
- MULTIPATH: interface round robin algorithm
-
-
-
-
-
以上是4个多路径算法。
-
-
-
-
- IP: verbose route monitoring
-
-
-
详细路由控制信息
如果你选Y,也是我们推荐的方式,内核将会打印详细的路由信息,比如,接收到危险包时出现警告,这可能是某个机器对你进行攻击的征兆。信息可以通过 klogd 守护进程进行设置。
-
-
-
-
- IP: kernel level autoconfiguration
-
-
-
IP:内核级别自动配置
这里允许在内核启动时对IP地址和路由表进行自动配置,由内核的命令行或者由BOOTP 或 RARP 协议提供信息。你需要选Y,如果你磁盘空间很少,但是又需要进行网络访问(同时你需要在后面的“Root file system on NFS”中选Y),因为其他机器在启动脚本中(而不是内核中)进行网络配置。
IP: DHCP support
-
-
-
-
-
- IP:DHCP支持
-
-
-
-
如果你想让你的LINUX机器在启动时通过网络的NFS协议挂载其他机上的整个启动文件系统(包括根目录/),同时你想要让你的IP地址在启动时被DHCP协议(一种专门用来在启动时自动获取IP地址的协议)自动获取,选Y。假如网卡的启动ROM模块已经设计为给LINUX提供DHCP支持,提供了足够的内核命令信息,你可以在这选N。
如果不清楚,选Y。注意如果你要用DHCP,DHCP服务器必须要在网络中可用。
-
-
-
-
-
- IP: BOOTP support
-
-
-
-
IP: BOOTP支持
如果你想让你的LINUX机器在启动时通过网络的NFS协议挂载其他机上的整个启动文件系统(包括根目录/),同时你想要让你的IP地址在启动时被 BOOTP 协议(一种专门用来在启动时自动获取IP地址的协议)自动获取,选Y。假如网卡的启动ROM模块已经设计为给LINUX提供BOOTP支持,提供了足够的内核命令信息,你可以在这选N。如果不清楚,选Y。注意如果你要用 BOOTP, BOOTP服务器必须要在网络中可用。
-
-
-
-
-
- IP: RARP support
-
-
-
-
IP: RARP支持
如果你想让你的LINUX机器在启动时通过网络的NFS协议挂载其他机上的整个启动文件系统(包括根目录/),同时你想要让你的IP地址在启动时被RARP协议(一种专门用来在启动时自动获取IP地址的协议,比DHCP和BOOTP更老)自动获取,选Y。假如网卡的启动ROM模块已经设计为给LINUX提供RARP支持,提供了足够的内核命令信息,你可以在这选N。如果不清楚,选Y。注意如果你要用 RARP, RARP服务器必须要在网络中可用。
-
-
-
-
- IP: tunneling
-
-
-
IP:隧道传输
隧道传输意味着将数据从一个协议类型压缩到另一个协议类型中,并通过理解这个压缩协议的一个隧道进行传输。这个特殊的隧道驱动包含IP到IP的压缩,看起来没什么意义,但是当你需要你的(或者别人的)机器在不同的网络上使用,或者使用移动IP设备(可以让你的笔记本在不同的网络使用,而不需要改变IP)的时候很有用。
选y会生成两个模块(可以在运行中的内核嵌入和移除)。大多数人不需要这个选项,可以选N。
-
-
-
-
- IP: GRE tunnels over IP
-
-
-
IP:GRE隧道
隧道传输意味着将数据从一个协议类型压缩到另一个协议类型中,并通过理解这个压缩协议的一个隧道进行传输。这个特殊的隧道驱动包含GRE(通用路由压缩),可以将IPv4 或者IPv6压缩到现有的 IPv4 基本组织中。这个驱动很有用,如果网络终点是 Cisco 路由。Cisco有点像GRE,但是比其他的LINUX隧道驱动更好(看上面的选项)。另外,GRE允许多播通过隧道重新分配。
-
-
-
-
-
- IP: broadcast GRE over IP
-
-
-
-
IP:广播GRE
GRE/IP的一个用途是建立广播WAN(广域网),它有点像普通的以太LAN,但是可以传递给整个 Internet 。如果你要这样,选Y和下面的“IP multicast routing”。
-
-
-
-
- IP: multicast routing
-
-
-
IP:多播路由
如果你想要你的机器变成一个多终端的IP包路由,选这项。在MBONE需要这功能。MBONE是一个高带宽的网络,在 Internet 的上层传播大量的声音和视频广播。为了达到这个目的,你可以要运行mrouted。如果你没有听说过它,你不需要它。
什么是多播?
随着因特网的发展,出现了视频点播、电视会议、远程学习、计算机协同工作等新业务。传统的点到点通信方式,不仅浪费大量的网络带宽,而且效率很低。一种有 效利用现有带宽的技术就是多播技术。多播(MultiCast)是一种点到多点(或多点到多点)的通信方式,即多个接收者同时接收一个源发送的相同信息。 在多播中,组的概念十分重要。由多播定义可知,多播报文是从一个源发到三组目的节点。在IP多播中,多播组有一个ID号,称作多播组ID号,它指定发送报 文的目的组,实际上是D类IP地址。主机若要接收发到一个特定组的多播报文,就要监听发往该特定组的所有报文。为了解决因特网上多播报文的选路,主机须通 过通知其子网上的多播路由器来加入一个组,多播中采用因特网组管理协议(IGMP)来达到此目的。
-
-
-
-
-
- IP: PIM-SM version 1 support
- IP: PIM-SM version 2 support
-
-
-
-
两个多播的协议。
-
-
-
-
- IP: ARP daemon support (EXPERIMENTAL) (ARPD)
-
-
-
地址转换协议(ARP)后台支持。
通常,内核保存有一个内部缓冲,它把IP地址映射到网络硬件地址,以使以太网/令牌网等构架能够发送到正确的物理网络地址。对于有近百个主机的小型网络,在内核中保持ARP缓冲可以工作得非常好。但是,对于大型的交互网络,在内核中保持ARP缓冲工作得不是十分好,如果TCP/IP对很多机器进行连接,它将会使用大量的内核内存。
如果你选Y,内核内部ARP缓冲将不会超过256个条目,通讯将会通过用户空间的后台程序 arpd 进行。 Arpd 将会通过自己的缓冲或者网络来解决地址转换问题。
这段代码是实验中的,比较陈旧。如果你要使用它,你需要在网络或者其他地方找到 arpd 后台程序,而且你要在下面的“Kernel/User network link driver”选项中选Y。
如果不清楚,选N。
-
-
-
-
- IP: TCP syncookie support (disabled per default)
-
-
-
IP:TCP cookie同步支持(默认关闭)
普通TCP/IP网络对于“同步泛滥”攻击是开放式的,没有阻碍。这种拒绝服务式的攻击让合法的远程用户无法连接到你的计算机。这种攻击只需要简单的工作就可以从网络的任意地方进行。
同步 cookies针对这种攻击提供了保护。如果你选Y, TCP/IP 栈会使用一种“SYN cookies”的密码协议,使得合法的用户能继续保持连接,即使你的机器已经遭受攻击。对于合法的用户,没有必要更改他们的 TCP/IP 软件,SYN cookies 对于它们是透明的。
如果你被同步泛滥攻击,内核报告的源地址很可能被攻击者伪造。它仅仅是追踪实际源用的包,而不是真实的。
SYN cookies将会在服务器过负荷的时候制止客户端对于错误报告的纠错行为。如果这经常发生,最好将它关闭。
如果你选Y,注意 SYN cookies 不会自动运行。你可以在选项“/proc file system support” 和“Sysctl support” 中选Y,然后在系统启动时,挂载了/proc后运行相关命令来运行它:
echo 1 >/proc/sys/net/ipv4/tcp_syncookies
如果不清楚,选N。
-
-
-
-
- IP: AH transformation
-
-
-
IP:AH转换。
给IPsec AH提供支持。
如果不清楚,选Y。
-
-
-
-
- IP: ESP transformation
-
-
-
IP:ESP转换。
给IPsec ESP提供支持。
如果不清楚,选Y。
IPSec介绍
IPSec是一种加密机制
IPSec协议是一个应用广泛,开放的VPN安全协议,目前已经成为最流行的VPN解决方案。IPSec包括AH和ESP。AH验证头,提供数据 源身份认证、数据完整性保护、重放攻击保护功能;ESP安全负载封装,提供数据保密、数据源身份认证、数据完整性、重放攻击保护功能。
IPSec有两种工作模式——传输模式和通道模式。这两种模式最根本的区别在于,是否尽心做IPIP封装。NetEye防火墙工作于通道模式,其特点就是生成新的IP头,替换了原有的IP包头,这样就可以对于原始地址进行隐藏。原来的IPSec标准是不支持NAT的,可以看到,一旦经过NAT,由 于IP包头数据被修改,就等于数据完整性遭受破坏,那么AH或ESP的校验就会失败。NetEye VPN采用了最新的标准,利用附加UDP头的方式成功解决了NAT穿越问题。
-
-
-
-
- IP: IPComp transformation
-
-
-
IP:IPCOMP转换
支持IP负荷压缩协议,IPsec一般需要这个协议。
如果不清楚,选Y。
-
-
-
-
- IP: IPsec transport mode
-
-
-
IP:IPsec传输模式。
支持IPsec传输模式。
如果不清楚,选Y。
-
-
-
-
- IP: IPsec tunnel mode
-
-
-
IP: IPsec 隧道模式
支持IPsec隧道模式。
如果不清楚,选Y。
-
-
-
-
- IP: IPsec BEET mode
-
-
-
IP: IPsec BEET模式
支持IPsec BEET模式
如果不清楚,选Y。
-
-
-
-
- INET: socket monitoring interface (INET_DIAG)
-
-
-
INET:套接口监控界面
对于一些LINUX工具比如 ss 提供INET (TCP, DCCP等)套接口监控界面支持。
如果不清楚,选Y。
-
-
-
-
- TCP: advanced congestion control
-
-
-
TCP高级拥挤控制
对于各种TCP拥塞控制模块提供选择支持
几乎所有的用户可以安全地在这里选N,安全的默认选项将会设置。
如果不清楚,选N。
-
-
-
-
- IP: Virtual Server Configuration
-
-
-
IP虚拟服务器支持。
IP虚拟服务器支持能让你基于两个或者多个真实服务器的簇来建立高性能的虚拟服务器。对于至少一个簇计算机,这个选项必须可用,那样将会截取进入连接,转换到一个单一的IP地址,并调度他们到真实的服务器。
三种请求发送的技术类型将会执行,它们是:NAT虚拟服务器、隧道虚拟服务器、直接路由虚拟服务器。几种调度算法将会使用,这样可以让你选择直接连接到哪个服务器,因此服务器负荷可以得到平衡。
如果你要编译进内核,选Y。选M编译成模块。如果不清楚,选N。
-
-
-
-
- The IPv6 protocol
-
-
-
IPv6协议
这里支持IP6版本。你将仍然可以使用传统的 IPv4 网络。
选M编译成模块,模块名为:ipv6。
什么是IPv6
现有的互联网是在IPv4协议的基础上运行。IPv6是下一版本的互联网协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被 耗尽,地址空间的不足必将影响互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv4采用32位地址长度,只有大约43亿个地 址,估计在2005~2010年间将被分配完毕,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地 址,整个地球每平方米面积上可分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决地址短缺问题以外,还考虑了在IPv4中解决不好的其它问 题。IPv6的主要优势体现在以下几方面:扩大地址空间、提高网络的整体吞吐量、改善服务质量(QoS)、安全性有更好的保证、支持即插即用和移动性、更好实现多播功能。
显然,IPv6的优势能够对上述挑战直接或间接地作出贡献。其中最突出的是IPv6大大地扩大了地址空间,恢复了原来因地址受限而失去的端到端连接功能, 为互联网的普及与深化发展提供了基本条件。当然,IPv6并非十全十美、一劳永逸,不可能解决所有问题。IPv6只能在发展中不断完善,也不可能在一夜之 间发生,过渡需要时间和成本,但从长远看,IPv6有利于互联网的持续和长久发展。
IPv6 FAQ
1. 什么是IP? 什么是IPv4? 什么是IPv6?
目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号 是4(简称为IPv4),它的下一个版本就是IPv6。IPv6正处在不断发展和完善的过程中,它在不久的将来将取代目前被广泛使用的IPv4。
2. Ipv6与IPv4相比有什么特点和优点?
1)更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
2)更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
3)增强的组播(Multicast)支持以及对流的支持(Flow-control)。这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台.
4)加入了对自动配置(Auto-configuration)的支持.这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷.
5)更高的安全性.在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全.
3. 我们需要2^128-1个IP地址吗?
需要.随着电子技术及网络技术的发展,计算机网络将进入人们的日常生活,可能身边的每一样东西都需要连入全球因特网.并且,准确的说,使用IPv6的网络 并没有2^128-1个能充分利用的地址.首先,要实现IP地址的自动配置,局域网所使用的子网的前缀必须等于64,但是很少有一个局域网能容纳2^64 个网络终端;其次,由于IPv6的地址分配必须遵循聚类的原则,地址的浪费在所难免.
4. 我想了解一下IPv6,该怎么做呢?
看RFC! 这是最省钱也是最保险的办法,就是枯燥一点.目前国内介绍IPv6的书至少有一本: IPv6–the new Internet protocol(second edition)/新因特网协议IPv6(第二版),清华大学出版社,1999 介绍IPv6网络编程(Unix平台)的书也至少有一本: Unix Network Programming Volume I (Second Edition)/Unix网络编程卷一(第二版),清华大学出版社,1998
5. 我想试一试IPv6,该做些什么呢?
你需要三样东西:支持IPv6的操作系统;支持IPv6的软件;与因特网的连接.
1)目前支持IPv6的操作系统有:Linux(内核版本至少是2.2.1,最好是2.2.12以上),FreeBSD(4.x系列已经支持IPv6,更早的版本需要给内核打补丁),WindowsNT/2000(需要去微软的网站下一个补丁程序),NetBSD,OpenBSD,Solaris(这些就不熟了),等等等等.目前肯定不支持IPv6的操作系统是(我知道的)Windows系列中Windows98及其以前的版本.
2)支持IPv6的操作系统一般都会自带一些支持IPv6的网络程序(Linux的情况比较特殊,有的软件可能本身支持IPv6但在编译的时候没有打开相应的选项,这是因为不同的发布商对IPv6重要性及可用性的看法各不相同).但是,这些操作系统自带的程序往往并不是最好的,你可能需要到网上去找一些好用的支持IPv6的软件.
3)如果你想真正尝试IPv6,一定要连网,起码要有一个局域网环境。
-
-
-
-
-
- IPv6: Privacy Extensions support
-
-
-
-
IPV6: 隐私扩展支持
这是对自动配置IPV6地址时的隐私扩展支持。有这个选项时,额外的、定期改变的、随机虚拟的、共用作用域的、单一传播的地址将会指派给你的接口。
我们使用我们标准的随机虚拟算法生成随机的接口ID,类似的算法有 RFC 3041。
默认地,内核不会生成临时地址,要使用临时地址,输入命令:
echo 2 >/proc/sys/net/ipv6/conf/all/use_tempaddr
-
-
-
-
-
- IPv6: Router Preference (RFC 4191) support
-
-
-
-
IPv6: 路由首选项(RFC 4191)支持
路由首选项是可选的扩展功能,它可以让路由宣告相关信息,以改进主机的能力。它使主机能够选择更合适的路由,特别是主机在多用户的网络中时尤其有效。
如果不清楚,选N。
-
-
-
-
-
-
- IPv6: Route Information (RFC 4191) support (EXPERIMENTAL)
-
-
-
-
-
IPv6: 路由信息(RFC 4191)支持
这是实验中的路由信息的支持项。
如果不清楚,选N。
-
-
-
-
-
- IPv6: AH transformation
-
-
-
-
IPv6: AH 转换
支持IPsec AH。
如果不清楚,选Y。
-
-
-
-
-
- IPv6: ESP transformation
-
-
-
-
IPv6: ESP 转换
支持IPsec ESP。
如果不清楚,选Y。
-
-
-
-
-
- IPv6: IPComp transformation
-
-
-
-
IPv6: IPComp 转换
支持IPsec IPComp。
如果不清楚,选Y。
-
-
-
-
-
- IPv6: Mobility (EXPERIMENTAL)
-
-
-
-
IPv6: 移动技术
IPv6 移动技术(RFC 3775)支持。
如果不清楚,选N。
-
-
-
-
- IPv6: IPsec transport mode
-
-
-
IPv6:IPsec传输模式。
支持IPsec传输模式。
如果不清楚,选Y。
-
-
-
-
- IPv6: tunnel transformation
-
-
-
IPv6:IPsec隧道转换。
支持IPsec隧道转换。
如果不清楚,选Y。
-
-
-
-
- IPv6: IPsec BEET mode
-
-
-
IPv6: IPsec BEET模式
支持IPsec BEET模式
如果不清楚,选Y。
-
-
-
-
- IPv6: MIPv6 route optimization mode (EXPERIMENTAL)
-
-
-
IPv6: MIPv6路由优化模式
支持MIPv6路由优化模式。
-
-
-
-
- IPv6: IPv6-in-IPv4 tunnel (SIT driver)
-
-
-
IPv6: IPv6到 IPv4 隧道
隧道传输意味着将数据从一个协议类型压缩到另一个协议类型中,并通过理解这个压缩协议的一个隧道进行传输。这个特殊的隧道驱动包含IPv6到IPv4的套接口。如果你想要将两个IPv6网络通过唯一的 IPv4 路径进行连接的话,这非常有用。
选M生成模块,名叫 sit.ko 。如果不清楚,选Y。
-
-
-
-
- IPv6: IPv6-in-IPv6 tunnel
-
-
-
IPv6: IPv6到IPv6隧道
支持IPv6到IPv6隧道 (RFC 2473 )。
如果不清楚,选N。
-
-
-
-
- IPv6: Multiple Routing Tables
-
-
-
IPv6: 多重路由表
支持IPv6 多重路由表。
-
-
-
-
-
- IPv6: source address based routing
-
-
-
-
IPv6: 源地址基准路由
允许路由通过源地址或者前缀进行。
终端地址仍然是主要的路由钥匙。所以让源地址/前缀路由混合于同一个路由表中有时会导致不可预料的路由行为。这可以通过定义不同的路由表(普通的和源地址/前缀的)来解决。
如果不清楚,选N。
-
-
-
-
-
- IPv6: use netfilter MARK value as routing key
-
-
-
-
IPv6: 使用网络过滤器标记值作为路由钥匙
如果你选Y,你将可以通过不同的标记值定义不同的路由包。
-
-
-
-
- NetLabel subsystem support
-
-
-
网络标记子系统支持
网络标记提供清晰的网络包标志协议支持,比如 CIPSO 和RIPSO 。
如果不清楚,选N。
-
-
-
- Security Marking
-
-
这个选项给网络套接字提供安全标志,有点像 nfmark ,但主要目的是安全。
如果不清楚,选N。
-
-
-
- Network packet filtering (replaces ipchains)
-
-
网络包过滤
网络过滤器是一个用于过滤和切除网络传输包的构架。最普遍的用法就是以防火墙的形式运行LINUX,用于保护连接在Internet上的局域网。
内核提供的防火墙叫做 “包过滤器“,它可以通过包类型、来源地、终点等来拒绝相应的网络包。另外一种防火墙是基于代理的。它更安全,但是更强制(经常打断你),安装更麻烦。它审查网络通讯更直接,能够修改包,能够理解更高层次的协议。这是包过滤器所做不到的。
你可以选Y,如果你想要让你的LINUX机器做局域网到Internet的网关,但是你的机器又没有通用有效的 IP 地址。这叫做“伪装”:比如如果局域网的一台机器想要对外发送信息,你的机器可以“伪装”成那台机器。它传输信息到相应的终点,但是修改了包,使它看起来像是通过防火墙本身过来的一样。它通过两种方式工作:如果外部主机有响应,LINUX会静默地传输信息到相应的内网机器。在这种方式下,内网的机器对外网来说是完全不可见的,即使它们可以与外网通讯。另一种方式是你可以运行通用的可见的服务器,通过在伪装的局域网络中使用一种叫做portforwarding(埠传输)的构架。伪装也被叫做NAT(网络地址转换)。
另外一种包过滤器的用法是“透明代理”:如果一个内网机器试图连接外部主机,你的LINUX机器可以透明地转信至内网的服务器,通常是一个缓冲代理服务器。
还有一种用法是建立桥接式防火墙。使用桥接式网络包过滤可以使IP表“看到”桥接传输。为了在底层网络和以太网协议实现桥接式过滤,你要使用 ebtables (桥接网络过滤配置)
这里有很多模块,可以代替以前的伪装、包过滤、透明代理和埠传输工具。
注意你要在下面的“Fast switching”选项中选N,如果你要在这选Y。因为目前 Fast switching 会忽略包过滤器。
如果你编译内核的目的之一是为了当路由,选Y。如果仅仅是做为平常的主机,选N。如果不清楚,选N。
后面的子选项省略。
-
-
-
- DCCP Configuration (EXPERIMENTAL)
- SCTP Configuration (EXPERIMENTAL)
- TIPC Configuration (EXPERIMENTAL)
-
-
三个传输控制协议。
-
-
-
- Asynchronous Transfer Mode (ATM)
-
-
异步传输模式
ATM是一种高速度的网络技术,它应用于局域网和广域网中。它使用修改过的包尺寸,而且它的连接是定向的,只会占用非常小的带宽。
为了加入ATM网络,你的LINUX机器需要ATM网络卡。如果你有,在这选Y,并在下面相关卡的驱动选Y。
注意你需要一组用户空间的程序来真正运行ATM。
什么是ATM?
什么是ATM?第一个意思是自动提款机。
ATM,或者说异步传输模式,最初被设计用来为数字通讯传输宽带综合业务数字网,但也提供了一种将所有数据传输集成到相同构架的途径。ATM支持:
-
广域网并不固定于特定的物理实现,它有灵活的速度,独立于它所传输的数据类型。
-
就像可改善的物理资源一样,可升级的数据传送构架的规定已成为可能。
-
决定于应用和使用的物理连接的不同为速率的链接。
-
使用同一普遍技术的广域和局域网的集成。
-
在商业领域,解释每一被发送的认证和票据的数据单元的能力。
-
对于终极用户担保的服务质量的规定。
ATM协议是基于标准的,与由ATM论坛实现的ATM标准同等。ATM论坛是‘一非盈利性的国际组织,目的是通过协同性规定的快速汇聚来加速ATM产品 和服务的使用。由许多涉及ATM论坛的公司,包括摩托罗拉、微软、诺基亚、AT&T、 Mitsubishi、 Ericsson、 Sun微系统等。
ATM是一面向连接的技术,使用53字节的小的、固定的长度单元,允许网上的非常快速的交换。ATM网络,在数据能够在两节点之间传输之前,它们之间建立了一条虚拟路径。虚拟路径很像网上转换之间的管道。每一管道包含了一个或多个虚拟信道,每一信道仅单向的传输一独立的数据流。例如,为建立一电话通话,一条虚拟路径需两条各是64bps且反向的虚拟信道。每一虚拟信道有其自身的带宽和服务需求。
使用虚拟路径是因为ATM非常快,因此需要非常快的交换,而传统的路由器并不足够快速。没有时间来把包读入缓冲区,检查它的目的地址,查查询表以找到发送包的下一个地址,然后把包发送出去。ATM在数据传输开始之前将包按虚拟路径(VPI)和虚拟信道(VCI)编成独立的号码。数据单元仅包含简短的VPI和VCI(总共28位),不是整个目的地址,并且当数据单元还正在进入交换时VPI和VCI已被非常快的读和处理了,因此数据单元在交换本身花费很少的时间。使用虚拟路径和虚拟信道的另一优点是一旦建立,路径是固定的,除非设备问题;因此没有数据单元混乱无序的风险。这是同步(时间依赖)通讯更易于处理。在路径建立期间,服务质量也同时认定。这包括有带宽、传输时间、被传输的通信量的需要的抖动、允许ATM网络处理通讯的不同类型和保证对于终极用户所期望的连接质量。
-
-
-
- 802.1d Ethernet Bridging
-
-
802.1d 以太网桥接
如果你选Y,你的LINUX机器将可以做为以太网桥接,对于用户来说,它可以让连接上的不同的以太网段表现为一个段。几个桥接段还可以通过IEEE 802.1生成树算法再连接为更大的网络。这是一个标准,LINUX可以用这个标准来与其他第三方的桥接产品进行协作。
为了使用以太网桥接,你需要一些相关的配置工具。
如果你同时开启了IP表支持和桥接支持,你将让你的桥变成桥接式IP防火墙。IP表将可以看到被桥接的IP包,所以你在设置防火墙规则时,需要把这考虑进去。桥接时允许ARP表支持将让ARP表在连接链中看到被桥接的ARP包。
选M编译成模块,名为: bridge 。
如果不清楚,选N。
-
-
-
- 802.1Q VLAN Support
-
-
802.1Q VLAN 支持
选上这个,你可以在你的以太网接口中建立 802.1Q VLAN 接口。 802.1Q VLAN 支持大多数以太网接口,包括防火墙、桥接,当然也包括IP传输。你需要‘vconfig’ 的一个工具来使用VLAN 。
选M编译成模块,名为: 8021q 。
如果不清楚,选N。
-
-
-
- DECnet Support
-
-
DEC网络支持
DECnet网络协议在Digital(现在是 Compaq)的很多产品上使用。它提供可靠的流和顺序包连接,可以与 TCP/IP 进行通信。
当你使用 DECnet的时候,确保你在 “/proc file system support” 和 “Sysctl support”中选择Y,因为在它运行的时候,你需要sysctl的支持才能更改配置。
选M编译成模块,名为 decnet 。
-
-
-
- ANSI/IEEE 802.2 LLC type 2 Support
-
-
ANSI/IEEE 802.2 LLC type 2 支持。
这是一个逻辑的连接层,提供定向的连接支持。如果你需要 PF_LLC 套接口的支持,选Y。
-
-
-
- The IPX protocol
-
-
IPX协议
这是对 Novell 的网络协议,IPX的支持选项。IPX在局域网的 Windows 机器上广泛使用。如果你要访问 Novell NetWare 文件或者打印服务,你需要这个选项。为了保证工作,你还需要在下面的选项 “NCP file system support” 中选Y。
IPX类似于IP,而运行于IPX上层的SPX类似于TCP。这里同样有实验中的对SPX的支持选项(看下面的 “SPX networking” )。
IPX驱动会让你的内核增大16KB。选M编译为模块,叫做 ipx 。除非你真的需要让你的LINUX机器连接上Novell网络,否则可以选N。
什么是IPX?
要是你玩过红警,就知道IPX是干什么用的了,没它就不能联机玩坦克大战。
全称Internetwork Packet Exchange(网间数据包交换),IPX协议是Novell NetWare自带的最底层网络协议,主要用来控制局域网内或局域网之间数据包的寻址和路由,只负责数据包在局域网中的传送,并不保证消息的完整性,也不提供纠错服务。
应用:在局域网中传输数据包时,如果接收节点在同一网段内,通过IPX协议就直接按该节点的ID将数据传给它;如果接收节点不在同一网段内,那么 通过IPX协议可以将数据包交给NetWare服务器,再继续传输。在使用过程中,网络管理员可以通过使用相应的IPX路由命令,比如“routing ipx add/set staticroute”表示在IPX路由表中添加或配置静态IPX路由,“routing ipx set global”表示配置全局IPX路由设置。
-
-
-
-
- IPX: Full internal IPX network
-
-
-
IPX:完全内部IPX网络
每个IPX网络都有自己的地址标识符。有时给你的LINUX机器加上一个IPX网络地址是比较有用的(比如如果你的机器在不同的IPX网络中作为文件服务器:它将可以从各个地方用一个地址进行访问)。它工作的方式是在你的机器内部建立虚拟的“网络”,并且给它指派一个IPX地址。如果你想要这么做,选Y。
完全内部IPX网络允许你在内部网络的不同节点指派套接字。这通过在相关的绑定软件调用中(BIND,一个域名管理软件)给域 sipx_node 赋予套接地址值来实现。所以当绑定一个套接字到主网络的时候,程序总可以对节点域进行零值初始化。在这种情况下,当内部网络建立时,内核会给出默认的节点,从而指派给套接字。为了使完全内部IPX网络工作,包监听主网络的功能将被禁止,这些包是特殊的套接字到套接字之间的交互式包。这可能会破坏一些程序,特别是RIP/SAP后台程序。
如果不清楚,选N。
-
-
-
- Appletalk protocol support
-
-
Appletalk 协议支持
AppleTalk是苹果电脑用于连接网络的协议。如果你的LINUX机器要连接这样的网络,选Y。你将要用到 netatalk 包,这样你的机器可以在Macs和苹果网络中做为文件和打印服务器。
EtherTalk 是 AppleTalk 的以太网版本, LocalTalk 是 AppleTalk的专有的串行连接版本,它更慢,当然更便宜。LINUX完全支持EtherTalk和 LocalTalk。
选M编译为模块,名为 appletalk 。通常你肯定要编译它为模块,这样你可以重启你的 AppleTalk 栈,而不需要重启电脑。我听说苹果公司对GNU的抵制已经结束,所以政治上端正的人(应该是对苹果公司的相关政策有意见的人)都可以在这里选Y。
-
-
-
- CCITT X.25 Packet Layer (EXPERIMENTAL)
-
-
CCITT X.25包层次
X.25是标准网络协议的一种,有点像接力式的构架。你机器上的物理线路连接到 X.25 网络上的结点时,可以携带一些逻辑的点对点连接(叫做“虚拟电路”),这样可以连上其他的X.25网络中的机器。
政府、银行和其他组织倾向于使用它来互联,或者构建广域网(WAN)。很多国家有公用的 X.25 网络。 X.25 包含2部分协议,高层的是包层次协议PLP(如果你需要,在这选Y),底层的是链路访问过程平衡LAPB(你需要的话,在下面的选项“LAPB Data Link Driver”选Y)。
你可以通过两种方式连接 X.25 网络,一种是用专用的X.21协议的网络卡(LINUX不支持),另一种是通过标准的电话线,使用通常的modem(在下面的“X.25 async driver”选Y);或者通过以太网,使用通常的以太网卡,并通过以太网使用 LAPB(在 “LAPB Data Link Driver” 和 “LAPB over Ethernet driver” 选Y) 。
选M编译为模块,名为 x25 。如果不清楚,选N。
什么是X.25协议
X.25协议是数据终端设备(DTE)和数据电路终接设备(DCE)之间的接口规程。1974年,CCITT颁布了X.25的第一稿,它的最初文件取材于美国的Telenet、Tymnet和加拿大的Datapac分组交换网的经验和建议。它在1976、1978、1980和1984年又进行了多次修改, 增添了许多可选业务功能和设施。目前,它是广域分组交换网范畴中最流行的终端用户和网络之间的接口标准。
国际电报电话咨询委员会(CCITT)所采用的X.25协议为一项普遍采用的网络协议。X.25协议允许不同公众网络(例如CompuServe、 Tymnet或TCP/IP网络)上的计算机通过一台网络层面的媒介计算机通信。X.25协议接近符合开放式互连(OSI)通信模型定义的数据联络及物理层协议。
-
-
-
- LAPB Data Link Driver (EXPERIMENTAL) (LAPB)
-
-
LAPB数据连接驱动
链路访问过程平衡(LAPB)是X.25数据连接层的一部分。它提供可靠的服务来与其他主机进行数据交换。它也用来输送高层协议(主要是 X.25 高层包,但是其他的也可以输送)。
通常,LAPB的使用需要X.21网络卡。LINUX现在仅在以太网连接上支持LAPB。如果你要在以太网连接上使用LAPB,选Y,并在下面的“LAPB over Ethernet driver”选项中选Y。
选M编译为模块,名为 lapb 。如果不清楚,选N。
LAPB
链路访问过程平衡(LAPB)是数据链路层协议,负责管理在 X.25 中 DTE 设备与 DCE 设备之间的通信和数据包帧的组织过程。LAPB 是源于 HDLC 的一种面向位的协议,它实际上是 BAC (平衡的异步方式类别)方式下的 HDLC。LAPB 能够确保传输帧的无差错和正确排序。
LAPB 与 SDLC 和 HDLC 共享相同的帧格式、帧类型和字段功能,但与后两者不同的是,LAPB 受 ABM 传输模式的限制且只适用于组合站。LAPB 电路可由 DTE 或 DCE 建立。启动呼叫的站称为主站,响应的另一站称为次站。此外 LAPB 所使用的 P/F 比特位其它协议不同。
在 LAPB 中,由于没有主从关系,发送端使用 Poll 比特位来要求立即响应。在响应帧中,这个比特位变成接收端的 Final 比特位。接收端总是打开 Final 比特位去响应来自发送端 Poll 比特位的命令。由于确认响应可能会丢失并导致任何一端无法确保帧是否正确排序,就会采用 P/F 比特位,同时需要重建参考点。
LAPB 帧类型:
-
信息帧(I- 帧)传送高层协议信息和一些控制信息,主要功能是排序、控制流量、错误监测及恢复,它携带发送和接收序号。
-
监控帧(S- 帧)传送控制信息,主要功能是请求和挂起传输、报告状态信息及确认接收到 I-帧,它只携带接收序号。
- 非数字帧(U- 帧)携带控制信息,主要功能是建立和终止链路以及报告错误,它不携带序号。
-
-
-
- Acorn Econet/AUN protocols (EXPERIMENTAL)
-
-
Acorn Econet/AUN 协议
Econet 是一个相当老的和慢的网络协议,它主要用在Acorn电脑上,用于访问文件和打印机服务器。它使用本地的Econet 网络卡。AUN 是高层的 Econet 协议,运行于通常的以太网连接,它运行在 UDP 包协议之上,这两个协议轮流运行于IP协议上。
如果你选Y,你可以选择下面的两个选项,决定是在 UDP以太连接上还是在本地的 Econet 网络卡上传送 Econet/AUN 数据。
选M编译为模块,名为 econet 。
-
-
-
-
- AUN over UDP
- Native Econet
- WAN router
-
-
-
WAN路由
广域网 (WANs),类似 X.25 、frame relay和leased lines,是用于在大距离的范围连接局域网,传输数据的。它比用异步 modem 连接要快得多。通常,用来连接 WAN需要一种非常昂贵的设备,叫做“ WAN 路由”。
作为可选项,WAN路由可以编译进LINUX内核。使用商店里现在出售的便宜的WAN接口卡,搭建WAN路由可以只要花费和以前相比不到一半的价钱。如果你有这种类型的卡,并且想要把自己的机器作成WAN路由,在这选Y,并且在下面的WAN卡驱动选项中选择相应的卡。
选M编译为模块,名为 wanrouter 。如果不清楚,选N。
广域网
广域网(Wide Area Network ,简称WAN)是一种跨地区的数据通讯网络,通常包含一个国家或地区。广域网通常由两个或多个局域网组成。计算机常常使用电信运营商提供的设备作为信息传输平台,例如通过公用网,如电话网,连接到广域网,也可以通过专线或卫星连接。国际互联网是目前最大的广域网。对照OSI (Open System Interconnect ,开放式系统互连)参考模型,广域网技术主要位于底层的3个层次,分别是:物理层、数据链路层和网络层
WAN微型端口就是你的机器与WAN通讯的端口。
-
-
-
- QoS and/or fair queueing
-
-
QoS and/or 平衡队列
当内核有几个包要通过网络设备传输,它必须要决定哪个先传送,哪个后传送,哪个要丢弃。这就是队列规则,一些不同的算法就是用来使之传送得更为“平衡”。
如果你选N,你将使用标准的包调度器,叫做FIFO(先到先提供服务)。如果你选Y,你将可以选择一些算法,可以附属于不同的网络设备。这非常有用,比如你的一些网络设备是实时设备,它将需要最小化的数据浮动比率;或者你需要限制数据最大流量,用于匹配某些标准。这段代码是处于实验中的。
服务质量 (QoS) 支持可以使你在你的LINUX路由中使用分化型的服务(diffserv)和资源保留协议(RSVP),如果你在相应的选项选Y的话。
如果你在这选Y,同时在 “/proc file system” 也选Y,你将可以通过文件/proc/net/psched来阅读包调度器的状态。
可用的调度器在下面的选项都列了出来,你可以在喜欢的地方选Y。如果不清楚,选N。
-
-
-
- Network testing
-
-
网络测试。
-
-
-
-
- Packet Generator (USE WITH CAUTION)
-
-
-
包产生器(小心使用)
这个模块通过设置的频率和特定的接口,向预制包中注入数据。它用于网络接口的负荷测试和程序分析。如果你不知道上面说了什么,你不需要它,选N。
选M编译为模块,名为: pktgen 。
-
-
-
-
- TCP connection probing
-
-
-
TCP连接探测
这个模块能够捕捉到TCP在响应进入包时,在连接状态上的变化。这用于调试TCP防拥挤模块。如果你不明白上面说了什么,你不需要它,选N。
选M编译为模块,名为: tcp_probe 。
9.1.2. Amateur Radio support
业余广播支持
如果你想要让你的机器连接上业余的广播台,选Y。
注意这个回答不会直接影响到内核:选N只是会让编译器跳过所有与业余广播相关的选项。
9.1.3. IrDA (infrared) subsystem support
红外子系统支持
选Y,如果你需要内核支持IrDA (TM) 协议(红外通讯协议)。红外数据通讯是用于无线红外连接的标准,它支持大多数的笔记本和PDA。要使用红外通讯协议,你还需要一些用户空间的实用程序,比如 irattach 。如果你要和PDA交换比特数据,你需要安装一些OBEX 程序,比如OpenObex 。
选M编译为模块,名为: irda 。
红外数据传输及其规范简介
红外数据传输,使用传播介质——红外线。红外线是波长在750nm~1mm之间的电磁波,是人眼看不到的光线。红外数据传输一般采用红外波段内的近红外线,波长在0.75μm~25μm之间。红外数据协会成立后,为保证不同厂商的红外产品能获得最佳的通信效果,限定所用红外波长在 850nm~900nm。
IrDA是国际红外数据协会的英文缩写,IrDA相继制定了很多红外通信协议,有侧重于传输速率方面的,有侧重于低功耗方面的,也有二者兼顾的。 IrDA1.0协议基于异步收发器UART,最高通信速率在115.2kbps,简称SIR(Serial Infrared,串行红外协议),采用3/16 ENDEC编/解码机制。 IrDA1.1协议提高通信速率到4Mbps,简称FIR(Fast Infrared,快速红外协议),采用4PPM (Pulse Position Modulation,脉冲相位调制)编译码机制,同时在低速时保留1.0协议规定。之后,IrDA又推出了最高通信速率在16Mbps的协议,简称 VFIR(Very Fast Infrared,特速红外协议)。
IrDA标准包括三个基本的规范和协议:红外物理层连接规范IrPHY(Infrared Physical Layer Link Specification),红外连接访问协议IrLAP (Infrared Link Access Protocol) 和红外连接管理协议IrLMP(Infrared Link Management Protocol)。IrPHY规范制定了红外通信硬件设计上的目标和要求;IrLAP和IrLMP为两个软件层,负责对连接进行设置、管理和维护。在 IrLAP和IrLMP基础上,针对一些特定的红外通信应用领域,IrDA还陆续发布了一些更高级别的红外协议,如TinyTP、IrOBEX、 IrCOMM、IrLAN、IrTran-P等等。
红外传输距离在几cm到几十m,发射角度通常在0~15°,发射强度与接收灵敏度因不同器件不同应用设计而强弱不一。使用时只能以半双工方式进行红外通信。
符合IrDA红外通信协议的器件称为IrDA器件,符合SIR协议的器件称为SIR器件,符合FIR协议的器件称为FIR器件,符合VFIR协议的器件称为VFIR器件。
9.1.4. Bluetooth subsystem support
蓝牙子系统支持
蓝牙是低花费、低能耗、短距离的无线技术。它设计的目的是用来取代电缆和其他的短距离技术,比如红外技术。蓝牙的作用范围一般在10米。
LINUX蓝牙子系统包括一些组件:
Bluetooth Core,蓝牙核心支持(HCI设备和连接管理、调度)
HCI Device drivers ,HCI设备驱动(硬件接口)
SCO Module ,SCO模块(SCO声讯连接)
L2CAP Module ,L2CAP模块(逻辑连接控制和适配器协议)
RFCOMM Module ,RFCOMM模块(RFCOMM协议)
BNEP Module ,BNEP模块(蓝牙网络封包协议)
CMTP Module ,CMTP模块(CAPI信息传输协议)
HIDP Module ,HIDP模块(人性化接口设备协议)
选Y编译时内核,或者选M编译为模块,名为:bluetooth。
要使用LINUX蓝牙子系统,你需要一些用户空间的实用程序如 hciconfig 和 hcid 。这些程序和内核模块升级部件在 BlueZ 包中提供。
什么是蓝牙
一、蓝牙名字的由来
蓝牙的名字来源于10世纪丹麦国王Harald Blatand-英译为Harold Bluetooth。在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨 论后,有些人认为用Blatand国王的名字命名再合适不过了。Blatand国王将现在的挪威,瑞典和丹麦统一起来;就如同这项即将面世的技术,技术将 被定义为允许不同工业领域之间的协调工作,例如计算,手机和汽车行业之间的工作。名字于是就这么定下来了。
在丹麦的Jelling城,在教堂里立着一块纪念碑,这块纪念碑就是为了纪念Blatand国王的功绩和他的父亲,丹麦的第一个国王:Gorm the Old而立的。有趣的是,这块特别的石头在Harald和他的儿子Sven Forkbeard之间的一次战争后就遗失了,近600年里没有人见过这块石头。Sven获胜了(并且把他父亲流放了),因为这块刻着古代北欧文字的石头 是harald的荣耀,所以Sven埋葬了它。直到最近几年,一个农夫对他农场里的这个大土堆产生了好奇,才终于发现了这块石头。
这个标志最初是在商业协会宣布成立的时候由Scandinavian公司设计的。标志保留了它名字的传统特色,包含了古北欧字母“H”,看上去非常类似一个星号和一个“B”,在标志上仔细看两者都能看到。
二、蓝牙技术介绍
“蓝牙”(Bluetooth)原是十世纪统一了丹麦的国王的名字,现取其“统一”的含义,用来命名意在统一无线局域网通讯标准的蓝牙技术。 蓝牙技术是爱立信、IBM等5家公司在1998年联合推出的一项无线网络技术。随后成立的蓝牙技术特殊兴趣组织(SIG)来负责该技术的开发和技术协议的制定,如今全世界已有1800多家公司加盟该组织,最近微软公司也正式加盟并成为SIG组织的领导成员之一。
蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。它的 传输距离为10cm~10m,如果增加功率或是加上某些外设便可达到100m的传输距离。它采用2.4GHz ISM频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD和基带协议。TDMA每时隙为0.625μs,基带符合速率为1Mb/s。蓝牙支持 64kb/s实时语音传输和数据传输,语音编码为CVSD,发射功率分别为1mW、2.5mW和100mW,并使用全球统一的48比特的设备识别码。由于蓝牙采用无线接口来代替有线电缆连接,具有很强的移植性,并且适用于多种场合,加上该技术功耗低、对人体危害小,而且应用简单、容易实现,所以易于推广。
三、蓝牙技术
SIG组织于1999年7月26日推出了蓝牙技术规范1.0版本。蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。 底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。无线跳频层通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需要满足的条件。基带负责跳频以及蓝牙数据和信息帧的传输。链路管理负责连接、建立和拆除链路并进行安全控制。
蓝牙技术结合了电路交换与分组交换的特点,可以进行异步数据通信,可以支持多达3个同时进行的同步话音信道,还可以使用一个信道同时传送异步 数据和同步话音。每个话音信道支持64kb/秒的同步话音链路。异步信道可以支持一端最大速率为721kb/秒、另一端速率为57.6kb/秒的不对称连 接,也可以支持43.2kb/秒的对称连接。
中间协议层包括逻辑链路控制和适应协议、服务发现协议、串口仿真协议和电话通信协议。逻辑链路控制和适应协议具有完成数据拆装、控制服务质量 和复用协议的功能,该层协议是其它各层协议实现的基础。服务发现协议层为上层应用程序提供一种机制来发现网络中可用的服务及其特性。串口仿真协议层具有仿真9针RS232串口的功能。电话通信协议层则提供蓝牙设备间话音和数据的呼叫控制指令。
主机控制接口层(HCI)是蓝牙协议中软硬件之间的接口,它提供了一个调用基带、链路管理、状态和控制寄存器等硬件的统一命令接口。蓝牙设备 之间进行通信时,HCI以上的协议软件实体在主机上运行,而HCI以下的功能由蓝牙设备来完成,二者之间通过一个对两端透明的传输层进行交互。
在蓝牙协议栈的最上部是各种高层应用框架。其中较典型的有拨号网络、耳机、局域网访问、文件传输等,它们分别对应一种应用模式。各种应用程序 可以通过各自对应的应用模式实现无线通信。拨号网络应用可通过仿真串口访问微微网(Piconet),数据设备也可由此接入传统的局域网;用户可以通过协 议栈中的Audio(音频)层在手机和耳塞中实现音频流的无线传输;多台PC或笔记本电脑之间不需要任何连线,就能快速、灵活地进行文件传输和共享信息, 多台设备也可由此实现同步操作。
总之,整个蓝牙协议结构简单,使用重传机制来保证链路的可靠性,在基带、链路管理和应用层中还可实行分级的多种安全机制,并且通过跳频技术可以消除网络环境中来自其它无线设备的干扰。
四、应用前景
蓝牙技术的应用范围相当广泛,可以广泛应用于局域网络中各类数据及语音设备,如PC、拨号网络、笔记本电脑、打印机、传真机、数码相机、移动 电话和高品质耳机等,蓝牙的无线通讯方式将上述设备连成一个微微网(Piconet),多个微微网之间也可以进行互连接,从而实现各类设备之间随时随地进行通信。应用蓝牙技术的典型环境有无线办公环境、汽车工业、信息家电、医疗设备以及学校教育和工厂自动控制等。目前,蓝牙的初期产品已经问世,一些芯片厂 商已经开始着手改进具有蓝牙功能的芯片。与此同时,一些颇具实力的软件公司或者推出自已的协议栈软件,或者与芯片厂商合作推出蓝牙技术实现的具体方案。尽管如此,蓝牙技术要真正普及开来还需要解决以下几个问题:首先要降低成本;其次要实现方便、实用,并真正给人们带来实惠和好处;第三要安全、稳定、可靠地 进行工作;第四要尽快出台一个有权威的国际标准。一旦上述问题被解决,蓝牙将迅速改变人们的生活与工作方式,并大大提高人们的生活质量。
9.1.5. Generic IEEE 802.11 Networking Stack
通用IEEE 802.11 网络栈
这个选项使硬件独立于IEEE 802.11 网络栈。
10. Device Drivers 设备驱动
10.1. Generic Driver Options
通用驱动选项
10.1.1. Select only drivers that don’t need compile-time external firmware
选择不需要外部固件编译时间的驱动
选Y,如果你的驱动没有使用魔术般的固件(指智能的、可升级的、奇特的)。
如果不清楚,选Y。
10.1.2. Prevent firmware from being built
阻止编译固件
选Y可以阻止编译固件。固件通常和驱动相连,只有在升级固件后,才需要重新编译。
如果不清楚,选Y。
10.1.3. Userspace firmware loading support
用户空间固件装载支持
这个选项用于非内核的模块对固件的装载支持,它需要使用用户空间。内核本身的模块不一定提供相关支持。
10.2. Connector – unified userspace <-> kernelspace linker
连接器--用户空间<-> 内核空间统一连接
10.2.1. Connector – unified userspace <-> kernelspace linker
连接器--用户空间<-> 内核空间统一连接
这是在网络连接套接口协议上运行的用户空间<-> 内核空间统一连接。
连接器可以编译为模块,名为 cn.ko 。
-
-
-
- Report process events to userspace
-
-
向用户空间报告进程事件
让连接器向用户空间报告进程事件。比如派生指令、执行指令、ID变化和退出指令。
用户空间和内核空间
User space – 用户空间,指在内核外部或发生在内核外部的任何东西。
Kernel space – 内核空间 ,与用户空间相对,指那些发生在内核内部。
Linux将4G的地址划分为用户空间和内核空间两部分。在Linux内核的低版本中(2.0.X),通常0-3G为用户空间,3G-4G为内核空间。这个分界点是可以可以改动的。
正是这个分界点的存在,限制了Linux可用的最大内存为2G.而且要通过重编内核,调整这个分界点才能达到。实际上还可以有更好的方法来解决这个问题。由于内核空间与用户空间互不重合,所以可以用段机制提供的保护功能来保护内核级代码。
2.2.X版的内核对此进行了改动。这样内核空间扩张到了4G。从表面上看内核的基地址变为了0,但实际上,内核通常仍在虚址3G以上。
用户空间在2.2.X中从直观上变为0-4G,让人迷惑,不是可以直接访问内核了?
其实不然,同过使用页机制提供的保护,阻止了用户程序访问内核空间。
Linux地址的来龙去脉
Linux里的物理地址,虚拟地址,系统空间,用户空间,页目录,中间目录,页面表 等等概念,把人搞的晕头转向,下面我试图澄清这些数据结构之间的关系。
我们应该先搞清楚虚拟地址和物理地址的关系,我们在i386CPU里最少得有一层映射,即段映射,具体请参照有关文档。Linux对这一层进行了简单化,就一个段,0-4G,另一 层映射就是开启了页映射功能之后了,要么你就不要开,开了之后CPU就要把所以的地址 都到页目录,页表里走一遍,找到相应的物理地址。所以内核中GCC编译后的地址都是虚 拟地址,用户空间中的虚拟地址都必须找到其对应的物理地址方能使用。
那么虚拟地址到物理地址是怎么对应上的呢。
1.内核在初始化时探测到了本机物理内存的大小,按照4K大小计算出页面数,然后根 据这个数建立起名为mem_map的page数据结构的数组,请看下面几句话:page数组的下
标就是物理页面的页面号,这个数字后面加上12个0就是真正的物理页面的始址,下面我们就要利用这个page结构数组的下标来得出物理地址。呵呵,你现在知道物理地址是怎么来的了吧。如果你还不清楚请带着这个思路去查阅相关资料。
2我们要这个page结构数组有什么用呢?我们得到物理地址仅仅是用的数组的下标,而跟这个元素内容完全无关,下面我来讲一下,page结构里有list,lru,等指针是系统用来把这个page结构链接到三组不同队列中去,用来实现对物理页面的控制和管理的,例如页面的定期换入和换出。空闲队列中有那些页面,这些队列里的物理页面都是靠这个page结构来代表其自身进行各种调度。读者可以这么想,内核中alloc_pages()函数就是在那些page队列中找到page 然后进而得出物理地址。至于这其中的调度内容是复杂的,我们暂时先不讨论这些原理。
3.我们可以想象一下page结构在数组中是静态的,但是我们分配物理内存得到page一般不是从数组中来的,而是从各种不同的动态队列中。一个page结构现在可能是在空闲队列中,一会被分配了可能就到了不活跃队列中。得到了这个page结构就可以知道在mem_map数组中的下标,进而添加 12个0就是物理地址了(与4K对齐)。
4.关于内核空间与用户空间的区别,当前CS寄存器中第0和第1位决定当前处于的特权级别。随着进程的运行不断的切换级别,当CPU想访问内核级数据时,检查到当前CS显示的级别是用户级时就出现异常并处理。另外内核空间在3G以上,用户则是在3G以下,内核代码中页经常用地址在3G以上来检验错误。
5.页面的映射,比如你想运行一个程序,需要分配一块内存,不是一下就全部分配完的先在虚拟空间把空间留下,反正那玩意不花钱虚拟的吗。等真正访问到这些虚拟内存时,发现物理内存还没有呢,就找到一个物理页面,具体的由alloc_pages()来完成,至于物理页面到底是怎么来的请看上面几点,有了物理页面的地址之后就要把它注册到PGD,PMD,PTE中,下次在访问这个虚拟地址,就通过页面映射,顺利找到这个物理页面了。
10.3. Memory Technology Devices (MTD)
内存技术设备
10.3.1. Memory Technology Device (MTD) support
内存技术设备支持
内存技术设备是 flash、RAM 和类似的芯片,经常用于嵌入式设备中的连续文件系统。这个选项将提供对 MTD 驱动的通用支持,使之注册在内核之中,并且对潜在的用户列举出相关设备以便使用。它同样允许你对于特别的硬件和MTD设备用户选择个性化的驱动。如果不清楚,选N。
RAM内存
RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。
不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器中(例如硬盘)。正因为如此,有时也将RAM称作 “可变存储器”。RAM内存可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类。DRAM由于具有较低的单位容量价格,所以被大量的采用作为系统的主记忆。
RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM就不会。4~8M的RAM对于一般应用程序的运行已经足够,如果追求多媒体功能,64M的RAM容量也只能够算是基本要求。
-
-
-
- Debugging
-
-
调试
这为MTD子系统打开底层的调试。通常,你应该选N。
-
-
-
- MTD concatenating support
-
-
MTD并置支持
将并置的几个 MTD 设备整合成一个(虚拟的)设备。这允许你的JFFS (2)文件系统生成多重的物理的闪存。如果不清楚,选Y。
10.3.2. MTD partitioning support
MTD分区支持
如果你有一个设备,它需要将它自己的闪存分成几个复合的“分区”,每个对用户来说好像都是独立的MTD设备,选Y。如果不清楚,选Y。
注意,对于DiskOnChip设备,你不需要这个选项。在NFTL 设备上分区又是不同的情况:那是对块设备的“普通”的分区应用。
-
-
-
- RedBoot partition table parsing
-
-
RedBoot分区表分析
RedBoot是一个ROM监视器和启动装载器,它对于多重的在闪存设备中的“镜像”建立一个表,这个表存在于设备的可擦除块中,有点像分区表,对每个在闪存中的镜像提供偏移量、长度、名字。
如果你需要探测和分析这个表格的代码,并且对表格中的每个镜像声明MTD分区响应,在这选Y
你将同样需要相关的分析功能,它不会自动生成。比如,SA1100页驱动为此提供了一些选项。
-
-
-
-
- Include unallocated flash regions
-
-
-
包含未分配闪存区域
如果你需要声明每个未分配的闪存区域,作为MTD的“分区”,在这选Y。
-
-
-
-
- Force read-only for RedBoot system images
-
-
-
对 RedBoot系统镜像强制只读
如果你需要对‘RedBoot’、 ‘RedBoot Config’ 和‘FIS directory’ 镜像强制只读,选Y。
Direct char device access to MTD devices (MTD_CHAR) 对每个内存设备提供字符标识,从而使用户可以对内存设备进行读写管理。
Caching block device access to MTD devices (MTD_BLOCK) 一个对闪存的管理功能。
FTL (Flash Translation Layer) support (FTL) 也是一个对闪存的管理功能。
NFTL (NAND Flash Translation Layer) support (NFTL) 对NFTL的支持。
1、NAND FLASH芯片
1.1 芯片介绍
NAND FLASH是采用NAND结构技术的非易失存储器,内存有8位和16位两种组织形式,本文所讨论的FLASH都是8位的。FLASH的I/O接口可用于控 制命令和地址的输入,也可用于数据的输入和输出。FLASH主要以页为单位进行读写(也能够以字节为单位进行读写),以块为单位进行擦除。FLASH页的 大小和块的大小不同类型块结构而不同,块结构有两种:小块(图一)和大块(图二),小块FLASH包含32个页,每页512+16字节;大块FLASH包 含64页,每页2048+16字节。
大块和小块FLASH都有与页大小相同大小的页寄存器,用于数据缓存。当读数据时,先从FLASH内存单元把数据读到页寄存器, 外部通过访问FLASH I/O端口获得页寄存器中数据(地址自动累加);当写数据时,外部通过FLASH I/O端口输入的数据首先缓存在页寄存器,写命令发出后才写入到内存单元中。
FLASH典型的读操作时间为50ns/字,写操作时间为200us/页,擦除操作时间为2ms/块,块擦写次数超过100K,数据保存时间超过10年。
1.2 固有特性
NAND FLASH自身有一些特性,导致其不能象普通磁盘那样进行操作。主要特性如下:
a 出厂时可能存在坏块,并且使用过程中也会有坏块出现。
b 按页写,按块擦除。
c 写操作只能在空或已擦除的单元内进行。
d 块的擦写寿命有次数限制。
e 块擦除时间与页读写时间相比十分长。
需要通过软件的支持来消除这些特性导致的不足,使得能象操作普通磁盘一样进行FLASH操作。
内存总览:
一. SRAM
1. 属性
1). 易失性(vonlatile)
2). 通电期间不需要刷新(refresh)
2. 应用
1). 用于高速寄存器(high-speed register),cache,frame buffer,及相
关的小型存储部分。
2). 由于存取速度快,用于CPU内部存储:Pipeline and prefetch
buffers、general register set、cache。
也可用于external cache、DRAM burst circuits and in its
dual-ported form for digital signal processing circuits。
二. DRAM
1. 属性
1). 易失的(volatile)
2). 需定期的刷新(periodically refreshed)
2. 应用
1). 用于Main memory
三. SDRAM
1. 属性
1). Synchronous DRAM: DRAM memory chip的一种
2). 存取速度快:SDRAM 芯片可分为2块(cell blocks),在读取时可交错
使用:在读取其中一块的数据时,另一块已经准备好了。
2. 应用
1). 现在PC机的内存
四. EEPROM
1. 属性
1). 非易失(Non-vonlatile)
2). 可重写(rewritable)
3). 寿命:可写10K-100K 次。
五. Flash memory
1. 属性
1). EEPROM的一种。
2). 非易失(Non-vonlatile)
3). 不从电路板上取下就可以进行电擦除和再编程
4). 读取速度快(但没有PC上用作main memory 的DRAM快)
5). 抗震性比硬盘(hard disk)好
6). Flash memory chip包含NOR和NAND两种门(gate)。NOR芯片的功能类似电脑的主存(main memory),NAND芯片类似硬盘(hard disk)。
2. 应用
1). 用于存储卡(memory cards)、USB drives、数码相机内存卡、MP3 player、移动电话等存储模块
2). 可做成单独的芯片用在电路板上:近些年pc机上ROM BIOS芯片换成了Flash BIOS芯片,以便不取下或不替换芯片就可以进行BIOS更新。
3). 在数码相机里,NOR Flash存放内部软件,NAND Flash存储图片。
六. NOR Flash
1. 属性
1). 是Flash Memory的一种。
2). 由Intel于1988年开发,NOR Flash支持1-byte随机读取(one-byte random access)和现场执行(XIP–execute in place)。
3). 现场执行是指机器指令(machine instructions)可以从NOR Flash读取或直接从NOR Flash memory执行,而不必要像NAND Flash要先把指令放入主存(main memory:DRAM)
4). 使用寿命:100K次写
5). 像所有Flash memory一样,在写之前必须对一大块(large block)进行擦除,擦除一个16KB的块要花费几秒,但一次读或写1Byte是很快的。
2. 应用
1). 容量为1~16MB闪存, 主要应用在代码存储介质中。
七. NAND Flash
1. 属性
1). 由Toshiba开发。功能类似磁盘(disk)
2). 可重复写1百万次。
3). 擦除和写都比NOR快。
4). Flash Translation Layer (FTL)软件使NAND Flash对于OS看起来像一个disk drive。读写的单位都是512Bytes的块 (block)。不过一般一次都读写4块2 KB大小的页。
5). 比NOR便宜。
2. 应用
1). 适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大
INFTL (Inverse NAND Flash Translation Layer) support
Resident Flash Disk (Flash Translation Layer) support
NAND SSFDC (SmartMedia) read only translation layer
RAM/ROM/Flash chip drivers 注意这里。不要选错。
Detect flash chips by Common Flash Interface (CFI) probe 探测CFI闪存。
Detect non-CFI AMD/JEDEC-compatible flash chips 探测 非CFI闪存。
Flash chip driver advanced configuration options 闪存高级配置。
Support for Intel/Sharp flash chips对 Intel/Sharp 的闪存支持。
Support for ST (Advanced Architecture) flash chips 对ST 的闪存支持。
Support for RAM chips in bus mapping 对RAM支持,必选。
Support for ROM chips in bus mapping 对ROM支持,必选。
Support for absent chips in bus mapping对 absent chips 的支持
Older (theoretically obsoleted now) drivers for non-CFI chips 对老设备非CFI闪存的支持
Mapping drivers for chip access 闪存页面管理。子选项自己看着选,不清楚就都搞成模块。
Self-contained MTD device drivers 独立单元式内存设备驱动。
NAND Flash Device Drivers NAND闪存设备驱动。
OneNAND Flash Device Drivers OneNAND闪存设备驱动。
Parallel port support (PARPORT) 并行传输口支持。必选进内核。
1.总线的概念:
多个功能部件共享的信息传输线称为总线。采用总线结构便于部件和设备的扩充,使用统一的总线标准,不同设备间互连将更容易实现。
2.总线的分类:
总线分为内部总线、系统总线和外部总线。内部总线指芯片内部连接各元件的总线。系统总线指连接CPU、存储器和各种I/O模块等主要部件的总线。外部总线则是微机和外部设备之间的总线。
3.系统总线:
⑴数据总线DB(Data Bus):用于CPU 与主存储器、CPU 与I/O 接口之间传送信息。数据总线的宽度(根数)决定每次能同时传输信息的位数。因此数据总线的宽度是决定计算机性能的主要指标。计算机总线的宽度等于计算机的 字长。目前,微型计算机采用的数据总线有16位、32位、64位等几种类型。
⑵地址总线AB(Address Bus):用于给出源数据或目的数据所在的主存单元或I/O端口的地址。
⑶控制总线CB(Control Bus):用来控制对数据线和地址线的访问和使用。
4. 常用的总线标准
常用的总线标准有:ISA总线、EISA总线、VESA总线、PCI总线。目前微机上采用的大多是PCI总线。
5. 系统总线的性能指标
⑴总线的带宽:指的是单位时间内总线上可传送的数据量。
⑵总线的位宽总线的位宽指总线能同时传送的数据位数。
⑶总线的工作频率:工作频率越高,总线工作速度越快,总线带宽越宽。
总线带宽=总线位宽/8×总线工作频率 MB/s
并口又称为并行接口。目前,并行接口主要作为打印机端口,采用的是25 针D 形接头。所谓“并行”,是指8 位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。
串口叫做串行接口,现在的PC 机一般有两个串行口COM 1 和COM 2 。串行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。 虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口。通常 COM 1 使用的是9 针D 形连接器,也称之为RS-232接口,而COM 2 有的使用的是老式的DB25 针连接器,也称之为RS-422接口,这种接口目前已经很少使用。
PC-style hardware PC并口,必选。除非你不是PC。
Multi-IO cards (parallel and serial) 对PCI卡的并口/串口支持。必选。
Use FIFO/DMA if available (EXPERIMENTAL) 如果可能的话,使用 FIFO/DMA 。必选。
FIFO
FIFO 是一个首字母缩略词为 首先, 首先。这个表示描述队列的原则: 什么首先进来首先被处理, 什么进来下等待直到一被完成, 等。因而它是analagous 对人行为“站立在线” (更喜欢在美国英语) 或“队列” (更喜欢在英国英语), 人事假队列在次序他们到达的地方。
优先权队列是变异在在名字不合格FIFO 的队列, 因为它准确地不是描写的那数据结构的行为。排队的理论包含队列的更加一般的概念, 并且互作用在严密Fifo 队列之间。
表示 FIFO 可能被利用在另外环境:
为人队列, 参见 队列区域。
在计算机科学方面这项条款提到数据被存放在队列被处理的方式。各个项目在队列被存放在队列(simpliciter) 数据结构。第一数据增加来队列将是第一数据被去除, 然后处理连续地进行在同样次序。这是典型的行为为队列, 但看见也LIFO 和堆积算法。
在电子 FIFO 是第一数据被写总是第一数据读的一台半导体存储器。作用是可利用的作为包括地址计数器、控制逻辑和SRAM 的集成电路。FIFO 以时钟输入称同步FIFO; 否则它是异步的。设备典型地有产品叫做表明的旗子它是空的或充分。
在会计, FIFO 是一个通常方法为接近存货的价值。它是适当的有许多不同的批相似的产品的地方。方法假定, 下个项目运输将是最老的那键入仓库。实践上, 这反映部下的商业物质。参见LIFO 在这环境。
FIFO(First IN First Out)先进先出电路
实现数据先进先出的存储器件,FIFO的用途:普遍用作数据缓冲器,可以用在电话通讯网络的前端来同步输入的网络数据包。也可以用于顺序数据的缓冲,比如音频信号或视频信号。另一个广泛的应用是在处理器之间的通讯中。
FIFO的基本单元是寄存器,作为存储器件,FIFO的存储能力是由其内部定义的存储寄存器的数量决定 . FIFO存储器一般以数据量的深度X宽度的形式来说明所采用的基本结构
第一代FIFO存储器是基于“导向”理论的,数据从输入端被移到输出端,所需要的时间称为导向时间
每一个数据字需要一个状态触发器,因此对数据锁存的控制只能实现很短的FIFO的操作
以长度为8的FIFO为例说明其工作原理。入图所示
____________________
D, C, B, A ——> | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8|———>
两边的箭头表示数据移动的方向。A,B,C,D表示被处理的数据。1,2,3,4,。。。8表示FIFO的8个存储单元。表明这个FIFO中共有8 个寄存器单元。每个寄存器单元可以存储一个数据。所以寄存器的单元越多,FIFO的存储能力就越强。每个寄存器单元的位宽与FIFO的输入和输出端的位宽 是一致的。如果要处理的数据A,B,C,D是16位的数据,那么输入输出端及每个寄存器单元的位宽就都是16位。这个FIFO可以命名为 8X16FIFO。它在每一个时钟上升沿到来时,数据向右移动一个存储单元。这样在时钟的控制下,数据从左到右通过存储单元
FIFO通常是双端口的存储器,其中一个端口用于写入数据,而另一个端口用于读出数据。可以同时对存储器字存储单元进行写入和读出操作。它的数据吞吐率是普通RAM的两倍。
FIFO型的存储器不需要由地址来存取数据。需要由另外的信号线(或标志)来指明存储器的内容状态。
现在的FIFO存储器采用SRAM单元来实现。它是基于带两个指针的环行FIFO结构的。要写入的数据的存储地址放在写指针中,而FIFO结构中要读出的第一个数据的地址放在读指针中
在复位后,两个指针都指向存储器的同一个字单元。每次写操作后,写指针指向下一个存储单元。对数据字的读取操作,会把读指针指向下一个要读取的数据字
读指针就不断地跟随写指针,当读指针跟上写指针后,FIFO的结构里面为空。
如果写指针追上读指针,FIFO结构里面的数据是满载的。
如果从硬件上来实现循环存储器,可以用双端口的SRAM来存取数据。指针具用二进制计数器的特征,它用于产生SRAM的存储器地址
同步FIFO存储器的基本结构包括存储器阵列,标志逻辑和扩展逻辑(图太难画了,就不贴了)。
存储器阵列由双端口存储单元构成。允许同时对存储单元的两个端口(读端口和写端口)进行存取。
标志逻辑用于比较两个地址指针的值,如果两个值的比较结果为零,FIFO存储器为全空,同时全空标志为真。如果两个值的比较结果等于存储器的容量深度,说明存储器全满,同时全满标志为真。
还可以设置其他一些标志,比如半满,可编程接近满,可编程接近空等。它们也通过对偏移量寄存器中的编程值和存储器阵列中的字的数量进行比较来生成
(在张老师的课上,讲到读写时序的时候,关于标志逻辑,讲的太快,没有太深的体会,还需要看书1)
扩展逻辑通过对多个模块按容量深度扩展结构进行的级联来形成更深的FIFO存储器,采用令牌传递方法来实现逻辑上容量更深的FIFO。
在普通模式下(没有进行容量,深度级联的模式),每一个地址在到达最大值后,会跳会到零。
在容量深度扩展模式下,当地址指针到达最大值后,一个脉冲信号会送到扩展端口,该端口把令牌传到另一个FIFO存储器中,(直到令牌重新传回来,这个地址 指针才会增加)(这个地方还有点模糊,有待解决。问过张老师,他却给我讲的是两个FIFO的乒乓操作。由于我的思路不是很清晰,也没有继续问下去。当时张 老师也要开始讲课了,不好再打扰。)
字宽扩展,可以使FIFO存储器有更宽的数据通路
在字宽扩展模式中,读操作,写操作和重传输都一样。要在字宽上扩展多个FIFO存储器,必须同时通过对每个存储器的状态标志进行与操作生成“混合标志”。混合标志也包括全空标志和全满标志。这样才能保证FIFO存储器保持同步。
DMA(DirectMemoryAccess,直接内存存取),顾名思义DMA功能就是让设备可以绕过处理器,直接由内存来读取资料。打开硬盘的DMA 模式将大幅度的提高硬盘系统的功能,使我们能更快更好的进行视频处理和文件传输。打开刻录机的DMA选项,可以保障刻录品质,并降低刻录时的CPU占用率。
当我们向计算机中加入了一块新的声卡或其它适配卡时,安装程序可能会提醒我们应该选择一个DMA通道。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。DMA技术的重要性在于,利用它 进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来 储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。
在DMA传送开始的短暂时间内,基本上有两个处理器为它工作,一个执行程序代码,一个传送数据。利用DMA传送数据的另一个好处是,数据直接在源地址和目 的地址之间传送,不需要中间媒介。如果通过CPU把一个字节从适配卡传送至内存,需要两步操作。首先,CPU把这个字节从适配卡读到内部寄存器中,然后再 从寄存器传送到内存的适当地址。DMA控制器将这些操作简化为一步,它操作总线上的控制信号,使写字节一次完成。这样大大提高了计算机运行速度和工作效 率。
计算机发展到今天,DMA已不再用于内存到内存的数据传送,因为CPU速度非常快,做这件事,比用DMA控制还要快,但要在适配卡和内存之间传送数据,仍 然是非DMA莫属。要从适配卡到内存传送数据,DMA同时触发从适配卡读数据总线(即I/O读操作)和向内存写数据的总线。激活I/O读操作就是让适配卡 把一个数据单位(通常是一个字节或一个字)放到PC数据总线上,因为此时内存写总线也被激活,数据就被同时从PC总线上拷贝到内存中。
对于每一次写操作,DMA控制器都控制地址总线,通知应将数据写到哪段内存中去。 DMA控制数据从内存传送到适配卡的方法与上面类似。对每一个要传送的单位数据,DMA控制器激活读内存和I/O写操作的总线。内存地址被放到地址总线 上,像从适配卡到内存传送数据一样,以数据总线为通道,数据从源地址直接传送到目的地址。 DMA从DMA请求线(DREQ)上接收DMA请求,正像中断控制器从中断请求线(IRQ)上接收中断请求一样。
一个典型的从适配卡到内存的数据传送是这样进行的,首先,对DMA控制器编程,写入数据要到达的内存地址和要传送的字节数。适配器可以开始传送数据时,它 将激活DREQ线,与DMA控制器连通。DMA控制器在与CPU取得总线控制权后,输出内存地址,发送控制信号,使得一个字节或一个字从适配器读出并写入 相应内存中,然后更新内存地址,指向下一个字节(或字)要写入的地址,重复上面的操作,直至数据传送完毕。对控制器进行不同编程,就可以实现单字节传送 (即每传送一个字节都要求一个DREQ信号)或块数据传送(即全部数据传送只需要一个DREQ信号)。
如果你要往计算机中插一块适配卡,而且适配卡使用DMA,通常安装程序会让你选择一个DMA通道,设定DIP开关或跳线,来为相应适配器设置DMA通道。 尽管从理论上讲,只要不是同时使用DREQ线,不同的适配卡可以共享这条线的,但是按常规,我们最好为每个适配卡单独安排一个DMA通道,这样就可以保证 不会发生DMA冲突。附表是DMA的缺省分配情况。通道 功能 通道 功能 O 空闲 4 用于级联DMA控制器 1 空闲 5 空闲 2 软盘 6 空闲 3 空闲 7 空闲 从中可以看出,DMA通道2和4已被占用,在大多数微机上,通道1、3、5、6和7可由你任意分配。我们平时最好对自己的计算机上DMA通道的分配情况记 录下来,以免我们向计算机增加新硬件时出现两个适配卡共用一个通道,导致冲突。
SuperIO chipset support (EXPERIMENTAL) 超级I/O芯片支持。关闭是安全的。我的板上没有这种超级装备,所以不选。你们可以lshw|less看看有没有SUPER-IO/LPC字样,或者看看主板手册。
Support for PCMCIA management for PC-style ports 对 PCMCIA 的支持。笔记本要选。
AX88796 Parallel Port (PARPORT_AX88796) AX88796 并口支持。这是网络方面的东东。我不选。
IEEE 1284 transfer modes (PARPORT_1284) IEEE 1284传输模块。可以给打印机提供好的支持。我的机器上接了三台打印机+一台扫描仪(恐怖吧!)我就选了。
Plug and Play support (PNP) 即插即用支持。必选。不然你插U盘就不能自动识别了。
即插即用就是「Plug and Play」。计算机安装了硬件之后,还必须安装硬件本身的驱动程序,才能够使用。但对许多人来说,安装驱动程序并不是件容易的事,所以在LINUX操作系统中,就用「即插即用」的功能来解决这个问题。
即插即用的作法是在操作系统中,内置许多常用硬件的驱动程序。当你安装了硬件之后,如果系统中有此硬件的驱动程序,系统就会自动安装,如果没有的话,你就必须自己另外安装驱动程序了。
支持即插即用是一种使您可以快速简易安装某硬件设备而无需安装设备驱动程序或重新配置系统的标准。即插即用需要硬件和软件两方面支持,现在基本上都没什么问题了。因此主要是看计算机配件是否支持即插即用。如具备即插即用功能,安装硬件就更为简易。
PnP Debug Messages (PNP_DEBUG) 即插即用调试功能。一般人不会用到。
Plug and Play BIOS support (EXPERIMENTAL) (PNPBIOS) 即插即用BIOS支持。可选,看说明有ACPI支持就不用这个了。所以我选了下面的,没选这项。
Plug and Play ACPI support (EXPERIMENTAL) (PNPACPI) 即插即用ACPI支持。选了。
Block devices 块设备。要是你看了LINUX的相关教程,应该对/dev 下的文件有所了解,用 ls -l 命令,就可以看到前缀,哪些是文件,哪些是目录,哪些是块设备,哪些是管道,哪些是链接等等。
Normal floppy disk support (BLK_DEV_FD) 软驱支持。我有软驱,但根本没用过。所以编成模块。
XT hard disk support (BLK_DEV_XD) 8位的老式硬盘。估计现在没人有这玩意了吧。
Parallel port IDE device support (PARIDE) IDE并口支持。必选。我编成模块。后面的是一大堆相关选项,我都编成模块了。不想看那么多。反正编成模块又没什么大碍。
RAM disk support (BLK_DEV_RAM) RAM支持,可以让你把内存编成块设备。可选。我选了。
Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD)
RAM文件系统初始化。选了上面的这个一定要选。
Packet writing on CD/DVD media (CDROM_PKTCDVD) 刻录机支持。选为模块备用。
Enable write caching (EXPERIMENTAL) (CDROM_PKTCDVD_WCACHE) 允许在刻录时用缓冲,必选。
ATA over Ethernet support (ATA_OVER_ETH) 以太网ATA支持。编为模块备用。
Misc devices 其他公共设备。这里是杂牌设备。没什么用的,可以不用理。
Device driver for IBM RSA service processor (IBM_ASM) IBM服务系统用的一个设备驱动。
SGI IOC4 Base IO support
TI Flash Media interface support (EXPERIMENTAL)
MSI Laptop Extras
08.06、ATA/ATAPI/MFM/RLL support —> ATA设备选项。重点选项。搞错一点系统就启动不了。这里基本是要直接进内核的,不可以编成模块。(其实很容易理解,模块是内核启动后才能加载的;基本的硬件要是内核不支持,那根本就读不出来,也无法启动,哪里还能加你这个模块?是不是有点:先有鸡还是先有蛋的味道了?呵呵)
ATA是AT Attachment的缩写,意思是AT计算机上的附加设备。ATA可以使用户方便地在PC机上连接硬盘。 ATA标准从1994年至今共经历了7代标准,现在简述如下: ATA-1(1994):是最早的IDE标准。 ATA-2(1996):是EIDE的标准,支持PIO3,4和DMA 1,2传输方式,最大数据传输速度为16MB/s。 ATA-3(1997):引入了SMART和安全特性,没有制定新的传输标准。 ATA-4(1998):著名的“UDMA33”标准。引入了新的ATA命令和协议,最大数据传输速度为33MB/s。 ATA-5(2000):增加了一些新的ATA命令。最大数据传输速度为66MB/s。 ATA-6(2000):UDMA100。 ATA-7(2002):UDMA133。
一般说的ATA是广为使用的IDE和EIDE设备的相关标准。
其中就包含了 PATA和SATA
PATA就是Parallel ATA:并行ATA
Ultra ATA/133之前(包括Ultra ATA/133)都是PATA
SATA 就是Serial ATA :点对点串行ATA
它因为有更轻薄、更灵活的的接线
支持热插拔、功耗更低、安装简便性、内部散热以及驱动器配置方面带来很多的好处、数据传输速率更快等优点
将慢慢代替PATA成为硬盘接口的主流.
ATA/ATAPI/MFM/RLL support (IDE) ATA/IDE支持。注意,IDE其实就是ATA-1,所以菜单里没有IDE的独立项是正确的(一开始我还奇怪怎么没有IDE的独立菜单出来,真觉得菜)。所以为了表示高雅和故弄玄虚,我后面都尽量少用IDE这个词:)
<*> ATA/ATAPI/MFM/RLL support 必选。除非你是纯SCSI系统。
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support ATA加强功能,管理多个ATA盘,给ATA加速。我的最爱。让我的“ATA-1”硬盘从6M/s 提高到35M/s的传输速度!
Support for SATA (deprecated; conflicts with libata SATA driver) 对SATA硬盘的支持。在这个内核里,有两个地方提供SATA的支持,一个是主支持系统,它包含于SCSI菜单项中,它提供了对大量SATA硬盘的支持。一个是副支持系统,就是现在这个选项,它仅支持比较老的SATA。为了使这两个系统不冲突,这个系统主要是提供对PATA的支持,而SCSI菜单下的选项才是对SATA的真正支持。所以这里可以不选,在SCSI的有关部分选上就可以了。
Use old disk-only driver on primary interface 老式IDE支持。选了ATA加强功能,就不选这个选项了。
Include IDE/ATA-2 DISK support 对ATA-2的支持。Fast IDE就是ATA-2。选了。
# Use multi-mode by default 默认采用多重模式。如果你启动时有以下提示,就选这项:
hda: set_multmode: status=0×51 { DriveReady SeekComplete Error }
hda: set_multmode: error=0×04 { DriveStatusError }
<*> Include IDE/ATAPI CDROM support IDE/ATA CD-ROM支持。是的话就选。我的是SCSI的CDROM。不清楚的可以用ls /dev/h 然后按TAB,出hdb或者hdc字样的就是IDE的CDROM,我出的是scd0。
< > Include IDE/ATAPI FLOPPY support IDE-FLOPPY支持,同上。
SCSI emulation support (BLK_DEV_IDESCSI) SCSI仿真。让你用IDE来假冒SCSI,不用选。
IDE Taskfile Access (IDE_TASK_IOCTL) 最底层的IDE访问。用来底层恢复用的。不选。
— IDE chipset support/bugfixes
<*> generic/default IDE chipset support
通用IDE芯片支持,必选。
[ ] CMD640 chipset bugfix/support CMD640芯片支持。
[ ] CMD640 enhanced support CMD640加强支持。
PNP EIDE support (BLK_DEV_IDEPNP) 即插即用EIDE。有的话就选。应该知道EIDE是什么了吧?
[ ] PCI IDE chipset support PCI板的IDE支持。选。
# Sharing PCI IDE interrupts support 中断共享。选。
[ ] Boot off-board chipsets first support 当你有多个IDE,或者IDE设备不是直接连在板上的,那么你将会有IDE0/IDE1/IDE2等编号。而你需要用后面编号的设备来启动电脑的话选这项。当然还要进行一些设置。
<*> Generic PCI IDE Chipset Support 通用设置,选。
OPTi 82C621 chipset enhanced support (EXPERIMENTAL)
< > RZ1000 chipset bugfix/support
# Generic PCI bus-master DMA support 通用DMA通道支持。必选。
[ ] Force enable legacy 2.0.X HOSTS to use DMA LINUX2.0的老内核选这个。我就奇怪现在什么时代了还放这种老选项来忽悠人。
Use PCI DMA by default when available 自动开启DMA,必选。
[ ] Enable DMA only for disks 只为硬盘开启DMA,不选。
下面是一大堆芯片的支持。自己看着选。时刻注意自己配置到了哪一部分,这部分芯片是什么的芯片。现在是DMA部分,这是对DMA的芯片支持。大家看自己的板来选。
< > AEC62XX chipset support
< > ALI M15×3 chipset support
< > AMD and nVidia IDE support
< > ATI IXP chipset IDE support
< > CMD64{3|6|8|9} chipset support
< > Compaq Triflex IDE support
< > CY82C693 chipset support
< > Cyrix/National Semiconductor CS5530 MediaGX chipset support
< > HPT34X chipset support
< > HPT36X/37X chipset support
< > National SCx200 chipset support
< > Intel PIIXn chipsets support 我是INTEL的板,选这个。
< > NS87415 chipset support
< > PROMISE PDC202{46|62|65|67} support
< > PROMISE PDC202{68|69|70|71|75|76|77} support
< > ServerWorks OSB4/CSB5/CSB6 chipsets support
< > Silicon Image chipset support
< > SiS5513 chipset support
< > SLC90E66 chipset support
< > Tekram TRM290 chipset support
< > VIA82CXXX chipset support ]
Other IDE chipset support 其他IDE芯片支持。
[ ] IGNORE word93 Validation BITS 这个选项是为了解决ATA-4和ATA-5的硬件扫描冲突。不过,也可能会导致问题。默认是不选的。
SCSI device support
RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array)。
简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备 份技术。组成磁盘阵列的不同方式成为RAID级别(RAID Levels)。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。在用户看起来,组成的磁 盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多, 而且可以提供自动数据备份。
RAID技术的两大特点:一是速度、二是安全,由于这两项优点,RAID技术早期被应用于高级服务器中的SCSI接口的硬盘系统中,随着近年计算机技术的 发展,PC机的CPU的速度已进入GHz 时代。IDE接口的硬盘也不甘落后,相继推出了ATA66和ATA100硬盘。这就使得RAID技术被应用于中低档甚至个人PC机上成为可能。RAID通 常是由在硬盘阵列塔中的RAID控制器或电脑中的RAID卡来实现的。
RAID技术经过不断的发展,现在已拥有了从 RAID 0 到 6 七种基本的RAID 级别。另外,还有一些基本RAID级别的组合形式,如RAID 10(RAID 0与RAID 1的组合),RAID 50(RAID 0与RAID 5的组合)等。不同RAID 级别代表着不同的存储性能、数据安全性和存储成本。但我们最为常用的是下面的几种RAID形式。
(1) RAID 0
(2) RAID 1
(3) RAID 0+1
(4) RAID 3
(5) RAID 5
RAID级别的选择有三个主要因素:可用性(数据冗余)、性能和成本。如果不要求可用性,选择RAID0以获得最佳性能。如果可用性和性能是重要的而成本 不是一个主要因素,则根据硬盘数量选择RAID 1。如果可用性、成本和性能都同样重要,则根据一般的数据传输和硬盘的数量选择RAID3、RAID5。
SCSI,对于一些朋友来说这是一个陌生的名词。许多朋友们经常说SCSI光盘刻录机比IDE的稳定很多、SCSI扫描仪速度比Parallel Port的快很多、要加装MO就一定要有SCSI。但那是什么东西?SCSI有这么好吗?
SCSI的全名是:Small Computer System Interface,直译是“小型计算机系统专用借口”;顾名思义,这是为了小型计算机设计的扩充接口,它可以让计算机加装其他外设设备以提高系统性能或增加新的功能,例如硬盘、光驱、扫描仪等。
早期的计算机依速度、功能被区分为大型主机、小型计算机、微型计算机等多种等级,部分小型工作站、服务器属于小型计算机,而个人计算机属于微型计算机;因 此当时使用SCSI接口的机种也以工作站、服务器等中高档设备为主。今年则因个人计算机性能、扩充需求均大增,使SCSI在PC的应用亦日渐广泛。
谈到SCSI卡,已经使用SCSI的人会因性能显著提高而赞口不绝,话外之人则一脸茫然,浑然不知SCSI是何神仙;不过大部分应该是属于听过SCSI的大名,对他却不是很熟悉的普通人。
这也怪不了你,因为SCSI几经变革,传输率、支持设备等功能都有大幅度的改进,而这些世代变化都以近似的名词来表示,例如SCSI、Fast SCSI、Ultra SCSI、Ultra Wide SCSI等,其间的奥妙实非一般人所能明白。
其实暂时撇开SCSI市场的混乱名词,回归到规格时你会发现:原来SCSI目前仅有“2.5代“,而且名词简单易懂、非常好记,分别是SCSI、SCSI -2、SCSI-3。其中SCSI是最早的SCSI标准,一切由此发展;SCSI-2则是目前较普遍、一般人口中所指的SCSI;而SCSI-3因属于制 定中的规格,尚未完全确定,暂时仅能称为“0.5代“。
市场上号称Ultra的SCSI产品就属于正在迅速扩展版图的SCSI-3世代。
SCSI
SCSI是最早的标准规格,市场上已经看不到这类的SCSI卡在销售;不过当初定义的功能打下相当不错的基础,仍旧受到新规格的沿用,并据以扩充;所以想认识SCSI的基本功能,就必须从此开始。
“SCSI”这个名词的使用相当广泛,例如SCSI卡、SCSI扫描仪、SCSI接口等;因此有些书爱提到规格时会以“SCSI-1″来表示,一来可与后续发展的新规格做个分界,二来则避免和一般的SCSI泛称混淆。
最多可连接7部SCSI外围设备:
SCSI卡全部有8个设备编号,但SCSI接口卡本身必须占用1个,因此真正可用来串接设备的只有7个。
具备多任务输出/输入数据的能力:
SCSI与一般接口主要的不同点之一,就是SCSI设备在准备传输数据的空闲(尚未真正开始利用通道传送数据或中途需停下来传输操作以进行其他运算时),别的外设可以趁机先插队。如此可完全运用通道,减少通道空置不用的时间,充分发挥系统的性能。
多任务模式:相同时间可以完成更多工作,且通道的使用率完全不浪费。
非多任务模式:每件工作必须等前一件完成才可以开始,不仅效率差,且通道大部分时间都空闲着。
可同步传输数据:
数据实际传输的方式有异步(Asynchronous)与同步(Synchronous)之分,所谓异步就是来源端要传数据时,需先同志目的端:“我要传 数据了,请准备!“,等收到目的端的端回应:“好了!可以开始了!“之后,才开始传送数据到通道上;而同步则可先直接传送数据,省去等待确认的过程,所以 速度会比较快。
可以看得出来吧,相同的数据长度以同步方式传送可快太多了,他的资料传输率最高可达5MB/sec;若使用异步传输,则仅有1.8MB/sec哦!
可同时串接多种不同设备:
SCSI-1的外围设备有硬盘、磁带机等多种,且由于SCSI的目的是要借由单一通道扩充计算机与外围设备的沟通能力,所以在同一SCSI通道可以同时连接不同的设备种类。
具备启动能力:
如果连接的SCSI设备中有硬盘,在经过设置后,也可以把他当作启动的主硬盘使用。
随着计算机、外围设备的发展,SCSI-1已经不敷使用,必须修改、增加新的功能,才能适应新的需求,这新一代的规格便称为SCSI-2。目前市面上的SCSI卡多数在这个等级以上,他除了改进SCSI-1的缺点之外,也增加几项新能力:
更快的传输速率:
同样使用同步传输方式,但SCSI-2将传输频率提高到10MHz,可以在相同的数据宽度(8bits)下产生10MB/sec的高传输率。
目前一般称为的Fast SCSI的接口卡就是指这种SCSI-2卡;其中“Fast”指的是传输频率,可不只是数据传输率哦!
传输频率是1秒钟传递数据的次数,单位是MHz/sec;传输率则是1秒钟传递的数据量,单位为MB/sec。以SCSI-2而言,每秒的传输频率是10MHz/sec、每次可传8bits,则传输率为10MHz/sec×8bits=10MB/sec。
可同时串接更多的设备:
SCSI-2最多可同时串接7台或15台外设,其中可串接15台的接口卡特称为Wide SCSI。“Wide”的由来是因为他采用16bits的数据宽度,比一般8bits还宽2倍。如果你看到SCSI卡上标示Fast Wide SCSI时,表示他不仅可同时串接15项设备,且传输率可是有20MB/sec哦!
Wide的反义词是把Narrow,所以也有人把数据宽度为8bits的SCSI卡称为Narrow SCSI哦!
新的指令集提高产品的兼容性:
SCSI-1仅支持硬盘与磁带机,且规格内没有严格定义软件调用硬件服务的接口,而由硬件制造商各自开发,结果造成许多兼容性的问题,例如有些设备必须与 某家的SCSI卡配合才能正常工作,换张卡就没辙了。因此在SCIS-2中,不仅统一软件的调用程序、解决兼容性的问题,且支持许多新光学设备,例如光 驱、扫描仪、刻录机、MO等抽取式设备。
SCSI-3
你一定会怀疑笔者是不是搞错了,什么时候有SCSI-3规格出台?没错,刚开始我们也以为数据有误,但经过多方查找,赫然发现原来SCSI-3早就进入我 们的世界了,这到底是怎么回事呢?原来SCSI-3规格还没有完全确定,许多部分还在争议之中,但是有些产品却先进入市场。
Ultra SCSI属于SCSI-3规格
哇,太令人惊讶了,Ultra SCSI的数据宽度还是8bits,但速度又比Fast SCSI快1倍,达20MB/sec,因此也被称为“Fast-20 SCSI”,不过没想到他竟然属于SCSI的第3代!
除此之外,Ultra2、Ultra Wide、Ultra2 Wide也都属于SCSI-3;其中Ultra2传输速率为40MB/sec,也称为“Fast-40 SCSI”。而Ultra Wide、Ultra2 Wide则是采用16bits数据宽度,因此可串接的设备数为15部之外,传输率也提高为2倍,分别为40MB/sec与80MB/sec。
SCSI-3的未来
目前可接触到的SCSI-3产品,主要是以提高传输速度为主;正在发展中的还有Ultra-160m(可达160MB/sec)。除此之外当然还有许多新 的发展,例如为了适应串接设备的增加,必须提高串接的总长度;新的排线也不再局限与电子线路,未来可改用光纤以获得更佳的传输率;还有更方便的安装步骤、 在线插拔(Hot Swap)等功能都是未来SCSI努力的目标。
我们将SCSI各代的主要特点整理成如下的速查表,你可以系统地了解他们之间的差异,也可而已快速地查阅资料:
代 传输频率(MHz) 数据频宽(bits) 传输率(MB/sec) 可连接设备数(不含接口卡)
SCSI-1 5 8 5 7
SCSI-2 Fast 10 8 10 7
Wide 10 16 20 15
SCSI-3(尚未完全确定) Ultra(Fast-20) 20 8 20 7
Ultra Wide 20 16 40 15
Ultra(Fast-40) 40 8 40 7
Ultra2 40 16 40 15
传统的SCSI排线在传输速度上会与串接设备数、串接距离产生牵制关系,通常速度愈高,设备愈多,可串接的距离愈短;因此从Ultra2之后,全部改用全 新的LVD串接模块,LVD的特性为(Low Voltage Differential,低电压差动法)低电压、信号干扰少、并兼容于传统排线,可以有较长的串接距离、也可以兼顾传输速度与设备数。
细说SCSI卡
接下来无们要解剖SCSI卡的各个部分功能。不过请注意:在不同的卡上,这些部分的位置、大小、甚至芯片可能都不相同。你不妨和自己手边的SCSI卡对照看看。
内、外部接头:
经由排线,SCSI卡可与各项SCSI设备进行串接;内、外部接头可分别接到内、外设备。接头的种类依针脚数区分为50-pin与68-pin两种,一般以50-pin为主,68-pin则供Wide SCSI等高级设备使用。
每块卡的接头书量并不一致,要看卡的功能与厂商的设计来决定;不过,内、外各一组接头上一最基本的要求。
这些接头都必须经由排线才能与外围设备相连线,但设备端的排线、接头又有多种组合,所以统一在以后说明。
SCSI BIOS:
顾名思义,这是SCSI专用“基本输入/输出服务程序“的存放位置;功能与主板上的BIOS类似,负责提供外围设备、主机系统使用SCSI的底层函数与公用程序。
有些便宜的SCSI卡为了接生成本,上面并没有BIOS,此时开机就不会出现类似的开机画面;但是可以外挂驱动程序来提供原来的BIOS服务,只是性能会差一点。
控制芯片:
这是SCSI的核心芯片,你可以把他当作一片小型的CPU,因为他负责整个通道的运行及与中央处理器的通信等。
控制芯片通常是接口卡上最大的一片,相当显眼;不过各家使用的芯片可不一定相同。
接口卡的金手指:
SCSI接口卡与主板的电路通道。
设备使用指示灯:
此与硬盘指示灯的功能相似,是SCSI通道的使用指示,只要任一设备使用SCSI通道,该指示灯便会持续闪烁,可用来监视SCSI通道的使用状况。
设备使用指示灯接头:
也是用来监看SCSI通道的使用状况,可连接到主机面板或外接盒上的指示灯。
需求分析
各种SCSI接口卡在市面上几乎都买不到,但要记得一个原则:等级愈高、速度愈快、可连接设备愈多,价钱就愈贵;且贵的不只是接口卡本身,还包括SCSI外设,例如同容量的Ultra Wide SCSI硬盘就比一般的Fast SCSI硬盘贵上不少银子。
初次接触SCSI
一般说来,个人使用的SCSI设备,例如光驱、刻录机、MO、扫描仪等,仅需Fast SCSI接口即可游刃有余,因此笔者建议第一次接触SCSI的朋友,如果不打算使用SCSI硬盘,不妨采购几百元价位左右Fast SCSI卡当作入门,即便宜、又实用。
日后若有需要可在添置更高等级的SCSI卡,且一台计算机可以安装2张以上的SCSI卡,所以不用担心升级后的旧卡没有用武之地哦!
我要SCSI硬盘
如果你购买SCSI卡的动机是为了SCSI硬盘,那一定要买张好卡,否则一定会后悔,怎么说呢?答案与市场趋势有关。
首先你应该很清楚,目前IDE硬盘有高容量、低价格的倾向,因此在低价位区一段,SCSI硬盘即使有了优于IDE的效率也难以获得青睐,最后厂商赶错大喊:“我不卖了、我不做了“;取而代之的则是高价位、高效率的SCSI硬盘,而这些硬盘目前都用Ultra2规格。
或许这样还不能说服你,那么我再补充几个市场报导:目前50-pin的SCSI硬盘已逐渐减产,而国内部分代理商根本不进口;而同样使用68-pin的Wide硬盘,其价格与容量的Ultra2硬盘相差无几,你将如何抉择?!
现在你应该知道笔者的意思了,Ultra2才是你最佳的选择,虽然所费不斐,但绝对物超所值。
你要哪种SCSI?
通过前一节的介绍,我们已经知道SCSI还细分许成许多种,但是选购的主要考虑点则是传输率与可串接设备的数量。
对一般人而言,扩充7个设备已经足够未来几年的需要,所以是否需要Wide,自己可以衡量一下。至于传输率则须与计划扩充的设备配合,例如大部分的扫描 仪、刻录机均使用Fast SCSI接口,但高级硬盘会使用Ultra Wide、Ultra2等高速接口,你必须配合适当的卡才能发挥外围设备的威力。
接口选择SCSI
SCSI卡安装在主板上的接口有ISA、PCI这2种,其中ISA属于旧的接口,传输速度较慢(最高理论值为8MB/sec),仅适合光驱、扫描仪等速度不高的SCSI设备,一般应用在486以前的的主板。
<*> SCSI device support SATA硬盘这里要选上!
legacy /proc/scsi/ support 选。生成/proc/scsi/。可用cat /proc/scsi/scsi查看信息。我的是SCSI硬盘和CDROM,用的是SCSI-5的标准。
<*> SCSI disk support
< > SCSI tape support SISC磁带机支持
< > SCSI OnStream SC-x0 tape support 又一个SISC磁带机支持
< > SCSI CDROM support SCSI CDROM支持。我选了。
Enable vendor-specific extensions (for SCSI CDROM) 老的SCSI CDROM的升级。我的是新的,不选。
SCSI generic support (CHR_DEV_SG) SCSI通用支持,用来支持SCSI扫描仪、刻录机等。
SCSI media changer support (CHR_DEV_SCH) SCSI转换媒介支持。可以用cat /proc/scsi/scsi 命令看看有没有Type: Medium Changer 这个东西来选。我的没有,就不选了。
Probe all LUNs on each SCSI device (SCSI_MULTI_LUN) 扫描SCSI设备的逻辑编号。要是一个设备有多个编号,而系统又认不出的话,选这个。一般来说一个SCSI设备只有一个编号。
Verbose SCSI error reporting (kernel size +=12K) (SCSI_CONSTANTS) SCSI错误报告。有报告就是好。选!
SCSI logging facility (SCSI_LOGGING) SCSI记录设备。便于出错时记录和分析的,选。
SCSI Transports SCSI传输。
<M> Parallel SCSI (SPI) Transport Attributes 并行传输。选。下面的都模块。不知道会不会用到。
<M> FiberChannel Transport Attributes
<M> iSCSI Transport Attributes
SAS Transport Attributes
SAS Domain Transport Attributes
SCSI low-level drivers 低级别SCSI驱动。这里都是模块。我不知道干什么用的。用默认就行,不去动它。
PCMCIA SCSI adapter support 笔记本的SCSI 。
#Serial ATA (prod) and Parallel ATA (experimental) drivers SATA和PATA驱动。
一大堆驱动,我就选这个:
< > Intel PIIX/ICH SATA support
Old CD-ROM drivers 老式CDROM。不选。
Multi-device support (RAID and LVM) 磁盘阵列和逻辑卷。
LVM 是一种把硬盘驱动器空间分配成逻辑卷的方法,这样硬盘就不必使用分区而被简易地重划大小。
使用 LVM,硬盘驱动器或硬盘驱动器集合就会分配给一个或多个物理卷(physical volumes)。物理卷无法跨越一个以上驱动器。
物理卷被合并成逻辑卷组(logical volume group),唯一的例外是 /boot/ 分区。/boot/ 分区不能位于逻辑卷组,因为引导装载程序无法读取它。如果你想把 / 分区放在逻辑卷上,你需要创建一个分开的 /boot/ 分区,它不属于卷组的一部分。
由于物理卷无法跨越多个驱动器,如果你想让逻辑卷组跨越多个驱动器,你就应该在每个驱动器上创建一个或多个物理卷。
Fusion MPT device support MPT设备支持。MPT全称mobile Phone Tools 是MOTO 手机标配中所说的光盘所带的手机软件,由它配合数据线,完成手机与PC的连接.正确的安装mobile Phone Tools(MPT),是传输铃音、图片、照片及JAVA的基础。要是你的手机能和电脑连接,这个要选。我做为模块备用。
IEEE 1394 (FireWire) support —>
1394(Apple 称之为 FireWire(火线),Sony 称之为 i.Link,Texas Instruments 称之为 Lynx。)是IEEE标准化组织制定的一项串行接口标准。它支持外接设备热插拔、同时可为外设提供电源,省去了外设自带的电源、支持同步数据传输。 IEEE1394接口最初由苹果公司开发,早期是为了取代并不普及的SCSI接口而设计的。IEEE1394具有以下特点:
-
数字接口:数据能够以数字形式传输,不需数模转换,从而降低了设备的复杂性,保证了信号的质量。
-
即插即用 / 热插拔:系统在正常工作时, IEEE 1394 设备也可以插入或拆除,不需重新启动操作系统。
-
总线结构:采用读/写映射空间的结构,而不是 IEEE1212 标准规定的寻址发送数据方式,对于外部电缆和底板技术规格,都有详细规定;
-
速度快: IEEE 1394 标准定义了三种传输速率: 98.304 Mbps , 196.608 Mbps , 392.216 Mbps 。因为这三种速率分别在 100 Mbps , 200 Mbps , 400 Mbps 附近,所以标准中亦称之为 S100 , S200 , S400 。这个速度完全可以用来传输未经压缩的动态画面信号。而 IEEE 1394b 标准支持 800 Mbps 和 1600 Mbps 的传输速率。
-
兼容性好: IEEE 1394 总线可适应台式个人机用户的全部 I / O 要求,并可以与 SCSI 并口(小型计算机系统接口)、 RS232 标准串口、 IEEE 1284 标准并口、 Centronics 接口、 Apple’s Desktop Bus 等接口兼容。
-
接口设备对等( peer - to - peer ),不分主从设备,都是主导者和服务者。其中有足够的智能用于连接,不需附加控制功能。如此便可不通过计算机而在两台摄像机之间直接传递数据,也可以让多台计算机共享一台摄像机;
-
物理体积小,制造成本低,易于安装。
-
非专利性:使用 IEEE 1394 串行总线不存在专利问题。
- 价廉:适合于家电产品。 IEEE 1394 的价格降低,部分原因是通过串行数据传输来达到的,它采用了简化电子电路和电缆设计。其发送和接收器件作为标准芯片组提供,处理寻址、初始化、仲裁和协议。
IEEE1394 接口有 6 针和 4 针两种类型。 6 角形的接口为 6 针,小型四角形接口则为 4 针。最早苹果公司开发的 IEEE1394 接口是 6 针的,后来, SONY 公司看中了它数据传输速率快的特点,将早期的 6 针接口进行改良,从新设计成为现在大家所常见的 4 针接口,并且命名为 ilink 。(这也是 IEEE1394 的另外一种叫法) 6 针的,主要用于普通的台式电脑,时下很多主板都整合了这种接口,特别是 APPLE 电脑,统统采用的这种接口;另一种是 4 针的接口,从外观上就显得要比 6 针的小很多,主要用于笔记本电脑和 DV 上,与 6 针的接口相比, 4 针的接口没有提供电源引脚,所以无法供电,但优势也很明显:就是小!
I2O device support
I2O,是英文“Intelligent Input & output”的缩写,中文意思是“智能输入输出”, 它是用于智能I/O系统的标准接口。
由于PC服务器的I/O体系源于单用户的PC台式机,而不是为处理大吞吐量任务的专用服务器而设计的,一旦成为网络中心设备后,数据传输量大大增加,因而 I/O数据传输经常会成为整个系统的瓶颈。I2O智能输入/输出技术把任务分配给智能I/O系统,在这些子系统中,专用的I/O处理器将负责中断处理、缓 冲存取以及数据传输等烦琐任务,这样系统的吞吐能力就得到了提高,服务器的主处理器也能被解放出来去处理更为重要的任务。因此,依据I2O技术规范实现的 PC服务器在硬件规模不变的情况下能处理更多的任务,作为中小型网络核心的低端PC服务器可以从中获得更多的性能提高。
它能够在不同的操作系统和软件版本下工作,旨在满足更高的I/O吞吐量需求。I2O允许服务请求从PCI上的一个设备进入,而无需通过主处理器。I2O主机处理器将识别该服务请求并在本地进行处理。当主处理器正在执行其它任务时,它还允许服务请求在I20处理器处进行排队。
①降低主处理器的工作负载,从而提高系统性能
②增强I/O吞吐能力
③提供一个标准的I/O设备接口
④减少外围设备所需的驱动程序数量。
# Network device support 网络设备驱动。网卡驱动在这里了。自己看着选吧。不清楚就全部搞成模块也不会出错。
<M> Dummy net driver support
<M> Bonding driver support
<M> EQL (serial line load balancing) support
<M> Universal TUN/TAP device driver support
<M> General Instruments Surfboard 1000
ARCnet devices —>
Ethernet (10 or 100Mbit) —>大多数人都是这个网卡。
Ethernet (1000 Mbit) —> 千兆网卡驱动
Ethernet (10000 Mbit) —> 万兆网卡驱动
Token Ring devices —>IBM电脑上的网络,它叫令牌环网络,和以太网络是很类似的东西。
Wireless LAN (non-hamradio) —> 无线局域网
Wan interfaces —> WAN微型网络。注意你的是不是这种类型。
ATM drivers ATM取款机呵呵。看看上面网络部分的解释是什么东西。
FDDI driver support
<M> SysKonnect FDDI PCI support
FDDI(Fiber Distributed-Data Interface)
光纤分布式数据接口
FDDI是光纤数据在200公里内局域网内传输的标准。FDDI协议基于令牌环协议。它不但可以支持长距离传输,而且还支持多用户。
FDDI网络包括两个令牌环,一个用于备份以备主环失败时使用。主环提供100 Mbps 的速率。如果副环不需要进行备份,那么传输速率可以达到200 Mbps。单环可以延伸到最大距离,而双环却只能延伸到100 km。
FDDI是美国国家标准委员会X3-T9的产品,它符合OSI标准。它可被用于与使用其它协议的LAN互连。FDDI-II 是FDDI的一个变种,它加入了电路交换服务,这样就可以处理语音信号了。工作正在进行来使FDDI网络和SONET连接,而SONET是宽带ISDN的 一部分。
HIPPI driver support (EXPERIMENTAL) HIPPI,超高速并行接口。800Mbit/sec and
1600Mbit/sec的网速。估计没人有这样的网速吧。
PLIP (parallel port) support 并行线路传输。
<M> PPP (point-to-point protocol) support PPP拨号。
SLIP (serial line) support 串行线路传输支持
Keepalive and linefill 保持串行线路传输
Six bit SLIP encapsulation 6位串行线路传输支持
Fibre Channel driver support (NET_FC) 纤维通道驱动支持。这是一种高速传输协议。
Traffic Shaper (OBSOLETE) 一个不用的东东。
Network console logging support (EXPERIMENTAL) 网络远程命令支持。远程登录用。
Netpoll support for trapping incoming packets 看字面意思是追踪包的,可能黑客用。
Netpoll traffic trapping 和上面一样。
ISDN subsystem —> ISDN(Integrated Services Digital Network)
ISDN是综合业务数字网的简称,它由电话综合数字网(IDN)发展而来。ISDN是数字交换和数字传输的结合,它以迅速、准确、经济、有效的方式提供目 前各种通信网络中现有的业务,而且将通信和数据处理结合起来,开创了很多前所未有的新业务。 ISDN是一个全数字的网络,也就是说,不论原始信号是话音、文字、数据还是图象只要可以转换成数字信号,都能在ISDN网络中进行传输。在传统的电话网络中,实现了网络内部的数字化,但在用户到电话局之间仍采用模拟传输,很容易由于沿途噪声的积累引起失真。而对于ISDN来说,实现了用户线的数字化,提 供端到端的数字连接,传输质量大大提高。
由于ISDN实现了端到端的数字连接,它可以支持包括话音、数据、图象等各种业务。随着电子通信在全球不断扩大,我们许多人需要和不同地区的用户 交换信息。而现在人们对通信的要求已经不仅是简单的声音交换,还需要共享各种格式的不同信息。例如,有些人需要高速数据和文件传输;有些人可能需要多媒体 和会议电视;有些人则希望能访问中央数据库。ISDN的业务覆盖了现有通信网的全部业务,例如传真、电话、可视图文、监视、电子邮件、可视电话、会议电视 等,可以满足不同用户的需要。 ISDN还有一个基本特性是向用户提供了标准的入网接口。用户可以随意地将不同业务类型的终端结合起来,连接到同一接口上,并且可以随时改变终端类型。
ISDN主要有两种类型:基本速率(BRI)和基群速率(PRI)。
电信局向普通用户提供的均为BRI接口,采用原有的双绞线,速率可达144Kb/s。BRIISDN可在一对双绞线上提供两个B通道(每个 64K)和一个D通道(16K),D通道用于传输信令,B通道则用于传输话音、数据等。一路电话只占用一个B通道,因此,在同时进行多种业务或对话。 PRI接口速率为2.048Mb/s,用于需要传输大量数据的应用,如PBX,LAN互联等。
ISP是网络服务供应商.就像网通,电信这些部门都是ISP,一般缩写为SP.结点指的是接入点或者研发实验点.可以是一个末梢区域,也可以是一个IDC.
我办公室是用LAN,家里用DHCP的。这个就没选。用到的自己看着选吧。
Telephony Support —> 电话支持,这个选项只有当你在计算机中使用电话卡的时候才有用,比如在Internet上打电话。大多数普通用户没有电话卡,因此不需要这个选项。
Input device support —> 输入设备支持(键盘、鼠标、手柄、触摸屏等设备)
Generic input layer (needed for keyboard, mouse, …)face 解释很好玩:选这个要是你有任何连接到电脑的输入设备。不选如果你没有用到这些设备。呵呵。可能无线的鼠标和键盘不选这个吧。
Support for memoryless force-feedback devices (INPUT_FF_MEMLESS) 低内存力反馈设备。好像是高级货。好的游戏手柄吧。我就没这玩意了
Mouse interface老鼠的接口呵呵。
Provide legacy /dev/psaux device 必选。提供传统的/dev/psaux设备名
Joystick interface 游戏手柄接口。
Touchscreen interface触摸屏接口。
Event interface事件接口。选。
Event debugging事件接口调试用。
Input Device Drivers 输入设备
Keyboards键盘
Sun Type 4 and Type 5 keyboard
DECstation/VAXstation LK201/LK401 keyboard
XT keyboard
Newton keyboard
Stowaway keyboard
5种键盘的驱动。不知道是什么玩意。连牛顿键盘都有。
Mouse 鼠标
PS/2 mouse 这种鼠标比较多吧
Serial mouse
InPort/MS/ATIXL busmouse
Logitech busmouse 罗技鼠标
IBM PC110 touchpad
DEC VSXXX-AA/GA mouse and VSXXX-AB tablet
6种鼠标,自己选。我的是USB鼠标,不需要选。
[ ] Joysticks 手柄
[ ] Touchscreens 触摸屏
[ ] Miscellaneous devices – 其他设备,里面有个PC喇叭的支持,就是嘀一声响的东西。
Hardware I/O ports —>硬件IO
Serial I/O support 如果你的输入设备用到串口,选这个。
Gameport support 游戏端口支持。这个我感兴趣。
Character devices —> 字符设备。显示字符用的。就是在F1控制台下显示的情况。注意要和图形设备区别一下。。实际上我也不知道有什么区别。还不是照样要经过显卡?
Virtual terminal (VT) 虚拟终端,就是F1-F7的控制台。没这个的话,你什么都做不了呵呵。想不选也不行。这个没选项,虽然说明里说你可以选NO。
Support for binding and unbinding console drivers (VT_HW_CONSOLE_BINDING)控制台的驱动。要换控制台驱动的话选这个,我不知道怎么换,也不想给自己麻烦。
# Non-standard serial port support 非标准串口支持
Legacy (BSD) PTY support传统BSD支持
Parallel printer support并行打印机支持。我机器上有三台打印机,算是并行了吧?
Support for user-space parallel port device drivers 用户空间并行口设备驱动。
Texas Instruments parallel link cable support
Hardware Random Number Generator Core support 硬件随机数生成器。选。我选INTEL的。大家可以看着选。
/dev/nvram support (NVRAM) 操作CMOS的东西。
Enhanced Real Time Clock Support RTC加强版,双核必选。单核也要选。
RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一 个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT),可以参考一些单片机方面的书籍。
Double Talk PC internal speech card support (DTLK) 双工PC会话卡。
Siemens R3964 line discipline 西门子的东西
Applicom intelligent fieldbus card support APPLICOM的东东
Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL) 索尼的东东
<*> /dev/agpgart (AGP Support) AGP支持。自己看显卡选
Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) 3D支持,自己看显卡选。这个可以用glxinfo命令来看。会有Direct Rendering:YES出来。
ACP Modem (Mwave) support 猫的支持。
NatSemi PC8736x GPIO Support
NatSemi Base GPIO Support
AMD CS5535/CS5536 GPIO (Geode Companion Device)
RAW driver (/dev/raw/rawN) (OBSOLETE)
以上的是什么玩意我不知道。
HPET – High Precision Event Timer 高精度时钟控制,必选。
<M> Hangcheck timer
Telecom clock driver for MPBL0010 ATCA SBC TELECOM的时钟频率驱动
Serial drivers 串行驱动
8250/16550 and compatible serial support (SERIAL_8250) 8250/16550兼容串口输入支持 标准的设备。一般都选这个,除非你的硬件比较奇特,比如有总线形的老鼠,或者你的机器是只用来做远程控制的服务器,不需要直接在上面操作。
Console on 8250/16550 and compatible serial port (SERIAL_8250_CONSOLE)
串口设备的控制台支持。控制台就是F1-F6的控制台,叫TTY1-TTY6,这里是再加上串口设备的控制台。一般用不到。
Extended 8250/16550 serial driver options (SERIAL_8250_EXTENDED)
扩展8250/16550兼容串口设备选项。如果你用的是奇特的串口设备,选这个。
Digi International NEO PCI Support (SERIAL_JSM) 提供NEO的多串口卡支持。如果你有几个猫,用来进行拨入等工作的话,选上。这个支持只针对PCI板。
IPMI
事实上为降低服务器管理系统的开发成本及管理成本,并解决不同的服务器与周边设备因接口不同而无法沟通的问题, Intel、HP、NEC、Dell共同领导并结合了多家服务器及芯片制造厂商,为新一代的服务器制定了一项重要的共通规格 – IPMI (Intelligent Platform Management Interface),IPMI意义是智能平台管理接口。IPMI是一个开放的标准硬件管理接口规范。它提供了这样的体系结构,其中定义了各种不同的个体 设备如何能以标准的方式与CPU通信。透过IPMI这样的标准接口,系统管理员可轻易地从远程监控到服务器及Client端计算机的各项「健康状况」,并可依此获得各项MIS管理所需要的信息,即使当操作系统(OS)失效时,IPMI仍可独立运作,协助管理者迅速了解硬件失效的原因,并进一步诊断硬件的各项问题,以使系统能在最短时间内重新恢复运作。Intel、HP、Dell、IBM、和DEC是当今IPMI标准的推动者,他们努力促进IPMI规范被工 业广泛、开放的采用。作为推动者,这些公司协同工作,制定并合理化IPMI规范;不仅如此,他们还负有开发可支持IPMI规范的产品的使命。还有其他公司 在采用和注册IPMI标准。Intel IPMI web站点上有加入这个规范的正在实际采用IPMI的公司列表。
IPMI top-level message handler
Generate a panic event to all BMCs on a panic
Device interface for IPMI
IPMI System Interface handler
IPMI Watchdog Timer
IPMI Poweroff
Watchdog Timer Support (WATCHDOG)
这个名称的俗称是“看门狗”,通常,Watchdog可使CPU摆脱“死循环”的困境,检测到坏桢认为可能硬件出现故障复位硬件,一般来说个人电脑用不上。
TPM Hardware Support (TCG_TPM) 如果你有TPM的安全芯片,选这项。TPM卡是一种用于安全控制的卡,可以定制安全规则,让特定的组来访问。
I2C support -
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线 上,通过地址来识别通信对象。
SPI support (SPI)
SPI–Serial Peripheral Interface,串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。
Dallas’s 1-wire support (W1)
1-Wire 是一种单总线标准,接口方式简单可靠,可以工作在比较差的工作环境。
他的主要有点体现在所示用的DS系列器件上。比如DS1991(dallas的多密钥iButton),应用环境比较好,可以用在恶劣的环境下,比如潮湿。
另外,还有应用非对称密钥的iButton.
软件应用也比较简单,有API函数可用。
Hardware Monitoring support (HWMON) 硬件监视器支持。就是监视硬件情况的东东,比如像CPU温度监视、风扇监视等。下面是一堆驱动,选自己的。我的板没这玩意。
Misc devices
Multimedia devices 关于配置多媒体设备的选项。如果你有一块电视卡或者广播卡,需要打开这个选项。
Graphics support 图形支持,显卡在这选了。
Enable firmware EDID (FIRMWARE_EDID) 固件的EDID支持。一般都选。
EDID(Extended Display Identification Data) 是一种 VESA 标准数据格式,其中包含有关监视器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。 这些信息保存在 display 节中,用来通过一个 DDC(Display Data Channel)与系统进行通信,这是在显示器和 PC 图形适配器之间进行的。最新版本的 EDID 可以在 CRT、LCD 以及将来的显示器类型中使用,这是因为 EDID 提供了几乎所有显示参数的通用描述。
Support for frame buffer devices 对帧缓冲构架设备的支持。这东西可以让你在F1控制台下显示图像。
什么是frame buffer?
自kernel 2.2以来,Linux就具备了在控制台下显示图像的能力,这都归功于frame buffer。所谓的frame buffer,是计算机图形显示硬件(例如显卡)的一个抽象,它提供了一套通用的指令集,使得应用程序能够直接访问计算机的图形显示硬件。一般而言, frame buffer可以在以下几方面强化控制台的能力:
- 通过使用frame buffer,某些程序可避免使用X服务器,例如mplayer,如果设定视频输出设备为frame buffer,-vo fbdev,可以在控制台下播放视频。
使用它的方法:kernel /vmlinuz ro root=/dev/hda2 vga=0×317
如果发现CONFIG_FB=y,那么frame buffer选项已经开启,否则的话,你的内核还未支持frame buffer,你需要重新编译内核。
在确定了frame buffer已开启之后,就可以在Grub等启动器中加入frame buffer特有的选项。修改/boot/grub/menu.1st文件,加入类似于下文的文字:
title foo root (hd0,0) kernel /vmlinuz ro root=/dev/hda2 '''vga=0x317'''
注意上文中的粗体就是加入的frame buffer特有的选项,vga=0×317表示设置控制台的分辨率为1024×768,色深为16位。
下面的选项大家选自己的显卡。
VGA text console VGA模式的文本控制台。一般都选。
Enable Scrollback Buffer in System RAM (VGACON_SOFT_SCROLLBACK) 利用系统RAM来储存和滚动文本。一般是用显卡的显存。不过现在的显卡显存都够大够快了吧,一般不用选这个东东。
Video mode selection support (VIDEO_SELECT) 视频的模式选择支持。可以在menu.lst
加上 vga=ask 来选择模式(就是文本控制台的分辨率)。
MDA text console (dual-headed) (EXPERIMENTAL) MDA是老玩意,没用。
Framebuffer Console support 帧缓冲控制台支持。用控制台来控制帧缓冲,一般人员用不到。
Select compiled-in fonts (FONTS) 在控制台使用自定义字体。想美化控制台的人要选。不过我感觉2.6.19.1本身的控制台字体就已经很漂亮了。
Logo configuration 启动画面选择。这些我没玩过。想美化控制台的人可以玩玩。
Bootup logo (LOGO) 控制台的启动画面。
Standard black and white Linux logo 标准黑白LOGO
Standard 16-color Linux logo 16色LOGO
Standard 224-color Linux logo 224色LOGO
Backlight & LCD device support (BACKLIGHT_LCD_SUPPORT) 逆光LCD设备支持。
一般用于PDA上的。PC没什么用。
Sound 声卡
<*> Sound card support 声卡支持。
Advanced Linux Sound Architecture ALSA声卡驱动。一般都用这个。只能选为模块,无法编进内核。选了这个就不用选下面的Open Sound System了。
其他的除了在 ISA devices 或者PCI devices里要确保选上自己的声卡外,都可用默认设置。
ISA devices ISA声卡。
PCI devices PCI声卡驱动,一般的AC97都在这了。仔细看看里面的驱动,有没有自己用的声卡。选上与自己声卡型号相配的驱动,其他的都可以去掉。即便是声卡在新内核里面没能正常工作,也不会影响新内核。也不过就是没有声音。要是不了解,都编成模块也没什么问题,后面再慢慢加就是。
Open Sound System 选ALSA,不选这个。
USB support —> USB支持 。用默认设置就可以了。除非你发现你的USB口在接一些设备不能使用的时候再回来检查吧。其实即使用不了,你也不必重编内核,网上一定会有相应的模块下载,下好了用modprobe加就行。
MMC/SD Card support —> 这个是必选的,支持MMC/SD数码卡的。除非你不打算在自己的机器上管理数码相机的照片。
LED Support LED在手持仪上可能会用。PC用得不多。
LCD(Liquid Crystal Display),即液晶显示屏。一般皆分为单色与彩色液晶屏两种,目前单色的LCD已几乎退出笔记本电脑市场,而彩色的LCD仍持续发展。彩色LCD主 要又分为STN和TFT两种,其中TFT(Thin Film Transistor)LCD,又称为主动式电晶薄膜晶体管液晶显示屏,也就是被很多人俗称的真彩液晶显示屏;DSTN (Dual-Scn Twisted Nematic)LCD,即双扫瞄液晶显示屏。是STN LCD的一种显示方式,现在已经退出市场
LED显示屏(LED panel):LED就是light emitting diode ,发光二极管的英文缩写,简称LED。它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机 进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。LED显示屏 显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其 它公共场所。
它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
InfiniBand support
什么是InfiniBand?
InfiniBand架构是一种支持多并发链接的“转换线缆”技术,在这种技术中,每种链接都可以达到2.5 Gbps的运行速度。这种架构在一个链接的时候速度是500 MB/秒,四个链接的时候速度是2 GB/秒,12个链接的时候速度可以达到6 GB /秒。InfiniBand技术不是用于一般网络连接的,它的主要设计目的是针对服务器端的连接问题的。因此,InfiniBand技术将会被应用于服务 器与服务器(比如复制,分布式工作等),服务器和存储设备(比如SAN和直接存储附件)以及服务器和网络之间(比如LAN, WANs和the Internet)的通信。
EDAC – error detection and reporting (RAS) (EXPERIMENTAL) 错误检测和汇报系统。默认是模块,我编进内核。
Real Time Clock RTC时钟频率。我奇怪这么重要的东西默认是编为模块的。我编进内核。
RTC class (RTC_CLASS) 通用RTC支持,我这里编进内核,其他的用默认,懒得看那么多了。
DMA Engine support DMA支持。我都搞进内核,希望它能给我的硬盘提点速呵呵。IDE硬盘必选。SATA和SCSI硬盘好像作用不是很明显。
11. File systems 文件系统
(有人说在编译内核时应该将/boot分区和/分区的文件系统编译进内核,其它的可以编译成模块。对,但不确切。让我们来一起了解一下linux系统的启动顺序。在内核被加载后,如果initrd参数传入了内核,内核会去调用指定的文件。当然,initrd和System.map通常都是 /boot下。但是同样可以用initrd=(hd1,2)/initrd.img这样的方式指定。内核启动完成后将调用/sbin/init,(如果是链接要保证目标文件能被内核加载)。不同的系统的启动脚本可能不太一样,这里不详细介绍。启动脚本向内核加载模块时可能用/sbin/modprobe或 /sbin/insmod,由此看来/sbin的文件系统是要内核支持的。编译的内核模块一般在/lib/modules/的版本目录下,所以 /lib/modules的文件系统是要内核支持的。一旦其它文件系统的模块能加载,系统就能向正常的访问内核中的文件系统一样访问模块支持的文件系统了。由于启动脚本、fstab自动加载等文件一般在/etc目录下,因此/etc的文件系统是要内核支持的。
上面的解释很复杂,如果你不清楚,那么就把2.6.19.1提供的: Ext2 、 Ext3、 Ext4、Reiserfs 全部都编进内核。不要以为少编点东西进内核,速度就会快,性能就会好。现在的PC都很好了,那点速度差别是看不出来的。我在XP下开IE,和在Ubuntu下开FIREFOX,速度上根本感觉不出来。至于哪个快?自己用垃圾机器去做实验吧。
如果你没用过EXT4的话,现在可以用用了呵呵。用命令:mkfs来搞。不过会删除硬盘的东西,要小心。我是不知道EXT4是什么回事的。其实我到现在也还不知道FAT、NTFS、EXT-N等文件系统到底是什么玩意,有什么作用。也懒得去研究。
下面还有JFS、XFS等文件系统支持,关键的已经进内核了,其他的编为模块就行。要是确定不会用到,不编也行。万一真用到了就去网上下载,或者重编译系统。
< > JFS filesystem support JFS是IBM公司设计用于AIX系统上的文件系统。后来这一文件系统也能应用于Linux系统。
XFS support —>XFS是SGI公司为其图形工作站设计的一种文件系统,后来这一文件系统也能应用于Linux系统。
< > Minix fs support Minix可能是最早的Linux系统所使用的文件系统。后来被Ext2文件系统所取代。
< > ROM file system support 内存文件系统的支持。除非你是嵌入式系统的开发者,明确知道你要干什么,否则不要选这一项。
Inotify file change notification support (INOTIFY) 文件变更支持。有点像碎片整理的意思。选了。
# Quota support 配额支持。也就是说限制某个用户或者某组用户的磁盘占用空间。
< > Old quota format support 旧版本的配额支持。
<*> Quota format v2 support 新版本(第二版)的配额支持。
<M> Kernel automounter support 内核自动加载远程文件系统的支持。
<M> Kernel automounter version 4 support (also supports v3) 新的(第四版)的内核自动加载远程文件系统的支持,也支持第三版。
Filesystem in Userspace support 用户空间文件系统支持
CD-ROM/DVD Filesystems — 光盘文件系统
<*> ISO 9660 CDROM file system support 必选这个。其他的都随便了。
DOS/FAT/NT Filesystems — 微软文件系统的支持。基本上大家的机器都有吧。VFAT是必选的,NTFS有个写支持,大家可以选来试试看看能不能写NTFS盘。
Pseudo filesystems -
# /proc file system support这个必选,其他用默认选项就行。
Miscellaneous filesystems –其他文件系统支持。
里面有个选项:
<*> Compressed ROM file system support (cramfs) 对ROM的支持,这里要选上!否则会出现:
VFS:Cannot open root device “hdxy” or unknow-block(0,0)
Please append a correct “root=” boot option
kernel panic-not syncing: VFS:Unable to mount root fs on unknow-block(0,0) 这种故障现象!够你郁闷好几天!
其他的默认就行。懒得看了。
Network File Systems – 网络文件系统支持。我都默认了。里面有NFS和SAMBA的文件系统呵。默认是选上的,就不用管了。
Partition Types -分区类型
Advanced partition selection 高级分区选择,如果你不是用Linux来管理硬盘分区表,选这个。一般来说,要选,而且要选上里面的WINDOWS选项。因为我的硬盘是在WINDOWS下格式化分区的。
Native Language Support 语言支持 自己看着选。我都搞成模块。也不省那点硬盘空间。
— Base native language support
(utf8) Default NLS Option
<*> Codepage 437 (United States, Canada) 美国、加拿大
< > Codepage 737 (Greek) 希腊语
< > Codepage 775 (Baltic Rim)
< > Codepage 850 (Europe) 欧洲
< > Codepage 852 (Central/Eastern Europe) 中/东欧
< > Codepage 855 (Cyrillic)
< > Codepage 857 (Turkish) 土耳其
< > Codepage 860 (Portuguese) 葡萄牙
< > Codepage 861 (Icelandic) 冰岛语
< > Codepage 862 (Hebrew)
< > Codepage 863 (Canadian French) 法属加拿大
< > Codepage 864 (Arabic) 阿拉伯
< > Codepage 865 (Norwegian, Danish) 挪威
< > Codepage 866 (Cyrillic/Russian)
< > Codepage 869 (Greek)
<M> Simplified Chinese charset (CP936, GB2312) 简体中文
<M> Traditional Chinese charset (Big5) 繁体中文
<M> Japanese charsets (Shift-JIS, EUC-JP) 日本语
<M> Korean charset (CP949, EUC-KR) 韩国语
< > Thai charset (CP874, TIS-620) 泰国语
< > Hebrew charsets (ISO-8859-8, CP1255)
< > Windows CP1250 (Slavic/Central European Languages)
< > Windows CP1251 (Bulgarian, Belarusian)
<*> ASCII (United States)
< > NLS ISO 8859-1 (Latin 1; Western European Languages)
< > NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages)
< > NLS ISO 8859-3 (Latin 3; Esperanto, Galician, Maltese, Turkish)
< > NLS ISO 8859-4 (Latin 4; old Baltic charset)
< > NLS ISO 8859-5 (Cyrillic)
< > NLS ISO 8859-6 (Arabic)
< > NLS ISO 8859-7 (Modern Greek)
< > NLS ISO 8859-9 (Latin 5; Turkish)
< > NLS ISO 8859-13 (Latin 7; Baltic)
< > NLS ISO 8859-14 (Latin 8; Celtic)
< > NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
< > NLS KOI8-R (Russian)
< > NLS KOI8-U/RU (Ukrainian, Belarusian)
<*> NLS UTF8
Distributed Lock Manager (DLM) (DLM) 看说明是用来锁定应用程序的。
12. Instrumentation Support 测试用的支持项目
Profiling support (EXPERIMENTAL) (PROFILING) 剖面支持,用一个工具来扫描和提供计算机的剖面图。
Say Y here to enable the extended profiling support mechanisms used
by profilers such as OProfile.
13. Kernel hacking 内核调试。
黑客用的。里面有个魔术键功能,有兴趣的可以编进去。其他的都不用选。
[ ] Show timing information on printks
[ ] Kernel debugging
[ ] Magic SysRq key 魔术键功能,用alt+PrintScreen+特定键位 的组合键来控制系统,在系统崩溃时特别有用,有点类似win2000的ctrl+alt+del。相关组合键:
摘自:Linux新手管理员手册,我最喜欢的一本关于LINUX的书,打印出来放在床头看。里面写得非常好,我非常佩服老外的认真,也非常感谢翻译人员。大家都辛苦了啊呵呵。
这本书比较老,但是就是老的书才有味道,特别是你想尝试F1控制台的时候,它非常有用。不过人的口味不一样,合适我的未必合适你。有兴趣的可以去网上搜索下载。
<Alt><SysRq><command_key> (非必须掌握)
这是在Linux的内核(底层内核)上支持的一组组合键。它意味着这些组合键在大部分情况下都是
有效的。组合键主要是针对开发人员的程序调试目的或者在紧急场合下才使用;你也可以使用其他
的办法,安全第一。<SysRq>键在PC上指的是PrintScreen键。组合键的功能可以通过设置相对应的
内核参数来激活或者取消,比如: echo "1" > /proc/sys/kernel/sysrq
<Alt><SysRq><k>
终止在当前虚拟终端上运行的所有进程(包括X窗口)。这个组合键被称为“安全访问键“(SAK).
<Alt><SysRq><e>
发送 TERM 信号(结束信号)到除了init进程以外的所有运行进程,要求其退出
<Alt><SysRq><i>
发送 KILL (终止信号)到除了init进程以外的所有运行进程, 这个组合键比上一个更加有效,
但是也可能引起一些程序被异常终止。
<Alt><SysRq><l>
发送KILL命令到所有运行进程(包括init),系统将不再能够使用
<Alt><SysRq><s>
在所有的挂载文件系统上运行紧急同步(缓存写) 。这可以保护数据丢失
<Alt><SysRq><u>
以只读模式重新挂载所有已加载的文件系统。这和上面的同步组合键有相同的功能,但是另外有一
个好处:如果操作顺利完成,下一次硬件重新启动时,fsck将不会重新检查所有的文件系统。
<Alt><SysRq><r> 关闭键盘的原始模式。当你的X窗口程序挂住没有响应时特别有用。使用这个组
合键之后,你可能会接着使用<CTRL><ALT><DEL>程序启动。
<Alt><SysRq><b>
不进行同步和卸载就立刻重新启动系统。之后你可能会碰到一下错误信息。
<Alt><SysRq><o>
关机 (如果正确设置以后)
<Alt><SysRq><p>
导出当前的寄存器和标志到控制台
<Alt><SysRq><t>
导出当前任务和相关信息到控制台
<Alt><SysRq><m>
导出内存的内容到控制台
<Alt>SysRq><数字>
“数字”从0到9。设置控制台记录的级别,用于控制哪一些内核信息将被显示在控制台上。举例,
“0”意味着只有象PANIC和OOPS的之类的紧急信息才被显示在控制台上。
<Alt><SysRq><h>
显示帮助信息。还有,任何其他不被支持的 <Alt><SysRq><key> 组合键将显示同样的帮助。
14. Security options 安全选项。
这里是有关LINUX的安全选项部分,有点专业,我看不太懂。用默认设置,不去管它。
15. Cryptographic options 密码选项。
有MD5和CRC32校验支持,默认选择就是。
MD5 在LINUX中可以用md5sum命令来校验。
md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩“成一种保密的格式(就是把一 个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些 算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电 脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由ronald l. rivest在1992年8月向ieft提交。
rivest在1989年开发出md2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信 息末尾。并且根据这个新产生的信息计算出散列值。后来,rogier和chauvaud发现如果忽略了检验和将产生md2冲突。md2算法的加密后结果是 唯一的–既没有重复。
为了加强算法的安全性,rivest在1990年又开发出md4算法。md4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息 字节长度mod 512 = 448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damg?rd/merkle迭代结构的区块,而且每个区块要 通过三个不同步骤的处理。den boer和bosselaers以及其他人很快的发现了攻击md4版本中第一步和第三步的漏洞。dobbertin向大家演示了如何利用一部普通的个人电 脑在几分钟内找到md4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,md4就此被淘汰掉了。
尽管md4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用。除了md5以外,其中比较有名的还有sha-1、ripe-md以及haval等。
一年以后,即1991年,rivest开发出技术上更为趋近成熟的md5算法。它在md4的基础上增加了“安全-带子“(safety-belts)的概 念。虽然md5比md4稍微慢一些,但却更为安全。这个算法很明显的由四个和md4设计有少许不同的步骤组成。在md5算法中,信息-摘要的大小和填充的 必要条件与md4完全相同。den boer和bosselaers曾发现md5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。
van oorschot和wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索md5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代md5算法的md6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响md5的安全性。上面所有这些都不足以成为md5的在实际应用中的问题。并且,由于md5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,md5也不失为一种非常优秀的中间技术),md5怎么都应该算得上是非常安全的了。
算法的应用
md5的典型应用是对一段信息(message)产生信息摘要(message-digest),以防止被篡改。比如,在unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:
md5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
这就是tanajiya.tar.gz文件的数字签名。md5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的md5信息 摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文 件重新计算md5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用md5还可以防止文件作者的” 抵赖“,这就是所谓的数字签名应用。
md5还广泛用于加密和解密技术上。比如在unix系统中用户的密码就是以md5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统 把用户输入的密码计算成md5值,然后再去和保存在文件系统中的md5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码 的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为“跑字典“的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表, 另一种是用排列组合方法生成的,先用md5程序计算出这些字典项的md5值,然后再用目标的md5值在这个字典中检索。我们假设密码的最大长度为8位字节 (8 bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是p(62,1)+p(62,2)….+p (62,8),那也已经是一个很天文的数字了,存储这个字典就需要tb级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码md5值的情况 下才可以。这种加密技术被广泛的应用于unix系统中,这也是为什么unix系统比一般操作系统更为坚固一个重要原因。
算法描述
对md5算法简要的叙述可以为:md5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在md5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(bits length)将被扩展至n*512+448,即n*64+56个字节(bytes),n为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个 0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字 节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。
md5中有四个32位被称作链接变量(chaining variable)的整数参数,他们分别为:a=0×01234567,b=0×89abcdef,c=0xfedcba98,d=0×76543210。
当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。
将上面四个链接变量复制到另外四个变量中:a到a,b到b,c到c,d到d。
主循环有四轮(md4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果 加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。
以一下是每次操作中用到的四个非线性函数(每轮一个)。
f(x,y,z) =(x&y)|((~x)&z)
g(x,y,z) =(x&z)|(y&(~z))
h(x,y,z) =x^y^z
i(x,y,z)=y^(x|(~z))
(&是与,|是或,~是非,^是异或)
这四个函数的说明:如果x、y和z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。
f是一个逐位运算的函数。即,如果x,那么y,否则z。函数h是逐位奇偶操作符。
假设mj表示消息的第j个子分组(从0到15),<<
ff(a,b,c,d,mj,s,ti)表示a=b+((a+(f(b,c,d)+mj+ti)<< gg(a,b,c,d,mj,s,ti)表示a=b+((a+(g(b,c,d)+mj+ti)<< hh(a,b,c,d,mj,s,ti)表示a=b+((a+(h(b,c,d)+mj+ti)<< ii(a,b,c,d,mj,s,ti)表示a=b+((a+(i(b,c,d)+mj+ti)<<
这四轮(64步)是:
第一轮
ff(a,b,c,d,m0,7,0xd76aa478)
ff(d,a,b,c,m1,12,0xe8c7b756)
ff(c,d,a,b,m2,17,0×242070db)
ff(b,c,d,a,m3,22,0xc1bdceee)
ff(a,b,c,d,m4,7,0xf57c0faf)
ff(d,a,b,c,m5,12,0×4787c62a)
ff(c,d,a,b,m6,17,0xa8304613)
ff(b,c,d,a,m7,22,0xfd469501)
ff(a,b,c,d,m8,7,0×698098d8)
ff(d,a,b,c,m9,12,0×8b44f7af)
ff(c,d,a,b,m10,17,0xffff5bb1)
ff(b,c,d,a,m11,22,0×895cd7be)
ff(a,b,c,d,m12,7,0×6b901122)
ff(d,a,b,c,m13,12,0xfd987193)
ff(c,d,a,b,m14,17,0xa679438e)
ff(b,c,d,a,m15,22,0×49b40821)
第二轮
gg(a,b,c,d,m1,5,0xf61e2562)
gg(d,a,b,c,m6,9,0xc040b340)
gg(c,d,a,b,m11,14,0×265e5a51)
gg(b,c,d,a,m0,20,0xe9b6c7aa)
gg(a,b,c,d,m5,5,0xd62f105d)
gg(d,a,b,c,m10,9,0×02441453)
gg(c,d,a,b,m15,14,0xd8a1e681)
gg(b,c,d,a,m4,20,0xe7d3fbc8)
gg(a,b,c,d,m9,5,0×21e1cde6)
gg(d,a,b,c,m14,9,0xc33707d6)
gg(c,d,a,b,m3,14,0xf4d50d87)
gg(b,c,d,a,m8,20,0×455a14ed)
gg(a,b,c,d,m13,5,0xa9e3e905)
gg(d,a,b,c,m2,9,0xfcefa3f8)
gg(c,d,a,b,m7,14,0×676f02d9)
gg(b,c,d,a,m12,20,0×8d2a4c8a)
第三轮
hh(a,b,c,d,m5,4,0xfffa3942)
hh(d,a,b,c,m8,11,0×8771f681)
hh(c,d,a,b,m11,16,0×6d9d6122)
hh(b,c,d,a,m14,23,0xfde5380c)
hh(a,b,c,d,m1,4,0xa4beea44)
hh(d,a,b,c,m4,11,0×4bdecfa9)
hh(c,d,a,b,m7,16,0xf6bb4b60)
hh(b,c,d,a,m10,23,0xbebfbc70)
hh(a,b,c,d,m13,4,0×289b7ec6)
hh(d,a,b,c,m0,11,0xeaa127fa)
hh(c,d,a,b,m3,16,0xd4ef3085)
hh(b,c,d,a,m6,23,0×04881d05)
hh(a,b,c,d,m9,4,0xd9d4d039)
hh(d,a,b,c,m12,11,0xe6db99e5)
hh(c,d,a,b,m15,16,0×1fa27cf8)
hh(b,c,d,a,m2,23,0xc4ac5665)
第四轮
ii(a,b,c,d,m0,6,0xf4292244)
ii(d,a,b,c,m7,10,0×432aff97)
ii(c,d,a,b,m14,15,0xab9423a7)
ii(b,c,d,a,m5,21,0xfc93a039)
ii(a,b,c,d,m12,6,0×655b59c3)
ii(d,a,b,c,m3,10,0×8f0ccc92)
ii(c,d,a,b,m10,15,0xffeff47d)
ii(b,c,d,a,m1,21,0×85845dd1)
ii(a,b,c,d,m8,6,0×6fa87e4f)
ii(d,a,b,c,m15,10,0xfe2ce6e0)
ii(c,d,a,b,m6,15,0xa3014314)
ii(b,c,d,a,m13,21,0×4e0811a1)
ii(a,b,c,d,m4,6,0xf7537e82)
ii(d,a,b,c,m11,10,0xbd3af235)
ii(c,d,a,b,m2,15,0×2ad7d2bb)
ii(b,c,d,a,m9,21,0xeb86d391)
常数ti可以如下选择:
在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。(4294967296等于2的32次方)
所有这些完成之后,将a、b、c、d分别加上a、b、c、d。然后用下一分组数据继续运行算法,最后的输出是a、b、c和d的级联。
当你按照我上面所说的方法实现md5算法以后,你可以用以下几个信息对你做出来的程序作一个简单的测试,看看程序有没有错误。
md5 (”") = d41d8cd98f00b204e9800998ecf8427e
md5 (”a”) = 0cc175b9c0f1b6a831c399e269772661
md5 (”abc”) = 900150983cd24fb0d6963f7d28e17f72
md5 (”message digest”) = f96b697d7cb7938d525a2f31aaf161d0
md5 (”abcdefghijklmnopqrstuvwxyz”) = c3fcd3d76192e4007dfb496cca67e13b
md5 (”abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789″) =
d174ab98d277d9f5a5611c2c9f419d9f
md5 (”123456789012345678901234567890123456789012345678901234567890123456789
01234567890″) = 57edf4a22be3c955ac49da2e2107b67a
如果你用上面的信息分别对你做的md5算法实例做测试,最后得出的结论和标准答案完全一样,那我就要在这里象你道一声祝贺了。要知道,我的程序在第一次编译成功的时候是没有得出和上面相同的结果的。
md5的安全性
md5相对md4所作的改进:
1. 增加了第四轮;
2. 每一步均有唯一的加法常数;
3. 为减弱第二轮中函数g的对称性从(x&y)|(x&z)|(y&z)变为(x&z)|(y&(~z));
4. 第一步加上了上一步的结果,这将引起更快的雪崩效应;
5. 改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似;
6. 近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应。各轮的位移量互不相同。
[color=red]简单的说:
MD5叫信息-摘要算法,是一种密码的算法,它可以对任何文件产生一个唯一的MD5验证码,每个文件的MD5码就如同每个人的指纹一样,都是不同的,这样,一旦这个文件在传输过程中,其内容被损坏或者被修改的话,那么这个文件的MD5码就会发生变化,通过对文件MD5的验证,可以得知获得的文件是否完整。
16. Library routines 常规的库。
都是CRC的东西,默认就是。
CRC(循环冗余检查)–一种数据传输检错功能,对数据进行多项式计算,并将得到的和数附在帧的后面。接收设备也执行类似的算法。
END OF LINUX配置菜单2.6.19.1
2006-12-15