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


    系统启动流程

    • 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密码

    • 为内核传递参数1single可进入单用户模式
    • 单用户模式下不启动任何服务
    • 单用户模式直接以root用户登录,并且需要密码
    • 可以使用passwd修改root密码

    GRUB加密

    • 通过在grub.conf中的启动配置中加入如下参数即可
      password --md5 $1$aoWpTe$/MWUUYbBIF.2RUZK8nbWU0
    • 加密后的密码可以通过grub-md5-crypt生成

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

    1. 计算机是如何启动的
    2. Linux的启动流程
  • 相关阅读:
    servlet类中ServletConfig及ServletContext
    jsp及servlet中获取项目路径的一些方法
    EL表达式的一些知识
    python——字符太长,换行需要三个引号。
    python——转义字符
    python——函数缺省参数的使用
    python——字典
    python——if、elif、else的使用
    python——对列表使用的函数方法
    python-创建数字列表
  • 原文地址:https://www.cnblogs.com/whenyd/p/8441096.html
Copyright © 2020-2023  润新知