CentOS 编译安装linux2.6.39内核
本文最后更新于 2350 天前,其中的信息可能已经有所发展或是发生改变。

一、下载kernel源码

先查看一下目前的内核

uname -r

2.6.32-431.el6.i686

下载地址:

https://www.kernel.org/pub/linux/kernel/v2.6/

下载2.X最高版本的一个

linux-2.6.39.tar.xz

进入内核编译目录,有一个默认的

cd /usr/src/kernel

wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.xz

tar xvf linux-2.6.39.tar.xz

二、清除旧目标文件和配置
如果是第一次就不需要了

make mrproper

三、配置内核选项
文本交互模式:make config
文本菜单模式:make menuconfig
图形菜单模式:make xconfig
在这里使用 文本菜单模式

输入

make menuconfig

会在终端出现一个 文本菜单,里面有非常多的选项。

由于是初次 编译 练习 就不面面俱到了 事实上是没那个能力

方向键 选中 Enter键进入 Genral setup —> 选项
Local version – append to kernel release

在内核版本后面加上自定义的版本字符串(小于64字符),可以用”uname -a“命令看到

Automatically append version information to the version string

自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持
上面两个选项任选其一,其目的是可以加上自定义版本字符串

按空格选择,被选中的前面有*

接着看

进入这个选项 Processor type and features —>

选中这个 Symmetric multi-processing support

启用对多处理器的支持,现在基本都是双核以上的CPU了吧?必选!

选中这个 Generic x86 support

通用 X86 支持,找不到我的CPU,只能选择这个了
由于初次编译内核,其它的就不选了,就按默认的来。
四、编译内核

make

遇见一个错误

arch/x86/include/asm/ptrace.h:147:13

上网搜索需要打一个补丁

补丁下载地址

https://patchwork.kernel.org/patch/1301031/

下载之后,放在 linux-2.6.39 目录之下 命名为:

x86-fix-ptrace.o-compile-error.patch

编辑第一行

vim x86-fix-ptrace.o-compile-error.patch

--- linux-2.6.32.59/arch/x86/include/asm/ptrace.h

--- linux-2.6.39/arch/x86/include/asm/ptrace.h

这个是指定需要补丁的位置

保存之后在linux-2.6.39目录下执行

patch -p1 <x86-fix-ptrace.o-compile-error.patch

然后重新编译

make

耐心的等待10几分钟就编译完成了,具体看个人电脑的配置

echo $?

看看有没有成功?
五、编译内核模块

make modules

输出:

[[email protected] linux-2.6.39]# make modules
 CHK include/linux/version.h
 CHK include/generated/utsrelease.h
 CALL scripts/checksyscalls.sh
 Building modules, stage 2.
 MODPOST 1950 modules
[[email protected] linux-2.6.39]# echo $?
0

同样是成功的

六、安装内核模块

make modules_install

[[email protected] linux-2.6.39]# echo $?
0

编译之后的模块文件在 /lib/modules

查看一下

[[email protected] linux-2.6.39]# ls /lib/modules/
2.6.32-431.el6.i686 2.6.39

放着不同的内核模块文件

七、安装新内核

先看一下 /etc/grub.conf 文件

less /etc/grub.conf

输出

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.i686)
 root (hd0,0)
 kernel /vmlinuz-2.6.32-431.el6.i686 ro root=/dev/mapper/vg_one-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_LVM_LV=vg_one/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_one/lv_swap rd_NO_DM rhgb quiet
 initrd /initramfs-2.6.32-431.el6.i686.img

默认只有一个内核,待会儿安装成功之后这里会多出来一个 linux-2.6.39 版本的新内核 我们就可以用它来启动了
执行

make install

这是最后一步了,它会拷贝一些文件,还会修改一些配置,都是自动完成任务的。

出现了一个错误

ERROR: modinfo: could not find module i2c_core

没关系可以暂时先忽略,如果介意的话可以

make menuconfig

Device Drivers  —>    -*- I2C support  —> 把里面所有I2C的功能开启

再重新编译试试,我没做过。

再次查看 /etc/grub.conf

!less

会发现我们的新内核已经已经添加进去了

default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.39)
 root (hd0,0)
 kernel /vmlinuz-2.6.39 ro root=/dev/mapper/vg_one-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_LVM_LV=vg_one/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_one/lv_swap rd_NO_DM rhgb quiet
 initrd /initramfs-2.6.39.img
title CentOS (2.6.32-431.el6.i686)

但是我们发现,default=1,也就说它默认会启动第二个内核,原来的就内核,计算机从0开始计数嘛,编辑它改为 0

vim /etc/gurb.conf

找到

default=1

改为

default=0

[[email protected] linux-2.6.39]# ls /boot/ -l

lrwxrwxrwx. 1 root root 23 7月 19 09:07 System.map -> /boot/System.map-2.6.39
lrwxrwxrwx. 1 root root 20 7月 19 09:07 vmlinuz -> /boot/vmlinuz-2.6.39

System.mapvmlinuz 已经指向了,新的内核文件。

备份 内核配置文件

内核配置文件在 linux-2.6.39 目录下

它记录了我们的内核配置的详细信息,如果我们下次还想接着用这个配置文件,那么可以把它备份。

cp .config /root

定制内核版本号,这一步应该在 make 之前做

编辑当前目录的 Makefile

找到 EXTRAVERSION

后面加上 自定义字符
最后重启启动看没有问题

没有问题

查看内核

uname -r

已经显示2.6.39了

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