Table of Contents
- centos 操作系统启动流程
- centos6 以前启动流程
- centos7 启动流程
- Grub 管理
- grub legacy 的三个阶段
- grub 安装
- grub 临时启动
- grub.conf 简化格式
- 修复 grub
- grub 其它常用
- 破解 root 口命
- grub 2.x
- 临时设置内核参数
- 破解 root 口命
- grub 加口命
centos 操作系统启动流程
centos6 以前启动流程
- 加载 BIOS 信息,使用 ROM 中的程序开启 MBR 引导引导程序.
- MBR 引导程序启动,加载 GRUB.
- GRUB 开始加载内核,核心解压缩,并尝试所有驱动硬件.
- 核心执行 init,并获取默认运行信息.
- init 进程执行/etc/rc.d/rc.sysinit.
- 启动内核的一部分模块.
- init 执行/etc/rc.d/rc 脚本与/etc/rc#.d/*下的脚本.
- init 执行/etc/rc.d/rc.local 脚本.
- 执行/bin/login 进入等待登录状态.
- 登录后以 shell 控制主机
centos7 启动流程
- UEFi 或 BIOS 初始化,运行 POST 开机自检
- 选择启动设备
- 引导装载程序 grub2
- 加载装载程序的配置文件:
- etc/grub.d
- /etc/default/grub
- /boot/grub2/grub.cfg
- 加载 initramfs 驱动模块
- 加载内核选项
- 内核初始化,使用 systemd
- 执行 initrd.target 所有单元,包括挂载
- 从 initramfs 根文件系统切换到磁盘根目录
- systemd 执行默认 target 配置,配置文件/etc/systemd/system/default.target
- systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统
- systemd 启动 multi-user.target 下的本机与服务器服务
- systemd 执行 multi-user.target 下的/etc/rc.d/rc.local
- Systemd 执行 multi-user.target 下的 getty.target 及登录服务
- systemd 执行 graphical 需要的服务
Grub 管理
早期使用 grub 0.97:grub legacy.
后期多见 grub 2.x:grub2
grub legacy 的三个阶段
stage1:mbr,此阶段被破坏后 grub 无法启动,可用救援模式 grub 安装
stage15:mbr 后的扇区,识别 stage2 所在的文件系统.此阶段被破坏后只能进入 grub 命令行,可在 grub 下临时启动,进入后修复
stage2:分区/boot/grub
grub 安装
- 命令安装,有通用性
将 grub stage1 和 stage15 安装到/dev/DISK 上并复制 GRUB 文件到 DIR/boot 下,DIR 默认为当前系统的根
grub-install --root-directory=DIR /dev/DISK
- 交互安装,仅用于/boot/grub/stage1 文件存在时有用
grub
:进入 grub 命令行
root (hd#,#)
:设置 boot 分区位置
setup (hd#)
:安装 grub
grub 临时启动
root (hd#,#)
:设置 boot 分区位置
setup (hd#)
:安装 grub
kernel /vmlinuz-VERSION root=/dev/PART
:指明内核文件
initrd /initramfs-VERSION.img
:指明 ramdisk
boot
:当场进入
grub.conf 简化格式
default=0
timeout=1
title centos6
kernel /vmlinuz-VERSION root=/dev/PART
initrd /initramfs-VERSION.img
关键字:
- default=#: 设定默认启动的菜单项;落单项(title)编号从 0 开始
- timeout=#:指定菜单项等待选项选择的时长
- splashimage=(hd#,#)/PATH/XPMFILE:菜单背景图片文件路径
- password [–md5|–encrypted] STRING: 启动菜单编辑认证
- hiddenmenu:隐藏菜单
- title TITLE:定义菜单项“标题”, 可出现多次
- root (hd#,#):查找 stage2 及 kernel 文件所在设备分区;为 grub 的根
- kernel /PATH/TO/VMLINUZFILE [PARAMETERS]:启动的内核
- initrd /PATH/TO/INITRAMFSFILE: 内核匹配的 ramfs 文件
- password [–md5|–encrypted] STRING: 启动选定的内核或操作系统时进行认证
password 可以加密–md5 后面的 STRING 由命令 openssl passwd
生成
–encrypted 代表 sha512 算法,后面的 STRING 由命令 grub-crypt
生成
修复 grub
- 进入救援模式
- 用
chroot /mnt/sysimage/
切根
- 用
grub-install /dev/DISK
安装 grub
- 创建并手动写入/boot/grub/grub.conf
- 生成 vmlinuz 和 initramfs.img
- 对应的 vmlinuz 可以拷贝光盘的
- 用
mkinitrd initramfs.img `uname -r`
生成 initramfs.img
- 上述两文件可直接安装 kernel 包生成
grub 其它常用
命令行接口:
- help :帮助列表
- help KEYWORD:
- find (hd#,#)/PATH/TO/SOMEFILE:
- root (hd#,#)
- kernel /PATH/TO/KERNELFILE: 设定本次启动时用到的内核文件;额外还可添加许多内核支持使用的 cmdline 参数
- initrd /PATH/TO/INITRAMFSFILE: 设定为选定的内核提供额外文件的 ramdisk
- boot: 引导启动选定的内核
cat /proc/cmdline 内核参数
常用的 cmdline 参数:
- maxloop=###:最大回环设备数
- selinux=0:关闭 selinux
- init=/PATH/TO/INIT:当后面为/bin/bash 时可直接和 bash 启动
内核参数文档:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt
破解 root 口命
在 grub 界面按 a 在行尾设 1 可进入 init1 状态,使用 passwd
即可更改
grub 2.x
配置文件:/etc/default/grub,/etc/grub.d/*
/boot/grub2/grub.cfg 是由命令生成,也可更改
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/<你的系统硬盘设备>
调整启动内核
GRUBDEFAULT=# :#可以为数字代表第#个内核,也可为 saved 代表上次启动的内核
GRUBSAVEDEFAULT=true :保存上次启动的内核
GRUBTIMEOUT=# :#表示启动菜单延迟时间
临时设置内核参数
- 进入编辑模式
- 在 linux16 行后添加
- systemd.unit=emergency.target :进入紧急模式
- systemd.unit=rescue.target :进入救援模式
破解 root 口命
方法 1:
- 进入编辑模式
- 在 linux16 行后添加内核参数 rd.break
- 按 ctrl-x 启动
- mount –o remount,rw /sysroot
- chroot /sysroot
- passwd root
- touch /.autorelabel :当 selinux 启用后要有此步
- exit
- reboot
方法 2:
- 进入编辑模式
- 将光标移动 linux16 开始的行,改为 rw init=/sysroot/bin/sh
- 按 ctrl-x 启动
- chroot /sysroot
- passwd root
- touch /.autorelabel :当 selinux 启用后要有此步
- exit
- reboot
grub 加口命
使用命令 grub2-setpassword
交互输入密码
会在/boot/grub2 下生成 user.cfg
centos启动流程
原文:https://www.cnblogs.com/chaoyiyang/p/11933057.html