• {{ item.name }}
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

CentOS 编译安装linux2.6.39内核

  • iansiu
  • 2015-07-19
  • 0

一、下载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

输出:

[root@one 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
[root@one linux-2.6.39]# echo $?
0

同样是成功的

六、安装内核模块

make modules_install

[root@one linux-2.6.39]# echo $?
0

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

查看一下

[root@one 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

[root@one 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.map 和 vmlinuz 已经指向了,新的内核文件。

备份 内核配置文件

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

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

cp .config /root

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

编辑当前目录的 Makefile

找到 EXTRAVERSION

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

没有问题

查看内核

uname -r

已经显示2.6.39了

© 2025 laowang's blog
Theme by Wing