Linux开机启动过程浅析

Introduction

开机启动过程分为以下6个步骤,分别是BIOS, MBR, GRUB, Kernel, Init, RunLevel, RunDefinition

BIOS

按下电源开关那一刻,开始加载BIOS,并且执行MBR(Master Boot Record)

BIOS表示基本输入输入系统(Basic Input/Output System),完成一些系统的完整性检查、搜索、
加载并且执行引导程序(boot loader), 它在软盘,CD-ROM或者硬盘上寻找引导程序。你可以在
系统启动时按下键盘(通常是F12或者F2,但是因系统而异)来修改启动顺序

一旦引导程序被检测到并且加载到内存,BIOS会将控制权移交给它

MBR

MBR表示主引导记录(Master Boot Record)

用于加载并执行GRUB

GRUB

GRUB是多重引导管理器(GRand Unified Bootloader)

执行 /etc/grub.conf, 加载内核镜像

vim /etc/grub.conf

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-504.el6.x86_64)root (hd0,0)kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_ddz-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_ddz/lv_root crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_ddz/lv_swap  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quietinitrd /initramfs-2.6.32-504.el6.x86_64.img

Kernel

执行内核首个进程 /sbin/init, 进程号为1, 是接下来所有其它进程的父进程

initrd表示Initial RAM Disk

initrd被内核用作临时的根目录,直到内核启动完成并且真正的根目录挂载成功。
它也包括一些编译好的必要的驱动程序,这些程序有助于它访问硬盘和其他硬件

Init

  1. 执行 /etc/inittab, 来确定启动级别

    vim /etc/intttab

# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode (终端模式)
#   4 - unused
#   5 - X11(图形用户界面)
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
  1. 执行 /etc/rc.d/rc.sysinit, 来启动系统进程,比如说NetWork

RunLevel

执行启动级别相对应的一系列系统服务

对应启动级别的目录如下

ll /etc/rc.d/

drwxr-xr-x. 2 root root  4096 11月 29 09:49 rc0.d
drwxr-xr-x. 2 root root  4096 11月 29 09:49 rc1.d
drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc2.d
drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc3.d
drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc4.d
drwxr-xr-x. 2 root root  4096 3月  10 17:18 rc5.d
drwxr-xr-x. 2 root root  4096 11月 29 09:49 rc6.d

RunDefinition

最后执行 /etc/rc.d/rc.local, 来运行自定义的服务

vim /etc/rc.d/rc.local

  1 #!/bin/sh2 #3 # This script will be executed *after* all the other init scripts.4 # You can put your own initialization stuff in here if you don't5 # want to do the full Sys V style init stuff.67 touch /var/lock/subsys/local8 if test -f /sys/kernel/mm/transparent_hugepage/enabled; then9    echo never > /sys/kernel/mm/transparent_hugepage/enabled10 fi11 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then12    echo never > /sys/kernel/mm/transparent_hugepage/defrag13 fi1415 /bin/bash /usr/local/apps/kylin/bin/kylin.sh start

其中第15行为自定义启动脚本

Final

进入登录界面

参考文献

http://blog.csdn.net/napolunyishi/article/details/18710971

http://blog.chinaunix.net/uid-26495963-id-3066282.html

转载于:https://www.cnblogs.com/dzqk/p/8545623.html

