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

21-Linux-系统启动详解

2014-02-04 12:56 183 查看


启动流程

BIOS

MBR:Boot Code

执行引导程序 - GRUB

加载内核

执行init

runlevel

1 - BIOS

BIOS, Basic Input Output System, 基本输入输出系统, 存在于主板的BIOS芯片上.

计算机启动首先运行BIOS

作用: 1, 硬件检查(开机自检); 2, 查找可启动设备

可启动设备 具有引导程序, 首512个字节的最后两个字节 为 "55AA" (MBR有效标志)

可启动设备在BIOS中设置顺序, 如 USB(U盘) -> CDROM(光盘) -> HD(硬盘)

挨个查找这些设备的 是否具有 MBR有效标志,

找到第一个就将启动控制权转移给它 (首512个字节的前446个字节, 引导代码)

2 - MBR

BIOS找到可启动设备, 执行其引导代码 boot code

引导代码为MBR的前446个字节, 装OS时 由OS写入的

作用 : 查找并加载 引导程序 grup

3 - GRUB

grub 是现在Linux使用的主流引导程序, 可用来引导绝大多数OS

grub相关文件保存于 /boot/grub 目录

stage1 : 512字节, MBR的镜像

文件系统驱动

e2fs_stage1_5

fat_stage1_5

ffs_stage1_5

iso9660_stage1_5

jfs_stage1_5

minix_stage1_5

reiserfs_stage1_5

ufs2_stage1_5

vstafs_stage1_5

xfs_stage1_5

stage2

grub配置文件 : /boot/grub/grub.conf

default=0 默认启动第0个OS

timeout=5 倒数几秒等待选择启动哪个OS

splashimage=(hd0,1)/boot/grub/splash.xpm.gz 倒数时的背景图片

hiddenmenu 隐藏菜单栏

OS定义



title CentOS (2.6.32-279.el6.i686) 菜单项的名字

root (hd0,1) 根分区的位置. hd- 硬盘; 0,1 - 第0块硬盘, 第0个分区

kernel /boot/vmlinuz-version ro root=/dev/sda2 内核,readonly,根目录

initrd /boot/initramfs-[generic-]version.img 内核模块打包文件

# man initrd : boot loader initialized RAM disk

/boot/initramfs-[generic-]version.img 封装OS所有可能用到的模块(如设备驱动)

4 - Kernel

MBR的引导代码 根据grub.conf文件 找到并加载 Linux内核

Linux内核: /boot/vmlinuz-2.6.32-279.el6.i686

加载内核模块打包文件: /boot/initramfs-2.6.32-279.el6.i686.img

Linux为保持kernel的精简,

将一些不常用的 驱动、功能 编译成模块, 在需要的时候动态加载,

这些模块被打包成一个 initramfs文件

早期Linux使用的是initrd文件, initramfs是initrd的替代优化版本

dmesg命令 可查看本次启动时kernel的输出信息

# dmesg | less

# less /var/log/dmesg

5 - INIT

init 是Linux系统中运行的第一个进程



init进程是所有进程的父进程

/etc/init目录



作用

调用 /etc/rc.d/rc.sysinit 对系统进行初始化

挂载文件系统

根据运行级别启动相应服务

6 - runlevel

运行级别(运行模式)

/etc/inittab 配置默认级别

0 - 关机

1 - 单用户(root)模式

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

3 - 命令行多用户模式

4 - 未使用

5 - X11图形化多用户模式

6 - 重新启动

每个级别对应的启动脚本保存于: /etc/rc.d目录



init命令 : 切换运行级别

# init 3 : 切换到命令行界面

# init 5 : 切换到图形界面

runlevel命令: 显示上一个运行级别 和 当前运行级别

$ runlevel

3 5

扩展

单用户模式

为内核传递参数"1"(数字) 或 "single" 进入单用户模式, 修改root密码

特点

不启动任何服务

直接以root用户登陆, 无需root 密码

可直接使用 passwd命令 设置新的root密码(无需旧密码)

步骤

1. 在启动界面按 上/下方向键 以暂停grub引导



2. 按 "e" 键 编辑高亮的引导条目



3. 选择 kernel, 再按 "e"键 进行编辑



注: 默认 光标在末尾的, 可以按"Home" "End" 左/右方向键 移动光标

4. 在末尾加一个参数"1"(启动级别)即可



注: 需要用空格将前面的 隔开

5. 编辑完后按回车返回, 再按"b"键启动



6. 修改完root密码, 输入exit命令继续 默认的启动



grub加密

1. 生成密码对应的md5码

[root@wuqinfei ~]# grub-md5-crypt

Password:

Retype password:

$1$harQZ1$I.M/fPAb/Xstl.CZSe7WW1

2. 编辑 /boot/grub/grub.conf文件

在第一行添加下面的命令

password --md5 $1$harQZ1$I.M/fPAb/Xstl.CZSe7WW1

注: 编辑 /etc/grub.conf文件同样有效

3. 编辑启动条目时需要输入密码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: