linux系统启动大致步骤如下:

 加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程

linux系统启动流程可细分为10步:

加载BIOS-----读取MBR------Boot
Loader---加载内核---用户层init依据inittab文件来设定运行等级/sbin/init---init进程执行rc.sysinit-----启动内核模块----执行不同运行级别的脚本程序---执行/etc/rc.d/rc.local----执行/bin/login程序,进入登录状态。

1加载BIOS(basic
input/output
system   基本输入/出系统)

你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

2 .读取MBR(Master Boot
Record 主引导记录)

众所周知,硬盘上第0磁道第一个扇区(最外面的磁道)被称为MBR,也就是Master Boot
Record,即主引导记录,它的大小是512字节,里面存放了预启动信息、分区表信息。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到物理内存中。其实被复制到物理内存的内容就是Boot
Loader,而具体到你的电脑,那就是lilo或者grub了。

3.Boot Loader(启动加载器)

就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。

系统读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统。

4.加载内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting
the kernel”。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。先加载Initramfs-2.3..是内存映像文件. 
再加载Vmliunz-2.6..是内核文件.都在boot目录下.

5.启动第五步:用户层init依据inittab文件来设定运行等级/sbin/init

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是id:runlevels:action:process

如“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。

id:它是每个登记项的标识符,用于唯一标识每个登记项,不能重复 runlevels:系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,各级别之间直接写不用分隔符;如果为空,表示在所有的运行级别运行。Linux的运行级别有:

0:表示关机

1:表示单用户模式,在这个模式中,用户登录不需要密码,默认网卡驱动是不被加载,一些服务不能用。

2:表示多用户模式,NFS服务不开启

3,表示命令行模式

4,这个模式保留未用

5,表示图形用户模式

6,表示重启系统

6.启动第六步--init进程执行rc.sysinit.

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。

7.启动第七步--启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

8.启动第八步--执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

具体位置:/etc/rc.d/

[root@lbg test]# cd /etc/rc.d

[root@lbg rc.d]# ls

init.d  rc0.d 
rc1.d  rc2.d 
rc3.d  rc4.d 
rc5.d  rc6.d  rc.local

其中rc*.d里面其实都是软链接文件,指向的是init.d里关于服务的启停脚本.

[root@lbg rc.d]# cd rc5.d/

[root@lbg rc5.d]# ll

lrwxrwxrwx. 1 root root 20 Oct  1 11:54
K50netconsole -> ../init.d/netconsole

lrwxrwxrwx. 1 root root 17 Oct  1 11:54 S10network
-> ../init.d/network

[root@lbg rc5.d]# cd ../init.d/

[root@lbg init.d]# ll

-rw-r--r--. 1 root root 17500 May 
3  2017 functions

-rwxr-xr-x. 1 root root  4334
May  3  2017
netconsole

-rwxr-xr-x. 1 root root  7293
May  3  2017 network

-rw-r--r--. 1 root root  1160
Aug  5  2017 README

说明:/etc/rc.d/rc5.d里软链接如果是k开头,则是开机不启动(kill),以s开头,则是开机自启动(start).

init.d里是关于服务的启停脚本.

9.启动第九步--执行/etc/rc.d/rc.local

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

10.启动第十步--执行/bin/login程序

进入登录状态.此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。漫长的启动过程结束了,一切都清静了.后面就是/etc/nsswitch/conf名字服务,再到/etc/passwd里根据对应用户启动默认的shell.

root密码忘了的处理方法:

 开机按上下键进入:(选择操作系统)

按e 进入下一步(edit)

选到kernel,再按e.

输入 空格 1 回车键.

跳回上步页面,依旧选择kernel,输入b(boot),回车.就可进入单用户模式,再改密码(passwd)后reboot即可.

进入单用户模式操作系统依旧是只读的处理方法:

 如/etc/fstab.里写错了,进入单用户模式依旧是只读,没法处理.

处理方法是:进入单用户模式,然后 mount -o remount,rw /
    --重新挂载根目录,权限是rw. 
  --o,指option.

