⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0540kernel.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		OK!那么鸟哥闲闲没事干跑来写个什么东西?既然都不需要编译核心还写编译核心的分享文章,
		鸟哥卖弄才学呀!?很抱歉,鸟哥虽然是个『不学有术』的混混,却也不会平白无故的写东西要您来指教~
		当然是有需要才会来编译核心啦!编译核心的时机可以归纳为几大类∶
		<ul>
		<li><span class=text_import1>新功能的需求</span>∶<br>
			我需要新的功能,而这个功能只有在新的核心里面才有,那么为了获得这个功能,只好来重新编译我的核心了
			( 例如 iptables 这个防火墙机制只有在 2.4.xx 版本里面才有,而新出产的 AGP
			显示卡,很多也需要新的核心推出之后,才能正常而且有效率的工作!) 再举个例子,
			之前的 Red Hat 7.2 的版本中,由于预设是将 CD-ROM 编译成核心的『模组』,
			也就是说,核心本身还没有支援 CD-ROM 的功能,必须要挂上模组之后才能使用与读取这个 
			CD-ROM !是否觉得很麻烦呢?呵呵!那么这个时候,如果你想要直接让
			kernel 支援 CD ROM 的话,就得要重新编译核心棉;</li><br>

		<li><span class=text_import1>原本核心太过臃肿</span>∶<br>
			如果您是那种对于系统『稳定性』很要求的人,
			那么对于核心多编译了很多莫名其妙的功能而不太喜欢的时候,
			那么就可以重新编译核心来取消掉该功能棉;</li><br>

		<li><span class=text_import1>与硬体的搭配稳定性</span>∶<br>
			由于原本 Linux 的核心大多是针对 Intel 的 CPU 来作开发的,所以如果你的
			CPU 是 AMD 的系统时,有可能 ( 注意!只是有可能,不见得一定会如此 ) 
			会让系统跑得『不太稳!』就鸟哥的经验来看,使用旧的
			Pentum 系列的旧机器安装 Linux 的结果,还没有胡乱当机的经验!但是安装在
			K6-2, K6-3 上面的 Linux ,通常需要重新编译一下核心会比较稳定一些!</li><br>

		<li><span class=text_import1>其他</span>∶<br>
			就是你需要特殊的环境需求时,就得自行设计你的核心棉!( 
			像是一些商业的套装软体系统,由于需要较为小而美的作业系统,
			那么他们的核心就需要更简洁有力了!)</ul>

		另外,需要注意重新编译核心虽然可以针对你的硬体作最佳化的步骤 ( 例如刚刚提到的
		CPU 的问题! ) ,不过由于这些最佳化的步骤对于整体效能的影响是很小很小的,
		因此如果是为了增加效能来编译核心的话,基本上,效益不大!然而,如果是针对『系统稳定性』来考量的话,
		那么就有充分的理由来支持您重新编译核心棉!<br><br>

		『<span class=text_import2>如果系统已经运行很久了,而且也没有什么大问题,
		加上我又不增加冷门的硬体设备,那么建议就不需要重新编译核心了!』</span>,
		因为重新编译核心的最主要目的是『想让系统变的更稳!』既然您的
		Linux 主机已经达到这个目的了,何必再编译核心?不过,就如同前面提到的,
		由于预设的核心不见得适合您的需要,加上预设的核心可能并无法与您的硬体配备相配合,
		此时才开始考虑重新编译核心吧!<br>

		<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen">			早期鸟哥是强调最好重新编译核心的一群啦!不过,最近这个想法改变了~
			既然原本的 distribution  都已经帮我们考虑好如何使用核心了,那么,
			我们也不需要再重新的编译核心啦!尤其是 distribution 都会主动的释出新版的核心 RPM 版本,
			所以,实在不需要自己重新编译的!当然啦,如同前面提到的,
			如果您有特殊需求的话,那就另当别论噜! ^_^
		</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
		然而由于『<span class=text_import2>核心的主要工作是在控制硬体</span>!』所以编译核心之前,
		请先了解一下您的硬体配备,与您这部主机的未来功能!由于核心是『
		<span class=text_import2>越简单越好</span>!』所以只要将这部主机的未来功能给他编进去就好了!
		其他的就不用去理他啦!<br><br>
	</div>

	<hr><a NAME="intro_kernel_version"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>
	核心的版本与何处下载最新核心</span><br>
	<div class=block2>
		既然这一章的内容要讨论的是如何编译核心,那么我们就来聊一聊核心的版本吧!<br><br>

		<li><span class=text_import1>核心的版本∶</span></li>
		<div class=block2>
			由于不同的核心版本之间,使用的函式库并不相同,所以,我们必须要知道自己的 Linux
			核心版本之后,才能够取用最新支援的核心版本来编译新的核心啊!那么要在哪里找到这个核心的资讯呢?
			应该还记得那个 <a href="0440processcontrol.php#uname">uname</a>
			查看的资讯吧!没错!就是他了,可以使用其功能来查询目前在工作的核心版本∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>uname -r</span>
