您的位置:首页 > 运维架构 > Linux

Linux入门-8 Linux系统启动详解

2018-02-11 13:10 288 查看
系统启动流程

BIOS

MBR

GRUB

KERNEL

INIT

单用户修改root密码

GRUB加密

系统启动流程

BIOS

MBR: Boot Code

执行引导程序 - GRUB

加载内核

执行init

runlevel

BIOS

Basic Input Output System,一般保存在主板的BIOS芯片中

计算机启动时首先运行BIOS,负责检查硬件并且查找可启动设备

可启动设备在BIOS设置中进行定义,如USB, CDROM, HD

MBR

不同的系统有不同的MBR

BIOS找到可启动设备后执行其引导代码

引导代码为MBR的前446字节

GRUB

MBR一般会作为跳转,启动一个更复杂的引导程序,比如GRUB

Grub是现在Linux使用的主流引导程序

可以用来引导现在几乎所有的操作系统,pe也是grub引导的

Grub的相关文件保存在
/boot/grub
目录中

stage1(MBR) -> xxx_stage1_5(file system driver) -> stage2

Grub配置文件为
/boot/grub/grub.conf


配置格式:

default=0 # 第一个引导程序
timeout=5 # 停留时间
splashimage=(hd0,1)/boot/grub/splash.xpm.gz # 引导界面背景
hiddenmenu # 默认隐藏菜单
title CentOS # 操作系统名称
root (hd0,1) # 操作系统所在分区,第一块硬盘第二个分区
# 内核以及传递给内核的参数(ro root=...),用空格分开
kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=...
# initial ram file system,内核模块打包文件
initrd /boot/initramfs-2.6.32-431.el6.x86_64.img

KERNEL

MBR的引导代码将负责找到并加载Linux内核

Linux内核保存在
/boot/vmlinuz-2.6.32-431.el6.x86_64


一般还会加载内核模块打包文件
/boot/initramfs-2.6.32-431.el6.x86_64.img


Linux为保持kernel的精简将一些不常用的驱动、功能编译成为模块,在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件

早期版本Linux使用initrd文件,initramfs是initrd的替代优化版本,比initrd更加节省空间、更加灵活

命令
dmesg
或者
/var/log/dmesg
文件可以查看本次启动时内核的输出信息

INIT

init(
/sbin/init
)是Linux系统中运行的第一个进程,所有进程的父进程。

调用
/etc/rc.d/rc.sysinit
负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务

Linux运行级别(runlevel):

- 0
关机

- 1
单用户模式

- 2
不带网络的多用户模式

- 3
多用户模式

- 4
未使用

- 5
X11图形化模式

- 6
重启

可以通过
/etc/inittab
配置文件修改默认的运行级别

etc/init/
下的文件是其他配置信息

每个级别对应的启动服务保存在
/etc/rc.d/rc[0-6].d/


runlevel
可显示当前及上一个运行级别

init
可用以改变当前运行级别

单用户修改root密码

为内核传递参数
1
single
可进入单用户模式

单用户模式下不启动任何服务

单用户模式直接以root用户登录,并且需要密码

可以使用passwd修改root密码

GRUB加密

通过在grub.conf中的启动配置中加入如下参数即可

password --md5 $1$aoWpTe$/MWUUYbBIF.2RUZK8nbWU0


加密后的密码可以通过
grub-md5-crypt
生成

另外,可以参考阮一峰的博客:

计算机是如何启动的

Linux的启动流程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: