Linux入门——开机启动过程浅析
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
- 执行 /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:
- 执行 /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入门——开机启动过程浅析相关推荐
- linux 中开机启动过程简单
linux启动过程 1.开机自检,进入BIOS 2.读取MBR引导 3.GRUB菜单 4.加载内核 5.启动/sbin/init进程(系统的第一个进程) 读取/etc/inittab文件,选择运行级别 ...
- Linux系统开机启动过程
Linux系统从开机开始到用户登录界面,需要启动一系列的进程,分为几个步骤.具体启动的过程如下 1. 载入内核 即把Linux内核载入到内存,Linux内核保存在/boot目录,/boot目录的内容大 ...
- 【研究任务】linux系统开机启动过程
总览 加载BIOS 一个特殊的应将电路在CPU的一个引脚上产生一个RESET逻辑值,然后会把一些寄存器(包括cs和eip)设置成固定的值 然后执行在物理地址为0xFFFF FFF0处找到的代码,硬件把 ...
- linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...
第二波命令正向我方来袭 :开机启动过程.PATH.过滤一级目录.cd的参数.ls -lrt.命令切割日志 1.1 linux开机启动过程 1.1.1 开机自检(BIOS)-- MBR引导-- GRUB ...
- Linux开机启动过程:从点下电源键到系统正常运行
学习内核,只要是要以柔克刚,不能急于求成.共勉 <Linux开机启动过程(1):内核引导过程> <Linux开机启动过程(2):内核启动的第一步> <Linux开机启动过 ...
- linux开机启动过程(简述)
简述linux开机启动过程 第一步:加电 第二步:加载BIOS设置,选择启动盘. 这是因为因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信 息.PnP特性等等.在此之 ...
- linux修改开机启动,Linux修改开机启动logo
默认开机LOGO会在液晶屏的左上脚显示一只小企鹅,分辨率为80*80,具体在kernel/drivers/video/logo下会有logo_linux_clut224.ppm这幅图像,程序会根据这幅 ...
- Linux系统的启动过程
下面是整个Linux系统的启动过程: Linux Boot Step Start BIOS grub/lilo Kernel boot init rc.sysinit ...
- Linux入门之系统启动过程及初始化----“翻滚吧,牛宝宝”
每当你按下开机电源键的时候,总是怀着一颗虔诚的心,抱着求神拜佛的念头,祈求机器顺利开机,不要出幺蛾子:每当你看到屏幕上输出的一行又一行的信息,绿的OK,红的failed,迷茫的眼神穿透了显示器:这一切 ...
- Linux系统的启动过程(转)
下面是整个Linux系统的启动过程: Linux Boot Step Start BIOS grub/lilo Kernel boot init rc.sysinit rc mingetty lo ...
最新文章
- vector邻接表建图+DFS+BFS
- html5实例异步图片加载,javascript – 你如何处理html5的画布图像加载异步?
- c语言遍历文件obt,二维电子化合物Ca2N和Y2C高压结构研究.pdf
- 查询sql语句是否使用索引
- 华为p40论坛_华为高端旗舰继续发力!麒麟990 5G+超感知三摄,256GB降价799元
- Java 多线程(六)——进程间通信与线程间通信
- 阿里架构师教你处理高并发:2种方法,解决Redis和Mysql一致性
- 各种编程语言介绍,应用,性能等
- 清华大学操作系统OS学习(十四)——文件系统和文件描述符
- wordpress配置google search console失败_Wordpress在国内无法打开后台撰写新文章的解决办法...
- 高漫 1060 Pro 数位板 Mac OS X 下无法设置 shift 快捷键解决方法
- 如何修改开机背光亮度
- input正则邮箱_JS正则表达式验证email邮箱是否正确
- 计算机word格式,2017年职称计算机Word教程:Word段落格式
- VS关闭vue语法检测
- 如何将证件照片打印在A4纸上
- graph sage 翻译
- stm32f407_hal库_工程模板
- Meta首席运营官宣布离职 入职14年助推公司市值超万亿美元
- Shader实战(1):Unity中使物体不受光照影响(不区分明暗面)
热门文章
- 接口接收数据_基于原语的千兆以太网RGMII接口设计
- ajax php 数组参数传递参数,jquery中ajax传递中文参数和js数组问题
- pod打包原理_webpack打包原理解析
- 法律人学python_你要埋头苦学三个月,然后悄悄惊艳所有人。python速成大法满足你所有的要求!...
- android 加载中自定义控件,Android 自定义一款炫酷的加载控件
- openstack配置mysql_Centos7.4安装openstack(queens)详细安装部署(三)-镜像服务(glance)安装...
- RNN LSTM GRU Attention transformer公式整理总结(超详细图文公式)
- mysql游标使用 loop_mysql 游标 loop while 的使用
- C/C++[codeup 1943](大数)进制转换
- numpy的结构数组和内存布局