Linux入门-8 Linux系统启动详解
系统启动流程
- BIOS
- MBR: Boot Code
- 执行引导程序 - GRUB
- 加载内核
- 执行init
- runlevel
BIOS
- Basic Input Output System,一般保存在主板的BIOS芯片中
- 计算机启动时首先运行BIOS,负责检查硬件并且查找可启动设备
- 可启动设备在BIOS设置中进行定义,如USB, CDROM, HD
MBR
不同的系统有不同的MBR
- BIOS找到可启动设备后执行其引导代码
- 引导代码为MBR的前446字节
GRUB
MBR一般会作为跳转,启动一个更复杂的引导程序,比如GRUB
- Grub是现在Linux使用的主流引导程序
- 可以用来引导现在几乎所有的操作系统,pe也是grub引导的
- Grub的相关文件保存在
/boot/grub目录中
stage1(MBR) -> xxx_stage1_5(file system driver) -> stage2 - Grub配置文件为
/boot/grub/grub.conf - 配置格式:
default=0 # 第一个引导程序
timeout=5 # 停留时间
splashimage=(hd0,1)/boot/grub/splash.xpm.gz # 引导界面背景
hiddenmenu # 默认隐藏菜单
title CentOS # 操作系统名称
root (hd0,1) # 操作系统所在分区,第一块硬盘第二个分区
# 内核以及传递给内核的参数(ro root=...),用空格分开
kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=...
# initial ram file system,内核模块打包文件
initrd /boot/initramfs-2.6.32-431.el6.x86_64.img
KERNEL
- MBR的引导代码将负责找到并加载Linux内核
- Linux内核保存在
/boot/vmlinuz-2.6.32-431.el6.x86_64 - 一般还会加载内核模块打包文件:
/boot/initramfs-2.6.32-431.el6.x86_64.img - Linux为保持kernel的精简将一些不常用的驱动、功能编译成为模块,在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件
- 早期版本Linux使用initrd文件,initramfs是initrd的替代优化版本,比initrd更加节省空间、更加灵活
- 命令
dmesg或者/var/log/dmesg文件可以查看本次启动时内核的输出信息
INIT
- init(
/sbin/init)是Linux系统中运行的第一个进程,所有进程的父进程。 - 调用
/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务 - Linux运行级别(runlevel):
- 0关机- 1单用户模式- 2不带网络的多用户模式- 3多用户模式- 4未使用- 5X11图形化模式- 6重启
- 可以通过
/etc/inittab配置文件修改默认的运行级别 etc/init/下的文件是其他配置信息- 每个级别对应的启动服务保存在
/etc/rc.d/rc[0-6].d/中 runlevel可显示当前及上一个运行级别init可用以改变当前运行级别
单用户修改root密码
- 为内核传递参数
1或single可进入单用户模式 - 单用户模式下不启动任何服务
- 单用户模式直接以root用户登录,并且需要密码
- 可以使用passwd修改root密码
GRUB加密
- 通过在grub.conf中的启动配置中加入如下参数即可
password --md5 $1$aoWpTe$/MWUUYbBIF.2RUZK8nbWU0 - 加密后的密码可以通过
grub-md5-crypt生成
另外,可以参考阮一峰的博客:
Linux入门-8 Linux系统启动详解的更多相关文章
- Linux学习笔记17--Linux系统启动详解
多数操作系统的启动流程: BIOS启动自检 ->MBR引导->执行引导程序GRUB->加载内核->执行init->runlevel BIOS(Basic Input ...
- linux入门--类UNIX系统详解
有人说,这个世界上只有两种操作系统: UNIX 和类 UNIX 操作系统: 其它操作系统. 类 UNIX 系统(英文 Unix-like)既包括各种传统的 UNIX 系统,比如 FreeBSD.Ope ...
- Linux下的文件目录结构详解
Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...
- Linux文件系统的目录结构详解
Linux文件系统的目录结构详解 一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...
- Linux驱动开发必看详解神秘内核(完全转载)
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入L ...
- Linux中mpstat命令参数详解
Linux中mpstat命令参数详解 mpstat 是 Multiprocessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在 /proc/stat ...
- Linux 三剑客之 awk 实战详解教程
我们知道 Linux 三剑客,它们分别是:grep.sed.awk.在前边已经讲过 grep 和 sed,没看过的同学可以直接点击阅读,今天要分享的是更为强大的 awk. sed 可以实现非交互式的字 ...
- Linux上的free命令详解、swap机制
Linux上的free命令详解 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
随机推荐
- Cassandra概念学习系列之Cassandra是什么?
不多说,直接上干货! http://cassandra.apache.org/ Apache Cassandra是一套开源分布式NoSQL数据库系统.它最初由Facebook开发,用于储存收件箱等简单 ...
- 深度学习(六)keras常用函数学习
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9769301.html Keras是什么? Keras:基于Theano和TensorFlow的 ...
- IE haslayout的理解与bug修复
要想更好的理解 css, 尤其是 IE 下对 css 的渲染,haslayout 是一个非常有必要彻底弄清楚的概念.大多 IE下的显示错误,就是源于 haslayout 什么是 haslayout ? ...
- 【转】NuGet学习笔记
关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package M ...
- Java泛型的逆变
在上篇<Java泛型的协变>这篇文章中遗留以下问题——协变不能解决将子类型添加到父类型的泛型列表中.本篇将用逆变来解决这个问题. 实验准备 我们首先增加以下方法,见代码清单1所示. 代码清 ...
- 【转载】在Angular 2/Typescript中声明全局变量的最佳方式是什么?
问题详细描述 我想在Typescript语言中的Angular 2中声明一些全局可见的变量.最佳的实践方法是? 推荐的实现方法 这是最简单的解决方案,无需使用Service或Observer: 将全局 ...
- laravel5.4学习--laravel安装
1.使用Laravel HomeStead可以直接作为laravel的环境,如果没有使用Homestead,就必须保证开发环境满足以下要求 PHP版本 >= 5.6.4PHP扩展:OpenSSL ...
- Web开发技术选型之Java与PHP
PHP与J2EE的对比 网上有很多关于PHP与J2EE之间的对比,细观无非以下几点: 1.语言特征 PHP为脚本语言,解释型语言,弱类型,专为Web开发打造.Java为C语言系编程语言,编译型,强类型 ...
- 面向对象(基础oop)之继承总结
大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...
- [javaSE] GUI(打开文件对话框)
使用FileDialog可以打开文件对话框,根据模式不同,可以分为打开文件和保存文件对话框 获取FileDialog对象,new出来,参数:所属Frame对象,String的标题,FileDialog ...