设为首页 加入收藏

TOP

Linux 启动流程及相关知识(一)
2023-07-23 13:27:03 】 浏览:47
Tags:Linux 程及相 关知识

基础知识

linux系统的组成

  • 内核(kerner)

  • 根文件系统(rootfs)

内核提供操作系统的功能,根文件系统包含常用的一些工具,这些工具。这些工具的运行离不开glibc库文件。

程序:二进制程序文件

库:库是函数的集合,用来实现接口调用等功能。程序的运行依赖这些库文件

Linux内核的功能:文件系统管理、进程管理、网络管理、驱动程序、内存管理等

CentOS 6

CentOS 6 启动流程: 4步

POST--->MBR--->GRUB--->加载内核

POST:Power-On-Self-Test,加电自检。由主板的bios程序完成。
bios:basic input output system。基本出入输出系统
MBR

MBR: 主引导记录(Master Boot Record)。是硬盘的第一个扇区(0磁道0扇区),总共有512个字节,前446个字节存储的是bootloader的阶段一程序(以二进制的形式存放)

bootloader:是用来启动(引导)操作系统的一个程序。(安装操作系统的时候会自动安装)
bootloader这个程序里面定义了操作系统(内核)存放的位置等

windows用的bootloader:ntloader,仅用来启动操作系统的

linux用的bootloader:现在使用的是GRUB,不仅用来启动操作系统,还有多种功能
#早期版本用的是0.97版本,现在用的是2.02版本

grub的启动流程:启动操作系统前加载grub。

阶段1:加电自检完成后,通过bios检测设备驱动。如果是硬盘启动就读取硬盘的第一个扇区(MBR)。并将MBR中的前446字节(bootloader)加载到内存中进行运行 #二进制文件,可以直接访问的

阶段1.5:因为grub的另外一部分是存放在文件系统的/boot目录下的,但是要想解析这个对应的文件,需要识别这个文件系统。所以需要借助文件系统的驱动程序。因为MBR的前446字节存放不下文件系统的驱动,所以文件系统驱动放在了MBR的后续扇区中

阶段2:解析加载文件系统对应目录下grub的配置文件,找到操作系统(linux)。 #非二进制,所以不可以直接访问,而是一个文件系统。需要文件系统的驱动才能访问解析到对应的数据

#阶段1和1.5都是为了阶段2做准备的。

CentOS6 Grub第二阶段的存放位置:/boot/grub

grub.conf:grub的关键配置文件,里面定义了内核存放的相关路径等内容

#配置文件格式
default:表示默认启动那个内核 #例如default=0表示默认第一个内核作为引导
timeout:在启动界面停留的时间
hidenmenu:隐藏的启动菜单,默认看不到的
	tiele:启动界面显示的菜单项
	root(hd#.#):表示boot分区所在的位置,#hd0.0--hd表示硬盘 0.0表示第一块硬盘的第一个分区
	kerner: /PATH/TO/KERNEL_FILE--内核文件所在的位置(/vmlinux表示boot目录下的vmlinux这个文件) root=UUID=xxxx--表示利用内核,要加载的文件系统的根系统,系统硬盘真正的根(比如/dev/sda1这块硬盘挂载到根上面 那么加载的就是这个硬盘)
	initrd:系统的一个辅助文件,是一个小型的linux文件系统,内核进入硬盘根的时候会借助它

bootloader是硬件和操作系统之间的一个媒介。硬件通过bootloader才能找到操作系统。

采用硬盘引导进入救援模式的方法

系统无法启动使用光盘的方式进入救援模式:

采用光盘启动(引导),进入rescue模式
#重启系统出现进度条的时候快速按ESC键,然后选择CD-ROM Dirver,然后选择Troubleshooting,选择Rescue a CentOS liux System,然后选择1继续,然后切换到/mnt/sysimage这个目录下操作。因为救援模式默认进入的根不是硬盘系统的根。而是ramdisk里的文件系统,并没有切换到本机硬盘上的“真正”文件系统
#正常启动的系统他不会挂载到/mnt/sysimage这个目录下的
链接:http://t.zoukankan.com/duzhaoqi-p-7327525.html

#chroot /mnt/sysimage #切换到真正的根目录下面

#grub-install /dev/sda #执行秀姑grub的命令

#sync #将缓存中的信息同步到硬盘

#exit  #退出重启

#exit

Centos6的Grub修复方法

首先需要使用光盘引导进入救援模式

#grub信息被破坏的修复方法
使用grub-install来修复:grub-install --root-directory=DIR /dev/DISK

grub-install 磁盘名称  #安装grub到硬盘上,会自动找到整个硬盘的第一个扇区MBR的前446个字节。

#无法修复grub的阶段二所对应的配置文件,需要手动编写 /boot/grub/grub.conf这个配置文件
Centos6 修复grub的方法:
方法一: #无法修复/etc/grub/grub.conf这个文件

grub-install命令: grub-install 磁盘名称  #安装grub到硬盘上,会自动找到整个硬盘的第一个扇区MBR的前446个字节。

加载内核

grub加载linux内核后,通过内核加载硬盘的根,启动系统中的第一个进程init。

内核想要进入硬盘的根,需要文件系统驱动。因为根分区有自己的文件系统。

驱动的功能由内核提供,内核的驱动存放位置在/lib目录下,例如ext4的文件系统驱动:ext4.ko.所以要加载文件系统的驱动就需要进入根的文件系统,显然不行。

所以内核此时不是从这里面加载文件系统驱动,而是从GRUB配置文件中的initrd后面指定的文件里面加载的文件系统。(是一个小型的linux文件系统)
init进程启动以后就会通过以下顺序执行相关的配置文件来设置系统

(1)/etc/inittab配置文件:确定系统使用那个运行模式(runlevel)
CentOS的运行模式有7个,对应数字0--6

0:关机
6:重启
1:安全模式
3:字符模式
5:图形界面模式

(2)运行/etc/rc.d/rc.sysinit这个脚本。初始话系统的一些信息。

设置主机名

设置欢迎信息

加载对应的服务配置

设备的挂载

交换空间的准备

系统时钟等信息

(3)根据对应的运行模式执行对应的文件夹下面脚本:/etc/rcX.d/xxx

比如运行模式是3:就执行/etc/rc3.d/ 下的脚本。

/etc/rc3.d/下面的文件都是软链接,指向/sbin/init下面的脚本。

以K开头的文件:开机启动 K##:##运行次序;数字越小,越先运行;

以S开头的文件:开机不启动。S: S##:##运行次序;数字越小,越先运行;

CentOS6的服务管理工具

  • service:服务的开启和关闭

  • chkconfig:服务的开机启动等

service

service 服务 start|stop|restart
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux串口编程 下一篇kalibr标定realsenseD435i --多相..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目