具体步骤:
# wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.gz
# tar zxvf linux-3.4.tar.gz -C /usr/src
# cd /usr/src/linux-3.4
# make menuconfig
# make
# make modules_install
# cp arch/x86_64/boot/bzImage /boot/vmlinuz-3.4
# make install
对比/boot/grub/grub.cfg文件的改动
Make Menuconfig简介
make menuconfig 图形化的内核配置make mrproper -----删除不必要的文件和目录.
#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
目的都是生成一个.config文件,这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,你就用这个好了,这个比较方便,也好设置。如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。 选择相应的配置时,有三种选择,它们分别代表的含义如下:
Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块
make modules_install指定ko安装路径
make modules_install INSTALL_MOD_PATH=/home/luther/gliethttp_dir
应用安装指定
make install DESTDIR=/home/luther/gliethttp_dir
最近对linux内核进行了编译,并安装在了vmware上。
linux内核:linu-2.6.29
操作系统:redhat 5
1.linux内核源码(如果没有,可以从www.kernel.ogr上下载)
2.将内核源码解压到工作目录(这个目录可以是任意的,但是路径不能带有空格)
tar jxf linux-2.6.29.tar.bz2
3.进入内核源码,使用命令(make distclean、make clean、make mrproper三个命令中的一个即可)
4.拷贝参考配置文件为内核目录下.config
cp /boot/config-2.6.18.53.e15 .config
5.配置内核
配置内核的方式有4种:
make config
make menuconfig
make xconfig
make oldconfig
这四条命令的区别如下:
make config是基于文本的最为传统的配置界面,即字符界面。比较适合在dos下使用。
make menuconfig:基于文本选单的配置界面,比较适合在终端字符下使用。
Make xconfig:基于图形窗口模式的配置界面,可以直接通过鼠标来选择。
Make oldconfig:只是对一些新功能进行配置。
make config
make menuconfig
make xconfig
make oldconfig
这四条命令的区别如下:
make config是基于文本的最为传统的配置界面,即字符界面。比较适合在dos下使用。
make menuconfig:基于文本选单的配置界面,比较适合在终端字符下使用。
Make xconfig:基于图形窗口模式的配置界面,可以直接通过鼠标来选择。
Make oldconfig:只是对一些新功能进行配置。
6.编译内核镜像:make bzImage(bzImage位于arch/x86/boot/目录下)
问题:make bzImage提示如下错误(这个错误不是每个人都会遇到的,可以用gcc--help查看你的gcc版本,如果你的版本是4.6或者4.6之后的应该会有下面的问题,如果比4.6的早就不会出现这个问题):
gcc: 错误: elf_i386:没有那个文件或目录
make[2]: *** [arch/x86/vdso/vdso32-int80.so.dbg] 错误 1
make[1]: *** [arch/x86/vdso] 错误 2
make: *** [arch/x86] 错误 2
解决方法:
这个问题是由于 gcc 4.6 不再支持 linker-style 架构。将 arch/x86/vdso/Makefile 中,
以 VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"。
以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_x86" 替换为 "-m32"。
gcc: 错误: elf_i386:没有那个文件或目录
make[2]: *** [arch/x86/vdso/vdso32-int80.so.dbg] 错误 1
make[1]: *** [arch/x86/vdso] 错误 2
make: *** [arch/x86] 错误 2
解决方法:
这个问题是由于 gcc 4.6 不再支持 linker-style 架构。将 arch/x86/vdso/Makefile 中,
以 VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"。
以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_x86" 替换为 "-m32"。
7.编译内核模块:make modules(源于启动的菜单型配置界面中选择<m>的项)
8.安装内核模块:make modules_install(代码会拷在/lib/modules/2.6.29目录下)
9制作initrd:mkinitrd initrd-2.6.29 2.6.29(如果是ubuntu,则使用mkinitramfs命令)
10.拷贝initrd和内核镜像到/boot
cp linu-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29
cp initrd-2.6.29 /boot
11.修改grub的配置文件/etc/grub.conf
后面的四行是参照上面的修改的。
12.测试新安装的内核是否能用,使用命令reboot重启系统,按住空格键不放,直到进入grub界面