【linux | 开机启动流程】


前言

环境准备:
linux操作系统
VMware Workstation16.x
Centos7

为什么要了解开机启动流程?
排查服务器启动不了的故障,了解原因 => troubleshooting


开机自检的意义

  1. 掌握让某个软件开机自动运行
  2. 开机不能正常启动,是什么原因,或者那个环节出现了问题
  3. 防止黑客植入木马,去查询黑客会把木马放到哪些地方?
  • 开机自检:上电自检(POST,Power On Self Test)
    • 开机自检:谁去完成?

      • 主板上的BIOS程序去完成

      BIOS程序
      BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。BIOS是个人电脑启动时加载的第一个软件。
      它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

      BIOS是一个程序, CMOS芯片里存放的是BIOS程序的参数

      • CMOS:是一个存储参数配置的芯片

      BIOS是一个程序会读取CMOS芯片里的参数,了解cpu的配置,时间的配置,启动顺序的配置等

      rom芯片:read only memory --》只读的存储器
      ram芯片:随机存取存储器(random access memory的缩写)–》可读可写

      • 硬盘里有一个位置:0磁道0柱面1扇区 => MBR(master boot record => 主引导记录) => 就是512字节大小
        • 一个盘片可以划分出很多的磁道,磁道上划分63个扇区,一个扇区是512个字节
          不同盘片上的相同磁道组成一个柱面
        • MBR由4个16字节的“磁盘分区表”(DPT 64bytes)、grub2(启动程序,占得最多,446bytes)、结束标志(2bytes)组成
    • 自检什么东西

      • 指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU、系统主板、基本内存、扩展内存、系统ROwBIOs等器件的测试.如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速后动。

电脑里有哪些基本的硬件?

  • 主板(motherboard)、cpu、内存,磁盘,网卡,显卡,声卡,电源,鼠标,键盘、显示器等

boot:引导、启动
启动顺序
BIOS–》boot

  • 第1引导顺序:hard drive 硬盘
  • 第2引导顺序:cdrom 光驱 ----》安装系统
  • 第3引导顺序:removable device 可移动设备–》u盘,移动硬盘 --》安装系统
  • 第4引导顺序:Network --》从网络启动–》网络中安装服务器启动 --》安装

vmlinuz => 内核文件系统

initramfs => 给内核程序提供一个初始化的内存文件系统的镜像文件。

       =>  init 初始化
           ram 内存
           fs 文件系统
       => 临时的根文件系统的镜像文件 => 程序和

systemd是initramfs里的一个程序去启动的程序,需求去启动

centos7/8/9 => 启动的第一个程序是systemd
centos6 => 启动的第一个程序是init

  • 运行级别 => runlevel
    • centos6里面:
      • runlevel1:单用户模式
      • runlevel2:多用户模式(不能使用nfs)
      • runlevel3:完全多用户模式 => 字符界面模式 => 非常正常的模式,默认最小化安装linux系统就是这个模式
      • runlevel4:保留,没有使用
      • runlevel5:图形界面
      • runlevel6:重启
      • init 0 关机
        init 6 重启

查看当前的运行级别

 [root@localhost ~]# runlevel
 N 3
  • N代表最开始进入的模式,如果是表示没有进行模式切换 no

  • 3 5 => 代表开机先进入运行级别3,后切换到运行级别5

  • centos7已经只有两个主要的target => 3和5
    查看/etc/inittab

    [root@localhost ~]# cd /etc/inittab
    -bash: cd: /etc/inittab: 不是目录
    [root@localhost ~]# cat /etc/inittab
    # inittab is no longer used when using systemd.
    #
    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
    #
    # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
    #
    # multi-user.target: analogous to runlevel 3
    # graphical.target: analogous to runlevel 5
    #
    # To view current default target, run:
    # 查看当前运行级别
    # systemctl get-default
    #
    # To set a default target, run:
    # 设置开机进入图形界面
    # systemctl set-default TARGET.target
    #
    [root@localhost ~]# systemctl get-default
    multi-user.target
    
  • /etc/rc.local
    与以前的版本相比,由于在引导期间并行执行,该脚本不会在所有其他服务之后运行。
    /etc/rc.local文件会在所有的服务都运行完成后,执行这个文件里的命令
    这个脚本是最后执行的,必须给这个文件可执行权限

systemctl disable firewalld 设置firewalld服务开机不启动 => 下一次开机的问题
systemctl enable firewalld 设置firewalld服务开机启动
systemctl start firewalld 立马启动firewalld的服务 => 本次
systemctl stop firewalld 立马关闭firewalld的服务

service sshd start => systemctl start sshd
旧式启动服务的方式 新式启动服务的方式

  • /etc/fstab 告诉linux系统正常启动过程中挂载那个磁盘分区
    file system 文件系统 => 磁盘里的分区 => 一个分区对应一个文件系统

自己编写的程序怎么开机自启动

  1. 做成服务
  2. 放到/etc/rc.local => 在所有
  3. 放到登录shell的bash的4个配置文件中
  4. 放到/etc/profile.d/*.sh

开机启动流程:

img

总结

详细介绍了linux开机启动的流程,明白背后发生了一些什么,可以让我们遇到开机异常时,有一点头绪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值