Linux内核-内核配置

本文介绍了Linux内核的特性,包括可移植性、强大的网络功能和模块化设计。讲解了内核的五大子系统,并阐述了如何获取和配置内核,特别是针对不同体系结构的选择。还探讨了内核目录结构、头文件的引用规则以及内核配置的重要性,提供了获取内核的两种方法,并详细解析了Makefile在内核编译过程中的作用。
摘要由CSDN通过智能技术生成

Linux内核特性 :

1.可移植性 , 支持的硬件平台广泛

arch目录 就是体系结构的概念 ,  针对我们现目前有的一些 平台, 

注意ARM里面的源码跟X86里面的源码, 不能共同编译, 需要不同的编译器 ,,  

支持这么多平台, 我们怎么让你只编译ARM而不编译其他平台的呢 ?

进入ARM文件里.我们可以看到所支持的所有的开发板型号,

内核就像一个仓库,  我们从中选择我们所需要的就可以了, 

2.超强得网络功能 : 

大型得路由器防火墙, 很多功能都是在Liunx基础上去研发和设置得, 它得网络功能非常非常强大, 

TCP/IP  等都已经实现好了,对一个产品得开发周期是大大可以缩短得,  

如果你不跑操作系统,那就需要你自己写, 如果你跑操作系统, 那就表示拥有了成熟得代码帮我们去处理, 用不用操作系统其实不是一个很大的问题, 就看你的产品适用点 . 

3. 模块化的设计 :

通过模块来帮助辅助我们来进行我们驱动程序的开发 , 这是我们认为Linux 内核的一个特性

 

Linux内核提供的 五大子系统 :

进程管理子系统  内存管理子系统   文件管理子系统  网络协议子系统   设备管理子系统

内核是一个很多很多子系统来融合的一个中和系统 , 我们学习内核也一样, 先掌握一个最基本的系统, 然后通过这个系统,会跟其他系统都有些联系 ,那么我们可以把其他系统 一步一步的去理解,   

我们会对设备管理子系统做一个更深入的理解,  作为驱动开发工程师就足够了, , 如果涉及到网络协议栈, 比如新的网络协议的话,那么专门的有些公司或做这个网络协议层 , 做专门的研究,. 

如何获取内核 :

获取内核在工作中有两种方法 : 

第一种 : 干脆直接从官方网站上去获取, 

第二种 : 工作中 公司在定好一个方案之后, 选择一些硬件方案, 比如我们要做一些智能的设备, 芯片厂商会针对芯片厂提供demo 板,如果demo板上跑的是linux系统的话, 厂商已经制定好的linux的源码包, 然后直接在这个板上添加设备,添加设备过程中你就有可能会涉及一个重新编译一下源码 . 然后再进行一个修改 .很多可能都是通过芯片源码产生的

那么如何从官方下载的内核 编程成你demo板所需要的内核 , 

新手先从芯片厂商提供的linux上面去学, 如果有经验了再做官方发布的源码 再一步一步的修改成我们所需要的Liunx

下载地址 : https://mirrors.edge.kernel.org/pub/linux/kernel

然后找到 3.x点进去, 找linux_3.0.8.tar    bz2 得包 ,  下载bz2得就行 

 

Linux 目录结构

把下载好的linux_3.0.8.tar.bz2   把它解压

tar -jxvf linux_3.0.8.tar.bz2 -C /work/maiziedu/进行解压到指定目录, 

然后解压后, 我们进入到 linux_3.0.8目录下

arch 所有体系相关得所有代码都在这个仓库里, 

block  块 算法得一些目录

crypto 算法加密目录

Documentation  内核得官方文档

drivers 下可加驱动 所有得驱动程序

firmware  部件

fs  存放得都是文件系统得一些信息 

include 内核使用得头文件

init  系统初始化得目录

ipc 进程间通讯得一些机制 (信号量 ,消息队列,共享内存等等)

kbuild  kconfig  带k得一般都可以认为是kernel得一些东西 , kbuild  kernel得一些编译方法,  kconfig kerner的config

kerner 内核中的一些核心算法 ,

mm  内存

net  网络的一些协议 

我们进到arch 会看到很多平台文件, 我们进入到x86文件里, 可以看到 它里面又包含boot  include kerner lib等文件, 有个问题 x86底下也有kerner也有lib  那我们的内核顶层目录下也有lib 也有kerner 所以我们就会发现这俩个是重名的, 我们思考一下这种分层 , 内核的kerner是于平台无关的, 所以内核都遵循的机制, 但是这套机制肯定要落实到于体系结构相关的代码上 . 最终你还是要在相应的硬件上运行,  我们可以理解到, 平台无关的这个kerner最终还是要依赖于平台相关的这个kerner , 最后系统启动的肯定是平台相关的kerner和平台相关的kerner互相之间的内部调度,    平台无关性的东西要依赖于平台相关性的东西, 

我们可以认为平台无关的代码是一个主框架,   而框架中最终还是要要运行在平台相关性的代码   , 所以在以后的代码中,要确认它是在平台无关的代码还是平台相关的代码,  

我们进入arm 目录

 它的特点跟x86不太一样,  x86是inter公司一家的 ,但是arm 并不是芯片, 它只是一个ip核, 最终来说是会被芯片厂商使用起来的, 所以说拥有arm芯片ip核的这个厂商特别多, 比如说三星 , 它就会研究出s3c2410 s3c2412 s5pv210 等其他高端产品, 的开发板

mach-xxx 称之为板子   区别大的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值