学习Linux也有一段时间了,具体来整理一下Linux源码的目录结构和文件系统的目录结构,以便加深记忆。

一、Linux源码的目录结构

首先上一张截图,如下所示:

再看各个文件的介绍,借用一下其他资源。

arch:这个为目录是架构相关,里面存放了许多CPU架构,比如arm,x86,MIPS,PPC等,

处理器原厂提供一套Linux内核的源码,那么在这个目录下都有一套针对具体处理器CPU的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别控制系统引导,内存管理,系统调用,动态调频,主频率设置部分等。
在arch目录中有关键的平台文件。任何一款支持Linux的处理器,都有一部分内核代码是针对特定的处理器来提供的,具体的实现就是通过平台文件。
迅为4412的平台文件,是arch→arm→mach-exynos→mach-itop4412.c。
arch→arm→boot目录,默认编译生成的内核镜像是在这个目录下。
在arch→arm→kernel目录中,有针对具体CPU处理器的代码,有相关内核特性实现方式,如信号处理等。这一部分当然是芯片厂商做好了,4412的这部分就是三星已经做好的部分。
在arch→arm→lib目录中,有一些和硬件相关库函数,后面学习驱动的时候会使用到。

在arch→arm→tools目录中,包含了生成镜像的工具。

block:在linux中block表示块设备(以块(多个字节组成的整体,类似于扇区)为单位来整体访问),譬如说SD卡、iNand、Nand、硬盘等都是块设备。你几乎可以认为块设备就是存储设备。block目录下放的是一些linux存储体系中关于块设备管理的代码。

crypto:英文意思是加密。这个目录下放了一些各种常见的加密算法的C语言代码实现。譬如crc32、md5、sha1等。

Documentation:里面放了一些文档。

drivers:驱动目录,里面分门别类的列出了linux内核支持的所有硬件设备的驱动源代码。就是需要重点学习的部分。

firmware:固件。什么是固件?固件其实是软件,不过这个软件是固话到IC里面运行的叫固件:就像S5PV210里的iROM代码。

fs:fs就是file system,文件系统,里面列出了linux支持的各种文件系统的实现。

include:头文件目录,公共的(各种CPU架构共用的)头文件都在这里。每种CPU架构特有的一些头文件在arch/arm/include目录及其子目录下。

init:init是初始化的意思,这个目录下的代码就是linux内核启动时初始化内核的代码。

如下图所示,部分目录如下。下面的这些目录,几乎不需要我们去动其中任何一个文件。

ipc:ipc就是inter process commuication,进程间通信,里面都是linux支持的IPC的代码实现。

kernel:kernel就是内核,就是linux内核,所以这个文件夹下放的就是内核本身需要的一些代码文件。

lib:lib是库的意思,这里面都是一些公用的有用的库函数,注意这里的库函数和C语言的库函数不一样的。在内核编程中是不能用C语言标准库函数,这里的lib目录下的库函数就是用来替代那些标准库函数的。譬如在内核中要把字符串转成数字用atoi,但是内核编程中只能用lib目录下的atoi函数,不能用标准C语言库中的atoi。譬如在内核中要打印信息时不能用printf,而要用printk,这个printk就是我们这个lib目录下的。
mm:mm是memory management,内存管理,linux的内存管理代码都在这里。
net:该目录下是网络相关的代码,譬如TCP/IP协议栈等都在这里。

scripts:脚本,这个目录下全部是脚本文件,这些脚本文件不是linux内核工作时使用的,而是用来辅助对linux内核进行配置编译生产的。我们并不会详细进入分析这个目录下的脚本,而是通过外围来重点学会配置和编译linux内核即可。
security:安全相关的代码。不用去管。
sound:音频处理相关的。
tools:linux中用到的一些有用工具
usr:目录下是initramfs相关的,和linux内核的启动有关,暂时不用去管。

