Linux内核修炼培训班
  • 课程目标

    通过本课程的学习,学员可以:

    1)全面认识和了解Linux内核的框架,并以此为基础掌握学习Linux内核、分析阅读Linux内核源码的方法,真正地迈过那道无形的门坎。

    2)掌握、分析、钻研某个子系统在Linux内核中实现机制的方法,并了解Linux内核中的进程管理、内存管理、文件系统。

    3)了解如何参与Linux内核的开发和测试,以及一些常用的调试手段和工具。

    4)掌握Linux设备驱动的开发方法。

    5)掌握Android运行所需要的Linux内核开发和技巧。

  • 入学要求

    学员学习本课程应具备下列基础知识:

    ◆ 能够使用Linux操作系统。

    ◆ 掌握C语言基础。

    ◆ 熟悉操作系统基础理论。

  • 师资团队

    任老师

    华清远见资深讲师,上海交大博士,曾任职于上海某著名外企,拥有六年以上网络、通信及控制领域内的嵌入式系统软硬件开发经验,资深研发工程师、项目经理、CSDN专家。熟悉嵌入式系统软硬件设计的全过程,多年来始终专注于嵌入式Linux内核研究和设备驱动的开发,精通嵌入式Linux操作系统,尤其擅长Linux系统内核及设备驱动开发。作为资深PM,曾指导完成多个大型嵌入式项目的软硬件设计,涉及通信、网络、控制等领域。著有《Linux内核修炼之道》《Linux那些事》等备受网友关注的专业图书,目前致力于嵌入式Linux内核技术的普及推广和人才培养。[任老师授课视频]

    王老师

    熟练汇编、Java语言;精通51、cortex3、cortex4、cortex-a9等开发;精通Unix/Linux操作系统和Linux C语言编程;精通Linux下的驱动开发;具有丰富的项目实战经验;

  • 教材

    ◆ 《华清远见Linux内核修炼培训班培训讲义》

  • 实验环境

    为了保证培训效果,增加互动环节,我们坚持小班授课,每期报名人数限15人,多余人员安排到下一期进行。人手一套开发板和开发用的PC主机。

  • 上课时间地点

    本课程每期班限额15名,报满即停止报名,请提前在线报名(点击这里)或电话预约。

    ◆ 时间:根据报名人数确定,需提前预约。

    ◆ 地点:北京、上海、深圳、成都、南京、武汉、西安、广州、沈阳、济南、重庆

    华清远见保留开课时间调整的权利,欢迎来电洽询 400-611-6270

  • 学时费用

    ◆课时:共4天,每天6学时,总计24学时

    ◆费用(含教材费和午餐费):公司员工(3200元),个人自费(2500元),学生自费(1900元,凭有效证件)

    ◆认证费(可选):培训合格学员可获工业和信息化部《国家信息技术应用技能Linux内核开发工程师认证证书》(认证费500元)

    ◆外地学员:代理安排食宿(需提前预定)

  • 最新优惠

    ◆团体报名优惠措施:两人95折优惠,三人或三人以上9折优惠!

    ◆套餐课程同时报名优惠措施(以下套餐优惠只能任选一种):

    1、同时报选《ARM开发培训班》,即享受500元优惠!

    2、同时报选《嵌入式Linux系统开发班》,即享受500元优惠!

  • 质量保证

    1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期培训班中重听;

    2、培训结束后免费提供一个月的技术支持,充分保证培训后出效果;

    3、培训合格学员可享受免费推荐就业机会。

  • 课程大纲
    时间 课程大纲
    第一天
    学习目标    全面认识和了解Linux内核的框架,掌握学习Linux内核、分析阅读Linux内核源码的方法。
    9:00
    |
    16:00

    第1章.Linux内核的基本面
       1.1 Linux内核成长史
       1.2 多变的Linux内核版本号
       1.3 获取Linux内核的源代码
       1.4 Linux内核与那些发行版
       1.5 Linux内核是如何工作的
           ·“Linux虚拟机”——系统调用
           ·台前——文件系统
           ·幕后——进程调度
           ·幕后——内存管理
           ·模块化的Kernel
    第2章.Linux内核的按需配置与编译
       2.1 按需配置Linux内核
           ·配置方式的多种选择
           ·认识常见的配置选项
           ·重视.config文件
       2.2 为Linux内核打补丁
       2.3 编译Linux内核
           ·认识一些与编译有关的目录与文件
           ·构建编译环境
           ·备份是重要的
           ·编译步骤
           ·一些实用的小技巧
       2.4 Linux内核的文档及编译
       2.5 【实验】配置、编译Linux内核
    第3章.浏览Linux内核源码
       3.1 所需的技术基础
       3.2 Linux内核的体系结构
       3.3 Linux内核源码树
       3.4 使用vim+cscope+ctags
       3.5 Linux内核代码的特点
           ·gcc扩展的使用
           ·内嵌汇编
       3.6 Linux内核中的链表
       3.7 代码样例
       3.8 【实验】配置vim浏览内核源码
    第4章.如何分析Linux内核源码
       4.1 Linux内核学习的心理问题
       4.2 kernel地图:Kconfig与Makefile
           ·看懂Kconfig与Makefile
           ·利用Kconfig与Makefile定位目标代码
       4.3 分析Linux内核源码如何入手
           ·分析README
           ·分析Kconfig与Makefile
           ·态度决定一切:从初始化函数开始
       4.4 【实验】定位并分析某个子系统或模块在内核中的实现

    第二天
    学习目标    掌握分析钻研某个子系统在内核中实现机制的方法,了解内核中的进程管理、内存管理、文件系统。
    9:00
    |
    16:00

    第5章.开始之前——Before we begin
       5.1 系统初始化
       5.2 Linux内核中的时间
       5.3 系统调用
       5.4 中断与中断处理
       5.5 Linux内核中的同步
    第6章.开始之前——子系统的初始化
       6.1 Linux内核选项解析
           ·Linux内核选项
           ·注册Linux内核选项
           ·两次解析
       6.2 那些入口函数
           ·initcall.init节
           ·do_initcalls()函数
       6.3 以PCI子系统为例
       6.4 【实验】分析某个子系统的初始化过程
    第7章.进程管理与调度
       7.1 Linux中的进程
       7.2 进程的来源:fork和clone
       7.3 所有美好的事物都会结束:进程退出
       7.4 内核线程
       7.5 进程调度
           ·O(1)调度
           ·CFS调度
       7.6 不确定的Multi-thread
    第8章.内存管理
       8.1 物理地址、逻辑地址与虚拟地址
       8.2 分页
       8.3 内存在内核中的分配
       8.4 进程的内存组织
       8.5 内存映射mmap
       8.6 页面缓存
    第9章.虚拟文件系统VFS
       9.1 VFS的体系结构
       9.2 理解VFS的那些数据结构
       9.3 VFS的缓存机制
       9.4 文件系统的注册与安装
       9.5 文件系统的日志管理

    第三天
    学习目标    了解如何参与Linux内核的开发和测试,以及一些常用的调试手段和工具。
    9:00
    |
    16:00

    第10章.Intent Receiver
       10.1 工具链及其生成
       10.2 Linux内核中的Makefile
       10.3 严格遵守Linux内核的编码风格
       10.4 添加代码到Linux内核
       10.5 为什么Linux内核没有稳定的API?
       10.6 如何提交补丁
       10.7 学会使用Git
       10.8 【实验】安装Git并用它来来获取最新的Linux内核源码
    第11章.一些最上镜的Linux内核调试手段与工具
       11.1 Linux内核对调试的支持
       11.2 二分法与printk
       11.3 获取Linux内核信息
       11.4 调试福音之oops
       11.5 神奇的SysRq
       11.6 调试利器之GDB
       11.7 调试利器之Systemtap
       11.8 Linux内核崩溃转储
       11.9 利用模拟器
       11.10 【实验】分析一个oops
       11.11 【实验】配置GDB调试环境并调试Linux内核
    第12章.子系统的初始化
       12.1 Linux内核测试的4个阶段
       12.2 性能分析与调优工具
           ·CPU性能分析与调优
           ·Memory性能分析与调优
           ·IO性能分析与调优
           ·Network性能分析与调优
       12.3 oprofile
       12.4 启动速度调优
       12.5 【实验】Linux内核性能测试并提交Linux内核测试报告

    第四天
    学习目标    掌握驱动的开发方法,掌握Android运行所需要的Linux内核开发和技巧。
    9:00
    |
    16:00

    第13章.驱动开发的方法论
       13.1 模块化的Linux内核
       13.2 第一个模块“Hello World!”
       13.3 重中之重:设备模型
           ·总线、设备和驱动
           ·在USB子系统上的投影
       13.4 驱动开发三件宝:spec、datasheet与Linux内核源码
       13.5 sysfs
       13.6 【实验】结合设备模型分析一个Linux内核中现有的驱动
       13.7 【实验】编写一个简单的模块
    第14章.Android环境的相关介绍
       14.1 Android的历史和介绍
       14.2 Android和Linux的扯不清理还乱的关系
       14.3 取得Android的源代码和编译生成可执行环境
       14.4 Android源代码构成和运行原理
       14.5 加入新的处理器支持到Android框架
    第15章.移植Android所需要的Linux内核
       15.1 Android运行所需要对Linux内核作的修改
       15.2 Android对现有驱动所必须做的修改
           ·键盘、鼠标驱动和键值映射
           ·显示驱动
           ·audio驱动
       15.3 编译和拓展Android的启动分区boot.img
       15.4 Android的启动过程分析和调试技术
       15.5 【实验】生成一个可供Android启动的Linux内核
       15.6 【实验】制作和生成一个可运行的boot.img
    第16章.实现Android的硬件抽象层
       16.1 Android的硬件抽象层的原理和构成
       16.2 实现ril,完成Android的移动网络功能支持
       16.3 libhardware_legacy接口
       16.4 libhardware接口
       16.5 蓝牙支持
       16.6 【实验】将一个wifi驱动加入Android硬件抽象层