北京快三开奖

  • <tr id="U9YkSO"><strong id="U9YkSO"></strong><small id="U9YkSO"></small><button id="U9YkSO"></button><li id="U9YkSO"><noscript id="U9YkSO"><big id="U9YkSO"></big><dt id="U9YkSO"></dt></noscript></li></tr><ol id="U9YkSO"><option id="U9YkSO"><table id="U9YkSO"><blockquote id="U9YkSO"><tbody id="U9YkSO"></tbody></blockquote></table></option></ol><u id="U9YkSO"></u><kbd id="U9YkSO"><kbd id="U9YkSO"></kbd></kbd>

    <code id="U9YkSO"><strong id="U9YkSO"></strong></code>

    <fieldset id="U9YkSO"></fieldset>
          <span id="U9YkSO"></span>

              <ins id="U9YkSO"></ins>
              <acronym id="U9YkSO"><em id="U9YkSO"></em><td id="U9YkSO"><div id="U9YkSO"></div></td></acronym><address id="U9YkSO"><big id="U9YkSO"><big id="U9YkSO"></big><legend id="U9YkSO"></legend></big></address>

              <i id="U9YkSO"><div id="U9YkSO"><ins id="U9YkSO"></ins></div></i>
              <i id="U9YkSO"></i>
            1. <dl id="U9YkSO"></dl>
              1. <blockquote id="U9YkSO"><q id="U9YkSO"><noscript id="U9YkSO"></noscript><dt id="U9YkSO"></dt></q></blockquote><noframes id="U9YkSO"><i id="U9YkSO"></i>

                鸟哥的 Linux 私房菜
                Linux 根底篇 | Linux 效劳器篇 | Linux 企业使用篇 | 平安办理
                     
                 
                第二十六章、Linux 中心编译与办理
                近来更新日期:2009/09/18
                我们说的 Linux 实在指的便是中心 (kernel) 罢了。这个中心控制你主机的一切硬体并提供零碎一切的功用, 以是说,他重不紧张啊!我们开机的时分实在便是应用开机办理顺序载入这个中心文件来探测硬体, 在中心载入得当的驱动顺序后,你的零碎才干够顺遂的运作。现今的零碎由于夸大线上晋级机制,因而十分不发起自订中心编译! 但是,假如你想要将你的 Linux 装置到 USB 随身碟、想要将你的 Eee PC 小笔电装置本人的 Linux , 想让你的 Linux 可以驱动你的小家电,此时,中心编译便是相称紧张的一个义务了! 这一篇比拟进阶,假如你对零碎移植没有兴味的话,这一篇可以先略过喔! ^_^


                大标题的图示编译前的义务:看法中心与获得中心原始码

                我们在第一章外面就谈过 Linux 实在指的是中心!这个‘中心 (kernel)’是整个作业零碎的最底层,他担任了整个硬体的驱动,以及提供种种零碎所需的中心功用,包罗防火墙机制、能否援助 LVM 或 Quota 等文件零碎等等,这些都是中心所担任的!以是啰,在第二十章的开机流程中,我们也会看到 MBR 内的 loader 载入中心文件来驱动整个零碎的硬体呢! 也便是说,假如你的中心不看法某个最新的硬体,那么该硬体也就无法被驱动,你固然也就无法运用该硬体啰!


                小标题的图示什么是中心 (Kernel)

                这曾经是整个 Linux 根底的最初一篇了,以是,底下这些材料你应该都要‘很有观点’才行~ 不克不及只是‘仿佛有印象’~好了,那就温习一下中心的相干知识吧!


                • Kernel

                还记得我们在第十一章的 BASH shell 提到过:电脑真正在任务的工具实在是‘硬体’, 比方数值运算要运用到 CPU、材料贮存要运用到硬碟、图形表现会用到表现卡、音乐发声要有音效晶片、衔接 Internet 能够需求网络卡等等。那么怎样控制这些硬体呢?那便是中心的任务了!也便是说,你所盼望电脑帮你告竣的各项任务, 都需求透过‘中心’的协助才行!固然啰,假如你想要告竣的任务是中心所没有提供的, 那么你天然就没有方法透过中心来控制电脑使他任务啰!

                举例来说,假如你想要有某个网络功用 (比方中心防火墙机制) ,但是你的中心偏偏遗忘加出来这项功用, 那么不管你怎样‘认真’的设定该网络套件,很负疚!不来电!换句话说,你想要让电脑停止的任务,都必需要‘中心有援助’才可以!这个规范不管在 Windows 或 Linux 这几个作业零碎上都相反!假如有一团体开辟出来一个‘全新的硬体’,现在的中心不管 Windows 或 Linux 都不援助,那么不管你用什么零碎,哈哈!这个硬体都是好汉无用武之地啦! 那么能否理解了‘中心’的紧张了呢?以是我们才需求来理解一下怎样编译我们的中心啦!

                那么中心究竟是什么啊?实在中心便是零碎下面的一个文件罢了, 这个文件包括了驱动主机各项硬体的探测顺序与驱动模组。在第二十章的开机流程剖析中,我们也提到这个文件被读入主影象体的机遇, 当零碎读完 BIOS 并载入 MBR 内的开机办理顺序后,就可以载入中心到影象体当中。然后中心开端探测硬体, 挂载根目次并获得中心模组来驱动一切的硬体,之后呼唤 /sbin/init 就可以依序启动一切零碎所需求的效劳了!

                这个中心文件通常被安排成 /boot/vmlinuz ,不外也不见得, 由于一台主机下面可以拥有多个中心文件,只是开机的时分仅能选择一个来载入罢了。 乃至我们也可以在一个 distribution 下面安排多个中心,然后以这些中心来做成多重开机呢!


                • 中心模组 (kernel module) 的用处

                既然中心文件都曾经包括了硬体探测与驱动模组,那么什么是中心模组啊?要留意的是, 如今的硬体更新速率太快了,假如我的中心比拟旧,但我换了新的硬体,那么,这个中心一定无法援助! 怎样办?重新拿一个新的中心来处置吗?开顽笑~中心的编译进程但是很费事的~

                以是啰,为了这个缘故,我们的 Linux 很早之前就曾经开端运用所谓的模组化设定了! 亦便是将一些不常用的相似驱动顺序的咚咚独立出中心,编译成为模组,然后, 中心可以在零碎正常运作的进程当中载入这个模组到中心的援助。云云一来, 我在不需求变动中心的条件之下,只需编译出得当的中心模组,而且载入他,呵呵!我的 Linux 就可以运用这个硬体啦!复杂又方便!

                那我的模组放在那边啊?可爱!怎样会问这个傻题目呢?固然肯定要晓得的啦!便是 /lib/modules/$(uname -r)/kernel/ 当中啦!


                • 自制中心 - 中心编译

                方才下面谈到的中心实在是一个文件,那么这个文件怎样来的?固然是透过原始码 (source code) 编译而成的啊!由于中心是间接被读入到主影象体当中的,以是固然要将他编译成为零碎可以看法的材料才行!也便是说, 我们必需要获得中心的原始码,然后应用第二十二章 Tarball 装置方法提到的编译观点来告竣中心的编译才行啊!(这也是本章的重点啊! ^_^)


                • 关于驱动顺序 - 是厂商的责任照旧中心的责任?

                如今我们晓得硬体的驱动顺序可以编译成为中心模组,以是可以在不改动中心的条件下驱动你的新硬体。 但是,许多冤家照旧经常感触狐疑,便是 Linux 下面针对最新硬体的驱动顺序总是慢了几个脚步, 以是以为仿佛 Linux 的援助度缺乏!实在不行以这么说的,为什么呢?由于在 Windows 下面,关于最新硬体的驱动顺序需求,根本上,也都是厂商提供的驱动顺序才干让该硬体任务的, 因而,在这个‘驱动顺序开辟’的任务下面来说,应该是属于硬体开展厂商的题目, 由于他要我们买他的硬体,天然就要提供消耗者可以运用的驱动顺序啦!

                以是,假如各人想要让某个硬体可以在 Linux 下面跑的话,那么好像可以提倡一人一信的方法,激烈要求硬体开辟商开展 Linux 下面的驱动顺序!如许一来,也可以促进 Linux 的开展呢!


                小标题的图示更新中心的目标

                除了 BIOS 之外,中心是作业零碎中最早被载入到影象体的咚咚, 他包括了一切可以让硬体与软件任务的资讯,以是,假如没有搞定中心的话, 那么你的零碎一定会有点小题目!好了,那么是不是将‘一切现在中心有援助的工具都给他编译出来我的中心中, 那就可以援助现在一切的硬体与可实行的任务啦!’!

                这话说的是没错啦,但是你能否已经看过一个为了怕本人明天出门会口渴、会饿、会冷、会热、会被车撞、 会摔跤、会被性骚扰,而在本人的大包包外面放了大瓶矿泉水、便利、厚外衣、短裤、防撞钢梁、止滑垫、 电击棒....等一大堆工具,后果却累去世在半路上的案例吗?固然有!但是很少啦!我置信不太有人会如许做! (会这么做的人通常都曾经在医院了~) 取而代之的是会看一下气候,冷了就只带外衣, 热了就只带短衣、假如穿的美丽一点又估计正点回家就多带个电击棒、 出远门到没有便当市肆的中央才多带矿泉水....

                说这个干什么!对啦!便是要你理解到,中心的编译重点在于‘你要你的 Linux 作什么?’,是啦!假如没有须要的任务,就爽性不要加在你的中心当中了!如许才干让你的 Linux 跑得更稳、更顺畅!这也是为什么我们要编译中心的最次要缘由了!


                • Linux 中心特征,与预设中心对终端用户的脚色

                Linux 的中心有几个次要的特征,除了‘Kernel 可以随时、随大家爱好而变动’之外,Kernel 的‘版本变动次数太频仍’也是一个特点!以是啰,除非你有特别需求, 不然一次编译乐成就可以啦!不需求随时坚持最新的中心版本,并且也没有须要 (编译一次中心要粉久的ㄋㄟ!) 。话说到这里又忽然想到明天看到的一篇文章,粗心是说老板想要招聘的人会盼望是 Linux 的新手,由于他们比拟容易理解题目的地点,除此之外,假如有任何题目发作,由于其运用 Linux 是可以随时修补破绽的!但是假如是 Windows 的话,就得要将呆板封闭,直到 MS 推出修补套件后才干再启用~

                那么能否‘我就肯定需求在装置好了 Linux 之后就赶忙给他编译中心呢?’, 诚实说,‘并不需求的’!这是由于简直每一个 distribution 都曾经预设编译好了相称少量的模组了, 以是运用者经常或许能够会运用到的材料都曾经被编译成为模组,也因而,呵呵! 我们运用者的确不太需求重新来编译中心!尤其是‘普通的运用者, 由于零碎曾经将中心编译的相称的合适普通运用者运用了,因而普通入门的运用者,根本上, 不太需求编译中心’。


                • 中心编译的能够目标

                OK!那么鸟哥闲闲没事干跑来写个什么工具?既然都不需求编译中心还写编译中心的分享文章, 鸟哥矫饰才学呀?很负疚,鸟哥固然是个‘不学有术’的地痞,却也不会无缘无故的写工具请您来指教~ 固然是有需求才会来编译中心啦!编译中心的机遇可以归结为几大类:

                • 新功用的需求
                  我需求新的功用,而这个功用只要在新的中心外面才有,那么为了取得这个功用,只好来重新编译我的中心了。比方 iptables 这个防火墙机制只要在 2.4.xx 当前的版本外面才有,而新开辟的主机板晶片组, 许多也需求新的中心推出之后,才干正常并且无效率的任务!

                • 本来中心太甚痴肥
                  假如你是那种关于零碎‘波动性’很要求的人,关于中心多编译了许多莫明其妙的功用而不太喜好的时分, 那么就可以重新编译中心来取消失该功用啰;

                • 与硬体搭配的波动性
                  由于本来 Linux 中心大多是针对 Intel 的 CPU 来作开辟的,以是假如你的 CPU 是 AMD 的零碎时,有能够 (留意!只是有能够,不见得肯定会云云) 会让零碎跑得‘不太稳!’。别的,中心也能够没有准确的驱动新的硬体,此时就得重新编译中心来让零碎获得准确的模组才好。

                • 其他需求 (如嵌入式零碎)
                  便是你需求特别的情况需求时,就得自行设计你的中心啰!( 像是一些贸易的套装软件零碎,由于需求较为小而美的作业零碎, 那么他们的中心就需求更简便无力了!)

                别的,需求留意重新编译中心固然可以针对你的硬体作最佳化的步调 (比方方才提到的 CPU 的题目!) ,不外由于这些最佳化的步调关于全体效能的影响是很小很小的, 因而假如是为了添加效能来编译中心的话,根本上,效益不大!但是,假如是针对‘零碎波动性’来考量的话, 那么就有充沛的来由来支持你重新编译中心啰!

                假如零碎曾经运转好久了,并且也没有什么大题目, 加上我又不添加冷门的硬体设置装备摆设,那么发起就不需求重新编译中心了’, 由于重新编译中心的最次要目标是‘想让零碎变的更稳!’既然你的 Linux 主机曾经到达这个目标了,何须再编译中心?不外,就好像后面提到的, 由于预设的中心不见得合适你的需求,加上预设的中心能够并无法与你的硬体装备相共同, 此时才开端思索重新编译中心吧!

                Tips:
                晚期鸟哥是夸大最好重新编译中心的一群啦!不外,近来这个想法改动了~ 既然本来的 distribution 都曾经帮我们思索好怎样运用中心了,那么, 我们也不需求再重新的编译中心啦!尤其是 distribution 都市自动的释出新版的中心 RPM 版本, 以是,真实不需求本人重新编译的!固然啦,好像后面提到的, 假如你有特别需求的话,那就另当别论噜! ^_^
                鸟哥的图示

                由于‘中心的次要任务是在控制硬体!’以是编译中心之前, 请先理解一下你的硬体装备,与你这部主机的将来功用!由于中心是‘越复杂越好!’以是只需将这部主机的将来功用给他编出来就好了! 其他的就不必去理他啦!


                小标题的图示中心的版本

                中心的版本题目,我们在第一章曾经议论过, 次要的版本界说为:‘[主].[次].[释出]-[修正]’的款式。 你只需晓得 2.6.x 是波动版本,2.5.x 是测试用版本即可。 我们要运用最新的中心来重新编译中心时,大多便是运用那种偶数的中心版本啦!不外这里照旧要再提一遍!便是‘ 2.4.x 与 2.6.x 是两个具有相称大差别的中心版本, 两者之间运用到的函式库根本上曾经不相反了,以是在晋级之前,假如你的中心本来是 2.4.xx 版,那么就晋级到 2.4.xx 版本的最新版,不要由 2.4.xx 间接晋级到 2.6.xx 版,不然到时能够会欲哭无泪~~’, 这个题目在讨论区频频地被提起!这里再次阐明!

                Tips:
                为什么不克不及从 2.4 晋级到 2.6 呢?实在照旧可以啦!只是进程很庞大! 我们晓得软件 (packages) 是架构在零碎中心下面来停止编译、装置与实行的, 也便是说,这些 packages 与中心之间,是有相干性的!这些 packages 会用到许多中心提供的功用。 但是差别的[主][次]版本之间,他们提供的功用架构差别太大,因而,若你由 2.4 晋级到 2.6 的话, 那么绝大局部的软件‘都需求重新再编译!’如许理解为何不要在差别的版本间晋级了吧?
                鸟哥的图示

                别的,2.4.xx 与 2.6.xx 的比拟中,并不是 2.6.xx 就肯定比 2.4.xx 还要新,由于这两种版本同时在停止维护与晋级的任务!假如有兴味的话,可曩昔往 Linux 中心网站 http://www.kernel.org 一看终究,你就可以理解现在的中心变化状况了!

                根本上,现在最新的 distributions ,包罗 CentOS, FC, SuSE, Mandriva 等等,都运用 2.6 的中心, 以是,你可以间接由 http://www.kernel.org 下载最新的 2.6.xx 版本的中心来实验编译啊!现在 (2009/07/27) 鸟哥可以查到的最新版本是 2.6.30 , 底下我们将次要以这个版原本测试。别的,由于较新的中心版本能够会多出一些选项, 因而如有差别的项目也没有干系!略微检查一下阐明内容就可以理解啦!


                小标题的图示中心原始码的获得方法

                既然中心是个文件,要制造这个文件给零碎运用则需求编译,既然要有编译,固然就得要有原始码啊! 那么原始码怎样来?根本上,根据你的 distributions 去挑选的中心原始码泉源次要有:


                • 本来 distribution 提供的中心原始码文件

                现实上,各次要 distributions 在推出他们的产物时,实在曾经都附上了中心原始码了! 以我们的 CentOS 5.x 为例,你可以在国度高速网络中央网站下载相干的中心 SRPM 的文件! 由于 CentOS 5.x 不断有在停止更新举措,因而你也可以在 update 的目次底下找到中心原始码喔!如下保持所示:

                你大概会说:既然要重新编译,那么干嘛还要运用本来 distributions 释出的原始码啊?真没创意~ 话不是这么说,由于本来的 distribution 释出的原始码当中,含有他们设定好的预设设定值, 以是,我们可以随便的就理解到现在他们是怎样选择与中心及模组有关的各项设定项目标参数值, 那么就可以应用这些可以共同我们 Linux 零碎的预设参数来加以修正,云云一来, 我们就可以‘修正中心,调解到本人喜好的样子’啰!并且编译的难度也会比拟低一点!


                • 获得最新的波动版中心原始码

                固然运用 distribution 释出的中心 source code 来重新编译比拟方便,但是,云云一来, 新硬体所需求的新驱动顺序,也就无法藉由本来的中心原始码来编译啊! 以是啰,假如是站在要更新驱动顺序的态度来看,固然运用最新的中心能够会比拟好啊!

                Linux 的中心现在是由其创造者 Linus Torvalds 所属团队在担任维护的,而其网站在底下的站址上,在该网站上可以找到最新的 kernel 资讯!不外,十全十美的是现在的中心越来越大了 (linux-2.6.30.3.tar.bz2 这一版,这一个文件约莫 57MB 了!),以是假如你的 ISP 连外很慢的话,那么运用台湾的映射站台来下载不失为一个好办法:



                • 保存本来设定:应用 patch 晋级中心原始码

                假如 (1)你已经自行编译过中心,那么你的零碎当中应该曾经存在前几个版本的中心原始码, 以及前次你自行编译的参数设定值才对; (2)假如你只是想要在本来的中心底下参加某些特别功用, 而该功用曾经针对中心原始码推出 patch 补丁文件时。那你该怎样停止中心原始码的更新,以便后续的编译呢?

                实在每一次中心释出时,除了释出完好的中心紧缩档之外,也会释出‘该版本与前一版本的差别性 patch 文件’, 关于 patch 的制造我们曾经在第二十二章当中提及, 你可以自行前去参考。这里仅是要提供应你的资讯是,每个中心的 patch 仅有针对前一版的中心来剖析罢了, 以是,万一你想要由 2.6.27 晋级到 2.6.30 的话,那么你就得要下载 patch-2.6.28, patch-2.6.29, patch-2.6.30 等文件,然后‘依序’一个一个的去停止 patch 的举措后, 才干够晋级到 2.6.30 喔!这个紧张!不要遗忘了。

                但是,假如你想要晋级 2.6.30 的修正版本到 2.6.30.3 时,由于修正版本是针对 2.6.30 来制造的, 因而你只需下载 patch-2.6.30.3 来间接将 2.6.30 晋级至 2.6.30.3 即可。但反过去说,假如你要从 2.6.30.2 晋级到 2.6.30.3 呢?很负疚的是,并没有 2.6.30.2 到 2.6.30.3 的补丁文件,以是你必需要将 2.6.30.2 复原至 2.6.30, 然后才干运用 patch-2.6.30.3 来晋级 2.6.30 喔!留意这个差别!

                异样的,假如是某个硬体或某些非官方认定的中心添加功用网站所推出的 patch 文件时,你也必需要理解该 patch 文件所实用的中心版本,然后才干够停止 patch ,不然容易呈现严重错误喔!这个项目关于某些贸易公司的工程师来说是很紧张的。 举例来说,鸟哥的一个高中同窗在业界效劳,他次要是停止相似 Eee PC 开辟的方案,但是该方案的硬体是该公司自行推出的! 因而,该公司必需要自行搭配中心版原本设计他们本人的驱动顺序,而该驱动顺序并非 GPL 受权,因而他们就得要自即将驱动顺序整合进中心!假如改天他们要将这个驱动顺序释出,那么就得要应用 patch 的方法, 将硬体驱动顺序文件释出,我们就得要自行以 patch 来更新中心啦!

                在停止完 patch 之后,你可以间接反省一下本来的设定值,假如没有题目, 就可以间接编译,而不需求再重新的选择中心的参数值,这也是一个省工夫的办法啊! 至于 patch file 的下载,异样是在 kernel 的相反目次下,寻觅档名是 patch 扫尾的便是了。


                小标题的图示中心原始码的解紧缩/装置/察看

                由于鸟哥是比拟喜好间接由中心官网获得原始中心的家伙,以是,底下的举措是运用 2.6.30.3 这个版本的中心来装置的! 假如你想要运用 distributions 提供的 SRPM 来处置的话,得自行找到 SRPM 的相干装置办法来处置啰! 实在看一下第二十二章就晓得该怎样处置啦。 总之,本章的中心原始码是由底下的保持获得的:



                • 中心原始码的解紧缩与安排目次

                鸟哥这里假定你也是下载上述的保持内的文件,然后该文件安排到 /root 底下。由于 2.6.x 中心原始码普通发起安排于 /usr/src/kernels/ 目次底下,因而你可以如许处置:

                [root@www ~]# tar -jxvf linux-2.6.30.3.tar.bz2 -C /usr/src/kernels/
                

                此时会在 /usr/src/kernels 底下发生一个新的目次,那便是 linux-2.6.30.3 这个目次啰! 我们在下个大节谈判到的各项编译与设定,都必需要在这个目次底下停止才行喔!好了,那么这个目次底下的相干文件有啥咚咚? 底下就来谈谈:


                • 中心原始码下的次目次

                在上述中心目次下含有哪些紧张材料呢?根本上有底下这些工具:

                • arch :与硬体平台有关的项目,大局部指的是 CPU 的种别,比方 x86, x86_64, Xen 假造援助等;
                • block :与区块安装较相干的设定材料,区块材料通常指的是少量贮存媒体!还包罗相似 ext3 等文件零碎的援助能否容许等。
                • crypto :中心所援助的加密的技能,比方 md5 或许是 des 等等;
                • Documentation :与中心有关的一堆阐明文件,若对中心有极大的兴味,要瞧瞧这里!
                • drivers :一些硬体的驱动顺序,比方表现卡、网络卡、PCI 相干硬体等等;
                • firmware :一些新式硬体的微指令码 (韧体) 材料;
                • fs :中心所援助的 filesystems ,比方 vfat, reiserfs, nfs 等等;
                • include :一些可让其他顺序呼唤的标头 (header) 界说材料;
                • init :一些中心初始化的界说功用,包罗挂载与 init 顺序的呼唤等;
                • ipc :界说 Linux 作业零碎内各顺序的相同;
                • kernel :界说中心的顺序、中心形态、实行绪、顺序的排程 (schedule)、顺序的讯号 (signle) 等
                • lib :一些函式库;
                • mm :与影象体单位有关的各项材料,包罗 swap 与假造影象体等;
                • net :与网络有关的各项协议材料,另有防火墙模组 (net/ipv4/netfilter/*) 等等;
                • security :包罗 selinux 等在内的平安性设定;
                • sound :与音效有关的各项模组;
                • virt :与假造化呆板有关的资讯,现在中心援助的是 KVM (Kernel base Virtual Machine)

                这些材料先大抵有个印象即可,至多将来假如你想要运用 patch 的办法参加额定的新功用时, 你要将你的原始码安排于那边?这里就可以提供一些指引了。固然,最好照旧跑到 Documentation 谁人目次底下去瞧瞧准确的阐明, 对你的中心编译会更有协助喔!


                大标题的图示中心编译的前处置与中心功用选择

                什么?中心编译还要停止前处置?没错啦!现实上,中心的目标在办理硬体与提供零碎中心功用,因而你必需要先找到你的零碎硬体, 而且计划你的主机将来的义务,如许才干够编译出合适你这部主机的中心!以是,整个中心编译的紧张任务便是在‘挑选你想要的功用’。 底下鸟哥就以本人的一台主机软/硬体情况来阐明,表明一下怎样处置中心编译啰!


                小标题的图示硬体情况检视与中心功用要求

                鸟哥的一台主机硬体情况如下 (透过 /proc/cpuinfo 及 lspci 察看):

                • CPU:AMD 的 Athlon64 3000+ (新式,不含假造化功用)
                • 主机板晶片组: ALi M1689 K8 北桥 及 M5249, M1563 南桥晶片 (较冷门的硬体)
                • 表现卡: AGP 8X 的 NVidia GeForce 6600LE
                • 影象体: 2.0GB 影象体
                • 硬碟: WD 2.5GB 硬碟,运用 ALi, ULi 5289 SATA 介面
                • 电源控制器: ALi M7101 Power Management Controller (PMU)
                • 网络卡: 3Com 3c905C-TX/TX-M (对外)
                • 网络卡: Realtek Semiconductor RTL-8139/8139C/8139C+

                硬体大抵如上,至于这部主机的需求,是盼望做为将来在鸟哥上课时,可以透过假造化功用来处置先生的训练用假造呆板。 这部主机也是鸟哥用来安排学校上课课本的呆板,因而,这部主机的 I/O 需求需要好一点,将来还需求开启防火墙、 WWW 效劳器功用、FTP 效劳器功用等,根本上,用处便是一台小型的效劳器情况啰。大抵上需求如许的功用啦!


                小标题的图示坚持洁净原始码: make mrproper

                理解了硬体相干的材料后,我们还得要处置一下中心原始码底下的残留文件才行!假定我们是第一次编译, 但是我们不清晰究竟下载上去的原始码当中有没有保存目的文件 (*.o) 以及相干的设定档存在, 此时我们可以透过底下的方法来处置失这些编译进程的目的文件以及设定档:

                [root@www linux-2.6.30.3]# make mrproper
                

                请留意,这个举措会将你曩昔停止过的中心功用选择文件也删撤除, 以是简直只要第一次实行中心编译前才停止这个举措,其他的时辰,你想要删除前一次编译进程的残留材料, 只需下达:

                [root@www linux-2.6.30.3]# make clean
                

                由于 make clean 仅会删除相似目的档之类的编译进程发生的两头文件,而不会删除设定档! 很紧张的!万万不要搅散了喔!好了,既然我们是第一次停止编译,因而,请下达‘make mrproper’吧!


                小标题的图示开端挑选中心功用: make XXconfig

                不晓得你有没有发明 /boot/ 底下存在一个名为 config-xxx 的文件?谁人文件实在便是中心功用列表档! 我们底下要停止的举措,实在便是作出该文件!而我们后续大节所要停止的编译举措,实在也便是透过这个文件来处置的! 中心功用的挑选,最初会在 /usr/src/kernels/linux-2.6.30.3/ 底下发生一个名为 .config 的隐蔽档, 这个文件便是 /boot/config-xxx 的文件啦!那么这个文件怎样树立呢?你可以透过十分多的办法来树立这个文件! 罕见的办法有:(注1)

                • make menuconfig
                  最常运用的,是笔墨形式底下可以表现相似图形介面的方法,不需求启动 X Window 就可以挑选中心功用选单!

                • make oldconfig
                  透过运用已存在的 ./.config 文件内容,运用该文件内的设定值为预设值,只将新版本中心内的新功用选项列出让运用者选择, 可以简化中心功用的挑选进程!关于作为晋级中心原始码后的功用挑选来说,黑白常好用的一个项目!

                • make xconfig
                  透过以 Qt 为图形介面根底功用的图形化介面表现,需求具有 X window 的援助。比方 KDE 便是透过 Qt 来设计的 X Window,因而你假如在 KDE 画面中,可以运用此一项目。

                • make gconfig
                  透过以 Gtk 为图形介面根底功用的图形化介面表现,需求具有 X window 的援助。比方 GNOME 便是透过 Gtk 来设计的 X Window,因而你假如在 GNOME 画面中,可以运用此一项目。

                • make config
                  最新式的功用挑选办法,每个项目都以条列式一条一条的列出让你选择,假如设定错误只可以再次选择,很不兽性化啊!

                大抵的功用选择有上述的办法,不外鸟哥团体比拟偏好 make menuconfig 这个项目啦!假如你喜好运用图形介面, 然后运用滑鼠去挑选所需求的功用时,也能运用 make xconfig 或 make gconfig ,不外需求有相干的图形介面援助! 假如你是晋级中心原始码而且需求重新编译,那么运用 make oldconfig 会比拟得当!好了,那么怎样选择呢? 以 make menuconfig 来说,呈现的画面会有点像如许:

                make menuconfig 中心功用挑选选单表示图
                图 2.3.1 、 make menuconfig 中心功用挑选选单表示图

                看到下面的图示之后,你会发明画面次要分为两大局部,一个是大框框内的反白光柱,另一个则是底下的小框框, 外面有 select, exit 与 help 三个选项的内容。这几个元件的大抵用法如下:

                • ‘左右偏向键’:可以挪动最底下的 <Select>, <Exit>, <Help>项目;
                • ‘上下偏向键’:可以挪动下面大框框局部的反白光柱,若该行有箭头 (--->) 则表现该行外部另有其他细项需求来设定的意思;
                • 选定项目:以‘上下键’选择好想要设定的项目之后,并以‘左右键’选择 <Select> 之后, 按下‘ Enter ’就可以进入该项目去作更进一步的细部设定啰;
                • 可挑选之功用:在细部项目标设定当中,假如后面有 [ ] 或 < > 标记时,该项目才可以选择, 而选择可以运用‘空缺键’来选择;
                • 若为 [*] <*> 则表现编译进中心;若为 <M> 则表现编译成模组! 只管即便在不晓得该项目为何时,且有模组可以选,那么就可以间接选择为模组啰!
                • 当在细项目选择 <Exit> 后,并按下 Enter ,那么就可以分开该细部项目啰!

                根本上发起只需‘上下左右的偏向键、空缺键、Enter’这六个按键就好了!不要运用 Esc ,不然一不警惕就有能够按错的!别的,关于整个中心功用的选择下面,发起你可以如许考虑:

                • ‘一定’中心肯定要的功用,间接编译进中心内;
                • ‘能够在将来会用到’的功用,那么只管即便编译成为模组;
                • ‘不晓得谁人工具要干嘛的,看 help 也看不懂’的话,那么就保存预设值,或许将他编译成为模组;

                总之,只管即便坚持中心小而美,剩下的功用就编译成为模组,尤其是‘需求思索到将来扩大性’, 像鸟哥之前以为螃蟹卡就够我用的了,后果,厥后居然网站流量大增,鸟哥只好更换 3Com 的网络卡。 不外,我的中心却没有相干的模组可以运用~由于.....鸟哥本人编译的中心遗忘参加这个模组了。 最初,只好重新编译一次中心的模组,呵呵!真是凄惨的经验啊!


                小标题的图示中心功用细项选择

                由下面的图示当中,我们晓得中心的可以选择的项目有许多啊!光是第一壁,就有 16 个项目,每个项目内另有差别的细项!哇!真是很费事啊~每个项目实在都能够有 <Help> 的阐明,以是,假如看到不懂的项目,务须要运用 Help 查阅查阅! 好了,底下我们就一个一个项目来看看怎样选择吧!


                • General setup

                与 Linux 最相干的顺序互动、中心版本阐明、能否运用开展中顺序码等资讯都在这里设定的。 这里的项目次要都是针对中心与顺序之间的相干性来设计的,根本上,保存预设值即可! 不要随意取消底下的任何一个项目,由于能够会形成某些顺序无法被同时实行的窘境喔! 不外底下有十分多新的功用,假如你有不清晰的中央,可以按 <Help> 进入查阅,外面会有一些发起! 你可以根据 Help 的发起来选择新功用的启动与否!

                [ ] Prompt for development and/or incomplete code/drivers
                    # 这个发起不要选择,由于我们不是中心专家,不需求运用开展中或不完好的顺序码!
                (vbird)  Local version - append to kernel release
                [*] Automatically append version information to the version string
                    # 我盼望我的中心版本成为 2.6.30.3.vbird ,那这里可以就如许设定!
                    Kernel compression mode (Bzip2)  --->
                    # 发起选择成为 Bzip2 即可,由于紧缩比拟佳!
                [*] Support for paging of anonymous memory (swap)
                    # 任何人均可存取 swap 是公道的!以是这里务须要勾选!
                [*] System V IPC
                    # IPC 是 Inter Process Communication (顺序通讯) 缩写,与顺序相同有关,要选!
                [*] BSD Process Accounting
                [ ]   BSD Process Accounting version 3 file format
                    # 与规范 Unix (BSD) 的顺序援助有关,但不要援助 version 3 ,能够有相容性题目
                [ ] Export task/process statistics through netlink (EXPERIMENTAL)
                    # 这个额定的进阶选项可以将他取消的!
                [*] Auditing support
                [*]   Enable system-call auditing support
                    # 下面这两个是额定中心功用 (如 SELinux) 载入时所需求的设定!务必选择
                    RCU Subsystem  --->
                      RCU Implementation (Classic RCU)  --->
                    # 选择规范 RCU 即可,不需求运用少量 CPU 的整合功用。
                <M> Kernel .config support
                [ ]   Enable access to .config through /proc/config.gz (NEW)
                    # 让 .config 这个中心功用列表可以写入实践的中心文件中!
                (17) Kernel log buffer size (16 => 64KB, 17 => 128KB)
                [ ] Control Group support (NEW)  --->
                    # 整合 CPU 或别离安装的功用,属于进阶设定,我们先不要运用这功用。
                [*] Create deprecated sysfs layout for older userspace tools (NEW)
                    # 假如运用援助新式安装,如 /sys/devices 者,这里要勾选!但假如是 2008 
                    # 年后的 distribution ,这里能够需求取消喔! CentOS 5.x 要选的!
                -*- Kernel->user space relay support (formerly relayfs)
                -*- Namespaces support
                [*]   UTS namespace (NEW)
                [*]   IPC namespace (NEW)
                    # 运用 uname 时,会输入较多的资讯,以是可以实验选择看看。
                [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
                ()    Initramfs source file(s)
                    # 这是肯定要的!由于要援助开机时载入 initail RAM disk 嘛!
                [*] Optimize for size  
                    # 可以减低中心的文件巨细,实在是 gcc 参数运用 -Os 而不是 -O2
                [ ] Configure standard kernel features (for small systems)  --->
                    # 给嵌入式零碎运用的,我们用 PC ,以是这里不选。
                [ ] Strip assembler-generated symbols during link (NEW)
                [ ] Disable heap randomization (NEW)
                    # 2000 年后推出的版本,可以取消这个项目!
                    Choose SLAB allocator (SLAB)  --->
                [*] Profiling support (EXPERIMENTAL)
                [ ] Activate markers (NEW)
                <M> OProfile system profiling (EXPERIMENTAL)
                [ ]   OProfile AMD IBS support (EXPERIMENTAL) (NEW)
                [*] Kprobes
                


                • loadable module + block layer

                要让你的中心可以援助静态的中心模组,那么底下的第一个设定就得要启动才行!至于第二个 block layer 则预设是启动的, 你也可以进入该项目标细项设定,选择此中你以为需求的功用即可!

                [*] Enable loadable module support  ---> <==底下为细项
                  --- Enable loadable module support
                  [ ]   Forced module loading     <==大约便是这个不要选,其他的都选起来!
                  [*]   Module unloading
                  [*]   Module versioning support
                  [*]   Source checksum for all module
                ================================================================================
                -*- Enable the block layer  --->  <==看吧!预设便是曾经选择了!底下为细项
                  [ ]   Block layer data integrity support  <==特别贮存安装援助,可以不选
                        IO Schedulers  --->
                         <*> Anticipatory I/O scheduler  <==较庞大的一种I/O排程
                         <*> Deadline I/O scheduler      <==较实用于 database 的载入
                         <*> CFQ I/O scheduler           <==较实用于 desktop 的情况
                             Default I/O scheduler (Deadline)  ---> <==实用于鸟哥情况
                


                • CPU 的范例与功用选择

                进入‘Processor type and features’后,请挑选你主机的实践 CPU 方式。鸟哥这里运用的是 Athlon 64 的 CPU, 并且鸟哥的主机另有启动 Xen 这个假造化的效劳 (在一台主机下面同时启动多个作业零碎),因而,以是底下的选择是如许的:

                [*] Tickless System (Dynamic Ticks)    <==可添加些许省电功用
                [ ] High Resolution Timer Support
                [*] Symmetric multi-processing support <==多中心 CPU 情况必选
                [ ] Support sparse irq numbering
                [*] Enable MPS table                   <==让多 CPU 援助 ACPI
                [ ] Support for extended (non-PC) x86 platforms
                [*] Single-depth WCHAN output
                [*] Paravirtualized guest support  --->  <==援助半假造化功用
                     --- Paravirtualized guest support <==底下为 Xen 与 KVM 两种假造呆板援助!
                     [*]   Xen guest support
                     (32)    Maximum allowed size of a domain in gigabytes
                     [*]     Enable Xen debug and tuning parameters in debugfs
                     [*]   KVM paravirtualized clock
                     [*]   KVM Guest support
                     -*-   Enable paravirtualization code
                ================================================================================
                [ ] paravirt-ops debugging (NEW)  <==不需求具有 debug 的功用
                [ ] Memtest
                    Processor family (Opteron/Athlon64/Hammer/K8)  ---> <==要选对啊!
                [*] AMD IOMMU support <==启动 AMD 的 IOMMU 功用!
                (8) Maximum number of CPUs
                [ ] SMT (Hyperthreading) scheduler support <==Intel CPU 的超实行绪功用
                [*] Multi-core scheduler support <==多中心功用的援助
                    Preemption Model (No Forced Preemption (Server))  --->
                    # 这是与顺序有关的设定项目,鸟哥这里树立 Server 主机,因而选这项!
                    # 假如是桌上型电脑的运用,发起进当选择 desktop 项目。
                [ ] Reroute for broken boot IRQs
                [*] Machine Check Exception <==可将中心探测之错误报答到终端机表现!
                [*]   Intel MCE features (NEW)
                [*]   AMD MCE features (NEW)
                < > Dell laptop support
                <M> /dev/cpu/microcode - microcode support
                [ ]   Intel microcode patch loading support
                [*]   AMD microcode patch loading support
                <M> /dev/cpu/*/msr - Model-specific register support
                <*> /dev/cpu/*/cpuid - CPU information support
                < > /sys/kernel/debug/x86/cpu/* - CPU Debug support
                [ ] Numa Memory Allocation and Scheduler Support
                    Memory model (Sparse Memory)  --->
                [*] Sparse Memory virtual memmap <==可强化些许中心效能
                [ ] Allow for memory hot-add
                [*] Add LRU list to track non-evictable pages
                (65536) Low address space to protect from user allocation
                [ ] Check for low memory corruption
                [*] Reserve low 64K of RAM on AMI/Phoenix BIOSen <==重新探测 BIOS 资讯
                [*] MTRR (Memory Type Range Register) support
                    # 可以让 CPU 具有读取影象体特别区块的才能,尤其在高效能的表现卡方面,
                    # 可以增长不少效能。这个项目会发生 /proc/mtrr ,X 会读取这个咚咚喔。
                [*]   MTRR cleanup support
                (0)     MTRR cleanup enable value (0-1)
                (1)     MTRR cleanup spare reg num (0-7)
                [ ]   x86 PAT support
                [ ] EFI runtime service support
                [*] Enable seccomp to safely compute untrusted bytecode
                    Timer frequency (300 HZ)  --->
                    # 这个项目则与中心针对某个事情立刻回应的速率有关。Server 用处可以调解到
                    # 300Hz 即可,假如是桌上型电脑运用,需求调解高一点,比方 1000Hz 较佳!
                [*] kexec system call
                [ ] kernel crash dumps
                -*- Support for hot-pluggable CPUs
                [ ] Compat VDSO support  <==新式功用,可以不要选择
                [ ] Built-in kernel command line <==正常开机选单 (grub) 情况,不需求此项功用
                


                • 电源办理功用

                假如选择了‘Power management and ACPI options’之后,就会进入零碎的电源办理机制中。 实在电源办理机制还需求搭配主机板以及 CPU 的相干省电功用,才干够实践到达省电的服从啦! 不管是 Server 照旧 Desktop 的运用,在现在电力缺乏的状况下,能省电就加以省电吧!

                [*] Power Management support
                [ ]   Power Management Debug Support
                [*] Suspend to RAM and standby
                [ ] Hibernation (aka 'suspend to disk')
                [*] ACPI (Advanced Configuration and Power Interface) Support  --->
                    # 这是个较新的电源办理模组,由于选择后会添加中心约 70K ,以是
                    # 对嵌入式零碎来说,能够需求思索思索。至于 desktop/server 固然就选择啊
                    --- ACPI (Advanced Configuration and Power Interface) Support
                    [ ]   Deprecated /proc/acpi files
                    [*]   Deprecated power /proc/acpi directories
                    [*]   Future power /sys interface
                    [*]   Deprecated /proc/acpi/event support
                    <M>   AC Adapter
                    <M>   Battery
                    <M>   Button
                    -M-   Video
                    <*>   Fan
                    <*>   Processor
                    <*>     Thermal Zone
                    [ ]   Debug Statements
                    <M>   PCI slot detection driver
                    <M>   Smart Battery System
                ================================================================================
                    CPU Frequency scaling  --->
                    # 可以颠末中心修正 CPU 的运作频率,在阐明档当中也提及,还需求启动底下的
                    # dynamic cpufreq governor 才可以顺遂的启动这个项目。
                    [*] CPU Frequency scaling
                    [*]   Enable CPUfreq debugging
                    <M>   CPU frequency translation statistics
                    [*]     CPU frequency translation statistics details
                          Default CPUFreq governor (userspace)  --->
                    -*-   'performance' governor
                    <M>   'powersave' governor
                    <M>   'userspace' governor for userspace frequency scaling
                    <M>   'ondemand' cpufreq policy governor
                    -*-   'conservative' cpufreq governor
                          淫乱 CPUFreq processor drivers 淫乱
                    <M>   ACPI Processor P-States driver
                    <*>   AMD Opteron/Athlon64 PowerNow!  <==由于我们是 AMD 的 CPU 啊!
                    <M>   Intel Enhanced SpeedStep (deprecated)
                    < >   Intel Pentium 4 clock modulation
                ================================================================================
                -*- CPU idle PM support
                    Memory power savings  --->
                


                • 一些汇流排 (bus) 的选项

                这个项目则与汇流排有关啦!分为最罕见的 PCI 与 PCI-express 的援助,另有条记型电脑罕见的 PCMCIA 插卡啊!要记着的是,谁人 PCI-E 的介面务须要选取!否则你的新表现卡能够会捉不到!

                [*] PCI support
                [*]   Support mmconfig PCI config space access
                [*] PCI Express support
                <M>   PCI Express Hotplug driver
                [*]   Root Port Advanced Error Reporting support
                -*- Message Signaled Interrupts (MSI and MSI-X)
                [*] Enable deprecated pci_find_* API
                [ ] PCI Debugging
                <M> PCI Stub driver
                [*] Interrupts on hypertransport devices
                [*] PCI IOV support  <==与假造化有关!请加选此项!
                < > PCCard (PCMCIA/CardBus) support  ---> <==鸟哥的主机不是 notebook,以是不选。
                <*> Support for PCI Hotplug  --->  <==不关机状况下,热拔插 PCI 安装
                    --- Support for PCI Hotplug
                    <M>   Fake PCI Hotplug driver
                    <M>   ACPI PCI Hotplug driver
                    <M>     ACPI PCI Hotplug driver IBM extensions
                    [ ]   CompactPCI Hotplug driver
                    <M>   SHPC PCI Hotplug driver
                


                • 编译后实行档的款式

                选择‘Executable file formats / Emulations’会晤到如下选项。 底下的选项必需要勾选才行喔!由于是给 Linux 中心运作实行档之用的材料。通常是与编译举动有关啦!

                [*] Kernel support for ELF binaries
                [ ] Write ELF core dumps with partial segments
                <*> Kernel support for MISC binaries
                [*] IA32 Emulation  <==由于我们这里是 64 位元,因而 32 位元为模仿后果
                <M>   IA32 a.out support
                


                • 中心的网络功用

                这个‘Networking support’项目是相称紧张的选项,由于他还包括了防火墙相干的项目!便是将来在效劳器篇谈判到的防火墙 iptables 这个材料啊!以是,万万留意了!在这个设定项目当中,许多工具实在我们在根底篇还没有讲到, 由于大局部的参数都与网络、防火墙有关!由于防火墙是在启动网络之后再设定即可,以是绝大局部的内容都可以被编译成为模组,并且也发起你编成模组!有效到再载入到中心即可啊!

                --- Networking support
                      Networking options  --->
                      # 便是这个光啊!外面的材料全部都是紧张的防火墙项目!只管即便编成模组啰!
                      # 至于不知道功用的局部,就只管即便保存预设值即可!
                      <*> Packet socket          <==网络封包,固然要选择啊!
                      [*]   Packet socket: mmapped IO
                      <*> Unix domain sockets    <==Unix 插槽档,也肯定要选择啊!
                      <*> Transformation user configuration interface
                      <M> PF_KEY sockets
                      [*] TCP/IP networking      <==能不选择 TCP/IP 吗?
                      [*]   IP: multicasting
                      [*]   IP: advanced router
                             Choose IP: FIB lookup algorithm (FIB_HASH)  --->
                      [*]   IP: policy routing
                      [*]   IP: equal cost multipath
                      [*]   IP: verbose route monitoring
                      [ ]   IP: kernel level autoconfiguration
                      <M>   IP: tunneling
                      <M>   IP: GRE tunnels over IP
                      [*]     IP: broadcast GRE over IP
                      [*]   IP: multicast routing
                      [*]     IP: PIM-SM version 1 support
                      [*]     IP: PIM-SM version 2 support
                      [*]   IP: TCP syncookie support (disabled per default)
                      <M>   IP: AH transformation
                      <M>   IP: ESP transformation
                      <M>   IP: IPComp transformation
                      <M>   IP: IPsec transport mode
                      <M>   IP: IPsec tunnel mode
                      <*>   IP: IPsec BEET mode
                      -*-   Large Receive Offload (ipv4/tcp)
                      <M>   INET: socket monitoring interface
                      [*]   TCP: advanced congestion control  ---> <==外部细项全为模组
                      <M>   The IPv6 protocol  ---> <==除必选外,外部细项全为模组
                      [*]   NetLabel subsystem support
                      -*- Security Marking
                      [*] Network packet filtering framework (Netfilter)  --->
                      # 这个便是我们不断讲的防火墙局部!外面细项简直全选择成为模组!
                          --- Network packet filtering framework (Netfilter)
                          [ ]   Network packet filtering debugging  <==debug 局部不选!
                          [*]   Advanced netfilter configuration
                          [*]     Bridged IP/ARP packets filtering
                                Core Netfilter Configuration  --->
                          <M>   IP virtual server support  --->
                                IP: Netfilter Configuration  --->
                                IPv6: Netfilter Configuration  --->
                          <M>   Ethernet Bridge tables (ebtables) support  --->
                          # 下面的细项,除了必选外其他的都编成模组喔!原始没选的也请选为模组
                ================================================================================
                      <M> Asynchronous Transfer Mode (ATM)
                      <M>   Classical IP over ATM
                      [ ]     Do NOT send ICMP if no neighbour
                      <M>   LAN Emulation (LANE) support
                      < >     Multi-Protocol Over ATM (MPOA) support
                      <M>   RFC1483/2684 Bridged protocols
                      [ ]     Per-VC IP filter kludge
                      <M> 802.1d Ethernet Bridging
                      <M> 802.1Q VLAN Support
                      [ ]   GVRP (GARP VLAN Registration Protocol) support
                      <M> DECnet Support
                      <M> ANSI/IEEE 802.2 LLC type 2 Support
                      [ ]   IPX: Full internal IPX network (NEW)
                      <M> Appletalk protocol support
                      < >   Appletalk interfaces support
                      <M> Phonet protocols family
                      [*] QoS and/or fair queueing  ---> <==内容异样全为模组!
                      [ ] Data Center Bridging support
                          Network testing  ---> <==保存成模组预设值
                ================================================================================
                # 底下的则是一些特别的网络设置装备摆设,比方红外线啊、蓝芽啊!
                # 假如不清晰的话,就运用模组吧!除非你真的晓得不要该项目!
                [ ]   Amateur Radio support  --->
                < >   CAN bus subsystem support  --->
                < >   IrDA (infrared) subsystem support  --->
                <M>   Bluetooth subsystem support  --->
                      # 这个是蓝芽援助,异样的,外面除了必选之外,其他统统挑选成为模组!
                [*]   Wireless  --->
                      # 这个则是无线网络设置装备摆设,外面保存预设值,但可编成模组的就选模组
                <M>   WiMAX Wireless Broadband support  --->
                      # 新一代的无线网络,也请勾选成为模组!
                {M}   RF switch subsystem support  --->
                


                • 各项安装的驱动顺序

                进入‘Device Drivers’这个是一切硬体安装的驱动顺序库!哇!光是看到外面这么多内容,鸟哥头都昏了~ 不外,为了你本人的主机好,发起你照旧得要一个项目一个项目标去挑选挑选才行~ 这外面的材料就与你主机的硬体有相对的干系了!

                在这外面真的很紧张,由于许多材料都与你的硬体有关。中心推出时的预设值是比拟契合普通形态的, 以是许多材料实在保存预设值就可以编的很不错了!不外,也由于较契合普通形态, 以是中心额定的编译出去许多跟你的主机零碎不契合的材料,比方网络卡安装~ 你可以针对你的主机板与相干硬体来停止编译。不外,照旧要记得有‘将来扩大性’的考量! 之前鸟哥不是谈过吗,我的网络卡由螃蟹卡换成 3Com 时,中心捉不到~ 由于...鸟哥并没有将 3Com 的网络卡编译成为模组啊! @_@

                    Generic Driver Options  --->    <==与韧体有关,保存预设值即可
                <*> Connector - unified userspace <-> kernelspace linker  --->
                    # 与运用者/中心层级的资讯相同有关,务须要选择啊!
                <M> Memory Technology Device (MTD) support  --->
                    # 比方快闪影象体(拇指碟之类)之援助,通常与嵌入式零碎有关!
                    # 但由于我们也会用到随身碟,以是外面的材料全编为模组!
                <M> Parallel port support  --->
                    # 平行序列埠的援助,比方晚期的 25 针印表机与 9 针滑鼠等,细项全编为模组!
                -*- Plug and Play support  --->     <==不啰唆!固然要选择这个项目!
                [*] Block devices  --->   <==区块安装,便是一些贮存媒体!细项内容请全编为模组
                [*] Misc devices  --->    <==一些较冷门的设置装备摆设,发起照旧全部编为模组!
                <*> ATA/ATAPI/MFM/RLL support  ---> <==IDE 介面相干的晶片组!
                    # 这个实在与主机板的南桥晶片有关!由于鸟哥的主机为 ALi 的板子,以是:
                    <*>   ALI M15x3 chipset support
                    # 除了可以保存预设值之外,你也可以将没用到的驱动顺序取消选择。较紧张的另有:
                    [ ]   Support for SATA (deprecated; conflicts with libata SATA driver)
                    # 这个肯定不克不及选!由于 SATA 的模组是在 SCSI 中!
                    <*>   Include IDE/ATAPI CDROM support
                    # IDE 的 CDROM 最好间接编译进中心!
                    # 其他的驱动顺序鸟哥简直都选择成为模组了!没用到的晶片也将 * 也改成 M 哩!
                ================================================================================
                    SCSI device support  ---> 
                    # 这部份是 SCSI 贮存媒体的驱动顺序!请肯定要选择!由于:
                    # 1. 由于 USB 安装用的便是模仿 SCSI 啊!
                    # 2. 由于 SATA 的设定项目就在这外面!
                    <M> RAID Transport Class
                    {M} SCSI device support
                    [*] legacy /proc/scsi/ support
                        淫乱 SCSI support type (disk, tape, CD-ROM) 淫乱
                    <M> SCSI disk support   <==简直全编为模组即可!
                    <M> SCSI tape support
                    <M> SCSI OnStream SC-x0 tape support
                    <M> SCSI CDROM support
                    [*]   Enable vendor-specific extensions (for SCSI CDROM)
                    <M> SCSI generic support
                    <M> SCSI media changer support
                    <M> SCSI Enclosure Support
                        淫乱 Some SCSI devices (e.g. CD jukebox) support multiple LUNs 淫乱
                    [*] Probe all LUNs on each SCSI device
                    [*] Verbose SCSI error reporting (kernel size +=12K)
                    [*] SCSI logging facility
                    [*] Asynchronous SCSI scanning
                        SCSI Transports  --->         <==细项保存预设值
                    [*] SCSI low-level drivers  --->  <==次要是磁碟阵列卡,细项可全选为模组
                    <M> SCSI Device Handlers  --->    <==细项全选为模组
                    < > OSD-Initiator library
                ================================================================================
                <M> Serial ATA (prod) and Parallel ATA (experimental) drivers  --->
                    # SATA 之类的磁碟驱动顺序!这里的模组与 SCSI 模组是有相依属性的干系!
                    # 底下的细项全部选择模组,尤其是 ALi 的这个项目,对鸟哥来说,是肯定要勾选的
                    <M>     ALi PATA support
                [*] Multiple devices driver support (RAID and LVM)  --->
                    # RAID 与 LVM 怎可不选!我们第十五章才讲过这工具!细项均保存预设值即可
                [ ] Fusion MPT device support  --->
                    # 一种高阶的 SCSI 控制器,可选可不选!由于鸟哥这里不会用到,以是不选!
                    IEEE 1394 (FireWire) support  --->
                    # 这个便是俗称的‘前线’,很多外接式设置装备摆设能够会用这个介面,因而,
                    # 在此局部内的细项局部,请务必设定为模组喔!不要忘了!
                <M> I2O device support  --->       <==细项亦全选为模组!
                [ ] Macintosh device drivers  ---> <==我们是 PC ,以是不需援助麦金塔周边
                [*] Network device support  --->   <==网络设置装备摆设的援助是必选!
                    --- Network device support
                    [*]   Enable older network device API compatibility
                    <M>   Intermediate Functional Block 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>   Virtual ethernet pair device
                    <M>   General Instruments Surfboard 1000
                    < >   ARCnet support  ---> <==较晚期的网卡规格,可不选择!
                    {M}   PHY Device support and infrastructure  ---> <==细项全为模组
                    [*]   Ethernet (10 or 100Mbit)  --->
                    [*]   Ethernet (1000 Mbit)  --->
                    [*]   Ethernet (10000 Mbit)  --->
                    # 下面三个乙太网络网卡援助,不管能否用的到,细项请全编为模组来待命吧!
                    < >   Token Ring driver support  ---> <==IBM 的 LAN ,可不选!
                          Wireless LAN  --->
                          WiMAX Wireless Broadband devices  --->
                          USB Network Adapters  --->
                          # 下面三个为现阶段很抢手的无线网络设置装备摆设,以是全部内容的细项全选择
                          # 为模组!以免将来你的主机加上新的无线设置装备摆设时会找不到驱动顺序!
                    [ ]   Wan interfaces support  ---> <==WAN 的广域网络设置装备摆设应该就不必选择了!
                    [ ]   ATM drivers  ---> <==高阶的 ATM 设置装备摆设也不必选吧!
                    <*>   Xen network device frontend driver
                    <*>   FDDI driver support
                    <M>     Digital DEFTA/DEFEA/DEFPA adapter support
                    [ ]       Use MMIO instead of PIO (NEW)
                    <M>     SysKonnect FDDI PCI support
                    <M>   PLIP (parallel port) support
                    <M>   PPP (point-to-point protocol) support
                    [*]     PPP filtering
                    <M>     PPP support for async serial ports
                    <M>     PPP support for sync tty ports
                    <M>     PPP Deflate compression
                    <M>     PPP BSD-Compress compression
                    <M>     PPP over ATM
                    # 假如你有 ADSL 拨接的话,呵呵!PPP 的安装也要选择上喔!
                    <M>   SLIP (serial line) support
                    [*]     CSLIP compressed headers
                    [*]   Keepalive and linefill
                    [ ]   Six bit SLIP encapsulation
                    [*]   Fibre Channel driver support
                ================================================================================
                [ ] ISDN support  --->
                < > Telephony support  --->
                    # 这两个设置装备摆设没用到,以是也可以不要选择!
                    Input device support  --->
                    # 这外面含有滑鼠、键盘、摇杆、触控版等输出安装,只管即便全选为模组吧!
                    Character devices  --->
                    # 周边元件设置装备摆设局部,也全选为模组吧!
                {M} I2C support  --->
                    # 还记得我们去探测主机板的温度与压力吧?呵呵!那便是透过中心的这个 I2C 
                    # 的模组功用!ALi 预设没有被编入中心,以是请进当选择成模组!
                [ ] SPI support  --->
                [ ] GPIO Support  --->
                < > Dallas's 1-wire support  --->
                -*- Power supply class support  --->
                    # 绝大局部都没有效到的咚咚,以是保存预设值,不选择!
                <M> Hardware Monitoring support  --->
                    # 硬体探测器的援助,记得也要挑选,然后内容全为模组!
                -*- Generic Thermal sysfs driver  --->
                [*] Watchdog Timer Support  ---> <==需搭配 watchdog 效劳
                    # 若搭配 watchdog 效劳,可以设定在某些特定情况下重新启动主机!
                    Sonics Silicon Backplane  --->
                    Multifunction device drivers  --->
                    # 鸟哥没有如许的设置装备摆设,以是也没有选择!
                [ ] Voltage and Current Regulator Support  --->
                    Multimedia devices  --->
                    # 一堆多媒体安装如影像撷取卡、FM 播送音效卡。但假如你的 Linux 是桌上型电脑,
                    # 外面需求挑选成模组较佳!由于一大堆多媒体介面卡!
                    Graphics support  --->  <==这就紧张了!表现卡选择!
                    # 嘿嘿!重点之一,表现卡的晶片组~方才后面提到的都是主机板的对表现卡的
                    # 汇流排援助 (PCI-E 与 AGP) ,这里则是针对表现卡晶片!鸟哥的表现卡是 NVidia 
                    # 的,以是将他选择即可!其他的可以编成模组!
                <M> Sound card support  --->
                    # 音效卡局部,也全部选择成为模组啦!横竖编成模组又不必钱~
                [*] HID Devices  ---> <==人机介面安装,保存预设值即可(也可不选)
                [*] USB support  --->
                    # 不克不及不选的 USB ,内容也全部是模组即可!尤其底下这三个:
                    <M>     EHCI HCD (USB 2.0) support
                    <M>     OHCI HCD support
                    <M>     UHCI HCD (most Intel and VIA) support
                <M> MMC/SD/SDIO card support  --->  <==多媒体介面卡,保存预设值
                < > Sony MemoryStick card support (EXPERIMENTAL)  --->
                -*- LED Support  --->
                [ ] Accessibility support  --->
                <M> InfiniBand support  ---> <==高阶网络设置装备摆设
                [*] EDAC - error detection and reporting  --->
                <M> Real Time Clock  ---> <==内容选为模组吧!
                [ ] DMA Engine support  --->
                [ ] Auxiliary Display support  --->
                < > Userspace I/O drivers  --->
                [*] Xen memory balloon driver
                [*]   Scrub pages before returning them to system
                <*> Xen filesystem
                [*]   Create compatibility mount point /proc/xen
                [ ] Staging drivers  --->
                [ ] X86 Platform Specific Device Drivers  --->
                    # 一堆条记型电脑的驱动,可以不选啦!
                

                底下则与 Firmware Drivers 有关喔!根本上,都保存预设值就好了!

                <M> BIOS Enhanced Disk Drive calls determine boot disk
                [ ]   Sets default behavior for EDD detection to off (NEW)
                <M> BIOS update support for DELL systems via sysfs
                <M> Dell Systems Management Base Driver
                [*] Export DMI identification via sysfs to userspace
                [*] iSCSI Boot Firmware Table Attributes
                <M>   iSCSI Boot Firmware Table Attributes module
                


                • 文件零碎的援助

                文件零碎的援助也是很紧张的一项中心功用!由于假如不援助某个文件零碎,那么我们的 Linux kernel 就无法看法,固然也就无法运用啦!比方 Quota, NTFS 等等特别的 filesystem 。 这部份也是有够费事~由于触及中心能否可以援助某些文件零碎,以及某些作业零碎援助的 partition table 项目。在停止选择时,也务须要特殊的警惕在意喔! 尤其是我们经常用到的网络作业零碎 (NFS/Samba 等等),以及根底篇谈到的 Quota 等, 你都得要勾选啊!不然是无法被援助的。比拟风趣的是 NTFS 在这一版的中心外面居然有援助可写入的项目, 着实让鸟哥吓了一跳了!^_^

                <*> Second extended fs support
                [*]   Ext2 extended attributes
                [*]     Ext2 POSIX Access Control Lists
                [*]     Ext2 Security Labels
                [*]   Ext2 execute in place support
                <*> Ext3 journalling file system support <==发起这里间接编进中心
                [ ]   Default to 'data=ordered' in ext3 (legacy option)
                [*]   Ext3 extended attributes
                [*]     Ext3 POSIX Access Control Lists
                [*]     Ext3 Security Labels
                <M> The Extended 4 (ext4) filesystem
                [*]   Enable ext4dev compatibility
                [*]   Ext4 extended attributes (NEW)
                [*]     Ext4 POSIX Access Control Lists
                [*]     Ext4 Security Labels
                # 下面是传统的 EXT2/EXT3 及进阶的 EXT4 援助!除了 EXT4 外,其他编入中心吧!
                ================================================================================
                [ ] JBD (ext3) debugging support
                [ ] JBD2 (ext4) debugging support (NEW)
                <M> Reiserfs support
                [ ]   Enable reiserfs debug mode (NEW)
                [ ]   Stats in /proc/fs/reiserfs (NEW)
                [ ]   ReiserFS extended attributes (NEW)
                < > JFS filesystem support
                <M> XFS filesystem support
                [*]   XFS Quota support
                [*]   XFS POSIX ACL support
                [*]   XFS Realtime subvolume support
                < > OCFS2 file system support
                [*] Dnotify support
                [*] Inotify file change notification support
                [*]   Inotify support for userspace
                [*] Quota support
                [ ]   Report quota messages through netlink interface
                [*]   Print quota warnings to console (OBSOLETE)
                < > Old quota format support
                <*> Quota format v2 support
                <M> Kernel automounter support
                <M> Kernel automounter version 4 support (also supports v3)
                < > FUSE (Filesystem in Userspace) support 
                # XFS 以及 Reiserfs 与 Quota 发起也是选择起来放啦!
                ================================================================================
                    Caches  --->
                    CD-ROM/DVD Filesystems  --->  <==CD内的文件款式,预设值即可
                    DOS/FAT/NT Filesystems  --->  <==有援助 NTFS ,要进入挑挑!
                      <M> MSDOS fs support
                      <M> VFAT (Windows-95) fs support
                      (950) Default codepage for FAT    <==援助繁体中文
                      (utf8) Default iocharset for FAT  <==援助万国码
                      <M> NTFS file system support
                      [ ]   NTFS debugging support (NEW)
                      [*]   NTFS write support
                ================================================================================
                    Pseudo filesystems  --->        <==相似 /proc ,保存预设值
                [*] Miscellaneous filesystems  ---> <==其他文件零碎的援助,保存预设值
                [*] Network File Systems  --->      <==网络文件零碎!很紧张!也要挑挑!
                    --- Network File Systems
                    <M>   NFS client support
                    [*]     NFS client support for NFS version 3
                    [*]       NFS client support for the NFSv3 ACL protocol extension
                    <M>   NFS server support
                    [*]     NFS server support for NFS version 3
                    [*]       NFS server support for the NFSv3 ACL protocol extension
                    < >   SMB file system support (OBSOLETE, please use CIFS)
                    <M>   CIFS support (advanced network filesystem, SMBFS successor)
                # 最紧张就这几项,其他保存预设值即可!
                ================================================================================
                    Partition Types  --->          <==联系范例,也是坚持预设值即可!
                -*- Native language support  --->  <==选择预设的语系
                    --- Native language support
                    (utf8) Default NLS Option
                    <*>   Traditional Chinese charset (Big5)
                    # 除了上述这两个之外,其他的请选择成为模组即可!
                


                • 中心骇客、资讯平安、暗码使用

                再接上去有个‘Kernel hacking’的项目,那是与中心开辟者比拟有关的局部,这局部发起保存预设值即可, 应该不需求去修正他!除非你想要停止中心方面的研讨喔。然后底下有个‘ Security Options ’,那是属于资讯平安方面的设定, 包罗 SELinux 这个细部权限强化模组也在这里编入中心的!这局部可以作一些额定的设定。 别的另有‘ Cryptographic API ’这个暗码使用顺序介面东西选项,也是可以保存预设值啦! 我们来看看有什么比拟特别的中央吧!

                Security options  --->
                [*] Enable access key retention support
                [*]   Enable the /proc/keys file by which keys may be viewed
                [*] Enable different security models
                [ ] Enable the securityfs filesystem
                [*] Socket and Networking Security Hooks
                [*]   XFRM (IPSec) Networking Security Hooks
                [ ] Security hooks for pathname based access control
                [ ] File POSIX Capabilities
                [ ] Root Plug Support
                [*] NSA SELinux Support
                [*]   NSA SELinux boot parameter
                (1)     NSA SELinux boot parameter default value
                [*]   NSA SELinux runtime disable
                [*]   NSA SELinux Development Support
                [*]   NSA SELinux AVC Statistics
                (1)   NSA SELinux checkreqprot default value
                [ ]   NSA SELinux maximum supported policy format version
                [ ] Simplified Mandatory Access Control Kernel Support
                [ ] TOMOYO Linux Support
                [ ] Integrity Measurement Architecture(IMA)
                # 根本上,这局部保存预设值就对了!你也会发明 NSA 的材料都是间接编进中心!
                ================================================================================
                Cryptographic API  --->
                # 根本上,除了底下这两个编译进中心之外,其他的统统选择成为模组吧!
                {*}   MD5 digest algorithm
                {*}   SHA1 digest algorithm
                

                在暗码使用顺序介面方面,普通我们运用的帐号暗码登入应用的便是 MD5 这个加密机制,要让中心有援助才行啊!简直一切的项目都给他做成模组即可! 不外 MD5 与 SHA1 必需要间接由中心援助比拟好!


                • 假造化与函式库

                假造化是比年来十分抢手的一个议题,由于电脑的才能太强,以是时常闲置在那里, 此时,我们可以透过假造化技能在一台主机下面同时启动多个作业零碎来运作,这便是所谓的假造化。 Linux 中心曾经自动的归入假造化功用喔!而 Linux 承认的假造化运用的机制为 KVM (Kernel base Virtual Machine)。 至于常用的中心函式库也可以全部编为模组啰!

                [*] Virtualization  --->
                    --- Virtualization
                    <M>   Kernel-based Virtual Machine (KVM) support
                    <M>     KVM for Intel processors support
                    <M>     KVM for AMD processors support
                    [ ]     KVM trace support (NEW)
                    <M>   Virtio balloon driver (EXPERIMENTAL)
                ================================================================================
                Library routines  --->
                    {M} CRC-CCITT functions
                    {M} CRC16 functions
                    {M} CRC calculation for the T10 Data Integrity Field
                    {M} CRC ITU-T V.41 functions
                    -*- CRC32 functions
                    <M> CRC7 functions
                    {*} CRC32c (Castagnoli, et al) Cyclic Redundancy-Check
                

                最初,另有底下这两个项目,这两个项目与中心功用有关,但是与挑选时的设定文件有关:

                Load an Alternate Configuration File
                Save an Alternate Configuration File
                

                这两个项目辨别是贮存方才做好的一切项目标设定材料,另一个则是未来自其别人作的选择给他读入! 现实上,方才我们所做的设定只需在分开时选择 SAVE ,那么这些项目 统统会记载到现在这个目次下的 .config 文件内。 而我们也可以运用下面提到的 Save Configuration 这个项目来将方才做完的设定贮存成别的的文件, 做成这个文件的益处是,你可以在下次在其他版本的中心作选择时,间接以 Load 来将这个文件的设定项目读入,如许可以增加你还要重新挑选一遍的窘境啊!

                要请你留意的是,下面的材料次要是实用在鸟哥的团体呆板下面的, 现在鸟哥比拟习气运用本来 distributions 提供的预设中心,由于他们也会自动的停止更新, 以是鸟哥就懒的本人重编中心了~ ^_^

                别的,由于鸟哥注重的中央在于‘网络效劳器’下面,以是外头的设定少失了相称多的团体桌上型 Linux 的硬体编译!以是,假如你想要编译出一个合适你的呆板的中心, 那么能够另有相称多的中央需求来修正的!不管怎样,请随时以 Help 谁人选项来看一看内容吧!横竖 Kernel 重编的机率不大!花多一点工夫重新编译一次! 然后将该编译完成的参数文件贮存上去,将来就可以间接将该文件叫出来读入了! 以是花多一点工夫装置一次就好!那也是相称值得的!


                大标题的图示中心的编译与装置

                将最庞大的中心功用选择终了后,接上去便是停止这些中心、中心模组的编译了!而编译完成后,固然便是需求运用噜~ 那怎样运用新中心呢?就得要思索 grub 这个玩意儿啦!底下我们就来处置处置:


                小标题的图示编译中心与中心模组

                中心与中心模组需求先编译起来,而编译的进程实在十分复杂,你可以先运用‘ make help ’去查阅一下一切可用编译参数, 就会晓得有底下这些根本功用:

                [root@www linux-2.6.30.3]# make vmlinux  <==未经紧缩的中心
                [root@www linux-2.6.30.3]# make modules  <==仅中心模组
                [root@www linux-2.6.30.3]# make bzImage  <==经紧缩过的中心(预设)
                [root@www linux-2.6.30.3]# make all      <==停止上述的三个举措
                

                我们罕见的在 /boot/ 底下的中心文件,都是颠末紧缩过的中心文件,因而,上述的举措中比拟常用的是 modules 与 bzImage 这两个,此中 bzImage 第三个字母是英文大写的 I 喔!bzImage 可以制造出紧缩当时的中心, 也便是普通我们拿来停止零碎开机的资讯啰!以是,根本上我们会停止的举措是:

                [root@www linux-2.6.30.3]# make clean    <==先肃清暂存档
                [root@www linux-2.6.30.3]# make bzImage  <==先编译中心
                [root@www linux-2.6.30.3]# make modules  <==再编译模组
                

                上述的举措会破费十分长的工夫,编译的举措根据你选择的项目以及你主机硬体的效能而差别。 最初制造出来的材料是被安排在 /usr/src/kernels/linux-2.6.30.3/ 这个目次下,还没有被放到零碎的相干途径中喔!在下面的编译进程当中,假如有发作任何错误的话, 很能够是由于中心项目标挑选选择的欠好,能够你需求重新以 make menuconfig 再次的反省一下你的相干设定喔! 假如照旧无法乐成的话,那么大概将本来的中心材料内的 .config 文件,复制到你的中心原始档目次下, 然后据以修正,应该就可以顺遂的编译出你的中心了。最初留意到,下达了 make bzImage 后,终极的后果应该会像如许:

                Root device is (8, 1)
                Setup is 12696 bytes (padded to 12800 bytes).
                System is 2207 kB
                CRC 7701ab0e
                Kernel: arch/x86/boot/bzImage is ready  (#1)
                [root@www linux-2.6.30.3]# ll arch/x86/boot/bzImage
                -rw-r--r-- 1 root root 2272432  7月 30 13:35 arch/x86/boot/bzImage
                

                可以发明你的中心曾经编译好并且安排在 /usr/src/kernels/linux-2.6.30.3/arch/x86/boot/bzImage 外面啰~谁人便是我们的中心文件!最紧张便是他啦!我们等一下就会装置到这个文件哩! 然后便是编译模组的局部啰~ make modules 停止终了后,就等着装置啦! ^_^


                小标题的图示实践装置模组

                装置模组前有个中央得要特殊夸大喔!我们晓得模组是安排到 /lib/modules/$(uname -r) 目次下的,那假如统一个版本的模组被反覆编译厥后装置时,会不会发生抵触呢?举例来说,鸟哥这个 2.6.30.3 的版本第一次编译完成且装置妥当后,发明有个小细节想要重新处置,因而又重新编译过一次,那两个版本如出一辙时, 模组安排的目次会一样,此时就会发生抵触了!如之奈何?有两个处理办法啦:

                • 先将旧的模组目次改名,然后才装置中心模组到目的目次去;
                • 在 make menuconfig 时,谁人 General setup 内的 Local version 修正成新的称号。

                鸟哥发起运用第二个方法,由于云云一来,你的模组安排的目次称号就不会相反,如许也就能略过上述的目次同名题目啰! 好,那么怎样装置模组到准确的目的目次呢?很复杂,异样运用 make 的功用即可:

                [root@www linux-2.6.30.3]# make modules_install
                [root@www linux-2.6.30.3]# ll /lib/modules/
                drwxr-xr-x 3 root root 4096  7月 30 14:31 2.6.30.3vbird
                

                看到否,终极会在 /lib/modules 底下树立起你这个中心的相干模组喔!不错吧!模组如许就曾经处置妥当啰~ 接上去,便是预备要停止中心的装置了!哈哈!又跟 grub 有关啰~


                小标题的图示开端装置新中心与多重中心选单 (grub)

                如今我们晓得中心文件安排在 /usr/src/kernels/linux-2.6.30.3/arch/x86/boot/bzImage ,但是实在零碎中心实际上都是摆在 /boot 底下,且为 vmlinuz 扫尾的档名。 别的,我们也知道一台主机是可以做成多重开机零碎的!如许说,应该晓得鸟哥想要干嘛了吧? 对啦!我们将同时保存旧版的中心,而且新增新版的中心在我们的主机下面。


                • 挪动中心到 /boot 且保存旧中心文件

                保存旧中心有什么益处呢?最大的益处是可以确保零碎可以顺遂开机啦!由于中心固然被编译乐成了, 但是并不包管我们方才挑选的中心项目完全合适于现在这部主机零碎, 能够有某些中央我们遗忘选择了,这将招致新中心无法顺遂驱动整个主机零碎,更差的状况是, 你的主机无法乐成开机乐成!此时,假如我们保存旧的中心,呵呵!若新中心测试欠亨过,就用旧中心来启动啊!嘿嘿! 包管比拟不会有题目嘛!新中心通常可以如许作的:

                [root@www ~]# cp /usr/src/kernels/linux-2.6.30.3/arch/x86/boot/bzImage \
                > /boot/vmlinuz-2.6.30.3vbird  <==实践中心
                [root@www ~]# cp /usr/src/kernels/linux-2.6.30.3/.config \
                > /boot/config-2.6.30.3vbird   <==发起设定档也复制备份
                


                • 树立绝对应的 Initial Ram Disk (initrd)

                还记得第二十章谈过的 initrd 这个玩意儿吧! 由于鸟哥的零碎运用 SATA 磁碟,加上方才 SATA 磁碟援助的功用并没有间接编译到中心去,以是固然要运用 initrd 来载入才行! 运用如下的办法来树立 initrd 吧!记得搭配准确的中心版本喔!

                [root@www ~]# mkinitrd -v /boot/initrd-2.6.30.3vbird.img  2.6.30.3vbird
                ....(后面省略)....
                Adding module ehci-hcd
                Adding module ohci-hcd
                Adding module uhci-hcd
                ....(前面省略)....
                


                • 编辑开机选单 (grub)

                鸟哥这部测试机之前是运用 Xen 的中心来启动的,但由于 Xen 中心的制造比拟庞大,本章并没有实作出 Xen 假造呆板的中心。 底下鸟哥运用的是方才编译乐成的中心来停止开机选单的设定,你会看到的设定档与你的情况能够会有纷歧样喔! 那就来看看吧!

                [root@www ~]# vim /boot/grub/menu.lst
                default=0
                timeout=10
                splashimage=(hd0,0)/boot/grub/splash.xpm.gz
                #hiddenmenu
                title CentOS (2.6.18-128.2.1.el5xen)
                        root (hd0,0)
                        kernel /boot/xen.gz-2.6.18-128.2.1.el5
                        module /boot/vmlinuz-2.6.18-128.2.1.el5xen ro root=LABEL=/ rhgb quiet
                        module /boot/initrd-2.6.18-128.2.1.el5xen.img
                title CentOS testing kernel from vbird
                        root (hd0,0)
                        kernel /boot/vmlinuz-2.6.30.3vbird ro root=LABEL=/ rhgb
                        initrd /boot/initrd-2.6.30.3vbird.img
                

                新增上述的特别字体到你的设定档当中。别的,你会发明我上头的 default 并没有修正到最新的谁人中心的选单上, 由于我必需要测试一下新中心可否顺遂开机!假如顺遂开机且运作没有题目后,那么才来修订这个 default 的值吧!


                • 重新以新中心开机、测试、修正

                假如上述的举措都乐成后,接上去便是重新开机并选择新中心来启动零碎啦!假如零碎顺遂启动之后,你运用 uname -a 会呈现相似底下的材料:

                [root@www ~]# uname -a
                Linux www.vbird.tsai 2.6.30.3vbird #1 SMP Thu Jul 30 13:34:31 
                CST 2009 x86_64 x86_64 x86_64 GNU/Linux
                

                包罗中心版本与援助的硬体平台都是 OK 的!嘿嘿!那你所编译的中心便是差未几乐成的啦! 假如运作一阵子后,你的零碎照旧波动的状况下,那就可以将 default 值运用这个新的中心来作为预设开机啰! 这便是中心编译!那你也可以本人处置嵌入式零碎的中心编译啰! ^_^


                大标题的图示额定(单一)中心模组编译

                我们如今晓得中心所援助的功用当中,有间接编译到中心外部的,也有运用外挂模组的,外挂模组可以复杂的想成便是驱动顺序 啦!那么也晓得这些中心模组根据差别的版本,被辨别安排到 /lib/modules/$(uname -r)/kernel/ 目次中,各个硬体的驱动顺序则是安排到 /lib/modules/$(uname -r)/kernel/drivers/ 当中!换个角度再来考虑一下,假如方才我本人编译的材料中,有些驱动顺序遗忘编译成为模组了,那能否需求重新停止上述的一切举措? 又假如我想要运用硬体厂商释出的新驱动顺序,那该如之奈何?


                小标题的图示编译前留意事变

                由于我们的中心本来就有提供许多的中心东西给硬体开辟商来运用, 而硬体开辟商也需求针对中心所提供的功用来设计他们的驱动顺序模组,因而, 我们假如想要自利用用硬体开辟商所提供的模组来停止编译时,就需求运用到中心所提供的原始档当中, 所谓的标头文件 (header include file) 来获得驱动模组所需求的一些函式库或标头的界说啦! 也因而我们经常会发明到,假如想要自行编译中心模组时,就得要拥有中心原始码嘛!

                那中心原始码我们晓得他是能够安排在 /usr/src/ 底下,晚期的中心原始码被要求肯定要安排到 /usr/src/linux/ 目次下,不外,假如你有多个中心在一个 Linux 零碎当中,并且运用的原始码并不相反时, 呵呵~题目可就大了!以是,在 2.6 版当前,中心运用比拟风趣的办法来设计他的原始码安排目次, 那便是以 /lib/modules/$(uname -r)/build 及 /lib/modules/$(uname -r)/source 这两个保持档来指向准确的中心原始码安排目次。假如以我们方才由 kernel 2.6.30.3 树立的中心模组来说, 那么他的中心模组目次底下有什么咚咚?

                [root@www ~]# ll -h /lib/modules/2.6.30.3vbird/
                lrwxrwxrwx  1 root root   31  7月 30 14:29 build -> /usr/src/kernels/linux-2.6.30.3
                drwxr-xr-x 10 root root 4.0K  7月 30 14:30 kernel
                -rw-r--r--  1 root root 337K  7月 30 14:31 modules.alias
                -rw-r--r--  1 root root   69  7月 30 14:31 modules.ccwmap
                -rw-r--r--  1 root root 224K  7月 30 14:31 modules.dep
                ....(两头省略)....
                lrwxrwxrwx  1 root root   31  7月 30 14:29 source -> /usr/src/kernels/linux-2.6.30.3
                

                比拟风趣的除了那两个保持档之外,另有谁人 modules.dep 文件也挺风趣的, 谁人文件是记载了中心模组的相依属性的中央,根据该文件,我们可以复杂的运用 modprobe 这个指令来载入模组呢!至于中心原始码提供的标头档,在下面的案例当中, 则是安排到 /usr/src/kernels/linux-2.6.30.3/include/ 目次中,固然便是藉由 build/source 这两个保持文件来获得目次地点的啦!^_^

                由于中心模组的编译实在与中心本来的原始码有点干系的,因而假如你需求重新编译模组时, 那除了 make, gcc 等次要的编译软件东西外,你还需求的便是 kernel-devel 这个软件!记得肯定要装置喔!而假如你想要在预设的中心底下新增模组的话,那么就得要找到 kernel 的 SRPM 文件了! 将该文件给他装置,而且获得 source code 后,才干够顺遂的编译喔!


                小标题的图示单一模组编译

                想像两个状况:

                • 假如我的预设中心遗忘参加某个功用,并且该功用可以编译成为模组,不外, 预设中心却也没有将该项功用编译成为模组,害我不克不及运用时,该如之奈何?

                • 假如 Linux 中心原始码并没有某个硬体的驱动顺序 (module) ,但是开辟该硬体的厂商有提供应 Linux 运用的驱动顺序原始码,那么我又该怎样将该项功用编进中心模组呢?

                很风趣对吧!不外,在如许的状况下实在没有什么好说的,横竖便是 ‘去获得原始码后,重新编译成为零碎可以载入的模组’啊!很复杂,对吧!^_^! 但是,下面那两种状况的模组编译举动是不太一样的,不外,都是需求 make, gcc 以及中心所提供的 include 标头档与函式库等等。


                • 硬体开辟商提供的额定模组

                许多时分,能够由于中心预设的中心驱动模组所提供的功用你不称心,或许是硬体开辟商所提供的中心模组具有更弱小的功用, 又或许该硬体是新的,以是预设的中心并没有该硬体的驱动模组时,那你只好自行由硬体开辟商处获得驱动模组, 然后自行编译啰!

                假如你的硬体开辟商有提供驱动顺序的话,那么真的很好处理,间接下载该原始码,重新编译, 将他安排到中心模组该安排的中央后就可以运用了!举个例子来说,为了省电,鸟哥在 2009 年终买了整合型主机板来搭建家用的效劳器,没想到 CentOS 5.1 曩昔的版本对鸟哥新买的主机板内建网卡援助度缺乏, 运用的网卡驱动顺序 r8169 有题目!搜索了 google 才发明各人都有这个题目。处理办法便是到 Realtek 官网下载网卡驱动顺序来编译即可。

                • Realtek 的 r8168 网卡驱动顺序:http://www.realtek.com.tw/downloads/
                • 选择‘Communications Network ICs’-->‘Network Interface Controlllers’--> ‘10/100/1000M Gigabit Ethernet’--> ‘PCI Express’--> ‘Software’就可以下载了!

                你可以应用种种办法将他下载后,假定这个文件安排到 /root ,那么间接将他解紧缩吧! 之后就可以读一读 INSTALL/README ,然后找一下 Makefile ,就可以编译了。全体流程有点像如许:

                # 1. 将文件解紧缩:
                [root@www ~]# cd /usr/local/src
                [root@www src]# tar -jxvf /root/r8168-8.013.00.tar.bz2
                [root@www src]# cd r8168-8.013.00/
                
                # 2. 开端停止编译与装置:
                [root@www r8168-8.013.00]# vi readme  <==留意查一下该文件内容
                [root@www r8168-8.013.00]# make clean modules
                [root@www r8168-8.013.00]# ll src/*.ko  <==树立底下的模组档!
                -rw-r--r-- 1 root root 112216  7月 31 01:11 src/r8168.ko
                [root@www r8168-8.013.00]# make install
                install -m 744 -c r8168.ko /lib/modules/2.6.30.3vbird/kernel/drivers/net/
                # 重点在下面这行!会发明模组曾经被挪动到中心模组目次!
                
                4. 更新模组相依属性!
                [root@www r8168-8.013.00]# depmod -a
                

                风趣吧!透过如许的举措,我们就可以随便的将模组编译起来,而且还可以将他间接安排到中心模组目次中, 同时以 depmod 将模组树立相干性,将来就可以应用 modprobe 来间接取用啦! 但是需求提示你的是,当自行编译模组时, 若你的中心有更新 (比方应用主动更新机制停止线上更新) 时,则你必需要重新编译该模组一次, 反复下面的步调才行!由于这个模组仅针对现在的中心来编译的啊!对吧!


                • 应用旧有的中心原始码停止编译

                假如你厥后发明遗忘参加某个模组功用了,那该如之奈何?实在假如仅是重新编译模组的话, 那么整个进程就会变的十分复杂!我们先到现在的中心原始码地点目次下达 make menuconfig , 然后将 NTFS 的选项设定成为模组,之后间接下达:

                make fs/ntfs/

                那么 ntfs 的模组 (ntfs.ko) 就会主动的被编译出来了! 然后将该模组复制到 /lib/modules/2.6.30.3vbird/kernel/fs/ntsf/ 目次下, 再实行 depmod -a ,呵呵~就可以在原来的中心底下新增某个想要参加的模组功用啰~ ^_^


                小标题的图示中心模组办理

                中心与中心模组是分不开的,至于驱动顺序模组在编译的时分,更与中心的原始码功用分不开~ 因而,你必需要先理解到:中心、中心模组、驱动顺序模组、中心原始码与标头文件的相干性, 然后才有方法理解到为何编译驱动顺序的时分总是需求找到中心的原始码才干够顺遂编译! 然后也才会晓得,为何当中心更新之后,本人之前所编译的中心模组会生效~

                别的,与中心模组有相干的,另有谁人很常被运用的 modprobe 指令, 以及开机的时分会读取到的模组界说材料文件 /etc/modprobe.conf , 这些材料你也必需要理解才行~相干的指令阐明我们曾经在第二十章内谈过了, 你应该要自行前去理解喔! ^_^


                大标题的图示重点回忆
                • 实在中心便是零碎下面的一个文件罢了,这个文件包括了驱动主机各项硬体的探测顺序与驱动模组;
                • 上述的中心模组安排于:/lib/modules/$(uname -r)/kernel/
                • ‘驱动顺序开辟’的任务下面来说,应该是属于硬体开展厂商的题目
                • 普通的运用者,由于零碎曾经将中心编译的相称的合适普通运用者运用了,因而普通入门的运用者,根本上,不太需求编译中心
                • 编译中心的普通目标:新功用的需求、本来的中心太甚痴肥、与硬体搭配的波动性、其他需求(如嵌入式零碎)
                • 编译中心前,最好先理解到您主机的硬体,以及主机的用处,才干选择好中心功用;
                • 编译前若想要坚持中心原始码的洁净,可运用 make mrproper 来肃清暂存档与设定档;
                • 挑选中心功用与模组可用 make 共同:menuconfig, oldconfig, xconfig, gconfig 等等
                • 中心功用挑选终了后,普通罕见的编译进程为:make bzImage, make modules
                • 模组编译乐成后的装置方法为: make modules_install
                • 中心的装置进程中,需求挪动 bzImage 文件、树立 initrd 文件、编辑 /boot/grub/menu.lst 等举措;
                • 我们可以自行由硬体开辟商之官网下载驱动顺序来自行编译中心模组!

                大标题的图示本章习题
                ( 要看答案请将滑鼠挪动到‘答:’底下的空缺处,按下左键圈选空缺处即可观察)
                • 复杂阐明中心编译的步调为何?
                  1. 先下载中心原始码,可以从 http://www.kernel.org 或许是 distributions 的 SRPM 来动手;
                  2. 以下以 Tarball 来处置,解开原始码到 /usr/src/kernels 目次下;
                  3. 先辈行旧材料删除的举措:‘make mrproper’;
                  4. 开端挑选中心功用,可以应用‘make menuconfig’、‘make oldconfig’、‘make gconfig’等等;
                  5. 肃清过来的两头暂存档材料:‘make clean’
                  6. 开端中心文件与中心模组的编译:‘make bzImage’、‘make modules’
                  7. 开端中心模组的装置:‘make modules_install’
                  8. 开端中心文件的装置,可以运用的方法有:‘make install’或许是透过手动的方法复制中心文件到 /boot/grub 当中;
                  9. 树立 initrd 文件;
                  10. 修正 /boot/grub/menu.lst 文件;
                • 假如你应用新编译的中心来操纵零碎,发明零碎并不波动,你想要移除这个自行编译的中心该怎样处置?
                  起首,可以将原始码删除:rm -rf /usr/src/kernels/linux-2.6.30
                  再者,删撤除中心模组的目次: rm -rf /lib/modules/2.6.30
                  最初删撤除 /boot/ 内的中心文件与 initrd 文件,以及 /boot/grub/menu.lst 内的 title 设定即可。

                大标题的图示参考材料与延伸阅读
                • 注1:透过在 /usr/src/kernels/linux-2.6.30.3 底下的 README 以及‘ make help ’可以失掉相称多的表明
                • 中心编译的功用:可以用来测试 CPU 效能喔!由于 compile 十分耗零碎资源!
                • http://lxr.xensource.com/lxr/source/README?a=x86_64

                2002/05/29:第一次完成
                2003/02/11:重新编排与参加 FAQ
                2004/06/11:本来的 2.4.xx 版本中心被挪动到 此处
                2005/11/15:本来的模组办理曾经先挪动到开机流程办理那一篇啰!
                2005/12/05:颠末快要一个月,呵呵!终于给他整理出来这一篇了~真难过~
                2007/06/27:添加了 initrd 的复杂阐明,细致照旧得看 loader 那一章。
                2009/07/21:将基于 FC4 所撰写的文章挪动到此处
                2009/08/03:本来的 KDE/GNOME 运用的引擎写错了! KDE 用 Qt ,而 GNOME 是用 Gtk !十分感激 Chua Tze An 兄提供的指正!
                2009/09/18:参加两个复杂的标题,给各人考虑一下罢了。



                 
                     
                中国存储网 ChinaStor.com排版整理
                原文作者鸟哥,主页,更多Linux学习材料在线看:Linux零碎办理员手册 - Linux下令大全 - Linux挪用大全- Linux专栏 - 国产Linux