LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1830|回复: 17

编译2.6.13.2内核的感受

[复制链接]
发表于 2005-10-12 22:08:18 | 显示全部楼层 |阅读模式
编译内核是每一个真正使用linux的用户一定要过的一道关。
linux的无穷魅力就在于用户可以根据自己的需要按需定制一个适合自已的内核。
还有新的硬件老的内核不能识别的话,编译一个新版的内核没准就能识别。
两个星期前我还对编译内核一无所知的,经过一个高手师兄的指点,现在总算可以
顺利编译内核了。

编译内核的主要步骤:
1   到www.kernel.org上下载内核源 ... 更新到2.6.13.4
    但由于教育网不能随便访问国外网站,我到ftp.tsinghua.edu.cn
    下载了一个2.6.13.2的内核。反正我的机器是IBM的老PII本子,kernel的新功
    能一般用不上,主要是定制一个比较精简的内核,把用不到的东西去掉,节省资
    源
2   下载linux-2.6.13.2.tar.gz到本地目录,我下到了root目录。我看很多人都
    放在/usr/src下,可能是习惯问题吧。
3   解压缩:tar zxvf linux-2.6.13.2.tar.gz
4   这时root目录下会出现linux-2.6.13.2子目录
5   进入linux-2.6.13.2目录,make menuconfig
    关键的一步,编译内核的成败全在这一步了。只要少选了什么重要的东西,
    新kernel就要panic了。
6   配置完后会在当前目录下面生成一个.config文件。此文件具有隐藏属性
    可以用ls -a查看,刚才编的配置文件都保存在这个文件
7   make       编译过程,最漫长的过程,建议找个地方看看书过两个小时再回来
    我的CPU比较慢,所以我都是在宿舍晚上make menuconfig ,之后我就睡觉,让
    我的本本自己compile,等到第二天早上肯定能编译好。
8   make modules_install   安装配置的模块
9   make install     执行完后会在/boot目录下面生成一个vmlinuz-2.6.13.2
    同时在/arch/i386/boot/下面生成一个bzImage,我看了一下,跟vmlinuz-2.
    6.13.2是一样大小的,所以推测可能就是一样的文件。
10  mkinitrd -o /boot/initrd.img-2.6.13.2  关于这个文件,我看了很多论坛的
    帖子,但还是不太清楚这个东西是干什么用的,听说如果编译时不选择ramdisk就
    不需要。
11  修改/boot/grub/menu.lst  加载新内核
12  reboot


编译内核的感受:我从国庆假期就在实验室一直在研究编译内核,经常到论坛上看相关
的帖子,或者用百度搜资料。我用的版本是hiweed Debian linux 0.7。研二的师兄告
诉我Debian下面用标准方式很难编译成功。但我就是觉得Debian的编译方式不如标准方
式用着顺手。在假期里我编了两次都失败了,Debian的方式我也试过,安装完内核后会
把我的Windows选项清掉。假期过完了,又接着编译,又编译了两次,每次还都是这个
错误
VFS:Connot open root device "hda12" or unknown-block(0,0)

kernel panic--not syncing:VFS:Uable to mount root fs on unknown-block(0,0)

VFS老师讲过是底层的物理设备和上层用户间通信的一个逻辑的过渡层。网友提供的一些
解决方法:

原因一:ext2文件格式支持没有编译进内核,不论你使用ext3或其它文件格式,ext2支持都
必须直接编译进内核,不能以内核模块形式编译。

原因二:如果使用initrd.img启动系统,则cromfs必须编译


cromfs在哪里配置我没有找到,但我把关于ATA/IDE/SATA/SCSI的选项都编译进内核就解决
了,不过到现在也不知道什么原因。


编译内核的苦恼就是每次配置都有很多选项要选,很多选项都不知道是做什么用的,去掉
以后会有什么后果,师兄告诉我很多看似无关的选项去掉后就是启动不起来。还有我用的
hiweed debian版本无法安装QT库和GTK库,上论坛发帖子求教也没有求教出结果,到baidu
上搜了一下也没有相关的资料,以前鄙视red hat丑陋的界面,现在开始羡慕red hat的
方便了,只要在安装时选择上Gnome 开发包就行了。而且关于2.6内核的配置资料很少的。

不过有忧必有喜,自己编译内核毕竟有成就感,很多没有用的模块我都没有编译进内核,启
动时快了很多。真正感觉到了It's my kernel!剩下的事情就是阅读源码,真正明白linux
的原理,从而更深层次的了解操作系统。
 楼主| 发表于 2005-10-12 22:22:42 | 显示全部楼层
选上Frame Buffer,这样在Terminal里面和文本模式下面就可以利用zhcon来显示中文了,把Embed fonts选中,这样启动时界面漂亮很多的,还会显示企鹅。自己编的内核连启动界面都美化了
回复 支持 反对

使用道具 举报

发表于 2005-10-12 22:33:21 | 显示全部楼层
呵呵,使用默认的内核也不错哦~
不一定非要自己编译,个人观点
回复 支持 反对

使用道具 举报

发表于 2005-10-12 22:46:52 | 显示全部楼层
研二的师兄告
诉我Debian下面用标准方式很难编译成功。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
不能这么说吧
只要你所用到的工具都不缺
编译成功与否跟哪个发行版没有关系吧
编译内核有好处
比如我用用susped 2 or win4lin
回复 支持 反对

使用道具 举报

发表于 2005-10-12 22:54:58 | 显示全部楼层
除非是学习写linux驱动,别把这么多是时间去搞kernel了。
回复 支持 反对

使用道具 举报

发表于 2005-10-13 10:20:47 | 显示全部楼层
hiweed debian 0.7本来就是一个半成品,不知道是谁推荐给你用的,一点也不负责任.
放着那么多好的发行版本不用,一定要用半成品,BS一下推荐的人。
我现在用着Debian sid  gentoo LFS,天天升级,
在Debian编译了好多次2.6.13,都没有问题,而且用的是标准方法。
可见是你自己的编译方法不得当,可能是头文件没有用好,也可能是别的原因,你没有说清楚。
加油吧,Debian是我用过最方便的发行版本了。
回复 支持 反对

使用道具 举报

发表于 2005-10-13 10:24:50 | 显示全部楼层
内核每个选项的help一般都写得很好
回复 支持 反对

使用道具 举报

发表于 2005-10-13 10:30:56 | 显示全部楼层
我就是想知道,自己编译的内核最大的好处是什么,我没编译也才几十M的大小,唯一就是我启动的时候有好多东西,有点慢。  我不知道编译内核还能带来什么东西。
回复 支持 反对

使用道具 举报

发表于 2005-10-13 11:13:07 | 显示全部楼层
没什么好处,除非有特殊的需要。
回复 支持 反对

使用道具 举报

发表于 2005-10-13 13:35:31 | 显示全部楼层
哎呀,又是这么简单的介绍

还不如把设置内核那几百个选项都说清楚,因为新手看了还是不会编译,老手看了也没什么用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表