virt:内核虚拟机相关的,暂时不用管。
Kbuild:Kbuild是kernel build的意思,就是内核编译的意思。这个文件就是linux内核特有的内核编译体系需要用到的文件。
Makefile:这个是linux内核的总makefile,整个内核工程用这个Makefile来管理的。

二、文件系统目录结构

先上图,如下图所示:

1、/- 根
每一个文件和目录从根目录开始。

只有root用户具有该目录下的写权限。请注意,/root是root用户的主目录,这与/.不一样

2、/bin中 - 用户二进制文件

包含二进制可执行文件。
在单用户模式下,你需要使用的常见Linux命令都位于此目录下。系统的所有用户使用的命令都设在这里。

例如:ps、ls、ping、grep、cp

3、/sbin目录 - 系统二进制文件

就像/bin,/sbin同样也包含二进制可执行文件。

但是,在这个目录下的linux命令通常由系统管理员使用,对系统进行维护。例如:iptables、reboot、fdisk、ifconfig、swapon命令

4、/etc - 配置文件

包含所有程序所需的配置文件。
也包含了用于启动/停止单个程序的启动和关闭shell脚本。例如:/etc/resolv.conf、/etc/logrotate.conf

hosts:设备名称(或域名)到ip地址的解析,相当于本地存在的dns功能。

5、/dev - 设备文件

包含设备文件。

这些包括终端设备、USB或连接到系统的任何设备。例如:/dev/tty1、/dev/usbmon0

6、/proc - 进程信息

包含系统进程的相关信息。
这是一个虚拟的文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid}目录中包含的与特定pid相关的信息。

这是一个虚拟的文件系统,系统资源以文本信息形式存在。例如:/proc/uptime

7、/var - 变量文件

var代表变量文件。
这个目录下可以找到内容可能增长的文件。

这包括 - 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

8、/tmp - 临时文件

包含系统和用户创建的临时文件。

当系统重新启动时,这个目录下的文件都将被删除。

9、/usr - 用户程序

包含二进制文件、库文件、文档和二级程序的源代码。
/usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。
/usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。
/usr/lib中包含了/usr/bin和/usr/sbin用到的库。

/usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中

10、/home - HOME目录

所有用户用home目录来存储他们的个人档案。

例如:/home/john、/home/nikita

11、/boot - 引导加载程序文件

包含引导加载程序相关的文件。
内核的initrd、vmlinux、grub文件位于/boot下。

例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic

12、/lib - 系统库

包含支持位于/bin和/sbin下的二进制文件的库文件.
库文件名为 ld*或lib*.so.*

例如:ld-2.11.1.so,libncurses.so.5.7

13、/opt - 可选的附加应用程序

opt代表可选的。
包含从个别厂商的附加应用程序。

附加应用程序应该安装在/opt/或者/opt/的子目录下。

14、/mnt - 挂载目录

临时安装目录,系统管理员可以挂载文件系统。15、/media - 可移动媒体设备
用于挂载可移动设备的临时目录。
举例来说,挂载CD-ROM的/media/cdrom,挂载软盘驱动器的/media/floppy;16、/srv - 服务数据
srv代表服务。
包含服务器特定服务相关的数据。
例如,/srv/cvs包含cvs相关的数据。

