← Back to Index

添加一个kernel选项

Lmouse

参考文档:google,鸟哥的linux私房菜基础学习篇第三版

1 准备:

CentOs 5.4(或其他linux机器)

Linux2.6.27.59源码(www.kernel.org)

2 源码处理

2.1解压源码

#tar –jxvf linux linux-2.6.27.59.tar.bz2 –C /usr/src/kernels
#cd /usr/src/kernels

2.2 源码清除

# make mrproper(第一次编译)
# make clean(重复编译)

2.3 源码配置

#make menuconfig

可以参考主机上的/boot/configxxx文件,这里直接复制了/boot下的config文件用来编译。

2.4源码编译

2.4.1 编译核心

#make bzImage

完成之后在./arch/x86/boot里面生成bzImage

2.4.2 编译模块

#make modules

2.4.3 模块安装

#make modules\_install

完成之后在/lib/modules/生成2.6.27.59 image.png

2.5 制作initrd

#mkinitrd –v /boot/initrd-2.6.27.59.img 2.6.27.59

红色部分需要和/lib/modules/下对应的内核模块文件夹名字相同。

3 新内核启动所需文件管理

3.1 拷贝bzImage

#cp /usr/src/kernels/linux-2.6.27.59/arch/x86/boot/bzImage /boot/vmlinuz-2.6.27.59

3.2 initrd

Initrd文件已经在2.5的步骤中做好并放在/boot目录下

4 grub管理

#vi /boot/grub/grub.conf

在文件的末尾添加下面内容(给予CentOs5.4,其他版本linux可能有所不同)

title Mouses' kernel (2.6.27.59)
    root (hd0,0)
    kernel /vmlinuz-2.6.27.59 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.27.59.img

5 用2.6.32.43内核编译时候发现的几个注意点

注意1,在用2.6.32.43编译内核,启动的时候报错:insmod: error inserting ‘/lib/dm-region-hash.ko’

解决方法如下:

1,解压initrd文件

[root@bogon ~]# cp /boot/initrd-2.6.30.4.img /tmp
[root@bogon ~]# cd /tmp/
[root@bogon tmp]# ls
initrd-2.6.30.4.img
[root@bogon tmp]# mkdir newinitrd
[root@bogon tmp]# cd newinitrd/
[root@bogon newinitrd]# zcat ../initrd-2.6.30.4.img |cpio -i
11537 blocks

释放之后看到如下内容

[root@bogon newinitrd]# ls
bin   dev   etc   init   lib   proc   sbin   sys   sysroot

2下边就是编辑init,删掉其中重复的四行中的两行

echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko

3,重新打包initrd

[root@bogon newinitrd]# find .|cpio -c -o > ../initrd

11538 blocks
[root@bogon newinitrd]# cd ..
[root@bogon tmp]# gzip -9 < initrd > initrd.img
[root@bogon tmp]# ls
initrd-2.6.30.4.img    initrd    initrd.img          newinitrd

好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd-2.6.30.4.img为initrd.img就可以了, 这样“insmod: error inserting ‘/lib/dm-region-hash.ko’ : -1 File exists” 就不会有了

注意2:在用2.6.32.43内核源码编译的时候发现一个问题,就是 image.png

[*]Create deprecated sysfs layout for older userspace tools(NEW)

这个选项在该版本内核源码中没有。后来用2.6.27.59的源码编译,有这个选项并把它选上,编译之后启动就没问题。

注意3(同2)

setuproot: moving /dev failed: No such file or directory

解决方法:

修改.config

CONFIG_SYSFS_DEPRECATED_V2=Y

然后重新编译即可。