首页 > 其他 > 详细

centos启动流程

时间:2019-11-26 09:26:36      阅读:83      评论:0      收藏:0      [点我收藏+]

Table of Contents

  1. centos 操作系统启动流程
    1. centos6 以前启动流程
    2. centos7 启动流程
  2. Grub 管理
    1. grub legacy 的三个阶段
      1. grub 安装
      2. grub 临时启动
      3. grub.conf 简化格式
      4. 修复 grub
      5. grub 其它常用
      6. 破解 root 口命
    2. grub 2.x
      1. 临时设置内核参数
      2. 破解 root 口命
      3. grub 加口命

centos 操作系统启动流程

centos6 以前启动流程

  1. 加载 BIOS 信息,使用 ROM 中的程序开启 MBR 引导引导程序.
  2. MBR 引导程序启动,加载 GRUB.
  3. GRUB 开始加载内核,核心解压缩,并尝试所有驱动硬件.
  4. 核心执行 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 启动流程

  1. UEFi 或 BIOS 初始化,运行 POST 开机自检
  2. 选择启动设备
  3. 引导装载程序 grub2
  4. 加载装载程序的配置文件:
    • etc/grub.d
    • /etc/default/grub
    • /boot/grub2/grub.cfg
  5. 加载 initramfs 驱动模块
  6. 加载内核选项
  7. 内核初始化,使用 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 安装

  1. 命令安装,有通用性
    将 grub stage1 和 stage15 安装到/dev/DISK 上并复制 GRUB 文件到 DIR/boot 下,DIR 默认为当前系统的根
    grub-install --root-directory=DIR /dev/DISK
  2. 交互安装,仅用于/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

  1. 进入救援模式
  2. chroot /mnt/sysimage/ 切根
  3. grub-install /dev/DISK 安装 grub
  4. 创建并手动写入/boot/grub/grub.conf
  5. 生成 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=# :#表示启动菜单延迟时间

临时设置内核参数

  1. 进入编辑模式
  2. 在 linux16 行后添加
    • systemd.unit=emergency.target :进入紧急模式
    • systemd.unit=rescue.target :进入救援模式

破解 root 口命

方法 1:

  1. 进入编辑模式
  2. 在 linux16 行后添加内核参数 rd.break
  3. 按 ctrl-x 启动
  4. mount –o remount,rw /sysroot
  5. chroot /sysroot
  6. passwd root
  7. touch /.autorelabel :当 selinux 启用后要有此步
  8. exit
  9. reboot

方法 2:

  1. 进入编辑模式
  2. 将光标移动 linux16 开始的行,改为 rw init=/sysroot/bin/sh
  3. 按 ctrl-x 启动
  4. chroot /sysroot
  5. passwd root
  6. touch /.autorelabel :当 selinux 启用后要有此步
  7. exit
  8. reboot

grub 加口命

使用命令 grub2-setpassword
交互输入密码
会在/boot/grub2 下生成 user.cfg

centos启动流程

原文:https://www.cnblogs.com/chaoyiyang/p/11933057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!