linux-内核-内核基础/内核源码/内核配置和编译

9 篇文章 0 订阅

大纲:
1.linux系统构成
2.linux系统划分
3.内核空间和用户空间交互
4.linux内核构成
5.linux内核源码下载和安装步骤
6.linux内核目录结构
7.linux内核编译和配置
一.Linux系统如何构成的?
这里写图片描述
二.为什么linux系统会被划分成用户空间和内核空间?
为了提高安全性
ARM实现了7种模式:
用户模式(usr),快速中断(fiq),外部中断(irq),管理模式(svc)
数据访问终止(abt),系统模式(sys),未定义指令异常(und)
x86实现了4个级别:ring0-ring3
ring0:可执行特权指令可访问IO口,ring3则有很多限制
三.内核空间和用户空间怎么切换
通过系统调用和硬件中断可以从用户空间转移到内核空间
四.linux内核如何构成?
system call interface(SCI)系统调用接口(提供一套标准的系统调用函数来访问linux内核)
process management(PM)进程管理(创建进程,进程调度,停止进程,进程通信…)
virtual File system(VFS)虚拟文件系统,隐藏各种文件系统具体细节,为操作文件提供统一接口
memory management(MM)内存管理(虚拟地址和位地址转换,内存分配,内存回收…)
arch体系结构相关的代码(与CPU相关)
device driver驱动程序
network stack网络栈(支持网络协议多)
这里写图片描述
五.linux内核源代码下载地址www.kernel.org
1.下载路径
1).官方下载https://www.kernel.org/pub/linux/kernel/
2).最好使用pcb开发商提供的内核源码
这里我选择的是第二种方式
2.从本地pc传入linux服务器,利用ssh服务,前面有介绍过,这里就不赘述啦
3.解压tar -jxvf linux-imx-emmc-160721.tar.bz2
这里写图片描述
六.linux目录结构
这里写图片描述
1)arch 内核所支持的每种cpu体系,在该目录下都有对用的子目录,每个cpu的子目录又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,
内存管理,系统调用等
2)block部分块设备驱动程序
3)crypto加密压缩,crc校验算法
4)documentation内核文档
5)drivers设备驱动程序
6)fs存放各种文件系统
7)include内核所需头文件
8)lib库代码
9)mm内存管理和体系结构无关
10)net 网络协议的实现代码
11)Samples一些内核编程范例
12)script内核配置的脚本
13)security Selinux的模块
14)sound音频设备驱动程序
15)usr cpio命令实现
16)virt 内核虚拟机
七.linux内核配置和编译(linux内核具有可定制的优点)
1.清除临时文件,中间文件和配置文件
1)make clean
remove most generated file but keep the config
2)make mrproper
remove all generated file +configfiles
3)make distclean
mrproper+remove deitor backup and patch file
例:将内核源码linux-imx.tar.bz2拷贝到/home/imx6目录下
解压#tar -jxvf linux-imx.tar.bz2
进入内核源码目录#cd linux-imx_share
进行清除操作#make…
2.确定目标系统的硬件配置情况,比如cpu类型,网卡型号,所支持的网络协议等
3.使用如下命令之一配置内核
1)make config基于文本模式的交互配置
2)make menuconfig基于文本模式的菜单型配置(菜单在script目录下产生)
3)make oldconfig使用已有配置文件(.config)但是会询问新增加的配置项
4)make xconfig:图形化的配置(必须图形化系统)
4.内核编译步骤
1)make zImage X86上,只能用于小于512k内核
2)make bzImage
如果需要获取详细信息
make zImage/bzmage V=1

编译好的内核位于arch/<cpu>/boot下

例:
将内核源码拷贝到linux-imx.tar.bz2拷贝到/home/imx6目录下
解压#tar -jxvf linux-imx.tar.bz2
进入内核源码目录#cd linux-imx_share
内核配置#make ARCH=arm menuconfig
内核编译#./build.sh生成的zimage就是做需要的镜像文件
5.编译内核模块
make modules
6.安装内核模块
make modules_install将编译好的内核模块从内核源代码目录下copy到/lib/modules下
7.制作init ramdisk
mkinitrd initrd - version version($version可以通过查询/lib/modules下目录得到)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值