linux 内核编译安装(CentOS5)

本文档详细介绍了如何在CentOS 5系统上编译安装Linux内核2.6.35-rc1。首先介绍系统环境与安装前的准备,包括虚拟机安装CentOS 5和下载内核源代码。接着,逐步阐述内核编译安装过程,包括清理旧配置、配置新内核、解决配置问题以及编译和制作内核映像。文章特别提醒在配置过程中注意处理`CONFIG_SYSFS_DEPRECATED_V2`选项,以避免启动错误。
摘要由CSDN通过智能技术生成

一、系统环境。

1、CentOS 5 在虚拟机上安装

2、下载新内核源代码,版本:linux-2.6.35-rc1

二、安装过程

 

 

1、解压源代码,随便到那个目录,进入解压后的源代码目录,我的为~/linux_kernal/linux-2.6.35-rc1

 

 

2、make mrproper :这个目的是清除原先此目录下残留的.config和.o

 

3、make clean

 

注:如果是第一次编译,可以省略2、3步骤。

4、配置。

第一种方式:make defconfig:默认配置,听说是linus的配置哦,呵呵。

                  make allnoconfig : 除必须的选项外, 其它选项一律不选. (常用于嵌入式系统)

第二种方式:make menuconfig:图形界面方式配置,系统将提示你需要安装ncurses-devel包。

 

yum install ncurses-devel

在第二种方式下,可以使用当前的系统的核心配置(/usr/src/kernels/2.6.18-194.el5-i686/.config)

通过menuconfig菜单里的Load an Alternate Configuration File加载

我的做法是:

(1)cp  /usr/src/kernels/2.6.18-194.el5-i686/.config .

(2)make menuconfig-->Load an Alternate Configuration File-->选择.config-->Save an Alternate Configuration File

(3)vim .config

(4)编译时修改.config文件中的“CONFIG_SYSFS_DEPRECATED_V2”,默认该选项为not set,被注释掉的,将其改为y。即修改为“CONFIG_SYSFS_DEPRECATED_V2=y”。

可以避免安装完内核后,出现如下错误,导致无法启动:

mount: could not find filesystem ‘/dev/root’

 

 

5、make dep:依赖关系编译

6、make bzImage  :编译核心,bz,表示压缩。也可以zImage,但要确保核心较小。

# make bzImage

  CHK     include/linux/version.h

  CHK     include/generated/utsrelease.h

  CALL    scripts/checksyscalls.sh

  CHK     include/generated/compile.h

Kernel: arch/x86/boot/bzImage is ready  (#2)

提示已经放到了当前目录的arch/x86/boot/bzImage里
7、make modules :编译模块,模块的多少取决于你的配置
8、make modules_install:安装module,这将把上一步构建出来的内核放入一个模块子目录中:/lib/modules/your_kernel_version
9、make install:自动安装。
(1)默认会把rch/x86/boot/bzImage复制到/boot/vmlinuz版本号,例如:vmlinuz-2.6.35-rc1,如果已经安装过同一个版本号的时候,将把前一个重命名为vmlinuz-2.6.35-rc1.old
(2)自动在/boot/grub/grub.conf里加上了启动项,例如:
cat /boot/grub/grub.conf

 

# 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/sda2
#          initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.35-rc1)
root (hd0,0)
kernel /vmlinuz-2.6.35-rc1 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.35-rc1.img
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-194.el5.img
(3)建议要把hidde menu注释掉
如此,就完成了内核的编译,我已经按这种方式成功安装。
补充:
.config配置文件(转载自《 编译 Linux2.6 内核总结》)

在内核树的根目录中,有一个.config文件,它记录了内核的配置选项,可直接对它进行修改,再运行(.config不存在,对内核进行配置后会生成它,这种情况下当然不能开始就运行oldconfig). 实际上, 如果你手头有合适的 .config 文件, 可以运行 make oldconfig  直接按 .config 的内容来配置 

$ sudo make oldconfig

对内核的配置都是围绕 .config 来展开的.  即便开始 .config 文件不存在, 进行配置后会创造它.

其实可以直接在menuconfig中加载已有的配置文件, 不要将它改名为.config. 否则完成配置, 退出menuconfig时会提示你运行 make mrproper. 上面提到的方法只是比较适合于oldconfig!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值