嵌入式项目实践中(一般会用到u-boot kernel busybox 应用程序),内核只是整个代码项目中的一部分,目的是为了启动最终的应用程序且为其提供基本的操作系统层面支撑,学习内核应该对整个的代码架构有个整体的把握,明白内核在整个代码中的位置:
1.u-boot简介
U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开放源码项目,是一套在GNU通用公共许可证之下发布的自由软件。
U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze等诸多常用系列的处理器。
2.linux内核简介
Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。
Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些 Minix 黑客提供了协助,而如今全球无数程序员正在为该计划无偿提供帮助。
3.busybox简介
Busybox是⼀个开源项⽬,遵循GPL v2协议。Busybox将众多的UNIX命令集合进⼀个很⼩的可执⾏程序中,可以⽤来替代GNU fileutils、shellutils等⼯具集。Busybox中各种命令与相应的GNU⼯具相⽐,所能提供的选项⽐较少,但是也⾜够⼀般的应⽤了。Busybox主要⽤于嵌⼊式系统。
4.u-boot linux内核 busybox以及应用程序的联系
cpu的片内IROM启动uboot;
uboot加载根文件系统镜像、加载内核镜像,设备树,解压内核镜像,启动内核kernel;
kernel最终启动三个进程:
其中idle属于内核的空闲进程,即0号进程,就是空跑;
kernel_init进程,即1号进程,最终加载用户进程;
kthreadd进程,即2号进程,用来管理内核的其他进程的
kernel_init实现挂载根文件系统,启动根文件系统中的init进程(一般为busybox的linuxrc),最终启动应用程序。



