学习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 源码目录结构 文件系统目录结构相关推荐

  1. Linux源码目录结构和Linux文件系统目录结构

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

  2. Linux源码目录结构

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

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

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

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

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

  5. Linux源码目录说明

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

  6. FreeRTOS 之一 源码目录文件 及 移植详解

    写在前面 2018/1/15更新了文章中的部分错误. FreeRTOS源码为最新版的10.0.1.FreeRTOS 10包含两个重要的新功能:流缓冲区和消息缓冲区. 从10.0.0开始,FreeRTO ...

  7. Linux 内核获取、初次编译、源码目录分析

    目录 Linux 内核获取 Linux 内核初次编译 Linux 内核源码目录分析 1.arch 目录 2.block 目录 3.crypto 目录 4.Documentation 目录 5.driv ...

  8. vscode读linux源码,vscode搭建linux内核开发环境

    vscode在linux下搭建内核驱动开发环境 一.前言 Souce insight是一个阅读.开发linux内核驱动模块的好工具,但是Source insight是收费的软件,而且没有原生linux ...

  9. linux与安卓系统目录,android系统架构及源码目录结构

    1. android系统架构: android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层.应用程序框架层.系统库和android运行时层.linux内核层. 每层功能 ...

最新文章

  1. iOS Sprite Kit教程之真机测试以及场景的添加与展示
  2. 北大组织“富豪俱乐部”,有何不可?
  3. linux 等待信号,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  4. mysql常见问题记录
  5. Galaxy s4怎么安装一个预装软件的签名不一致的新版本
  6. 赛事招募 | 互联网创客马拉松开show啦~比武招APP
  7. Python 宽学网
  8. 曼昆微观经济学之征税的市场本质—冰激凌篇
  9. html字体加粗且变色,简单的html代码 加粗 加亮 字型加大 变色 分别是写什么`
  10. jupyter notebook如何导入excel数据
  11. 吃土豆 递归分制算法(浪费时间)
  12. 叶罗丽用计算机对话,叶罗丽小剧场:王默和水王子秀恩爱,俩人的对话也太搞笑了...
  13. PyTorch搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
  14. RCD钳位电路--选管
  15. 怎样设置excel中自动调整行高、列宽?
  16. 具名插槽 非具名插槽
  17. 服务器物理内存如何卸载,win7电脑物理内存过高怎么清理
  18. 怎么保存网页为html格式,怎样保存网页部分内容为html格式?
  19. ListView和CheckBox的混乱问题
  20. 《目标检测蓝皮书》第2篇 深度学习基础

热门文章

  1. lcd参数解释及刷新率计算,LCD时序
  2. 吴恩达机器学习笔记61-应用实例:图片文字识别(Application Example: Photo OCR)【完结】...
  3. mongodb安装和配置
  4. MySQL集群(一)之主从复制
  5. NOI2012 美食节
  6. seo网站优化如何写好文章
  7. Centos升级php mysql
  8. nginx 停止服务方法
  9. [Oracle]Oracle 各产品的 生命周期
  10. day1 作业编写登录窗口