分类: LINUX
2011-01-11 11:45:59
linux内核编译流程-基于2.6.26内核 本文简单介绍linux内核编译的通用流程,分三种不同的情况介绍: 1 编译全新内核 2 编译新模块 3 交叉编译内核 一 编译新的内核 1下载最新的内核代码 在或者到ftp上的kernel.org下载了最新的内核代码linux-2.6.26.tar.gz 2准备工作 先进入/usr/src/kernel新建文件夹2.6.26 可以看到现在的内核的源代码.把下载的压缩包解压. tar -zxvf linux-2.6.26.tar.gz 3.配置 kernel提供多种配置方式,一般推荐的是菜单配置方式,即 make menuconfig 也提供多种GUI界面: 对于kde环境有 make xconfig 对于gnome环境有 make gconfig 4.编译与安装 这是最重要的一部分.也让我等了很长时间,有点耐心吧.其实就一个简单的命令 make 他就会根据早写好的makefile编译成.o文件再链接 之后如果有在配置时有以模块形式存在要加下两步(一般都是必须的) make modules 现在是安装,首先安装的是模块 make modules_install 这样会自动在/lib/modules下产生文件夹2.6.26里面即使模块相关的文件 之后,安装grub或lilo启动条目,以及启动时相关文件,也可自己手动配置(见附录) make install 以下的步骤是可选的,一般是开发者才需要: 之后,可以安装内核头文件 make headers_install 将安装配置的内核头文件到/usr/include 最后,清除编译中间文件 make clean 再把内核代码安放到/usr/src/kernel/2.6.26下 二 为内核编译添加新模块 首先清除上次编译的配置文件 make mrproper 之后再配置 make menuconfig 补选增加的模块,选择M,以模块形式,而后 make modules 注意:之后不可随意运行make modules_install,这是灾难性的。不信者可以尝试 三 交叉编译内核 参考我的另一篇笔记,见以下引用 嵌入式linux内核的交叉编译编译-基于2.6.26 附:手动配置启动文件 现在我的焦点转到/boot文件夹. 先了解我们需要动到的文件 1.vmlinuz-X.X.X vmlinuz是可引导的、压缩的内核."vm"代表"VirtualMemory".Linux支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制,Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”,它一般是一个软链接. 2.initrd-X.X.X 这是bootloaderinitializedRAMdisk的简称.initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态.initrd实现加载一些模块和安装文件系统等功能,主要是用于加载ext3等文件系统及scsi设备的驱动.要创建initrd文件.要用到mkinitrd. 3.System.map-X.X.X System.map是一个特定内核的内核符号表. 我们打开看看 00000400 A __kernel_vsyscall 00000410 A SYSENTER_RETURN 00000420 A __kernel_sigreturn 00000440 A __kernel_rt_sigreturn 00400000 A phys_startup_32 c0400000 T _text c0400000 T startup_32 左边是地址,右边就是变量名. 可见以上三部分是启动是重要的内核文件,于是我现在就要更新它们 源文件存在于我们解压好的文件中,复制过去就行了. cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.26 cp System.map /boot/System.map-2.6.26 initrd 还要自己作 cd /boot mkinitrd initrd-2.6.26 2.6.26 后面的2.6.24要和/lib/modules里的一样.运行命令后我看到 31457 blocks 最后是修改grad.conj grub.conj在/boot/grub里打开 加入下面四行 title Linux (2.6.26) root (hd0,2) kernel /boot/vmlinuz-2.6.26 ro root=LABEL=/ vga=788 splash=silent initrd /boot/initrd-2.6.26.img |
chinaunix网友2011-03-09 13:46:05
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com