LinuxSir.cn,穿越时空的Linuxsir!

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

在testing中编译内核

[复制链接]
发表于 2008-10-9 23:48:05 | 显示全部楼层 |阅读模式
看到置顶帖篇文章为在etch中编译内核,所以也添加个在testing中编译内核。

注意:这个是目前我所看过的最简单的内核编译方法,而且经过多次实验,100%有效!!!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
今天为我的Debian编译了最新内核linux-2.6.26.6,这个方法屡试不爽哦!!

文章来源:http://fanqiang.chinaunix.net/system/linux/2005-05-02/3211.shtml
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

首先要介绍一下,通常其它操作系统的内核编译是比较繁琐的。然而,由于Debian强大的dpkg软件包管理系统,使得内核的升级、编译也变得容易很多。

首先用 apg-get 自动下载并安装一些必要的软件包,包括编译内核需要的kernel-package和ncurses-dev等。如果在内核编译、制作过程中,遇到错误提示说某个软件包不存在的话,请同样使用 apt-get install 命令进行下载安装。

#apt-get install kernel-package ncurses-dev fakeroot wget bzip2 make patch

#cd /usr/src
#wget http://www.kernel.org/pub/linux/ ... ux-2.6.26.6.tar.bz2
#tar -xjf linux-2.6.26.6.tar.bz2

请到 http://www.kernel.org 查看最新的内核版本。

切换到新内核的目录

#cd linux-2.6.26.6

为了节省时间,请执行以下命令从现有内核中获得配置

#make oldconfig

执行完此条命令后,会根据新老内核的差异情况,询问你一些问题,如果不确定的话请都是用默认(直接按回车)。

以上步骤完成后,执行内核配置程序

#make menuconfig

如果你的Debian有X的话,也可以使用 make xconfig 来进行内核的配置。请自行根据实际情况进行配置,不确定的话请保持默认。

内核的配置可以参考:Linux 2.6.19.x 内核编译配置选项简介

至此,内核的配置就算完成了。请按 ESC 多次后退出内核配置页面(在系统询问是否要保存新内核的配置时,当然要选择yes)。

执行以下命令进行新内核的生成!

#make-kpkg clean
#fakeroot make-kpkg --initrd --append-to-version=-wrsg --revision=1.0 kernel_image

fakeroot 的作用是在内核的生成过程中暂时性获取root权限。如果你直接是用root帐号操作的话,可以省略fakeroot。–append-to- version定义的是内核的软件包名字,类似linux-image-2.6.26.6-wrsg 这样。而 –revision定义的是软件包的版本。

现在系统会开始进行新内核的生成,屏幕上会有许多文字闪过。请注意,如果生成过程中出现错误,请执行 make clean 后,用 make menuconfig 重新配置内核。一般都是仔细看错误信息,找到出错的模块,然后将其去除。

内核顺利生成完毕后,会在/usr/src目录下产生一个 deb 包。例如 linux-image-2.6.26.6-wrsg_1.0_i386.deb

执行以下命令安装新内核!^_^

dpkg -i linux-image-2.6.26.6-wrsg_1.0_i386.deb

接着Debian会安装新内核并更新Grub的配置文件。重新启动(shutdown -r now)后将会boot到新内核。

用 uname -a 看一下,是不是看到新内核的名字啦?
发表于 2008-10-10 02:12:47 | 显示全部楼层
给楼主几点建议:

1. 不要经常性使用超级用户身分,编译过程是可以用普通用户进行的,只有安装的时候才需要 root,但由於你选择把源码放在 /usr/src,那就非 root 不行了,因为普通用户权限不够

#tar -xjf linux-2.6.26.6.tar.bz2
2. 新版的 tar 可以直接用 tar -xf linux-2.6.26.6.tar.bz2 来解压,无需再去用 j 或 z 来区分 bz2 或 gz

3. 即使用旧内核的配置,最好还是仔细检查清楚其内容,以前我就试过因为新旧版内核的 sata 编排位置变更而吃过亏!

执行以下命令进行新内核的生成!

#make-kpkg clean
#fakeroot make-kpkg --initrd --append-to-version=-wrsg --revision=1.0 kernel_image

fakeroot 的作用是在内核的生成过程中暂时性获取root权限。如果你直接是用root帐号操作的话,可以省略fakeroot。–append-to- version定义的是内核的软件包名字,类似linux-image-2.6.26.6-wrsg 这样。而 –revision定义的是软件包的版本。
4. initrd 并非必要的,只要配置得宜,这玩意可以省略的。Debian 官方内核之所以要有其原因,这方面我以前解释过了。

接着Debian会安装新内核并更新Grub的配置文件。重新启动(shutdown -r now)后将会boot到新内核。
5. 并不一定要重启才能使用新编译出来的内核,见 http://www.linuxsir.cn/bbs/thread335331.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-10 07:21:26 | 显示全部楼层
谢谢提醒,非常有用的建议。
在debian-reference-common有这么一句
“对于单机内核编译,initrd 不是必须的。我用它是希望我新编译的内核与相应的内核镜像一模一样。”
我对initrd还不了解,如果不需要就把--initrd选项去掉即可?
回复 支持 反对

使用道具 举报

发表于 2008-10-10 07:35:11 | 显示全部楼层
Post by wrsg;1892304
谢谢提醒,非常有用的建议。
在debian-reference-common有这么一句
“对于单机内核编译,initrd 不是必须的。我用它是希望我新编译的内核与相应的内核镜像一模一样。”
我对initrd还不了解,如果不需要就把--initrd选项去掉即可?
不要以为随便去掉就可以,必需配置合适才行!

以前我解适过了,这是原来置顶的,当时提及的是 Sarge,但内容更详细

http://www.linuxsir.cn/bbs/thread284609.html

建议你从头到尾看一遍。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-10 09:37:08 | 显示全部楼层
Post by d00m3d;1892306
不要以为随便去掉就可以,必需配置合适才行!

以前我解适过了,这是原来置顶的,当时提及的是 Sarge,但内容更详细

http://www.linuxsir.cn/bbs/thread284609.html

建议你从头到尾看一遍。
编译内核的时候把所需的文件系统编进内核,然后去掉--initrd选项?

我在/usr/src/下编译过一次之后,再使用#make oldconfig是不是加载第一次编译时在该目录下生成的.config?
回复 支持 反对

使用道具 举报

发表于 2008-10-10 12:59:29 | 显示全部楼层
编译内核的时候把所需的文件系统编进内核,然后去掉--initrd选项?
这个问题实际上关乎系统起动时如何挂载根目录有关,所以要把所需的文件系统编进内核就是为了满足该要求,否则就要借助 initrd 由加载方式去取得相关的支持
我在/usr/src/下编译过一次之后,再使用#make oldconfig是不是加载第一次编译时在该目录下生成的.config?
不是
回复 支持 反对

使用道具 举报

发表于 2008-10-12 15:24:39 | 显示全部楼层
Post by d00m3d;1892282
给楼主几点建议:

1. 不要经常性使用超级用户身分,编译过程是可以用普通用户进行的,只有安装的时候才需要 root,但由於你选择把源码放在 /usr/src,那就非 root 不行了,因为普通用户权限不够



#CHMOD 777 /usr/src 源码放在/usr/src是好习惯
回复 支持 反对

使用道具 举报

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

本版积分规则

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