Linux入门——开机启动过程浅析相关推荐

  1. linux 中开机启动过程简单

    linux启动过程 1.开机自检,进入BIOS 2.读取MBR引导 3.GRUB菜单 4.加载内核 5.启动/sbin/init进程(系统的第一个进程) 读取/etc/inittab文件,选择运行级别 ...

  2. Linux系统开机启动过程

    Linux系统从开机开始到用户登录界面,需要启动一系列的进程,分为几个步骤.具体启动的过程如下 1. 载入内核 即把Linux内核载入到内存,Linux内核保存在/boot目录,/boot目录的内容大 ...

  3. 【研究任务】linux系统开机启动过程

    总览 加载BIOS 一个特殊的应将电路在CPU的一个引脚上产生一个RESET逻辑值,然后会把一些寄存器(包括cs和eip)设置成固定的值 然后执行在物理地址为0xFFFF FFF0处找到的代码,硬件把 ...

  4. linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...

    第二波命令正向我方来袭 :开机启动过程.PATH.过滤一级目录.cd的参数.ls -lrt.命令切割日志 1.1 linux开机启动过程 1.1.1 开机自检(BIOS)-- MBR引导-- GRUB ...

  5. Linux开机启动过程:从点下电源键到系统正常运行

    学习内核,只要是要以柔克刚,不能急于求成.共勉 <Linux开机启动过程(1):内核引导过程> <Linux开机启动过程(2):内核启动的第一步> <Linux开机启动过 ...

  6. linux开机启动过程(简述)

    简述linux开机启动过程 第一步:加电 第二步:加载BIOS设置,选择启动盘. 这是因为因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信 息.PnP特性等等.在此之 ...

  7. linux修改开机启动,Linux修改开机启动logo

    默认开机LOGO会在液晶屏的左上脚显示一只小企鹅,分辨率为80*80,具体在kernel/drivers/video/logo下会有logo_linux_clut224.ppm这幅图像,程序会根据这幅 ...

  8. Linux系统的启动过程

    下面是整个Linux系统的启动过程: Linux Boot Step Start BIOS ​ ​ grub/lilo ​ ​ Kernel boot ​ ​ init rc.sysinit ​ ​ ...

  9. Linux入门之系统启动过程及初始化----“翻滚吧,牛宝宝”

    每当你按下开机电源键的时候,总是怀着一颗虔诚的心,抱着求神拜佛的念头,祈求机器顺利开机,不要出幺蛾子:每当你看到屏幕上输出的一行又一行的信息,绿的OK,红的failed,迷茫的眼神穿透了显示器:这一切 ...

  10. Linux系统的启动过程(转)

    下面是整个Linux系统的启动过程:   Linux Boot Step Start BIOS grub/lilo Kernel boot init rc.sysinit rc mingetty lo ...

最新文章

  1. vector邻接表建图+DFS+BFS
  2. html5实例异步图片加载,javascript – 你如何处理html5的画布图像加载异步?
  3. c语言遍历文件obt,二维电子化合物Ca2N和Y2C高压结构研究.pdf
  4. 查询sql语句是否使用索引
  5. 华为p40论坛_华为高端旗舰继续发力!麒麟990 5G+超感知三摄,256GB降价799元
  6. Java 多线程(六)——进程间通信与线程间通信
  7. 阿里架构师教你处理高并发:2种方法,解决Redis和Mysql一致性
  8. 各种编程语言介绍,应用,性能等
  9. 清华大学操作系统OS学习(十四)——文件系统和文件描述符
  10. wordpress配置google search console失败_Wordpress在国内无法打开后台撰写新文章的解决办法...
  11. 高漫 1060 Pro 数位板 Mac OS X 下无法设置 shift 快捷键解决方法
  12. 如何修改开机背光亮度
  13. input正则邮箱_JS正则表达式验证email邮箱是否正确
  14. 计算机word格式,2017年职称计算机Word教程:Word段落格式
  15. VS关闭vue语法检测
  16. 如何将证件照片打印在A4纸上
  17. graph sage 翻译
  18. stm32f407_hal库_工程模板
  19. Meta首席运营官宣布离职 入职14年助推公司市值超万亿美元
  20. Shader实战(1):Unity中使物体不受光照影响(不区分明暗面)

热门文章

  1. 接口接收数据_基于原语的千兆以太网RGMII接口设计
  2. ajax php 数组参数传递参数,jquery中ajax传递中文参数和js数组问题
  3. pod打包原理_webpack打包原理解析
  4. 法律人学python_你要埋头苦学三个月,然后悄悄惊艳所有人。python速成大法满足你所有的要求!...
  5. android 加载中自定义控件,Android 自定义一款炫酷的加载控件
  6. openstack配置mysql_Centos7.4安装openstack(queens)详细安装部署(三)-镜像服务(glance)安装...
  7. RNN LSTM GRU Attention transformer公式整理总结(超详细图文公式)
  8. mysql游标使用 loop_mysql 游标 loop while 的使用
  9. C/C++[codeup 1943](大数)进制转换
  10. numpy的结构数组和内存布局