这篇我们讲解linux的通用启动流程,按照我们一贯的方式总分总的节奏,因为后面的每个子系统也很大,所以我们讲解子系统的时候也是按照总分总的方式。注意因为基于linux的各式各样的操作系统绝对不下100个,像嵌入式,然后我们的桌面有fedora,redhat,centos,debian,ubuntu以及最近操作系统国产化的麒麟,uos等,甚至手机智能电视车载几乎一统天下的android系统。路由器通常使用的openwrt等。无一例外他们的内核都是linux,我后面统一称为linux-base的操作系统。这里的linux我称作狭义的操作系统,它仅仅有内核,像这些android,uos,ubutbu等我们统一称为广义的操作系统。他们不仅仅有内核,还有和用户交互的各种各样,各个领域的系统服务(用户态的子系统,像显示管理,桌面系统管理,用户管理,管理鼠标键盘等输入输出管理,应用安装管理,文件系统管理等等)
我们以linux-base的系统为例子,来说明这些系统的组成和启动流程以及各个阶段的作用。
基于linux的操作系统,kernel和rootfs改动基本不大,最大的区别在于最上面这一层,不同应用领域差别很大,同一个领域在这一层又差别很小哈哈。kernel里面通常是各个系统可以实现自己的一些特殊的子系统,比如android为了支撑上层用户态的service的通信在kernel里面添加了新的一种进程间通信方式binder,Android的/dev/binder这个这个节点就是android为了应用通信模糊化实现的节点