2.6.13-1.1532_FC4
<span class=term_say># 因为鸟哥的 FC4 已经升级核心多次,所以这个版本应该与你的不同!</span>
</pre></td></tr></table>

		看到了吧!那个东西就是核心版本的资讯啦!好了!我们依照
		<a href="0520rpm_and_srpm.php">RPM</a>
		版本的先例,也来谈一谈 kernel 的版本吧!基本上, kernel 的版本可以区分为∶
		<ul><span class=text_import2><font face="细明体">
		[主版本].[次版本].[释出版本(release)]-[修改版本]</font></span></ul>
		整个版本的定义当中,最需要注意的是前两个,亦即主版本与次版本。
		相同的[主][次]版本,代表他使用的函式库是差不多的,所以,可以直接升级到较高的[释出版本]上。
		值得注意的是,由于核心功能的增加速度实在太快了,一般商业用户与一般使用者,
		根本不需要很多的测试中的功能,因此,[主][次]版本中,依据[次版本]的奇偶数,
		又分为底下两种版本∶<ul>
		<li>如果[次版本]是奇数的话,例如 2.3, 2.5 等等,那表示他是一个『
			<span class=text_import2>测试性质功能的核心版本</span> 』,
			这种核心通常是在推出稳定版本的核心之前,用来给 developer ( 核心维护更新测试者!) 
			测试用的!虽然功能较为强大,但是由于是属于测试性质,所以可能会有些许的
			bugs 也说不定;</li><br>
		<li>如果[次版本]是偶数的话,例如 2.4, 2.6 等等,那表示他是一个经过测试之后才释出的
			『<span class=text_import2>稳定核心版本</span>,这种核心较为稳定不容易出错,
			比较适合一般个人或者是商业使用!</li></ul>

		所以啦!我们要升级的时候,大多就是使用那种偶数的核心版本啦!不过这里还是要再提一遍!就是『
		<span class=text_import1>2.4 与 2.6 是两个具有相当大差异的核心版本,
		两者之间使用到的函式库基本上已经不相同了,所以在升级之前,如果您的核心原本是
		2.4.xx 版,那么就升级到 2.4.xx 版本的最新版,不要由 2.4.xx
		直接升级到 2.6.xx 版,否则到时可能会欲哭无泪~~</span>』,
		这个问题在讨论区一再地被提起!这里再次说明!<br>

		<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen">			为什么不能从 2.4 升级到 2.6 呢?其实还是可以啦!只是过程很复杂!
			我们知道软体 (packages) 是架构在系统核心上面来进行编译、安装与执行的,
			也就是说,这些 packages 与核心之间,是有相关性的!这些 packages 会用到很多核心提供的功能。
			但是不同的[主][次]版本之间,他们提供的功能架构差异太大,因此,若你由 2.4 升级到 2.6 的话,
			那么绝大部分的软体『都需要重新再编译!』这样了解为何不要在不同的版本间升级了吧?
		</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
		此外,2.4.xx 与 2.6.xx 的比较中,<span class=text_import2>并不是
		2.6.xx 就一定比 2.4.xx 还要新</span>,因为这两种版本同时在进行维护与升级的工作!如果有兴趣的话,可以前往
		Linux 核心网站 <a href="http://www.kernel.org" target="_blank">http://www.kernel.org</a>
		一看究竟,您就可以了解目前的核心变动情况了!<br><br>

		基本上,目前最新的 distributions ,包括 FC, SuSE, Mandriva 等等,都使用 2.6 的核心,
		所以,您可以直接由 <a href="http://www.kernel.org" target="_blank">http://www.kernel.org</a>
		下载最新的 2.6.xx 版本的核心来尝试编译啊!目前 (2005/11/20) 鸟哥可以查到的最新版本是 2.6.14-2 ,
		底下我们将主要以这个版本来测试。另外,由于较新的核心版本可能会多出一些选项,
		因此若有不同的项目也没有关系!稍微查看一下说明内容就可以了解啦!<br><br>

