Linux源代码结构简析-嵌入式操作系统总结

这是什么

嵌入式操作系统课程的课后作业[131110526]
1. 下载最新的Linux内核源码,并对其目录结构(含子目录)进行分析:
    (1)目录含义、子目录含义、众多.c、.h、makefile文件、配置文件等进行解析;
    (2)建议以表格的形式来整理
2.下载最新的支持嵌入式Linux内核的根文件系统(源码),并对其目录结构(含子目录)进行分析
3.Busybox是什么?有什么功能?怎么用





参考资料





源代码目录结构整理

目录 说明
scripts 存放了用来配置内核的脚本和应用程序源码
Lib gnuzip加压缩算法、字符串和内存操作等相关函数
Mm 和体系结构无关的内存管理代码
Include linux源代码目录树中绝大部分头文件
Init 系统核心初始化代码,内核初始化入口函数 start_kernel就是在该目录下的文件main.c内实现的
Kernel 该 目录存放的是linux内核的最核心代码,用于实现系统的核心模块,这些模块包括进程管理、进程调度器、中断处理、系统时钟管理、同步机制等。该目录中的 代码实现了这些核心模块的主体框架,独立于具体的平台和系统架构。核心模块与平台相关代码存放在目录arch中。
Arch 每个子目录都与某种体系结构对应,用于存放系统结构相关代码,向平台无关的系统核心模块提供所需的功能接口
drivers 显卡、网卡、SCSI适配器、PCI总线、USB总线和其他任何Linux支持的外围设备或总线的驱动程序
fs 虚拟文件系统(VFS,Virtual File System)的代码,和各个不同文件系统的代码都在这个目录中。



操作步骤

以下操作截屏于我的centos主机上

  • 下载linux内核

  • 解压源码

  • 展开根目录

  • 展开arch目录

  • 查看Makefile

  • 查看include/linux/syscalls.h

  • 查看kernel下的fork.c(部分)

  • fork.c 共2128行

  • 查看do_fork函数

  • do_fork函数调用copy_process函数

  • copy_process函数

  • copy_process函数调用dup_tasl_struct函数

  • dup_tasl_struct函数

  • 查看/arch/i386/kernel/Process.c行数

嵌入式源程序

  • 查找s3c24xx系列源码路径

  • 查看/arm/kernel路径下的文件

  • 查看arm下的Makefile

  • 查看arm下的setup.c

  • 查看memory.h

  • 查看mach-s3c2410.c源代码

  • 查看irq-pm.c

  • 查看jffs2源代码目录

Busybox简介

BusyBox 是很多标准 Linux工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet(不过它的选项比传统的版本要少);有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。BusyBox 是为构建内存有限的嵌入式系统和基于软盘系统的一个优秀工具。BusyBox 通过将很多必需的工具放入一个可执行程序,并让它们可以共享代码中相同的部分,从而对它们的大小进行了很大程度的缩减,BusyBox 对于嵌入式系统来说是一个非常有用的工具。

  • 已获取busybox源代码

  • 查看解压缩的文件

  • 查看根路径下的INSTALL说明文档

  • 查看README了解Busybox是什么

  • make defconfig之前

  • make defconfig

  • make defconfig后产生三个文件

  • make报错

  • 尝试解决错误(通过修改make defconfig 产生的.config文件,来禁用部分特性)...

  • 再次遇到错误

  • 参考别人的解决方案http://blog.csdn.net/sdcxyz/article/details/22161913

  • 仍然无法解决,然后我去官网下了个编译好了的二进制 ==

  • 使用busybox尝试执行执行ls -l,ifconfig,vim,cat等命令


posted @ 2016-06-28 15:16  敏丞  阅读(1490)  评论(0编辑  收藏  举报