LINUX学习笔记20—内核配置与编译
3319 点击·0 回帖
![]() | ![]() | |
![]() | 1. 清除临时文件,中间文件和配置文件:在顶层目录下执行 a) Make clean:删除产生文件,保存配置文件 b) Make mrproper:删除产生文件和配置文件 c) Make distclean:删除mrproper+编辑文件和补丁文件 2. 确定目标系统的软硬件配置情况:比如cpu的类型、网卡的型号,所需支持的网络协议等 3. 配置内核方式:会生成.config文件,保存配置文件 a) Make config:基于文本模式的交互式配置,问答形式 b) Make menuconfig:基于文本模式的菜单型配置(推荐) i. *:对应Y:在编译的基础上,进行连接 ii. m:对应m:进行编译不连接,将该功能编译成可以在需要时动态插入到内核中的模块。 iii. 空:对应N:不进行编译 c) Make oldconfig:要求回答的配置项比较少,大部分默认 d) Make xconfig:图形化的配置 4. 内核配置项选择方法:参考内核配置文档 a) 方法:利用已有的内核配置参考文件,在这基础上进行配置 b) 找到配置文件: i. 如arm开发板的:进入arch—arm—config目录中有很多 ii. 如红帽企业版5的内核:/boot/ c) 拷贝文件到.CONFIG所在的目录层次 d) 再进行上一步的配置内核,修改自己需要的内容, 5. 编译内核:这步编译的是内核核心文件 a) Make zImage(大写i):在X86平台,只能用于小于512K的内核 b) Make bzlmage: c) Make zlmage V=1:能获取详细的编译信息,便于查错 d) 编译好的内核位于:arch/<cpu>/boot/目录下 e) 需要的时间挺久的 6. 编译内核模块:make modules :这步编译的是刚才配置的内核模块 7. 安装内核模块:make modules_install a) 作用:将编译好的内核模块从内核源代码目录copy至/lib/modules下 8. 制作Init ramdisk 内存盘 a) Mkinitrd initrd-$version $version 前一个变量可自己取,后一个变量是/lib/modules下的目录名,这个目录是安装内核时产生的 b) 例:Mkinitrd initrd-2.6.29 2.6.29 当前使用的内核版本号 9. 虚拟机中安装内核 a) Cp arch/x86/boot/bzlmage /boot/vmlinuz-$version版本号 b) Cp $initrd /boot/ c) 修改/etc/grub.conf或者/etc/lilo.conf i. 注意是否多系统启动: ii. 注意拷贝后修改TITLE后面的内容,一个TITLE代表一个启动项 iii. TITLE后面的是名字,可以改 iv. 修改/vmlinuz-2.6.29 修改/initrd-2.6.29 | |
![]() | ![]() |