linux内核开发(基础)

  • 树莓派等芯片带操作系统的启动过程
  • 树莓派Linux源码目录树分析
    • tree指令
    • 大概了解
    • 具体内容
  • 文件系统
    • 什么是文件系统?
    • 文件系统(文件管理系统的方法)的种类
    • 分区
  • 根目录下每个文件的作用
    • bin
    • boot
    • home
    • lib
    • mnt
    • proc
    • root
    • etc
    • dev

树莓派等芯片带操作系统的启动过程

x86,Intel windows
启动过程: 电源 -》 BIOS -》windows内核-》C,D盘-》 程序启动(QQ)
嵌入式产品: 树莓派,mini2440, mini6410,nanopi,海思,RK(瑞芯微)------人脸识别打卡器,智能家居主控。。。
启动过程: 电源-》BootLoader(引导操作系统启动)-》Linux内核-》文件系统(根据功能性来组织文件夹,带访问权限)-》KTV点歌机,
安卓
启动过程: 电源-》 fastBoot/Bootloader/-》linux内核-》文件系统-》虚拟机-》HOME应用程序-》点某图标打开某APP
BootLoader: 一阶段 让CPU 跟内存,FLASH, 串口,IIC,IIS, 数据段,打交道,驱动这些设备(汇编和C结合)
二阶段: 引导Linux内核启动 (纯C)

树莓派Linux源码目录树分析

tree指令

Linux tree命令用于以树状图列出目录的内容。
执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

大概了解

Linux是开源,免费,LInux开源社区工作者共同维护,爱好
Linux是一个开源的,支持多架构多平台代码 =非常牛逼
可以执行非常高
但是Linux内核编译出来一般就几M. 4M
因为支持多平台,多架构,所以编译之前要配置,配置成适合的目标平台来用

具体内容

arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。

block:部分块设备驱动程序。

crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。

Documentation:关于内核各部分的通用解释和注释。

drivers:设备驱动程序,每个不同的驱动占用一个子目录。

fs:各种支持的文件系统,如ext、fat、ntfs等。

include:头文件。其中,和系统相关的头文件被放置在linux子目录下。

init:内核初始化代码(注意不是系统引导代码)。

ipc:进程间通信的代码。

kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在
arch/*/kernel目录下。

lib:库文件代码。

mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。

net:网络相关代码,实现了各种常见的网络协议。

scripts:用于配置内核文件的脚本文件。

security:主要是一个SELinux的模块。

sound:常用音频设备的驱动程序等。

usr:实现了一个cpio。

文件系统

什么是文件系统?

常规认知: 根目录(不准确)
文件系统是操作系统用于明确存储设备组织文件的方法。
以上说的方法:就是文件管理系统(程序),简称文件系统

文件系统(文件管理系统的方法)的种类

FAT VFAT NTFS EXT1/2/3/4 HFS …
查看文件系统的命令: df -T
vfat : boot(bootloader, kernel)
ext4 : 根目录
tmpfs : 内存文件系统

分区

windows: 驱动器 连续的内容
随意(面向普通用户PC),目录即分区
C(装系统的位置)也可以随意在C盘存放文件. D盘(用户随意发挥)

Linux: 文件系统文件 不连续的 看到的文件夹来自于不同的分区
按照功能来分区,每个分区严格存放文件(开发者)
嵌入式系统可以分为4个区,分别是
bootloader、 启动代码
para、 启动代码向内核传递参数的位置
kernel、 内核分区
根分区等 文件系统结构

根目录下每个文件的作用

在Linux系统中,目录被组织成一个:单根倒置树结构,文件系统从根目录开始,用/来表示。文件名称区分大小写( 大小写敏感还需要看具体的文件系统格式 ),以.开头的为隐藏文件,路径用/来进行分割(windows中使用\来分割),文件有两个种类:元数据与数据本身.在操作linux系统时,通常会遵循以下的分层结构规则:
LSB (Linux Standard Base) / FHS(Filesystem Hierarchy Standard)

bin

/bin是系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。/bin底下的指令可以被root与一般账号所使用,主要有:cat,chmod,chown,date,mv,mkdir.cp,bash等常用的指令

boot

这个目录主要在放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需配置文件等等。

home

开发目录 不同目录不能互相干扰

lib

系统库相关

mnt

挂载目录 外部设备

proc

内核信息

root

管理员目录

etc

存放配置文件的目录

1 /etc/init.d/:所有服务的预设启动 script 都是放在这里的,例如要启动或者关闭 iptables 的话:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
2 /etc/xinetd.d/:这就是所谓的super daemon管理的各顷朋务的配置文件目 彔。
3 /etc/X11/:不 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这个 X Server 的配置文件。

dev

任何装置与接口设备都是以档案的型态存在于这个目录中的

linux内核开发(基础)相关推荐

  1. linux内核开发基础(linux内核源码、树莓派源码编译、SD卡挂载)

    首先下载树莓派linux内核源码: 下载网址:https://github.com/raspberrypi/linux 在树莓派使用指令:uname -r查看当前树莓派的版本号,然后选择对应的linu ...

  2. linux 没有那个文件或目录_【新视频进度】国庆节至今更新6节quot;嵌入式Linux应用开发基础quot;...

    说到做到,韦东山老师国庆没有休息,录了4节新视频,到目前快速入门-嵌入式Linux应用开发基础知识已更新6节: 01.HelloWorld背后没那么简单 02.GCC编译器的使用 03.Makefil ...

  3. linux 内核开发_25年Linux内核开发中的9课

    linux 内核开发 由于Linux内核社区在2016年庆祝了25年的开发历史,因此许多人向我们询问了该项目的长寿和成功秘诀. 我通常会开玩笑,说我们真的不知道如何到达这里. 在此过程中,该项目面临许 ...

  4. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之Pinctrl子系统和GPIO子系统的使用

    文章目录 前言 1.Pinctrl子系统 1.1.为什么有Pinctrl子系统 1.2.重要的概念 1.3.代码中怎么引用pinctrl 2.GPIO子系统 2.1.为什么有GPIO子系统 2.2.在 ...

  5. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之按键驱动框架

    文章目录 前言 1.APP怎么读取按键值 1.1.查询方式 1.2.休眠-唤醒方式 1.3.poll方式 1.3.异步通知方式 1.5. 驱动程序提供能力,不提供策略 2.按键驱动程序框架--查询方式 ...

  6. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED模板驱动程序的改造:设备树

    文章目录 前言 1.驱动的三种编写方法 2.怎么使用设备树写驱动程序 2.1.设备树节点要与platform_driver能匹配 2.2.修改platform_driver的源码 3.实验和调试技巧 ...

  7. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型

    文章目录 前言 1.设备树的作用 2.设备树的语法 2.1.设备树的逻辑图和dts文件.dtb文件 2.1.1.1Devicetree格式 1DTS文件的格式 node的格式 properties的格 ...

  8. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之总线设备驱动模型

    文章目录 前言 1.驱动编写的三种方法 1.1.传统写法 1.2.总线驱动模型 1.3.设备树驱动模型 2.Linux实现分离:Bus/Dev/Drv模型 2.1.Bus/Dev/Drv模型 2.2. ...

  9. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之驱动设计的思想:面向对象/分层/分离

    文章目录 前言 1.分离设计 驱动程序分析---程序分层 通用驱动程序---面向对象 个性化驱动程序---分离 APP 程序分析 前言 韦东山嵌入式Linux驱动开发基础知识学习笔记 文章中大多内容来 ...

最新文章

  1. python内置模块重要程度排名_论Python常见的内置模块
  2. 遍历系统中所有的进程,可根据名字或ID查找某一个线程
  3. 使用dubbo需要导入的jar包
  4. 一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛,n年后有多少头小牛
  5. VMware-workstation-full-8.0.0-471780.exe
  6. php员工删除,php+mysql删除指定编号员工信息的方法_PHP
  7. java没错泄露_Java内存泄露问题
  8. Java前端顺序,java种初始化顺序
  9. WPS制作甘特图实操(带图超详细)
  10. 单片机计算机基础知识总结,自学单片机第九篇:基础知识--计算机基础操作
  11. invalid characters encountered in Hex string
  12. Linux程序包管理命令之rpm
  13. 【直流潮流】基于直流潮流的电力系统停电分布及自组织临界性分析
  14. 《吊打面试官》系列-Redis基础
  15. FPGA学习记录 ACX720 Vivado
  16. 基于MATLAB APP Designer 和 Python 的音视频剪辑
  17. 于树莓派安装Ubuntu系统
  18. 在线图片压缩网站TinyPNG
  19. 【数据集】各类绝缘子、鸟巢及防震锤数据集汇总
  20. solidworks怎么画螺纹

热门文章

  1. 联想拯救者isk15安装固态硬盘记录
  2. IDEA解决开两个窗口问题
  3. 微信小程序云开发定时推送订阅消息
  4. python与idle区别_idle和python区别
  5. 【STM32F429开发板用户手册】第18章 STM32F429的GPIO应用之跑马灯
  6. 原生js:淘宝轮播图
  7. SaliencyReview:显著性检测综述阅读笔记
  8. 诊所信息管理系统C语言课程设计
  9. html 苹果app安装app,未越狱的苹果手机如何安装非App Store的应用?
  10. CSDN原力计划之技术影响力企业博客英雄榜 TOP 50 发布!