linux开机启动及运行级别、root密码丢失、单用户模式只读的处理方法的更多相关文章

  1. 忘记root密码怎么办-单用户模式修改root密码

    忘记root密码怎么办-单用户模式修改root密码================================= 1,开机3秒内按下向下的方向键,目的是为了不让它进入系统,而是停留在开机界面. 2 ...

  2. Linux:运行级别,root密码重置,救援模式,安装图形化界面

    运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...

  3. Linux开机流程及运行级别

    启动流程: 没有运行程序的硬件除了会电人,没有别的用处.那么计算机是如何识别软件并执行的呢?下面介绍操作系统的开机启动流程: BIOS:开机时主动执行的第一个程序,会识别存储设备. MBR:第一个可开 ...

  4. Linux进入单用户模式的两种方法

    单用户模式的作用 在使用Linux系统中,维护人员经常会碰到一个问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的方 ...

  5. Linux单用户模式(修改密码、运行级别)方法详解

    很多新手当面对"忘记 root 账户密码导致无法登陆系统"这个问题时,直接选择重新系统.其实大可不必,我只需要进入 emergency mode(单用户模式)更新 root 账户的 ...

  6. Linux实用指令(1):运行级别&找回密码&帮助指令&文件目录类

    指令运行级别: 0 :关机 1 :单用户[找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启   常用运行级别是3和5 ,要修改 ...

  7. linux单用户模式修改密码与系统启动级别

    目录 一:系统启动级别 二:单用户模式修改密码 一:系统启动级别 系统启动级别: 0 关机 1 单用户模式(无法通过xshell方式使用)(虚拟机操作)(系统云服务商后台) 2 多用户无网络模式 3 ...

  8. CentOS单用户模式下修改ROOT密码和grub加密

    Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务.如果系统管理员需要进行系统维护或系统出现启动异常时 ...

  9. centos单用户模式:修改ROOT密码和grub加密

    centos单用户模式:修改ROOT密码和grub加密 CentOSLinux网络应用配置管理应用服务器  Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 ...

随机推荐

  1. SpringBoot整合Elasticsearch游标查询(scroll)

    游标查询(scroll)简介 scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价. 游标查询会取某个时间点的快照数据. 查询初始化之后 ...

  2. 谈谈FTP

    一.关于FTP 1.FTP是什么? FTP,全称"文件传输协议".属于TCP/IP四层模型中的应用层. 2.TCP/IP五层模型有哪些? 如图所示: 用文字叙述(从高层到底层): ...

  3. go 正则 爬取邮箱代码

    package main import ( "net/http" "fmt" "io/ioutil" "regexp" ...

  4. anaconda 取消每次默认启动base环境

    安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境 方法一: 每次在命令行通过conda deactivate退出base环境回到系统自动的环境 方法二 1,通过将a ...

  5. CentOS下编译搭建LAMP环境

    搭建LAMP环境须知 搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装.但是在安装PHP之前,应先安装PHP5需要的最新 ...

  6. Drone 安装教程

    Drone 安装教程 一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/ ...

  7. Spring Boot入门系列(二十一)如何优雅的设计 Restful API 接口版本号,实现 API 版本控制!

    前面介绍了Spring Boot 如何快速实现Restful api 接口,并以人员信息为例,设计了一套操作人员信息的接口.不清楚的可以看之前的文章:https://www.cnblogs.com/z ...

  8. final修饰注意事项

    StringBuilder , StringBuffer ,String 都是 final 的,但是为什么StringBuilder , StringBuffer可以进行修改呢,因为不可变包括的是,引 ...

  9. 爬虫在linux下启动selenium-安装谷歌浏览器和驱动(傻瓜式教程)

    一.升级yum(防止不必要的麻烦) yum update -y yum -y groupinstall "Development tools" yum install openss ...

  10. centos下搭建Jenkins持续集成环境

    1.安装JDK yum install -y java 2.安装jenkins 添加Jenkins库到yum库,Jenkins将从这里下载安装. 1 wget -O /etc/yum.repos.d/ ...