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.16、重启,并检查新内核是否加载
[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) |