linux开机启动及运行级别、root密码丢失、单用户模式只读的处理方法
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 / |
linux开机启动及运行级别、root密码丢失、单用户模式只读的处理方法的更多相关文章
- 忘记root密码怎么办-单用户模式修改root密码
忘记root密码怎么办-单用户模式修改root密码================================= 1,开机3秒内按下向下的方向键,目的是为了不让它进入系统,而是停留在开机界面. 2 ...
- Linux:运行级别,root密码重置,救援模式,安装图形化界面
运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...
- Linux开机流程及运行级别
启动流程: 没有运行程序的硬件除了会电人,没有别的用处.那么计算机是如何识别软件并执行的呢?下面介绍操作系统的开机启动流程: BIOS:开机时主动执行的第一个程序,会识别存储设备. MBR:第一个可开 ...
- Linux进入单用户模式的两种方法
单用户模式的作用 在使用Linux系统中,维护人员经常会碰到一个问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的方 ...
- Linux单用户模式(修改密码、运行级别)方法详解
很多新手当面对"忘记 root 账户密码导致无法登陆系统"这个问题时,直接选择重新系统.其实大可不必,我只需要进入 emergency mode(单用户模式)更新 root 账户的 ...
- Linux实用指令(1):运行级别&找回密码&帮助指令&文件目录类
指令运行级别: 0 :关机 1 :单用户[找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是3和5 ,要修改 ...
- linux单用户模式修改密码与系统启动级别
目录 一:系统启动级别 二:单用户模式修改密码 一:系统启动级别 系统启动级别: 0 关机 1 单用户模式(无法通过xshell方式使用)(虚拟机操作)(系统云服务商后台) 2 多用户无网络模式 3 ...
- CentOS单用户模式下修改ROOT密码和grub加密
Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务.如果系统管理员需要进行系统维护或系统出现启动异常时 ...
- centos单用户模式:修改ROOT密码和grub加密
centos单用户模式:修改ROOT密码和grub加密 CentOSLinux网络应用配置管理应用服务器 Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 ...
随机推荐
- day27 Pyhton 面向对象02 组合
# 组合 # 什么是组合 : 一个类对象的属性是另外一个类的对象 class Person: def __init__(self,name,sex,hp,mp,ad): self.name = nam ...
- Jmeter入门(5)- jmeter取样器的HTTP请求
一.HTTP管理器 位置:线程组右键 ==> 添加 ==> 配置元件 1.HTTP信息头管理器 添加测试计划 添加线程组 添加HTTP请求 添加请求头(HTTP信息头管理器) 设置请求参数 ...
- Jmeter入门(2)- 基本使用
一. JMeter入门脚本 学习例子 向百度发送请求 添加测试计划,默认会有一个测试计划 添加线程组 在测试计划上右键 ==> 添加 ==> 线程(用户) ==> 线程组 添加HTT ...
- H5移动端实现图片上传
转至 :https://blog.csdn.net/qq_37610423/article/details/84319410 效果图: 我在用这个的时候发现博主少写了一些东西,导致功能无法实现,所以我 ...
- WSL2和CUDA踩坑
WSL2和CUDA踩坑 WSL2里可以直接跑cuda了, 目前(2020年10月) 功能可用, 但bug很多, 不够完善 1. 安装 主要参考: https://docs.nvid ...
- MySQL全面瓦解:安装部署与准备
下载与安装 互联网高速时代下,我们的生活发生了巨大的变化,从购物(淘宝.京东),出行(滴滴.快狗),支付(支付宝.微信)等,遍及我们生活的方方面面,我们使用这些系统和应用的时候,会在上面获取.存储大量 ...
- python基础三:函数
def name(参数1,参数2,参数3,...) 可以自定义一些自己需要的函数来简化自己的工作. 如:自定义一个计算函数 def mycount(a,b,c): y=a+b-c return y ...
- C# 实现十六进制Unicode编码字符串转换为汉字
网上找了几个方法,但是运行之后会报错,提示要解析的字符串格式不正确.然后我猜想可能是传入的字符串 \u60a8\u4eca\u65e5\u5df2\u7b7e\u5230 中带"\" ...
- NB-IoT的eDRX模式主要目的是什么
传统的2.56秒寻呼间隔对UE的电量消耗较大,NB-IoT的eDRX模式主要目的就是支能够持更长周期的寻呼监听,从而达到省电的目的.而在下行数据发送频率小时,通过核心网和用户终端的协商配合,用户终端调 ...
- Java SPI 机制实现解耦与本地化
SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface,可以避免在 Java 代码中写死服务的提供者,而是通过 SPI 服务加载机制进行服务的注册和 ...