Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1462716
  • 博文数量: 122
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2967
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

斑竹网络专注为中小企业客户提供以管理服务为核心的IT全方位服务 https://www.sysadm.cn

文章分类

全部博文(122)

文章存档

2018年(2)

2017年(1)

2015年(2)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: LINUX

2013-12-05 14:23:04

Linux 内核编译

(老版本:2.6.9-5

                               (新版本:2.6.34)

   (整理日期:2010-06-28

一、 准备工作

1、 检查下列软件包在系统中是否有安装,如果没有则需要提前将其安装到系统中:

rpm -q module-init-tools

module-init-tools-3.1-0.pre5.3

       rpm -q lvm2

           lvm2-2.00.31-1.0.RHEL4

   pm -q  device-mapper

           device-mapper-1.00.19-2

rpm -q mkinitrd

           mkinitrd-4.1.18-2

libgcc-3.4.3-9.EL4

gcc-3.4.3-9.EL4

gcc-c++-3.4.3-9.EL4

ncurses-devel-5.4-13.i386

ncurses-5.4-13.i386

2、 下载最新的内核软件包:

a) wget 

3、 检查系统的硬件信息:

cat /proc/cpuinfo

   model name      : Intel(R) Pentium(R) 4 CPU 2.66GHz

二、 配置内核选项

# tar -jxvf linux-2.6.34.tar.bz2

# cd linux-2.6.34

#make mrproper  这个是为了清除因为之前编译的影响,并确保源代码是正确的

# make menuconfig

#make dep

#make clean

#make bzImage

#make modules    

make modules_install

make install 

三、 修改initrd文件

当系统启动不正常或者重新编译后无法重启系统,可能需要修改initrd文件,修改这个文件的方法是:

1、 将文件拷到一个临时目录下:

cp /boot/initrd-2.6.9-5.EL.img /tmp/9/

2、 切换到上述临时目录下:

# cd  /tmp/9/

3、 将现有的文件解开

gzip -cd initrd-2.6.9-5.EL.img |cpio –imd

4、 然后在当前目录下就有很多的子目录,这也就是initrd-2.6.9-5.EL.img文件里的内

容,我们可以对这个目录下的内容进行修改,并将原来的initrd-2.6.9-5.EL.img这个文件给删除掉;

5、 使用下列命令将修改好的文件重新封装好:

find . |cpio -co |gzip -9 >../initrd-2.6.9-5.EL_new.img

6、 然后 将生成的../initrd-2.6.9-5.EL_new.img文件拷贝到/boot 并重新启动系统就可以

使用修改后的initrd文件了

20130816Dell R610上 centos5.6 64位环境下编译3.10.7版本

 wget 

  tar -zxvf  linux-3.10.7.tar.gz

  yum install kernel-headers

  yum install glibc-headers

  yum install libstdc++-devel

  cd linux-3.10.7

   make menuconfig

   make bzImage

编译时出现如下错误:

 In file included from /usr/include/sys/time.h:31,
                 from /usr/include/linux/input.h:12,
                 from samples/hidraw/hid-example.c:14:
/usr/include/sys/select.h:78: error: conflicting types for fd_set
/usr/include/linux/types.h:12: error: previous declaration of fd_set’ was here
In file included from /usr/include/linux/input.h:14,
                 from samples/hidraw/hid-example.c:14:

解决办法

编辑.config文件,找到CONFIG_SAMPLES行,将其修改为n

重新编译出现如下错误:

.config文件里修改以下行

CONFIG_GFS2_FS=m 修改成

Make menuconfig

选中以下对应的选项

General setup >[*] enable deprecated sysfs features to support old userspace tools

  找到CONFIG_SYSFS_DEPRECATED_V2 选项,并选中。修改这项是因为旧版的 mkinitrd及其nash在内核没有CONFIG_SYSFS_DEPRECATED_V2参数时默认使用旧 版sysfs路径格式,从而在新内核下无法正确访问/sys内的硬盘信息节点。

阅读(641) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~