Linux内核@系统组成与内核配置编译

Linux系统由什么组成?html

由用户空间(应用程序+GNU C标准库)和内核空间(系统调用接口+内核+内核架构代码)组成。网络

 

Linux内核究竟是什么?以及组成。架构

ARM的七种操做级别?工具

内核网络协议栈(Network Stack)的做用?性能

  为Linux提供了丰富的网络协议(TCP/IP、PPPOE)实现。将网络协议栈放在内核中为了提升网络性能,减小CPU开销。ui

虚拟文件系统的做用?spa

为了支持多种文件系统,并为它们提供统一的操做接口。.net

 

Linux内核源代码结构设计

关于每一个文件夹中的具体内容分析:参考http://blog.chinaunix.net/uid-24219701-id-2843452.htmlunix

Fedoar14系统中内核代码目录:

 

Linux内核配置与编译

内核配置命令(在内核根目录执行):

执行配置命令前若原来已经编译过内核则先 $make mrproper

$make config     基于文本模式的交互式配置。

$make menuconfig   基于文本模式的菜单型配置(使用较多)。 y m n 三种形式。 

$make gconfig           基于gtk+的图形工具。

$make defconfig

$make xconfig    基于Tcl/Tk的X图形配置界面。

$make oldconfig     使用原有的配置文件(.config),可是会询问新增长的内核功能。

经常使用内核配置选项参考:http://www.cnblogs.com/Robyte/archive/2010/06/09/2591274.html

内核配置命令详细参考《Linux内核设计与实现》

内核编译:

内核配置完成以后,直接$make(注意若是内核是2.6以前的版本须要首先运行一下$make dep,2.6之后的版本不用由于代码之间的依赖关系会自动维护),在内核代码根目录下产生elf文件,可是此文件不是可执行的二进制文件。

若是有模块编译一下模块:$make modules;

而后安装模块:$make modules_install;

而后:$make install,安装到/boot目录下。(这个过程也是内核安装过程,下面的内核安装是另外一种方法)

要生成可执行的二进制的内核文件还须要使用$make zImage或$make bzImage(前者用于编译小于512K的内核,后者用于编译大内核)。编译好后在arch/<cpu>/boot/下会生成二进制的内核文件。

内核安装(x86平台):

1. cp arch/i386/boot/bzImage /boot/vmlinuz-$version

2. cp System.map /boot/System.map-$version

3. rm /boot/System.map

4. ln -s /boot/System.map-$version /boot/System.map

5. 修改/etc/grub.conf 或者/etc/lilo.conf,添加一个新的title(相似下面)

注:/boot/grub/menu.lst 能够查看当前系统加载的二进制内核文件。

内核更新详细步骤参考:http://www.2cto.com/os/201312/265425.html

 

内核模块编写、编译、安装、运行和卸载

编译时asm/linkage.h找不到的问题:http://www.cnblogs.com/QuLory/archive/2012/10/23/2736339.html

2.6以上的Linux内核使用kbuild的Makefile进行编译。

关于kbuild参考系列文章:http://blog.csdn.net/yunsongice/article/details/6046537

相关文章
相关标签/搜索