zoukankan      html  css  js  c++  java
  • linux日常维护(二)

    linux启动流程

    1. BIOS自检
    2. 启动GRUB 2
    3. 加载内核
    4. 执行systemd进程
    5. 初始化系统环境
    6. 执行/bin/login程序
    (一)BIOS自检
    1. 加电POST自检(对硬件进行检测)
    2. 进行本地设备的枚举和初始化。

    BIOS由两部分组成:POST代码和运行时的服务。当POST完成之后,它被从内存中清理出来,但是BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务。

    linux系统通常都是从硬盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。MBR是一个512字节大小的扇区,位于磁盘上的第一个扇区中(0道0柱面1扇区)。当MBR被加载道RAM中之后,BIOS就会将控制权交给MBR.

    (二)启动GRUB 2

    它是linux系统中默认使用的引导加载程序,用于引导操作系统启动。当计算机引导操作系统时,BIOS会读取引导介质上最前面的512字节(主引导记录)

    (三)加载内核

    加载内核映像到内存中,内核映像并不是一个可执行的内核,而是一个压缩过的内核映像。在这个内核映像前面是一个例程,它实现少量硬件设置,并对内核映像中包括的内核进行解压,任何将其放入高端内存中。如果有初始RAM磁盘映像,系统就会将他移动到内存中,并标明以后使用。然后该例程会调用内核,并开始启动内核引导的过程。

    (四)执行systemd进程

    该进程是linux系统所有进程的起点,在完成内核引导以后,即在本进程空间内加载systemd程序。systemd进程是所有进程的发起者和控制者。因为在任何linux系统中,它都是第一个运行的进程,所有systemd进程的进程号PID永远是1

    (五)初始化系统环境

    linux系统使用systemd作为引导管理程序,之后的引导过程将由systemd完成。system使用目标(target)来处理引导和服务管理过程。这些systemd里的目标文件被用于分组不同的引导单元以及启动同步进程。

    1. systemd执行的第一个目标是default.target,但实际上default.target目标是指向graphical.target目标的软链接。graphical.targe目标单元文件的实际位置是/user/lib/systemd/system/graphical.target.
    2. 在执行graphical.target目标阶段,会启动multi-user.target目标,而这个目标将字节的字单元存放在/etc/systemd/system/multi-user.target.wants目录中。非root用户和防火墙相关服务绘制这个阶段启动。
    3. multi-user.target目标会将控制权交给basic.target目标。basic.target目标用于启动普通服务特别是图像管理服务。它通过/etc/systemd/system/basic.target.wants目录来决定那些服务会被启动,basic.target目标之后将控制权交给sysinit.target目标。
    4. sysinit.target目标会启动主要的系统服务,比如系统挂载、内存交换空间和设备、内核补充选项等。sysinit.target目标在启动过程中会传递给local-fs.target和swap.target目标。
    5. locat-fs.target和swap.target不会启动用户的相关服务,它只处理底层核心服务。这两个目标会根据/etc/fstab和/etc/inittab文件执行相关操作。
    (六)执行/bin/login程序

    login会接收mingetty传来的用户名并将其作为用户名参数,然后login会对用户名进行分析。如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来在系统维护时防止非root用户登录。只有在/etc/securetty中登记的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用户对用户做出附加访问限制,如果不存在这个文件,则没有其他限制。

    在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其他信息,比如主目录是什么?使用何种shell?如果没有指定主目标,则将主目录默认设置为根目录;如果没有指定shell,则将shell类型默认设置为/bin/bash.

    login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog文件中有记录),并检查用户是否有新邮件(在/var/spool/mail/的对应用户名目录里下),然后开始设置各种环境变量。对应bash来说,系统首先寻找/etc/profile脚本并执行它;然后,如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其他配置文件,所有的配置文件执行后,各种环境变量也设好了,这时会出现大家熟悉的命令提示符,到此整个启动过程就结束了。

    摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著

  • 相关阅读:
    Intellij IDEA 配置Tomcat远程调试
    maven学习二(dependencies)
    maven学习一(HelloWorld工程)
    一致性hash在分布式系统中的应用
    理解TCP之Keepalive
    理解HTTP之keep-alive
    TCP/IP,http,socket,长连接,短连接
    图解 HTTP 协议
    PHP开发的一些趣事
    vue
  • 原文地址:https://www.cnblogs.com/mylive/p/11280239.html
Copyright © 2011-2022 走看看