环境:Fedora 12 内核:linux-2.6.32.2
(为什么选择Fedora 12,因为12是偶数看起来舒服,且是最新版;同理选择了linux-2.6.32.2,虽然有最新版2.6.33,但不是偶数,不爽!)
STEP 1:到ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ ,下载[url=/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.gz]linux- 2.6.32.2.tar.gz[/url] STEP 2: 把[url=/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.gz]linux-2.6.32.2.tar.gz[/url]复制到 /usr/src/kernels/ (当然其他任何目录都可以的)
cp linux-2.6.32.2.tar.gz /usr/src/kernels/
|
STEP 3: 解压
tar -xzf linux-2.6.32.2.tar.gz
|
STEP 4: 进入linux-2.6.32.2
STEP 5: 配置。如果以前编译过,那么用make mrproper删除以前垃圾文件。用make menuconfig启动配置的图形界面。因为配置选项很多,短时间根本搞不懂哪些选项是必须的,哪些是可以不要的,所以,最佳的办法是在一个已经存在的配置文件上面修改。很显然,Fedora 12 就有现成的一个。把 /boot目录里面 config-2.6.31.5-127.fc12.i686.PAE复制到/usr/src/kernels/linux-2.6.32.2里面并命名为.config。当执行make menuconfig时,首先寻找.config,如果找到就读取。否则进入arch目录里面寻找相应体系结构默认的配置文件。
cp /boot/config-2.6.31.5-127.fc12.i686.PAE /usr/src/kernels/linux-2.6.32.2/.config
make menuconfig
|
STEP 6: 编译。2.6.32已经是非常高的版本了,所以执行make all,就相当于:make dep(建立相依的属性关系),make clean(将旧的资料去除掉),make bzImage(开始编译核心),make modules(开始编译模块)
STEP 7:安装模块。安装模块到/lib/modules/,以后程序运行时从这个目录加载模块。
STEP 8: 安装内核。把make all 生成的vmlinuz和System.map复制到/boot目录下同时修改grub /boot/grub/menu.lst. 修改menu.lst是自动完成的哦!!不用手动修改。
STEP 9: 重启Fedora。选择linux-2.6.32.2启动。当白色的进度条显示满了后,多等会。
附一:我遇到的问题
1. 在make install时报错,提示我没有 mkinitrd这个命令。我到/sbin/里面找确实没有啊。然后我到网上下了一个mkinitrd的软件包安装,安装时又出错,提示与系统的什么包相冲突。我在网上问了哈高手,然后通过Fedora 的包管理机制,添加了mkinitrd.总算是成功了。弄了很久。
2. 编译了内核启动时,白色的显示条显示满了后,要等一段时间。刚开始,我试了很多次,改了很多东西,每次白色条显示满了,我等了几秒,没反应,就错误地以为我编译的内核不成功。当我弄烦了后,干脆不理它,我搞点其他的,等回到虚拟机时,居然启动了。一阵狂喜啊!
附二: 感谢 感谢网上的高手给我提示,以后只要我知道我也会毫不吝惜地帮助别人; 感谢chinaunix里面牛人写的博客,(在参考博客里面),写得非常之好,仰慕,学习。
参考博客: http://linux.chinaunix.net/ebook/doc/2009/12/07/1147818.shtml Fedora下内核编译 [第十五期]
http://linux.chinaunix.net/techdoc/develop/2008/12/22/1054372.shtml 编译内核步骤详解
http://linux.chinaunix.net/techdoc/system/2008/11/08/1044037.shtml 编译 Linux2.6 内核总结
|
posted on 2010-03-04 11:30
deercoder 阅读(2297)
评论(1) 编辑 收藏 引用 所属分类:
Unix/Linux