下面是一张linux启动流程图:

在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为:

1. /sbin/init

2. /etc/inittab

3. /etc/rc.d/rc.sysinit

4. /etc/rc.d/rcN.d //这是几个文件夹N代表数字1,2,3,4..

5. /etc/fstab

1.关于/sbin/init与/etc/inittab

关于/sbin/init ,它是一个二进制可执行文件,为系统的初始化程序,而/etc/inittab是它的配置文件,我们可以通过/etc/inittab来一睹 它的功能, 里面的内容是一种固定的文本格式,id:runlevels:action:process

我们来通过它的内容来学习它之前,先了解写运行级别的分类(0-6):

0: 关机 half

1: 单用户模式 singel user

2: 多用户模式 multi user , 不提供nfs服务 without nfs

3: 完全多用户字符模式 full multiuser text mod

4: 系统预留 officially undefined

5: 图形登录界面 graphical login

6: 重启 reboot

[html] view plaincopy
  1. id:3:initdefault:                                 //这里定义linux的启动时的运行级别,可以看到我的主机的启动级别是3
  2. # System initialization.
  3. si::sysinit:/etc/rc.d/rc.sysinit                  //紧接着,运行系统第一个脚本/etc/rc.d/rc/sysinit
  4. //它的action:sysyinit指的是定义系统初始化过程
  5. l0:0:wait:/etc/rc.d/rc 0
  6. l1:1:wait:/etc/rc.d/rc 1
  7. l2:2:wait:/etc/rc.d/rc 2                         //然后就是加载服务了,他们被定义在/etc/rc.d/rcN.d
  8. l3:3:wait:/etc/rc.d/rc 3                         //action:waite 这个进程在在对应级别启动一次,知道它结束为止,我的系统启动级别为3,所有执行rc 3对应的服务
  9. l4:4:wait:/etc/rc.d/rc 4
  10. l5:5:wait:/etc/rc.d/rc 5
  11. l6:6:wait:/etc/rc.d/rc 6
  12. ca::ctrlaltdel:/sbin/shutdown -t3 -r now        //这里定义了一个组合快捷键,熟悉吧,没错就是重启,你可以把它注释掉不用
  13. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"  //这里定义了ups电源,powerfail 指的是如果突然断电,它对应的process命令是,提示用户系统电源失效,将要关机,提醒用户把数据都存储好
  14. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"  //这里的action,powerokwaite,指的是系统恢复供电,关机取消...
  15. 1:2345:respawn:/sbin/mingetty tty1           //开启终端,在系统准备工作做好后,就会启动出6个终端,tty1~6 mingetyy就是终端的执行命令
  16. 2:2345:respawn:/sbin/mingetty tty2           //可以看到他们对应的级别是2345,你也可以注释掉几个,这样启动后,就会开启你指定个数的终端...
  17. 3:2345:respawn:/sbin/mingetty tty3           //这里的动作respawn意思是如果用户关闭,那么这个进程会立刻再次执行
  18. 4:2345:respawn:/sbin/mingetty tty4
  19. 5:2345:respawn:/sbin/mingetty tty5
  20. 6:2345:respawn:/sbin/mingetty tty6
  21. x:5:respawn:/etc/X11/prefdm -nodaemon       //当一切准备完毕,就会运行守护进程,它是不分运行级别的,同样也是respawn

2. 关于etc/rc.d/rc.sysyinit 和 /etc/rc.d/rc.Nd

在inittab文件中,我们了解到rc.sysinit是系统运行的第一个脚本,那么它的作用都有哪些呢?如果有shell脚本基础的话可以用vim打开这个文件来看看,它有900多行...是linux里最牛的脚本,总结下它的作用,有如下几点:(一定要牢记,必要时我们要重写它!

1. 激活udev和selinux

2. 通过读取/etc/sysct1.conf来设置内核参数

3. 设置系统时钟

4. 设置键盘映射

5. 启动交换分区。

6. 设置主机名

7. 检查跟文件系统,并且如果没有错误,以读写的方式来重新挂载文件系统 (重要)

8. 激活raid和lvm设备

9. 启动磁盘限额

10 挂载其他/etc/fstab里定义的尚未被挂载的设备

11. 清理过时的文件锁和PID文件

12. 启动服务/etc/rc.d/rcN.d

/etc/rc.d/rcN.d 是一个存放了系统启动是加载的服务的文件夹,通过inittab,我们知道了,它的编号对应相应的启动运行级别。

需要说明的是,它里面的文件,以我的为例 以K开头的代表stop,以S开头的代表启动start,数字越小,有限级别越高

[html] view plaincopy
  1. [root@server69 rc.d]# cd rc3.d
  2. [root@server69 rc3.d]# ls
  3. K01dnsmasq         K74nscd             S08ip6tables    S25bluetooth   S85gpm
  4. K02avahi-dnsconfd  K85mdmpd            S08iptables     S25netfs       S90crond
  5. K02NetworkManager  K87multipathd       S08mcstrans     S25pcscd       S90xfs
  6. K05conman          K88wpa_supplicant   S10network      S26acpid       S95anacron
  7. K05saslauthd       K89dund             S11auditd       S26apmd        S95atd
  8. K10psacct          K89netplugd         S12restorecond  S26haldaemon   S97rhnsd
  9. K20nfs             K89pand             S12syslog       S26hidd        S97yum-updatesd
  10. K24irda            K89rdisc            S13irqbalance   S28autofs      S98avahi-daemon
  11. K35vncserver       K99readahead_later  S13portmap      S50hplip       S99firstboot
  12. K35winbind         S00microcode_ctl    S14nfslock      S55sshd        S99local
  13. K50ibmasm          S02lvm2-monitor     S15mdmonitor    S56cups        S99smartd
  14. K50netconsole      S04readahead_early  S18rpcidmapd    S56rawdevices
  15. K69rpcsvcgssd      S05kudzu            S19rpcgssd      S58ntpd
  16. K73ypbind          S06cpuspeed         S22messagebus   S80sendmail

3./etc/fstab文件

它定义了系统初始化挂载的设备,对系统的启动至关重要,rc.sysinit通过读取它来实现系统分区的挂载

它的内容如何呢?我们一起来看下

要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率 文件自检次序

[html] view plaincopy
  1. /dev/sda2               /                       ext3    defaults        0 0
  2. /dev/sda1               /boot                   ext3    defaults        0 0
  3. sysfs                   /sys                    sysfs   defaults        0 0
  4. proc                    /proc                   proc    defaults        0 0

我截取了4个系统启动时必须挂载的设备

/ 根文件目录,由它你才可以进入linux的世界,它在/dev/sda2里

/boot 启动目录,在/下,里面有grub,initrd和系统内核,它在/dev/sda1

sysfs 一个虚拟的文件系统,产生包含所有硬件层次视图,和/proc类似

proc 这是一个虚拟的目录,它映射内存里的信息对应进程信息,也就是说它对应的是内存而不是硬盘

好了,了解了这些文件和目录的作用,我们在回过头来看那张流程图:

1. linux开机从POST加电自检开始,当自检完成,读取第一个硬盘的第0个磁头里的前446个字节,运行里面的bootloader,linux一般   用的是grub。
2. 通过grub传递参数给内核,初始化加载内核过程,内核调用initrd(小型内存文件系统,五脏俱全,是一个微型linux),通过     initrd,以只读方式挂载根文件系统
3. 当根文件系统被挂载后,就会读取并运行/sbin/init来进行初始化工作。
4. 按次序依次执行/rc/sysinit ,这个时候会重新以读写的方式挂载根文件系统
5. 读取/etc/rc.d/rcN.d/来启动以s开头的服务,停止以k开头的服务

6. 当一切准备完毕,打印终端,出现熟悉的Login界面!(当然,如果你是以5级别启动的话,Linux就会启动图形界~)

转自: http://blog.csdn.net/haiwil/article/details/6763673

linux文件系统启动流程 ---笔记整理相关推荐

  1. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程

    转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...

  2. linux操作系统启动流程与kickstart文件制作

    文章目录 一.Linux操作系统启动流程 1.1.简单回顾linux系统组成以及内核作用 1.2.简单了解一下磁盘构成以及相关基础知识 二.CentOS 启动流程(只适用于MBR类型的PC架构主机) ...

  3. Linux的系统启动流程

    Linux的系统启动流程 一.systemd进程介绍 1.systemd服务介绍 2.systemd功能 3.服务单元 3.查看以激活状态的服务单元 4.查看服务之间的依赖关系 二.Linux的运行级 ...

  4. linux内核ufs设备树,Linux内核初始化流程笔记

    Linux内核初始化流程笔记 分类: LINUX 作者:gfree.wind@http://www.doczj.com/doc/fc580419c1c708a1294a4409.html 博客:htt ...

  5. 嵌入式linux文件系统启动,嵌入式Linux之文件系统启动分析【原创】

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_094068082086089066084084095095080087080066082082083075' ...

  6. Linux文件IO-例会笔记总结

    上周日实验室例会主要涉及linux文件操作的内核实现.主要讨论了linux下对文件进行操作时,系统内部调用了那些函数以及它们是怎么相互配合的. linux系统是怎样对不同介质和不同的文件系统提供统一的 ...

  7. Linux操作系统启动流程简单介绍

    Linux 系统的启动,从计算机开机通电自检开始,一直到登陆系统,需要经历多个过程.了解 Linux操作系统的启动过程,对Linux操作系统更深入认识和日常的运维工作非常有帮助,感兴趣的朋友可以了解一 ...

  8. Linux 操作系统启动流程以及trouble shooting

    2019独角兽企业重金招聘Python工程师标准>>> 最近在某个版块看到有人讨论GRUB的问题,这里是我个人的一些理解. 我想大部分还是正确的,但肯定也有理解错误的地方,在这里抛砖 ...

  9. Linux文件操作实用笔记

    Linux系统遵循一切皆是操作文件的规则.所以想用好Linux系统,就必须要掌握文件相关的操作. 1.创建文件命令:touch 语法格式: touch filename #filename 文件名称. ...

最新文章

  1. 2018-3-5(论文——网络中非结构信息的表示与应用)笔记二 (歧义词,未登录词,禁用词)
  2. 数据结构之二分查找(折半查找)
  3. Matplotlib基础绘图功能 — 以折线图为例
  4. 实验:安装windows server 2008 R2
  5. 从零开始搭建系统2.1——Nexus安装及配置
  6. centos7.2下安装mysql5.7数据库
  7. 【Python】6000字、22个案例详解Pandas数据分析/预处理时的实用技巧,超简单
  8. 一起开心寒假训练总复习
  9. Idea 集成Lombok插件
  10. Lucas定理(求组合数,例题FZU2020,HDU3944)
  11. 互联网协议理解(入门)
  12. Java图形化界面编程之——Swing
  13. cs架构(cs架构和bs架构的区别)
  14. Flutter 画面渲染的全面解析
  15. 语言的翻译叫什么_翻译翻译,什么叫惊喜!
  16. restrict / __restrict / __restrict__ 关键字
  17. 第二代机器人操作系统课程资料汇总 Course Learning Materials for ROS2 2019.10.23
  18. matlab hold on解释,matlab中hold on怎么用
  19. 阿龙的学习笔记---《程序员自我修养-链接、装载与库》读书笔记(一)
  20. 【工业智能】知识进化论:卓越运营是如何拥抱工业智能,如虎添翼的?

热门文章

  1. 伪元素控制网页表单样式
  2. 详细讲解Hyper-V虚拟机的网络配置
  3. PHP5.4.3,有些插件不是你想用就能用的
  4. adodb.stream文件操作类
  5. 吴恩达 coursera AI 第四课总结+作业答案
  6. res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)
  7. Zero Copy 简介
  8. linux环境将python程序做成可执行
  9. 【笔记】基于轻量和积网络及无人机遥感图像的大豆田杂草识别
  10. 科大星云诗社动态20210222