linux启动过程

原创 2015年11月18日 08:42:10

启动5大阶段:

1.内核引导
2.运行init
3.系统初始化
4.建立终端
5.用户登录

内核引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。

操作系统—>/boot—>

运行init
内核被加载后,第一个运行的程序便是/sbin/init,init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。init进程会读取/etc/inittab文件,并依据此文件来进行初始化工作。(关于inittab文件后续说明)

操作系统—>/boot—>init进程—>

系统初始化
相关文件:
1./etc/rc.d/rc.sysinit
rc.sysinit是由init执行的第一个脚本,它主要完成一些系统初始化的工作。rc.sysinit是每一个运行级别都要首先运行的重要脚本,它主要完成的工作有:激活交换分区、检查磁盘、加载硬件模块以及其他一些需要优先执行的任务。/etc/rc.d/ rc.sysinit主要完成各个运行模式中相同的初始化工作。

2./etc/rc.d/rcX.d/
在rc.sysinit执行后,将返回init程序,继续执行/etc/rc.d/rc程序。(根据inittab文件)

3./etc/ec.d/rc.local
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。可以在这里加上在开机启动后要执行的命令等。。。

操作系统—>/boot—>init进程—>系统初始化—>

建立终端
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。在inittab定义终端,定义后将会按照定义方式(如respawn方式)运行mingetty程序,mingetty程序能打开终端、设置模式。同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

操作系统—>/boot—>init进程—>系统初始化—>建立终端—>

用户登录
执行/bin/login程序,login程序会提示使用者输入账号及密码,接着编码并确认密码的正确性,如果账号与密码相符,则为使用者初始化环境,并将控制权交给shell,即等待用户登录。

login会接收mingetty传来的用户名作为用户名参数,然后login会对用户名进行分析。如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来在系统维护时防止非root用户登录。只有在/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其他信息,比如:主目录什么、使用何种shell。如果没有指定主目录,则将主目录默认设置为根目录;如果没有指定shell,则将shell类型默认设置为/bin/bash。

Login程序成功后,会向对应的终端再输出最近一次登录的信息(在/var/log/lostlog中有记录),并检查用户是否有新邮件(在/usr/spool/mail的对应用户名目录下),然后开始设置各种环境变量。对于bash来说,系统首先寻找/etc/profile脚本文件并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其他配置文件,所有的配置文件执行后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示符,至此整个启动过程就结束了。

操作系统—>/boot—>init进程—>系统初始化—>建立终端—>用户登录—>结束

linux启动流程概述

参考:《鸟哥的linux私房菜》 1、BIOS阶段 主板上的BIOS为块flash或EEPROM程序,他会从主板上的CMOS硬件资讯,这些硬件资讯是可以通过BIOS程序修改。、、 BIO...
  • javaUTU
  • javaUTU
  • 2011年11月26日 10:44
  • 784

ARM-Linux嵌入式系统启动流程

学习嵌入式
  • zy812248258
  • zy812248258
  • 2014年09月03日 12:58
  • 3237

浅析嵌入式Linux系统的构成和启动过程

在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结。  一、嵌入式Linux系统...
  • gary531
  • gary531
  • 2013年09月11日 14:08
  • 4008

linux系统启动过程分析

本文转载自:http://blog.chinaunix.net/uid-23069658-id-3142047.html 经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东...
  • miss_acha
  • miss_acha
  • 2015年11月24日 00:03
  • 7015

linux 系统启动过程分析

Linux 3.10 版本,平台ARM7,uboot Linux系统的一般启动过程通常划分为内核引导、内核启动和应用程序启动3个阶段,如下图所示(摘自:ARM 嵌入式LINUX系统 开发 8.2节)...
  • liujiaoyage
  • liujiaoyage
  • 2014年07月18日 16:36
  • 2302

关于嵌入式Linux系统的启动(很好的嵌入式linux启动过程分析)

lw:虽然zImage的开头是head_armv.S的8个空循环,但是实际是先执行compressed/head.S进行解压操作。=================================#1...
  • ryman
  • ryman
  • 2005年07月12日 21:26
  • 16373

在linux启动过程打印调试信息

在linux内核启动入口打印调试信息 上网查到linux内核启动入口在head.S,例如我现在用的是arm,就是arch/arm/kernel/head.S。head.S里有一个过程stext。 ...
  • cmm20071020
  • cmm20071020
  • 2011年12月06日 16:46
  • 2048

Linux 内核启动流程

转载自 http://wenku.baidu.com/link?url=KpOdULJu1CxP1swqRs_Szoyg5r_8rje4N08o4QtB5L9QlPjWesTYlrTPgkxPOriF...
  • zhqh100
  • zhqh100
  • 2015年06月18日 09:54
  • 1453

《Linux内核分析》(三)——跟踪分析Linux内核的启动过程

作者:徐恒 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境:c+Lin...
  • FIELDOFFIER
  • FIELDOFFIER
  • 2015年08月16日 21:29
  • 1988

学习嵌入式Linux-JZ2440-启动过程分析

首先,分析几种存储: 1>几种存储器 SRAM:SRAM(Static Random Access Memory),即静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路...
  • xiaoxiongli
  • xiaoxiongli
  • 2015年11月04日 14:24
  • 1121
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux启动过程
举报原因:
原因补充:

(最多只允许输入30个字)