Linux教程

linux内核开发(基础)

本文主要是介绍linux内核开发(基础),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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内核开发(基础)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!