<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题∶什么是『释出版本』?<br>
答∶<ul>由于核心的新功能增加太快,为了要统合这些功能,因此,每隔一段时间的稳定性测试后,
	这些新功能才会被放到原本的核心内,最后被推出。而为了与前一个核心原始码作区别,
	所以就被加上一个数字较高的『释出版本』数字了。</ul>
例题∶那什么是『修改版本』?<br>
答∶<ul>由于原本的核心原始码可能有点 bugs 在里面,经过程式开发人员的程式码修改后 (debug),
	再重新推出的一个类似加强版的意思。基本功能是不变的,只是有问题的地方被克服而已。</ul>
</td></tr></table><br>
		</div>

		<li><span class=text_import1>核心下载地点∶</span></li>
		<div class=block2>
			Linux 的核心目前是由其发明者 Linus Torvalds 所属团队在负责维护的,
			而其网站在底下的站址上,在该网站上可以找到最新的
			kernel 资讯!不过,美中不足的是目前的核心越来越大了 ( linux-2.6.14.2.tar.bz2
			这一版,这一个档案大约 37MB 了! ),所以如果你的 ISP 连外很慢的话,
			那么使用台湾的映射站台来下载不失为一个好方法∶
			<ul>
			<li><a href="http://www.kernel.org/pub/linux/kernel/" 
				target="_blank">http://www.kernel.org/</a>
			<li><a href="ftp://linux.cis.nctu.edu.tw/kernel/" 
				target="_blank">交大资科∶ftp://linux.cis.nctu.edu.tw/kernel/</a>
			<li><a href="http://ftp.isu.edu.tw/pub/Linux/kernel/"
				target="_blank">义守大学∶http://ftp.isu.edu.tw/pub/Linux/kernel/</a>
			</ul>
		</div>
	</div>
</div>


<hr><a NAME="ksource"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class=text_h1>核心原始码的取得与升级</span><br>
<div class=block1>
	既然核心是个档案,要制作这个档案给系统使用则需要编译,既然要有编译,当然就得要有原始码啊!
	那么原始码怎么来?除了刚刚前一个小节提到的,需要注意核心的版本之外,还有哪些要注意的事项??<br><br>

	<hr><a name="ksource_dis"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>取得原本的 distributions 
	提供的 kernel source</span><br>
	<div class=block2>
		事实上,各大主要 distributions 在推出他们的产品时,其实已经都附上了核心原始码了!
		以我们的 FC4 为例,你如果有安装工具程式的话,那么应该就可以利用 rpm 找到套件名称为
		kernel-devel 的套件,那就是我们的核心原始码了(这个套件名称在各个不同的版本上头都不一样!
		所以,您应该要使用 rpm -qa | grep kernel 来寻找喔!)。如果还是找不到,那表示你没有安装啊!
		此时,拿出原版光碟,一片一片去 mount 且搜寻一下,肯定可以找到的啦!
		然后安装他就好了!<br><br>

		既然要重新编译,那么干嘛还要使用原本 distributions 释出的原始码啊?真没创意~
		话不是这么说,因为原本的 distribution 释出的原始码当中,含有他们设定好的预设设定值,
		所以,我们可以轻易的就了解到当初他们是如何选择与核心及模组有关的各项设定项目的参数值,
		那么就可以利用这些可以配合我们 Linux 系统的预设参数来加以修改,如此一来,
		我们就可以『修改核心,调整到自己喜欢的样子』棉!而且编译的难度也会比较低一点!<br><br>
	</div>

	<hr><a name="ksource_new"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>取得最新的核心</span><br>
	<div class=block2>
		虽然使用原本的 source code 来重新编译核心比较方便,但是,如此一来,
		新硬体所需要的新驱动程式,也就无法藉由原本的核心原始码来编译啊!
		所以棉,如果是站在要更新驱动程式的立场来看,当然使用最新的核心会比较好啊!<br><br>

		取得最新的核心版本,上一个小节已经讲过了,请自行前往 <a href="http://www.kernel.org"
		target="_blank">http://www.kernel.org</a> 去下载吧!<br><br>
	</div>

	<hr><a name="ksource_patch"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>保留原本设定∶利用 patch 
	升级核心原始码</span><br>
	<div class=block2>
		如果你曾经自行以最新的核心版本来编译过核心,那么你的系统当中应该已经存在前几个版本的核心原始码,
		以及上次你自行编译的参数设定值才对。如果您只是想要更新到最新版本的核心,
		原本的参数设定值并不要进行大幅度的修改,那么该如何是好?<br><br>

		呵呵!每一次核心释出时,除了释出完整的核心压缩档之外,也会释出『该版本与前一版本的差异性 patch 档案』,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -