linux 笔记--系统启动流程

POST(开机自检)-->BIOS(boot seqvence)-->MBR(boot loader)-->kernel-->initrd-->sbin/init

内核设计:
    单内核:linux  轻量级线程
    微内核:windows 支持多线程
内核位置:/lib/modules 以版本号命名的目录

ldd 路径:显示共享库的依赖关系(which查看命令的绝对路径)

启动的服务不同,运行的级别也不相同:
     0 halt 关机
    6 reboot 重启
    1 Single user mode 单用户模式(可以直接以管理员身份登入)
    2 Multiuser, without NFS 多用户模式,但不启用网络文件系统
    3 Full multiuser mode 多用户模式 文字接口
    4 unused 保留级别
    5 X11 多用户模式 图形接口

boot loader :引导加载
    GRUB:(第一阶段)stagel1(mbr)--->stagel1.5(识别文件系统)--->(第二阶段)stagel2(/boot/grub/)
    /boot/grub/grub.conf :

default=0  设定默认启动的title,默认为0(从第一个开始)
        timeout=10  等待用户选择的时长 秒
        splashimage=(hd0,0)/grub/linux.xpm.gz  选择菜单的背景图片(默认为                      splash.xpm.gz可以自定义修改)
        # hiddenmenu  隐藏菜单,可以注释掉,显示菜单

title HuiShao CentOS 6 (2.6.32-504.el6.x86_64)  (title  名字 :名字可以更                     改)
                root (hd0,0)     第一个磁盘的第一个分区
                kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=f12bd5ee-6514-4bc8-a225-a25aa52e491e
         nomodeset rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.
        UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet  内核所在的位置
                initrd /initramfs-2.6.32-504.el6.x86_64.img

还可以给grub 加密码,但普通用户就不能在开始选择菜单上修改启动级别,从而不能以管理员身份直接登入
            第一种:password 密码
            第二种:password --md5 加密的密码(可以使用grub-md5-crypt )
                [[email protected] ~]# grub-md5-crypt
                Password:
                Retype password:
                $1$25qnL$IIL4Fq1crGaF6T6fWAyLl0  这就是md5加密后的密码
            再次进入启动选择菜单时若要修改启动级别就要先 输入p 再输入密码才可以修改

runlevel命令:查看当前运行级别
    [[email protected] ~]# runlevel
    N 5  (N 为前一个级别,没有就为N,5就是当前使用的启动级别)
who -r 也可以查看运行级别 :
    [[email protected] ~]# who -r
            运行级别 5 2015-07-26 07:43
uname -r 查看内核
    [[email protected] ~]# uname -r
    2.6.32-504.el6.x86_64安装grub

kernel初始化的过程:
    1.设备探测
    2.驱动初始化(可能会从initrd(initramfs)文件中装载驱动模块)
    3.挂在根文件系统(以只读方式挂载)
    4.装载第一个进程init(因为init是第一个装载的进程所以pid永远为1,且是所有进程的父进程)

RH5.8:/sbin/init (/etc/inittab配置文件)
RH6.2:systemd 可以并行启动
RH6.3:upstart (ubuntu 开发 基于d-bus配置 /etc/init/init.d/配置文件脚本的存放位置,相当于inittab的配置文件
    只不过分片化了)
    id:5:initdefault:
    id (标识符) 5 (运行级别) initdefault (在什么情况下执行) 要运行的程序
          respawn (一旦程序终止就重新启动 如logout) 若没有指定级别,表示在所有级别

/etc/rc.d/rc.sysinit 完成的任务:
    1.激活udev和selinux
    2.根据/etc/sysctl.conf文件来设定参数
    3.设定时钟
    4.装载键盘映射
    5.启用交换分区
    6.设置主机名
    7.根文件系统检测,并以读写方式重新挂载
    8.激活RAID和LVM设备
    9.启用磁盘配额
    10.根据/etc/fstab检查并挂在系统文件
    11.清理过期的锁和pid文件

/etc/rc.d/init.d 目录里面是服务类的脚本:
    /etc/rc.d/init.d/某个服务 start/stop/restart/status/reload/configtest  跟某个参数可以开启或关闭某个服务
     /etc/rc.d/init.d/** 服务脚本:
        #!/bin/sh
        #
        # chkconfig: - 91 35
        # description: Starts and stops the Samba nmbd daemon \
        #              used to provide NetBIOS name services.
      #chkconfig 启动级别 启动优先次序(s开头的服务脚本) 关闭的优先次序(k开头的服务脚本)
        -表示没有级别默认为s*开头的连接 (服务先开启的后关闭,后开启的先关闭)
    #description 用户说明此脚本的简单功能 \续行
    #chkconfig 和 #description 虽然为注释行但是仍会被读取
 
chkconfig命令:
    --list 列出查看当前系统上的所有独立守护服务的启动设定
    --list 服务名 指定查看
    --add 服务名 脚本名 添加服务但服务器下次启动才会生效
      service 服务名 start|stop 启动或停止服务
    --del 服务名 删除服务所有链接
    [--level](省略为2345) 24 服务名 on|off 在2、4级开启或关闭服务

/etc/rc.d/rc.local 系统最后启动的一个脚本(可以加入一些命令)

/etc/rc.d/init.d/    /etc/rc.d/rc.sysinit     /etc/rc.d/rc.local
    /etc/rc.d/rc[0-6].d 表示每个启动级别所要启动服务

RH5 /etc//inittab的任务
    1.设定默认运行级别
    2.运行初始化脚本
    3.运行指定运行级别对立的目录脚本(K* S*)
    4.设定ctrl+alt+delete组合键的操作
    5.定义UPS电源故障恢复时执行后的操作
    6.启动虚拟终端(默认为2345)
    7.启动图形终端(只在5级别)

守护进程类型:
    独立守护进程:xinetd 超级守护进程,管理瞬时守护进程
    瞬时守护进程:不需要关联至运行级别
        当有访问瞬时守护进程A时,xinetd就临时启动A,访问后就立即关闭

时间: 2024-10-27 17:12:09

linux 笔记--系统启动流程的相关文章

linux操作系统启动流程和光盘镜像制作

1.简述linux操作系统启动流程 POST (加电自检):自检主要硬件设备如:CPU.内存.硬盘是否正常,以及输入输出设备是否存在问题等. BIOS(Boot Sequence):BIOS(基本的输入输出系统)装载在硬件芯片CMOS之上,自检时会启动这个程序,并根据CMOS上的配置信息去读取其他的硬件信息,检测正常之后进行硬件设备的初始化. 读取MBR:引导加载程序,在MBR(主引导记录)中,主要功能是识别,加载系统的核心文件,并提交到内存中运行来启动对应的系统. Kernel运行:Kerne

Linux操作系统启动流程

一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/etc/rc.d/rc.local9)启动mingetty,进入系统登陆界面. linux系统安装时,如

Linux学习笔记——系统启动流程

CentOS 启动流程 POST --> Boot Sequence(BIOS) --> Boot Loader (MBR) --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端 POST 加电自检

Linux基础--系统启动流程

基本上Linux的启动过程如图所示,不同版本之间可能有一些细微的差别,后面再做介绍,但总体上就是这样一个流程. 从机器上电开始,首先直接将ROM芯片中的BIOS程序加载到内存中运行.BIOS程序首先进行POST(Power On Self Test),即硬件自检,自检通过则按照BIOS中Boot Sequence中定义启动顺序去找相应设备上的0号扇区,尝试寻找其中的BootLoader程序. 如果找到了BootLoader程序则将其加载到内存中,将系统控制权交给BootLoader.而BootL

linux开机系统启动流程

启动流程 1,按下电源 2,bios自检:主要检测主机硬件设备如:cpu,内存.硬盘等显卡设备是否正常,在测试完成后,会按照bios的系统设置顺序来启动. 3,系统引导 MBR:硬盘的0柱面,0磁头,一扇区称为主引导扇区.它由三部分组成,主引导程序(Bootloader),硬盘的分区表(Disk Partition table)和硬盘有效标志(55AA) 4,linux内核启动 bootloader 为引导加载程序,它的主要功能为 1,提供菜单,允许用户选择启动的系统或不同的内核版本 2,加载选

Linux操作系统启动流程浅析

启动BIOS程序 当电源键按下之后,BIOS(Basic nput Output System)就会由主板上的闪存来运行.BIOS程序会把自己解压缩到系统的内存之中,然后读取CMOS(Complementary Metal Oxide Semiconductor)内存储的信息(例如系统时间,启动设备顺序等)来对系统进行配置.同时进行自检(POST:Power-On Self Test).检测系统的硬件是否存在问题,自检通过之后,BIOS会加载第一启动设备的MBR(Master Boot Reco

总结:Linux系统启动流程

知识储备:Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行.一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:1. 引导加载程序.包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分.2.Linux内核.特定于嵌入式板子的定制内核以及内核的启动

linux系统启动流程概览

作为一名Linux运维人员,我们需要对Linux的启动流程有一定的了解,在工作过程中,如果遇到了启动故障,我们就可以更加得心应手的进行故障排查. 我们先大概描述一下整个启动过程,如下图: 上述过程为整个启动流程的大体流程,每个步骤具体做了什么,我们可以参考如下总结: 1.POST  加电自检 power-on self test ( POST)  ,加电后,固化在固件中的指令被加载到内存中,cpu 从内存读取这些指令,这些指令会对各个硬件进行检查,查看这些硬件是否能够正常运转. 2.BIOS(B

[Linux学习笔记] Linux系统引导流程(一)

前面我们已经介绍过以CentOS为例的Linux系统的安装以及Linux常用命令的使用,本节内容我们将介绍Linux系统引导流程.当按下电源的那一刻,到我们看到用户界面,这其中都发生了些什么呢?赶快来一探究竟. 下图为Linux系统引导流程过程图: 以下对Linux引导流程过程做一个简单的说明: 1. POST加电自检 POST(POST ON SELF TEST)首先对每一个设备进行检查,完成后会寻找存有引导记录的设备,找到读入操作系统的引导记录,将系统控制权交给引导记录. 2. MBR引导