zoukankan      html  css  js  c++  java
  • Linux引导流程解析

    一、 Linux引导流程
    1、系统引导流程
    固件firmware (CMOS/BIOS) -> POST加电自检

    自举程序 BootLoader (GRUB) ->载入内核

    载入内核 ->驱动硬件

    启动进程init

    读取执行配置文件 /etc/inittab

    2、常用固件设置
    ①安全设置
    ②可引导介质列表
    ③可引导介质搜索顺序
    ④电源管理
    ⑤启动细节显示

    3、固件设置实例
    hwclock 显示与设定硬件时钟(hardware clock)

    4、主引导记录
    Bootloader | partition table | Magic number
    446bytes | 64bytes | 2bytes = 512 bytes

    BootLoader 自举程序(引导装载程序)
    Partition table 分区表,记录磁盘分区信息

    5、内核
    内核源码位置:/usr/src/linux
    内核是整个操作系统的核心部分,负责最核心的文件系统管理、进程调度、网络通信等

    二、Linux运行级别
    Linux运行级别有7个,分别是:
    0 关机
    1 单用户
    2 无NFS的多用户
    3 多用户
    4 不使用
    5 X11
    6 重启

    三、Linux启动服务管理
    1、init的工作
    init读取inittab文件,执行缺省运行级别,从而继续引导过程。在UNIX系统中,init是第一个可以存在的进程,它的PID恒为1,但它也必须向一个更高级的功能负责:PID为0的内核调度器(Kernel scheduler),从而获得CPU时间。

    2、inittab文件解析
    ①查看当前的运行级别
    直接输入命令runlevel
    ②运行级别的切换
    init [0123456Ss] 或 telinit[0123456Ss]
    如 : init 3代表切换到运行级别3

    Inittab文件描述了系统默认运行级别,已经相应的级别应该执行的初始化
    在inittab中,所有条目采用以下格式:
    Id: run-levels: action : process
    Id 标识符,一般为两位
    Run-levels 指定运行级别,可以指定多个
    Action 指定运行状态
    Process 指定要运行的脚本/命令

    3、启动服务
    Action常用取值:
    Inittdefault:指定系统缺省启动的运行级别
    Sysinit:系统启动执行process中指定的命令
    Wait:执行process中指定的命令,并等其结束再运行其他命令
    Once: 执行process中指定的命令,不等待其结束
    Ctrlaltdel:按下ctrl + alt + del 时执行process指定的命令
    Powerfail: 当出现电源错误时执行process指定的命令,不等待其结束
    Powerokwait:当电源恢复时恢复process指定的命令
    Respawn:一旦process指定的命令中止,便重新运行该命令

    /etc/rc.d/init.d 该目录下包含各个运行界别的服务程序脚本
    如l3:3:wait:/etc/rc.d/rc 3,表示当运行级别切换为3时,会执行目录/etc/rc.d/rc 脚本,这个脚本会执行/etc/rc.d/rc3.d目录下的服务程序脚本的符号链接,链接到init.d目录中的相应脚本,完成相应级别的初始化设置

    id:3:initdefault: 这一句描述了默认的运行级别,3代表多用级别,5代表X windows级别

    si::sysinit:/etc/rc.d/rc.sysinit
    启动脚本/etc/rc.d/rc.sysinit,完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。

    4、设置自启动程序
    Ln – s 设置符号链接
    Chkconfig 检查、设置系统的各种服务
    Ntsysv 以图形化界面程序设置当前运行级别的自启动服务

    5、相关命令及日志
    ①Dmesg 命令可以检查引导期间的错误
    ②检查系统日志/var/log/messages,查找可能被dmesg忽略的应用程序错误

    四、GRUB配置与应用
    1、Grub的配置
    配置文件默认为/boot/grub/grub.conf
    default=0 表示 启动时默认选择的title
    timeout=5 表示启动延时
    splashimage表示grub菜单背景图片
    hidemenu是隐藏菜单
    title定义菜单名称
    root设置grub的根设备即内核所在的分区
    kernel定义内核文件所在位置
    initrd命令加载镜像文件

    2、GRUB命令
    e 编辑当前启动菜单项
    c 进入GRUB的命令行方式
    b 启动当前的菜单项
    d 删除当前行
    Esc 返回GRUB启动菜单界面,取消对当前单项所做的任何修改

    五、启动故障分析与解决
    1、单用户模式应用
    ①单用户模式可以不用密码登陆系统,并且拥有root权限。
    ②登录方式:开机进入GRUB界面,按e进入行编辑模式,在kernel按e键,在后面加上1或s ,即可进入单用户模式
    ③单用户模式可以用于重新设置root密码

    2、GRUB密码
    为了防止其它用户随意修改root密码,可以给GRUB加一个密码
    ①使用GRUB自带的grub-md5-crypt命令将明文密码转换为MD5密文 或 在grub交互命令行界面中使用md5crypt命令,即直接键入grub,再键入md5crypt
    ②编辑GRUB配置文件,加入行password –md5 密文

    3、GRUB修复
    若开机后没有进入GRUB界面,但是无法成功启动,可能是GRUB配置文件出现了问题(如文件路径写错),根据错误提示直接修改GRUB配置文件即可。在GRUB界面可以查看配置文件 cat /grub/grub.conf

    4、Linux修复模式
    ①将安装盘放入光驱,重新启动机器,在BIOS中设置为光驱引导
    ②按F5进入linux rescue模式说明,在boot提示符下输入linux rescue回车进入修复模式

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/hlb430/p/2613053.html
Copyright © 2011-2022 走看看