预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/hoys/archive/2011/07/29/2121438.html"linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转) linux是如何组成的?答:linux是由用户空间和内核空间组成的为什么要划分用户空间和内核空间?答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的安全性,比如X86可以有4种模式RING0~RING3RING0特权模式给LINUX内核空间RING3给用户空间linux内核是如何组成的?答:linux内核由SCI(SystemCallInterface)系统调用接口、PM(ProcessManagement)进程管理、MM(MemoryManagement)内存管理、Arch、VFS(VirtualFileSysterm)虚拟文件系统、NS(NetworkStack)网络协议栈、DD(DeviceDrivers)设备驱动linux内核源代码linux内核源代码是如何组成或目录结构?答:arc目录存放一些与CPU体系结构相关的代码其中第个CPU子目录以分解boot,mm,kerner等子目录block目录部分块设备驱动代码crypto目录加密、压缩、CRC校验算法documentation内核文档drivers设备驱动fs存放各种文件系统的实现代码include内核所需要的头文件。与平台无关的头文件入在include/linux子目录下,与平台相关的头文件则放在相应的子目录中init内核初始化代码ipc进程间通信的实现代码kernelLinux大多数关键的核心功能者是在这个目录实现(程序调度,进程控制,模块化)lib库文件代码mm与平台无关的内存管理,与平台相关的放在相应的arch/CPU目录net各种网络协议的实现代码,注意而不是驱动samples内核编程的范例scripts配置内核的脚本securitySElinux的模块sound音频设备的驱动程序usrcpip命令实现程序virt内核虚拟机内核配置与编译一、清除makeclean删除编译文件但保留配置文件makemrproper删除所有编译文件和配置文件makedistclean删除编译文件、配置文件包括backup备份和patch补丁二、内核配置方式makeconfig基于文本模式的交互式配置makemenuconfig基于文本模式的菜单配置makeoldconfig使用已有的配置文件(.config),但配置时会询问新增的配置选项makexconfig图形化配置三、makemenuconfig一些说明或技巧在括号中按“y”表示编译进内核,按“m”编译为模块,按“n”不选择,也可以按空格键进行选择注意:内核编译时,编译进内核的“y”,和编译成模块的“m”是分步编译的四、快速配置相应体系结构的内核配置我们可以到arch/$cpu/configs目录下copy相应的处理器型号的配置文件到内核源目录下替换.config文件五、编译内核1.————————————————————————————makezImage注:zImage只能编译小于512k的内核makebzImage同样我们也可以编译时获取编译信息,可使用makezImageV=1makebzImageV=1编译好的内核位于arch/$cpu/boot/目录下————————————————————————————以上是编译内核makemenuconfig时先“m”选项的编译接下来到编译“y”模块,也就是编译模块2.makemodules编译内核模块makemodules_install安装内核模块------>这个选项作用是将编译好的内核模块从内核源代码目录copy至/lib/modules下六、制作initramdiskmkinitrdinitrd-$version$version/****mkinitrdinitrd-$(可改)version$version(不可改,因为这version是寻找/lib/modules/下相应的目录来制作)****/七、内核安装复制内核到相关目录下再作grub引导也就可以了1.cparch/$cpu/boot/bzImage/boot/vmlinux-$version2.cp$initrd/boot/3.修改引导器/etc/grub.conf(lio.conf)正确引导即可#incldue<linux/init.h>#include<linux/module.h>staticinthello_init(void){printk(KERN_WARNING"Hello,world!\n");return0;}staticvoidhell