﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-yo-yo-文章分类-Linux</title><link>http://www.cppblog.com/qy5328464/category/9671.html</link><description>No enjoyable day until I make it!</description><language>zh-cn</language><lastBuildDate>Tue, 17 Mar 2009 15:53:10 GMT</lastBuildDate><pubDate>Tue, 17 Mar 2009 15:53:10 GMT</pubDate><ttl>60</ttl><item><title>编译Linux内核</title><link>http://www.cppblog.com/qy5328464/articles/74889.html</link><dc:creator>yo-yo</dc:creator><author>yo-yo</author><pubDate>Wed, 25 Feb 2009 07:25:00 GMT</pubDate><guid>http://www.cppblog.com/qy5328464/articles/74889.html</guid><wfw:comment>http://www.cppblog.com/qy5328464/comments/74889.html</wfw:comment><comments>http://www.cppblog.com/qy5328464/articles/74889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qy5328464/comments/commentRss/74889.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qy5328464/services/trackbacks/74889.html</trackback:ping><description><![CDATA[
<span style="FONT-SIZE: 14px; LINE-HEIGHT: 23px; FONT-FAMILY: Verdana">
<p style="LINE-HEIGHT: 170%"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>由于操作系统课程设计要重新编译内核，因此花了几天时间编译了新的内核2.6.18.<br></p>
<p style="LINE-HEIGHT: 170%"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>一、下载源代码和编译软件的准备<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#8226;下载内核源代码：</p>
<p style="LINE-HEIGHT: 170%"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在<a style="CURSOR: pointer; COLOR: rgb(30,84,148); TEXT-DECORATION: underline" href="http://www.kernel.org/pub/linux/" target="_blank">http://www.kernel.org/pub/linux/</a>kernel/v2.6/<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下载linux-2.6.18.tar.bz2&#160;<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#8226;安装有关编译程序。</p>
<p style="LINE-HEIGHT: 170%">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装make ,gcc, make-kpkg,运行xconfig等等和编译内核相关的工具。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在Ubuntu中, 只需一条简单命令就可安装所有的源代码编译工具:&#160;<br>&#160;&#160;<span style="COLOR: #0000ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$&#160;apt-get install build-essential&#160;kernel-package&#160;</span><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在Ubuntu中先安装qt库:&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="COLOR: #0000ff">$ apt-get install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt<br></span><br>二、解压源代码<br>&#160;&#160;&#160;&#160;&#160;&#160;进入内核包下载的目录，<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span><span style="COLOR: #0000ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$ tar jfx linux-2.6.18.tar.bz2 -C 、usr/src/</span><br>&#160;&#160;&#160;&#160;&#160;&#160;解压后，源代码在/usr/src/linux-2.6.18/, 进入源代码的目录，<br><span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="COLOR: rgb(0,0,255)">cd /usr/src/linux-2.6.18/<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br><span style="COLOR: rgb(0,0,0)"><br>三、开始编译前的准备工作。<br></span><span class="postbody" style="COLOR: rgb(153,1,153)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#8226;<span style="FONT-SIZE: 16px; LINE-HEIGHT: normal; FONT-FAMILY: Simsun; WHITE-SPACE: normal">关于.config配置文件</span></span></span></span><span class="postbody" style="COLOR: rgb(0,1,255); FONT-STYLE: italic"><br></span><span style="COLOR: rgb(255,1,2)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,2)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;.config文件记录了内核的配置选项，可直接对它进行修改，再运行。</span></span></span>&#160;<span style="COLOR: rgb(0,0,0)"><br style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 首先，清理以前编译时留下的临时文件。如果是刚刚解开的包，不需要执行这步。如果是第二次或者是第n次编译，那么一定要执行。</span><br style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;相关命令如下：<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="COLOR: rgb(0,0,255)">$ sudo make mrproper<br><span style="COLOR: rgb(255,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;删除包括.config在内的生成的目标文件.&#160;</span><br><br style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;将附件的配置文件保存在~/src/linux-2.6.18/目录下，改名为.config，以此为基础作修改。<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;命令:<br><span style="COLOR: rgb(0,0,255)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$ sudo cp [原配置文件名] .config</span><br></span><br style="COLOR: rgb(0,0,0)"><span style="FONT-SIZE: 150%; COLOR: rgb(0,0,0); LINE-HEIGHT: normal"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span><span style="FONT-SIZE: 16px; FONT-FAMILY: Simsun">&#160;&#160;&#160;四、开始配置内核选项。</span></span><br style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;相关命令：</span><br style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;make xconfig<br><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"><span style="COLOR: rgb(0,0,255)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span></span></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;选项意义：圆中点是编译成可以随时加人的模块(以下简称M)，方块中一勾是编译进入内核(以下简称Y)，空就是不要(简称N)。<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;&#160;&#160;<span style="FONT-SIZE: 16px; LINE-HEIGHT: normal; FONT-FAMILY: Simsun"><span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;<br></span><br>&#160;&#160;&#160;五、开始编译内核。</span><span style="COLOR: rgb(0,0,255)"><br style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ubuntu的工具是make-kpkg,和其他的发行版相比，步骤相对简单。</span><br style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;相关命令:<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></span>sudo make-kpkg clean&#160;<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo make-kpkg -initrd --initrd --append-to-version=-2.2.18 kernel_image<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;<br></span><span style="FONT-SIZE: 16px; COLOR: rgb(0,0,0); LINE-HEIGHT: normal; FONT-FAMILY: Simsun">&#160;&#160;&#160;&#160;&#160;&#160;上述命令中的-2.2.18大家用自己喜欢的字符代替.<span class="Apple-tab-span" style="WHITE-SPACE: pre">&#160;</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;<br>&#160;&#160;&#160;</span></span></span></span></span></span><span style="FONT-SIZE: 14px; LINE-HEIGHT: 23px; FONT-FAMILY: Verdana"><span style="COLOR: rgb(0,0,255)"><span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,255)"><span style="COLOR: rgb(0,0,0)"><span style="COLOR: rgb(0,0,255)"><span style="FONT-SIZE: 16px; COLOR: rgb(0,0,0); LINE-HEIGHT: normal; FONT-FAMILY: Simsun"><span style="FONT-SIZE: 14px; COLOR: rgb(0,0,255); LINE-HEIGHT: 23px; FONT-FAMILY: Verdana"><span style="FONT-SIZE: 150%; COLOR: rgb(0,0,0); LINE-HEIGHT: normal"><span style="FONT-SIZE: 16px; FONT-FAMILY: Simsun">六、安装内核</span><br><span style="COLOR: rgb(255,0,0)"><font style="LINE-HEIGHT: 170%" size="2"><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;建议：先备份</font></span></span><span style="COLOR: rgb(255,0,0)">/boot/grub/menu.lst</span><span style="FONT-SIZE: 150%; COLOR: rgb(0,0,0); LINE-HEIGHT: normal"><span style="COLOR: rgb(0,0,255)"><font style="LINE-HEIGHT: 170%" size="2"><span style="COLOR: rgb(255,0,0)"><br></span></font></span></span><span style="COLOR: rgb(0,0,0)"><span class="Apple-tab-span" style="WHITE-SPACE: pre"><span style="FONT-SIZE: 13px; LINE-HEIGHT: 22px"></span></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;编译完成就是安装工作。编译好的内核在上一层目录。<br><span class="Apple-tab-span" style="WHITE-SPACE: pre"></span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我的是linux-image-2.6.18-10.00.Custom_i386.deb</span><br style="COLOR: rgb(0,0,0)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="COLOR: #000000">相关命令：</span>&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<span style="COLOR: #0000ff">&#160;&#160;&#160; cd..&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo dpkg -i linux-image-&#160;(然后用tab键自动补足文件全名)</span> &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;</span></span></span></span></span></span></span></span></p>
<div>&#160;</div>
</span><img src ="http://www.cppblog.com/qy5328464/aggbug/74889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qy5328464/" target="_blank">yo-yo</a> 2009-02-25 15:25 <a href="http://www.cppblog.com/qy5328464/articles/74889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>