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. day27 Pyhton 面向对象02 组合

    # 组合 # 什么是组合 : 一个类对象的属性是另外一个类的对象 class Person: def __init__(self,name,sex,hp,mp,ad): self.name = nam ...

  2. Jmeter入门(5)- jmeter取样器的HTTP请求

    一.HTTP管理器 位置:线程组右键 ==> 添加 ==> 配置元件 1.HTTP信息头管理器 添加测试计划 添加线程组 添加HTTP请求 添加请求头(HTTP信息头管理器) 设置请求参数 ...

  3. Jmeter入门(2)- 基本使用

    一. JMeter入门脚本 学习例子 向百度发送请求 添加测试计划,默认会有一个测试计划 添加线程组 在测试计划上右键 ==> 添加 ==> 线程(用户) ==> 线程组 添加HTT ...

  4. H5移动端实现图片上传

    转至 :https://blog.csdn.net/qq_37610423/article/details/84319410 效果图: 我在用这个的时候发现博主少写了一些东西,导致功能无法实现,所以我 ...

  5. WSL2和CUDA踩坑

    WSL2和CUDA踩坑   WSL2里可以直接跑cuda了, 目前(2020年10月) 功能可用, 但bug很多, 不够完善     1. 安装     主要参考: https://docs.nvid ...

  6. MySQL全面瓦解:安装部署与准备

    下载与安装 互联网高速时代下,我们的生活发生了巨大的变化,从购物(淘宝.京东),出行(滴滴.快狗),支付(支付宝.微信)等,遍及我们生活的方方面面,我们使用这些系统和应用的时候,会在上面获取.存储大量 ...

  7. python基础三:函数

    def name(参数1,参数2,参数3,...) 可以自定义一些自己需要的函数来简化自己的工作. 如:自定义一个计算函数 def  mycount(a,b,c): y=a+b-c return y ...

  8. C# 实现十六进制Unicode编码字符串转换为汉字

    网上找了几个方法,但是运行之后会报错,提示要解析的字符串格式不正确.然后我猜想可能是传入的字符串 \u60a8\u4eca\u65e5\u5df2\u7b7e\u5230 中带"\" ...

  9. NB-IoT的eDRX模式主要目的是什么

    传统的2.56秒寻呼间隔对UE的电量消耗较大,NB-IoT的eDRX模式主要目的就是支能够持更长周期的寻呼监听,从而达到省电的目的.而在下行数据发送频率小时,通过核心网和用户终端的协商配合,用户终端调 ...

  10. Java SPI 机制实现解耦与本地化

    SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface,可以避免在 Java 代码中写死服务的提供者,而是通过 SPI 服务加载机制进行服务的注册和 ...