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 称之为板子 区别大的