Fedora 14 更新至2.6.38内核

Posted by Harid四月 - 17 - 2011 Leave comments

Linux 2.6.38内核正式发布后,我一直想使用它,因为它内含那200多行的“神奇代码”。昨天晚上,我终于把它编译成功了,这还是我第一次使用自己编译的内核!其实之前我也有试过,还尝试过自己配置.config文件。

编译内核其实很简单,不过在Fedora里面(其实Ubuntu也一样),如果安装了官方显卡驱动的话,启用自己编译的最新的内核可能会导致系统无法进去。

在Fedora 14里,首先卸载官方显卡驱动(确保卸载后能够进系统)并在kernel.org下载最新的linux-2.6.38.tar.bz2的包;

卸载完官方显卡驱动后,开始配置安装。

1、解压linux-2.6.38.tar.bz2至/usr/src/kernel目录并切换至其解压后目录下:

1
2
tar -jxvf ./linux-2.6.38.tar.bz2 /usr/src/kernel
cd /usr/src/kernel/linux-2.6.38

2、拷贝当前内核配置文件做为新内核编译的.config文件:

1
cp /boot/config-`uname-r`./.config

3、使用menuconfig方式编译。首先安装其所需要依赖的libcurses5-dev库,还有,在Fedora系统里,GCC默认是不安装的,所以还需要先安装好GCC

1
2
3
4
yum install ncurses-devel -y
yum install gcc gcc-c++ *aclocal
make mrproper (删除上次编译产生的垃圾,如果是初次编译不需要执行)
make menuconfig

在弹出的对话框里选择倒数第二项,也就是加载刚刚拷贝过来的.config文件做为编译配置:

config

选中后按“Enter”,在弹出的对话框按“OK”,然后选中“Exit”退出,退出时会提示是否保存,选择“Yes”。

4、开始编译。依次执行下面的命令:

1
2
3
make -j4 all (CPU是双核用该命令编译,若是单核CPU使用-j2)
make modules_install (安装模块到/lib/modules/2.6.38)
make install (将vmlinuz-2.6.38、System.map-2.6.38、initramfs-2.6.38.img拷贝到/boot目录下并自动修改grub.conf)

这将是一段漫长的过程,所以我是在昨天晚上上床前让机器编译的内核,执行的是下面的简单脚本(从第4步开始):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
# 须以root执行该脚本
# Contact:http://www.timepoet.com 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
mkdir /tmp/2.6.38
echo "Start make..."
make -j4 all >/tmp/2.6.38/sta_make.txt 2>&1
sta_make=`echo $?`
if [ $sta_make -gt 0 ]; then
	echo "Command--'make -ja all' has occurred an error.Exit compile and shutdown now." >>/tmp/2.6.38/error.txt
	shutdown -h now
fi
make modules_install >sta_modules.txt 2>&1
sta_modules=`echo $?`
if [ $sta_modules -gt 0 ]; then
	echo "Command--'make modules_install' has occurred an error.Exit compile and shutdown now." >>/tmp/2.6.38/error.txt
	shutdown -h now
fi
make install >sta_install.txt 2>&1
sta_install=`echo $?`
if [ $sta_install -gt 0 ]; then
	echo "Command--'make install' has occurred an error.Exit compile and shutdown now." >>/tmp/2.6.38/error.txt
	shutdown -h now
fi
echo "Compile success." >/tmp/2.6.38/success.txt
exit 0

我现在使用的内核:

20110417_001

 

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《Fedora 14 更新至2.6.38内核

  1. 呵呵, 2.6.38 里面的 TTY 自动分组功能 (CONFIG_SCHED_AUTOGROUP) 默认是不开启的,所以即便你拷贝了老版本的内核配置文件过来,然后自己编译,也没能用上你说的那个 “ 200 行代码” 提供的自动分组功能。

    还有,现在的机器编个内核并不太费事,在我得机器上,也就十分钟的时间,步骤可以参考下下面的链接:

    http://blog.163.com/vic_kk/blog/static/4947052420108132423450/

    • @tubo, 啊?这个真不知道,我只会用,系统级的东西还没研究过。喜欢,但没时间。
      嗯,看看你这篇文章去。我编译一次至少一个小时。

  2. 我还没搞过这种,似乎我把linux用成了windows,只是为了帐号更安全,偶尔编辑一下文档。连c语言编程都没搞过

    • @Hs.hk, 其实我也是,只不过我喜欢它的流畅,不会假死。Windows则跑一些专业软件,也少不了。


分享按钮