Chinaunix首页 | 论坛 | 博客
  • 博客访问: 151279
  • 博文数量: 34
  • 博客积分: 1270
  • 博客等级: 中尉
  • 技术积分: 269
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 10:49
文章分类
文章存档

2011年(12)

2010年(22)

我的朋友

分类: LINUX

2011-07-05 15:30:09

linux内核编译步骤:
1、下载内核源代码,以2.6.18.1内核版本为例
    从 下载linux-2.6.18.1.tar.gz

2、将linux-2.6.18.1.tar.gz放在/usr/src/目录下,并解压释放。

3、进入linux-2.6.18.1目录下,分别执行如下命令:
[root@localhost linux-2.6.18.1]# pwd
/usr/src/linux-2.6.18.1
a、[root@localhost linux-2.6.18.1]#make mrproper #删除上次编译遗留的垃圾

b、[root@localhost linux-2.6.18.1]#make menuconfig #习惯用这个配置内核,还有其他几个
如下:

make config (基于文本的最为传统的配置界面)

make menuconfig (基于文本选单的配置界面)

make xconfig (基于图形窗口模式的配置界面)

make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
c、[root@localhost linux-2.6.18.1]#make

d、[root@localhost linux-2.6.18.1]# make bzImage

e、[root@localhost linux-2.6.18.1]# make modules

f、[root@localhost linux-2.6.18.1]#make modules_install

g、[root@localhost linux-2.6.18.1]#make install

make install:

 (1)把压缩内核映象拷贝到/boot目录下并创建相应的System.map符号链接

 (2)修改bootloader的配置文件;

 (3)调用mkinitrd程序创建内核的initrd映象对于GRUB而言将在/etc/grub.conf配置文件增加如下类似的配置行:

 title CentOS (2.6.***)
        root (hd0,0)
        kernel /vmlinuz-2.6.*** ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.***.img

                          

模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行#make  modules_install之前最好对/lib/modules进行备份。模块通常是带有扩展名.o的文件,使用命令lsmod可以对当前内核的模块进行列表。



4、检查启动文件,并修改启动项
[root@localhost etc]# cat 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/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
default=0                     ----------------将启动项改为新生成的项,这里为2.6.18.1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18.1)
        root (hd0,0)
        kernel /vmlinuz-2.6.18.1 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18.1.img
title CentOS (2.6.18-53.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18-53.el5.img
[root@localhost etc]#
5、检查对应的img是否生成且存在
[root@localhost etc]# ls /boot/
config-2.6.18-53.el5  initrd-2.6.18.1.img       lost+found  symvers-2.6.18-53.el5.gz  System.map-2.6.18.1       vmlinuz           vmlinuz-2.6.18-53.el5
grub                  initrd-2.6.18-53.el5.img  message     System.map                System.map-2.6.18-53.el5  vmlinuz-2.6.18.1

6、重启,并检查新内核是否加载
[root@localhost etc]# uname -a
Linux localhost.localdomain 2.6.18.1 #1 SMP Wed Feb 24 13:52:40 CST 2010 i686 i686 i386 GNU/Linux
阅读(3991) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~