linux内核源代码、配置与编译
内核源代码下载:www.kernel.org
Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。
linux内核代码最好不要在windows下解压,因为同名(大小写)会丢失一些code。
source insight:添加汇编文件:option->Document option 添加.c、.h、.s、.S
内核目录:
arch目录 :内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等 。
documentation :内核的文档
drivers目录:设备驱动程序。
做移植时:主要该arch和driver下。
include目录 :内核所需要的头文件。与平台无关的头文件在include/linux 子目录下,与平台相关的头文件则放在相应的子目录中
script:配置内核的脚本。
内核配置与编译: 执行这些命令的位置是在内核代码的顶层目录下
linux内核具有可定制的优点,具体步骤:
1.清除临时文件、中间文件和配置文件(三种命令,删掉不同的类型)
make clean:remove most generated files but keep the config
make mrproper:remove all generated files+config files
make distclean:mrproper+remove editor backup and patch files(最全的)
但不是最全的就是最好的,加入只编译后,只需要删除.o文件,不需要删除配置文件,则make clean(根据需要来删除)
2.确定目标系统的软硬件配置情况,比如CPU的类型、网卡的型号、所需支持的网络协议等。
3.配置内核:结果保存在.config文件中。
make config:基于文本模式的交互式配置。
make menuconfig:基于文本模式的菜单型配置 。(推荐使用)
特点:直观高效,简单。利用空格键,选取值。
make oldconfig:使用已有的配置文件(.config),但会询问新增的配置选项。
make xconfig:图形化配置(需要安装图形化系统,其它前面三个既可以在文本模式下使用,也可以在图形化系统使用)
内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件,linux内核提供了一系列可供参考的内核配置文件,位于ARCH/$CPU/configs
如:ARCH/ARM/configs下。。。把这个配置文件拷贝到内核的顶层文件下。
*:y ;空格:N
配置内核文件的原则:
找到一个可以参考的结果文件,基于这个文件再调整。
4.内核编译
make zImage
make bzImage
区别:在X86平台,zImage只能用于小于512K的内核,在其他平台两种方式是没有区别的。
如需要获取详细编译情况,可使用:
make zImage V=1
make bzImage V=1
编译好的内核位于arch/$cpu/boot,
5.编译内核模块:
make modules
6.安装内核模块
make modules_install
将编译好的内核模块从内核源代码目录copy到/lib/modules下
7.制作init ramdisk
mkinitrd initrd-$version $version
initrd-$version :取名字
$version:内核的版本
注意:$version通过查询/lib/modules下的目录得到。
安装内核:1、cp arch/x86/boot/bzImage /boot/vmlinuz-$version //把内核.img拷贝出来
2、cp initrd-$version /boot/ //把ramdisk拷贝出来
3、修改/etc/grub.conf
linux内核源代码、配置与编译的更多相关文章
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- Ubuntu:编译Linux内核源代码和内核模块
1. 目的 内核模块需要运行在Linux 3.8.13内核中,因此需要为此内核重新编译内核模块源代码. 2. 步骤 1.在Ubuntu 14.04 64位(内核3.13.0-24-generic)上, ...
- linux内核的配置
以2.6.35.7版本的内核为例 总结:.config决定了Make时的条件编译与连接..config文件由两次配置第一次make XX_defconfig 第二次menuconfig. 1.分析源码 ...
- Linux内核源代码
说明:只供学习交流 一,目录结构 Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具有可读性. 二,目录结构 arch目录 arch是archite ...
- Linux内核源代码目录树结构
Linux内核源代码目录树结构. arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录.和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分).mm(内 ...
- Linux 内核源码外编译 linux模块--编译驱动模块的基本方法
1.先编写一个简单的hello模块,hello.c 源码如下: #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # defin ...
- Linux内核源代码获取教程
Linux内核源代码获取方法 什么叫Linux 什么叫Linux内核 Linux内核源代码的获取 什么叫Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UN ...
- 在windows下解压缩Linux内核源代码出现重复文件原因
在windows下解压缩Linux内核源代码出现重复文件原因 2009年06月30日 13:35 来源:ChinaUnix博客 作者:embededgood 编辑:周荣茂 原因一.因为在Lin ...
- Linux内核源代码情景分析系列
http://blog.sina.com.cn/s/blog_6b94d5680101vfqv.html Linux内核源代码情景分析---第五章 文件系统 5.1 概述 构成一个操作系统最重要的就 ...
随机推荐
- thinkphp 命名规范
目录和文件命名 目录和文件名采用 小写+下划线,并且以小写字母开头: 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致(包括大小写): 类名和 ...
- 对map进行排序
public class TreeMapTest { public static void main(String[] args) { Map<String, String& ...
- php模拟动态输出效果
读取数据库,显示数据 foreach($s as $ss){ echo '同步中 ...<br />'; for( $i = 1 ; $i < 2 ; $i++ ) { //echo ...
- 【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1034 弱的比弱的强就用,强的比强的强就用: 否则弱的和强的比. 输的情况就是2n-ans(b,a), ...
- Android SDK代理server解决国内不能更新下载问题
读者须知:本篇文章中最靠谱的是第三种方式,近期有读者反映第三种方式也不行了,以下提供一点其它途径的开源镜像网站: 国内高校的开源镜像站 中国科学技术大学(debian.ustc.edu.cn) 上海交 ...
- php和js实现文件拖拽上传
Dropzone.js实现文件拖拽上传 http://www.sucaihuo.com/php/1399.html demo http://www.sucaihuo.com/jquery/13/139 ...
- hdu 1421:搬寝室(动态规划 DP + 排序)
搬寝室 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- 《Programming with Objective-C》第五章 Customizing Existing Classes
1.分类里面只新增函数,不要新增变量:虽然新增是语法合法的,但是编译器并不会为你的property合成相应的成员变量.setter和getter Categories can be used to d ...
- nib文件的默认搜索规则
if you do not specify a nib name, and do not override the loadView method in your custom subclass, t ...
- org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle do
在yarn-site.xml 配置文件中增加: <property> <name>yarn.nodemanager.aux-services</name> < ...