Linux源码目录结构和Linux文件系统目录结构相关推荐

  1. Linux源码编译(一):从头文件说起

    Linux源码编译(一):从头文件说起 2013-04-10 14:37:24 分类: LINUX 在Linux体系结构章节中,主要让大家对Linux结构层次有一定的了解,没有过多的长篇大论,力求简结 ...

  2. linux 源码目录结构 文件系统目录结构

    学习Linux也有一段时间了,具体来整理一下Linux源码的目录结构和文件系统的目录结构,以便加深记忆. 一.Linux源码的目录结构 首先上一张截图,如下所示: 再看各个文件的介绍,借用一下其他资源 ...

  3. Linux源码目录结构

    顶层: |-- Makefile #在顶层目录编译,利用的默认Makefile,它只是简单包含了build/core/main.mk |-- abi 应用二进制接口,不同的操作系统,应用二进制接口不同 ...

  4. linux 源码 目录,Linux系统主要目录及kernel源代码目录

    1.在安装Linux后,先要了解清楚系统主要目录到底是干什么用的,避免以后再操作上的失误等.下面,就对Linux主要目录做一下简要说明:/boot:系统启动相关的文件,如内核.initrd,以及gru ...

  5. Linux源码目录说明

    内核源代码的根目录下包含了以下文件及文件夹: COPYING -许可和授权信息.Linux内核在GPLv2许可证下授权.该许可证授予任何人有权免费去使用.修改.分发和共享源代码和编译代码.然而,没有人 ...

  6. linux 源码 调试,开发一个Linux调试器(六):源码级逐步执行

    我们计算编写这些函数异常简单的版本,但真正的调试器有 thread plan 的概念,它封装了所有的单步信息.例如,调试器可能有一些复杂的逻辑去决定断点的地位,然后有一些回调函数用于断定单步操作是否完 ...

  7. linux 源码目录结构,分析Android 源代码编译前后的目录结构

    我们看没有编译前的项目目录大致的情况如下 : 在树结构中我们可以了解的有如下一些信息分析: 1.        getSplashy                项目名称: 2.        sr ...

  8. linux源码剖析四 built-in.o 文件编译生成过程

    vmliux 依赖 vmlinux-deps,而 vmlinux-deps=$(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN), K ...

  9. linux源码gpio模拟i2c,linux内核gpio模拟i2c实例.doc

    linux内核gpio模拟i2c实例.doc linux内核GPIO模拟I2C实例2010-10-11作者:cvip302814来源:cvip302814的blog前言:在许多情况下,我们并没有足够的 ...

最新文章

  1. 重磅!2020年放假安排公布啦!五一休5天,国庆中秋连休8天
  2. 智慧解析第12集:老板心理学
  3. python库迁移到没有网的电脑_关于换机器后python库的迁移-偷懒做法
  4. 使用 MDT2008 轻量部署进行 Windows XP SP2 简单部署
  5. Oracle解析XML 节点信息并转换String 类型
  6. Exam化的软件项目管理
  7. 61 SD配置-科目分配-分配税收确定的交货工厂
  8. Linux学习笔记10
  9. 使用LINQ遇到的问题,请高手解答下原理
  10. 全球蜂窝基带芯片厂商去年营收209亿美元,华为海思占16%
  11. js判断客户浏览器类型,版本
  12. 十五、Oracle学习笔记:序列(用于表字段值自增)
  13. 记一次调试YOLOv5+DeepSort车辆跟踪项目的经过
  14. 回归分析什么时候取对数_线性回归模型,哪些变量取对数形式?
  15. Ant Design Vue表格序号递增问题
  16. 手机处理器天梯图2021
  17. opensparc中的crossbar
  18. python工程师的职业规划_一名Python开发工程师的职业规划
  19. 课内实验记录|信用卡号的合法性检查
  20. 计算机网络论文 考试吧,2012年11月计算机网络学习心得体会

热门文章

  1. ChatGPT提示词,汇聚全网提示词,chatgpt提示词大全
  2. 南邮微型计算机,南邮 微机原理(微型计算机与接口技术)复习ASM含部分答案.ppt...
  3. 服务器内部转发以及客户端重定向概念的学习
  4. decorator 装饰器
  5. 【职场篇】游戏开发社招求职面试指南①——前期准备
  6. 内部矩阵维度必须一致simulink_浅谈数仓模型(维度建模)
  7. 手机短信备份文件sms.vmsg文件解析(Java版)
  8. 谁拉大了中国制造的贫富差距?
  9. 解决vue使用hight:100%没用,并不能全屏的问题
  10. C语言:计算机-加减乘除