网站下载你需要的内核版本, 比如. linux-2.6.18.2.tar.bz2(你可以从这里下载所有的2.6内核: http://www.kernel.org/pub/linux/kernel/v2.6/). 然后下载到/usr/src目录: cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2
然后解压内核源代码, 创建一个指向内核源代码目录的linux字符链接: tar xjf linux-2.6.18.2.tar.bz2 ln -s linux-2.6.18.2 linux cd /usr/src/linux
3.2 给内核源代码打补丁(可选) 有时你的缺省内核不支持新买的设备, 你需要安装新的驱动. 或者你需要使用虚拟技术或其它高级的技术, 而这些现有的内核都不支持. 这样情况下你需要给给内核源代码打补丁(当然补丁已经发布..)
现在我们假设你已经下载需要的补丁(以下例子我叫它patch.bz2)到/usr/src. 运行下面的命令给内核源代码直接打上补丁(你的用户必须位于/usr/src/linux目录): bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run bzip2 -dc /usr/src/patch.bz2 | patch -p1
第一个命令用于测试, 对内核没有任何影响. 如果没有显示错误, 你可以运行第二个命令给内核打补丁. 如果第一个命令有误, 请务继续的操作!
你也能够通过内核的prepatches方式打补丁. 比如, 如果你需要一个功能, 而这个功能仅存在于2.6.19-rc5中, 正式完整的内核版本仍没有发布, 而patch-2.6.19-rc5.biz2已经发布. 你可以把这个补丁打到2.6.18的内核源代码中, 但请不要达到2.6.18.1或2.6.18.2, 等. 这个规则在接下来的网页中注明: http://kernel.org/patchtypes/pre.html
prepatches等同于linux中的测试发行; 他们位于存档的测试目录中, 我们可以使用patch(1)工具对上一个完整发行版(版本号分三部分)打补丁(例如, 2.6.13-rc4 prepatch只可以给2.6.11内核源代码打补丁, 而不是2.6.11.10.)
所以如果你想编译2.6.19-rc5内核, 你必须在步骤3.1下载2.6.18(http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2)替代2.6.18.2内核源代码!
下面是怎么样给2.6.18打上2.6.19-rc5补丁: cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2 cd /usr/src/linux bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1 --dry-run bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1
3.3. 配置内核 使用当前工作内核的配置文件做为新内核配置文件的基础是一个很好的主意. 因此我们拷贝已存的配置文件到/usr/src/linux: make mrproper cp /boot/config-`uname -r` ./.config
然后运行 make menuconfig
然后我们看到内核的配置菜单. 移动绿色光标到 Load an Alternate Configuration File 行后选择.config文件做为配置文件:


然后浏览内核配置菜单, 选择你需要的功能. 完成配置后, 选择Exit, 回答下面的问题(Do you wish to save your new kernel configuration? 你希望保存新的内核配置吗?), 选择Yes:

3.4 构建和安装新的内核
构建和安装新的内核, 执行下面的3个命令: make all make modules_install make install
保持耐心, 内核编译需要一定时间, 主要看你的内核配置和处理器速度. 最后一个命令将自动创建一个ramdisk, 你将在/boot/grub/menu.lst用到.
现在编辑/boot/grub/menu.lst. 把你的新的内核信息放到列表的顶端, 确认新的内核已经替代老的内核, default值需要设为0.
vi /boot/grub/menu.lst
我的menu.lst是这样的:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu
title Fedora Core (2.6.18.2) root (hd0,0) kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18.2.img
title Fedora Core (2.6.18-1.2798.fc6) root (hd0,0) kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-1.2798.fc6.img
现在重新启动系统: shutdown -r now
如果一切进展顺利, 你的新内核正常工作. 你可以通过运行下面命令来检查你的新内核是否运行: uname -r
这将会显示如: 2.6.18.2
如果系统没有起来, 重启一下, 你会看到:

按任意键进入GRUB菜单:

选择你以前的内核启动系统, 现在你能再次尝试编译新的工作内核. 不要忘记从/boot/grub/menu.1st文件中移去不需要的引导内核信息.
原文链接:http://blog.zhaoke.com/5.html#more-5
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3下一页
上一篇:构建 Fedora Live CD 下一篇:Fedora效能特别低还是Linux本身就很低
|