免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1242 | 回复: 8
打印 上一主题 下一主题

Kernel 2.6x 编译过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-20 15:40 |只看该作者 |倒序浏览
前段时间在学习自己编译kernel,在网上找到一篇文章很不错,转贴过来也许对需要的人有点用处。

提要:在Kernel 2.6x和以前的版本的编译方法有点区别,所以就简单的把编译过程写出来,主要是帮助初学Linux的兄弟。

Kernle 2.6x 编译比较简单,最适合我等菜鸟!!

本文是以Redhat为例,内版本是2.6.0-test8

一、下载

http://www.kernel.org

二、解压

1.把下载好的内核放到/usr/src目录中,比如我下载的是linux-2.6.0-test8.tar.bz2

#mv linux-2.6.0-test8.tar.bz2 /usr/src
#tar jxvf linux-2.6.0-test8.tar.bz2



2.进入相应的目录编译和安装,进入内核选项设置

#cd linux-2.6.0-test8
#make mrproper
#make menuconfig



进入内核选项卡,M是以模快方式编译,*是直接编入内核

至于哪些要编入内核,哪些要编译成模块。在文章管理器和基础讨论区的帖子中都有,自己试着找一找。另外内核中的doc也有相应的文档

3.编译和安装内核

#make
#sudo make install



这个过程是编译和安装内核的过程,系统自动为我们做了哪些事?

1]系统会在/usr/src/linux/arch/i386/boot/目录中产生bzImage,并把bzImage复制为vmlinuz-2.6.0-test8到/boot目录中,并创建议vmlinuz-2.6.0-test8的链接vmlinuz;

2]在/boot目录中,系统会产生System.map-2.6.0-test8,以及创建它的链接System.map;

3]在/boot目录中,自动生为initrd-2.6.0-test8.img;

4]修改/etc/grub.conf 文件,加入了新内核的启动项。

[注]经大熊宝宝兄的提示,怕初学的弟兄不明白这个过程,所以就把这个过程详细的写出来,所以我也做了补充。以上的四点都是系统自动安装内核时所做的任务。查看一下/boot目录中的文件以及/etc/grub.conf就明白了。这一点和以往2.4.x不一样的地方。做个比喻就是2.4.x还是半自动的,上面的东西要执行好多个命令,而在2.6.x中,一步就到位,是全自动的!

4.编译和安装模快

#make modules
#make modules_install



5.设置/etc/grub.conf,我不用lilo,更确切的来说,我不太懂,所以只能说Grub的设置办法。

为什么要设置这个呢?其实在编译和安装内核的过程中,系统已经自动把新内核的启动项直接添加到了/etc/grub.conf中。当我们不对/etc/grub.conf进行改动,直接启用新内核会发现VFS错误之类的提示。

下面的是我安装后新内核后,没有改动过的/etc/grub.conf

title Fedora Core (2.6.0-test
root (hd0,7)
kernel /boot/vmlinuz-2.6.0-test8 ro root=LABEL=/
initrd /boot/initrd-2.6.0-test8.img
title Fedora Core (2.4.22-1.2061.nptl)
lock
root (hd0,7)
kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/
initrd /boot/initrd-2.4.22-1.2061.nptl.img



改动后的就是

title Fedora Core (2.6.0-test
root (hd0,7)
kernel /boot/vmlinuz-2.6.0-test8 ro root=/dev/hda8
initrd /boot/initrd-2.6.0-test8.img
title Fedora Core (2.4.22-1.2061.nptl)
lock
root (hd0,7)
kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/
initrd /boot/initrd-2.4.22-1.2061.nptl.img



对比改动过的/etc/grub.conf,我们不难发现,我们在新内核2.x中,指定root的根分区所在的位置时,没有用标签LABEL=/,而是用的是真正的分区位置。

请对Linux不太熟的弟兄,不要照搬我的分区设置。如果想知道这方面的,在基础讨论区中,有关于GRUB和分区访问的文章,在文章管理器中也有。

最后还有一点就是如果显示卡原来安装过驱动,就要在新内核中重新安装。比如我用的是NVIDIA的显卡,我下载的是LinuxSir.Org的下载区中,哈兄提供的打过补丁的NVIDIA的驱动。装上就OK了。

论坛徽章:
0
2 [报告]
发表于 2004-05-20 15:43 |只看该作者

Kernel 2.6x 编译过程

编译成功与否,关键就是
进入内核选项卡,M是以模快方式编译,*是直接编入内核

至于哪些要编入内核,哪些要编译成模块。在文章管理器和基础讨论区的帖子中都有,自己试着找一找。另外内核中的doc也有相应的文档

其他部分,各种版本的内核处理方法都一样

论坛徽章:
0
3 [报告]
发表于 2004-05-20 15:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2004-05-20 16:27 |只看该作者

Kernel 2.6x 编译过程

原帖由 "zjnet1" 发表:
想补充几点:
1.一定要将ext2还编译进内核,不然可能进不了系统;
2.在我映象中,只要make install 全部帮你搞定了;
3.新内核要安装 新的module-init,不然启动时候会报错,这个工具www.kernel.org上有;

希?.........


是把ext3也要编译进内核把2.6.x好像是ext3文件系统

论坛徽章:
0
5 [报告]
发表于 2004-05-20 17:01 |只看该作者

Kernel 2.6x 编译过程

我想大家需要的可能是内核里边的选项吧

论坛徽章:
0
6 [报告]
发表于 2004-05-20 17:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2004-05-20 17:22 |只看该作者

Kernel 2.6x 编译过程

ext3不需编译进内核。但我有个一直折腾了好久的问题,我用的是SuSe64位操作系统,当升级到2.6.x时有一个cpu识别不出(我的机器时2p AMD Opteron),top命令会显示出:
fscanf failed on /proc/stat for cpu 1
后来我发现在启动时有disable smp的信息。我在编译时选上了支持smp选项。

论坛徽章:
0
8 [报告]
发表于 2004-05-20 20:26 |只看该作者

Kernel 2.6x 编译过程

我在编译2.4.24内核时出现  kernel panic :VFS:unable mount to
root fs on 00:00
我的现有内核是7.2
内核版本2.4.7-10

论坛徽章:
0
9 [报告]
发表于 2004-05-20 20:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP