| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1700 人关注过本帖
标题:发一个以前编译内核的经历(教程)
取消只看楼主 加入收藏
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
收藏
已结贴  问题点数:20 回复次数:3 
发一个以前编译内核的经历(教程)
发一个以前编译内核的经历

我的台式机用的是Debian 6,

用 # uname -r 查看原本使用的kernel版本是2.6.32-5-686,

现在我想做的是使用版本2.6.39的kernel来代替2.6.32-5-686。

首先是去下载linux-2.6.39.tar.bz2 到 /home/wzj/Download/ 文件夹中,

然后解压到 /usr/src 中 # tar -xvjz linux-2.6.39.tar.bz2 -C /usr/src

于是在 /usr/src/下面就会出现一个linux-2.6.39文件夹

接下来做的是配置内核(Configure kernel)。

网上说是使用 # make menuconfig 这条命令,只是好像在我的机器上用不了,出现了

make[2]: *** [scripts/lxdialog/checklist.o] Error 1
make[1]: *** [menuconfig] Error 2
make: *** [menuconfig] Error 2

的错误,google一下,发现在我的debian 机器上 ncurses-dev 这个软件包没有被安装,

于是 # aptitude install ncurses-dev 接下来 # make menuconfig就可以正常使用了。

配置完 kernel 之后的文件被保存为.config文件。

然后就是 # make 这一下花去了我将近3个小时时间,要知道其中大部分时间都是花在编译驱动程序上。

不过很好,编译到中途,自己也放松一下,出去游了1个小时泳,做了一个咖喱鸡,就好了。

  接下来是编译模块 # make modules

  接着是安装模块 # make modules_install

  最后是安装内核 # make install

  这时候在我的 /boot文件夹下出现了三个文件 config-2.6.39 System.map-2.6.39 vmlinuz-2.6.39

  关于这几个文件我也只能给出几个链接,要说明它们实在是太长了,

  1.System.map

  http://

  2.vmlinuz

  http://www.

  3.bzImage

  http://en.

  下面这些话很有意思

 (1)What Happens If I Don't Have A Healthy System.map?
Suppose you have multiple kernels on the same machine. You need a separate System.map file for each kernel.

If you run a kernel with no (or an incorrect) System.map, you'll periodically see
annoying warnings like:

  System.map does not match actual kernel

  everytime you use ps. Also, your klogd or ksymoops output will not be reliable in case of a kernel oops.

  (2)vmlinuz is the name of the Linux kernel executable. vmlinuz is a compressed Linux kernel, and it is bootable.

  (3) As the Linux kernel matured, the size of the kernels generated by users grew beyond the limits imposed by some architectures, where the space available to store the compressed kernel code is limited.

  The bzImage (big zImage) format was developed to overcome this limitation by cleverly splitting the kernel over discontiguous memory regions.

  总之想要了解这些文件的关系必需要自己亲眼看到它们在眼前产生才会有去了解它们的想法吧。

  在接下来的过程中,

网上说用 # mkinitrd -o initrd.img-2.6.39 2.6.39 来创建initrd.img-2.6.39文件,

但我发现根本没有,我的命令行中没有 mkinitrd这个命令。

在一遍一遍的纠结中在下面这篇贴子中找到了答案http://forums.

使用 mkinitramfs -o /boot/initrd.img-2.6.39 2.6.39就解决问题了。

下面这个link会提供一些背景知识 http://kernel-handbook.alioth.

  好了最后就是grub了,因为我是 grub 1.98版本,所以没有 menu.lst这个文件,

但是最后发现我要做的其实只有一个命令, # update-grub就自动重新创建了 /boot/grub/grub.cfg这个文件了。

  好了,写到这里就结束了,

最后 # shutdown -r now 重启计算机,选择那个2.6.39,所有东西也就水到渠成了。

  其实自己对于Linux的boot process 还远远不够,慢慢来吧,一步一步


[ 本帖最后由 madfrogme 于 2012-10-14 21:23 编辑 ]
搜索更多相关主题的帖子: Download 
2012-09-10 13:40
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用zklhp在2012-9-10 15:05:04的发言:

我连下载那个代码包都下载不下来 太大了。。

工地上的网络环境有待改善呵

The quieter you become, the more you can hear
2012-09-10 14:15
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用有容就大在2012-9-10 14:59:03的发言:

这样的经历很有意思啊
嗯, 是很有意思的, 但是一直下不了狠心做一个自己的linux, 耗时耗精力, 等什么时候激情迸发了

The quieter you become, the more you can hear
2012-09-10 14:59
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 6楼 有容就大
以下是引用有容就大在2012-9-10 16:20:53的发言:

做一个自己的linux? 那内核应该还是 linus的吧

随意闲聊里我都看到h版和你说了啊!就是linux from scratch .有这个主页 内核当然是现成的了

The quieter you become, the more you can hear
2012-09-10 15:40
快速回复:发一个以前编译内核的经历(教程)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036482 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved