首頁  >  文章  >  運維  >  linux mbr grub是什麼

linux mbr grub是什麼

藏色散人
藏色散人原創
2023-03-14 09:48:001427瀏覽

linux mbr grub是整個linux系統啟動的流程,其中mbr的英文全名為“Master Boot Record”,表示主開機記錄,mbr儲存於磁碟的頭部,大小為512bytes;grub的英文全稱是“Grand Unified Bootloader”,表示多系統啟動程式。

linux mbr grub是什麼

本教學操作環境:linux5.9.8系統、Dell G3電腦。

linux mbr grub是什麼?

詳解Linux開機流程:BIOS->MBR->GRUB等等...

概述

Linux是一種自由和開放原始碼的類UNIX作業系統。該作業系統的核心由林納斯·托瓦茲在1991年10月5日首次發布。在加上用戶空間的應用程式之後,成為Linux作業系統。 Linux是自由軟體和開放原始碼軟體發展中最著名的例子。

下面簡單記錄Linux系統從開機到能使用的整個過程,以便備忘!

LINUX啟動流程

先透過一張圖來簡單了解下整個系統啟動的流程,整個流程基本上可以分為POST-->BIOS-- >MBR(GRUB)-->Kernel-->Init-->Runlevel。以下會詳細說明每個過程的作用。

linux mbr grub是什麼

BIOS

BIOS(Basic Input/Output System),基本輸入輸出系統,該系統儲存於主機板的ROM晶片上,電腦在開機時,會先讀取該系統,然後會有一個加電自檢過程,這個過程其實就是檢查CPU和內存,計算機最基本的組成單元(控制器、運算器和存儲器),也會檢查其他硬件,若沒有異常就開始載入BIOS程式到記憶體當中。詳細的BIOS功能,這邊就不說了,BIOS主要的一個功能就是儲存了磁碟的啟動順序,BIOS會按照啟動順序去查找第一個磁碟頭的MBR信息,並載入和執行MBR中的Bootloader程序,若第一個磁碟不存在MBR,則會繼續尋找第二個磁碟(PS:啟動順序可以在BIOS的介面中進行設定),一旦BootLoader程式被偵測並載入記憶體中,BIOS就會將控制權交接給了BootLoader程式。

MBR

MBR(Master Boot Record),主開機記錄,MBR儲存於磁碟的頭部,大小為512bytes,其中,446bytes用於儲存BootLoader程式,64bytes用於儲存分區表信息,最後2bytes用於MBR的有效性檢查。

linux mbr grub是什麼

GRUB

GRUB(Grand Unified Bootloader),多系統啟動程序,其執行過程可分為三個步驟:

Stage1:這個其實就是MBR,它的主要工作就是尋找並載入第二段Bootloader程式(stage2),但係統在沒啟動時,MBR根本找不到檔案系統,也找不到stage2所存放的位置,因此,就有了stage1_5

Stage1_5:此步驟就是為了辨識檔案系統

Stage2:GRUB程式會依照/boot/grub/grub.conf檔案找出Kernel的信息,然後開始加載Kernel程序,當Kernel程序被檢測並在加載到內存中,GRUB就將控制權交接給了Kernel程序。

PS:實際上這個步驟/boot還沒被掛載,GRUB直接辨識grub所在磁碟的檔案系統,所以實際上應該是/grub/grub.conf文件,該設定檔的資訊如下:

grub.conf:

#boot=/dev/sda
default=0 #设定默认启动的title的编号,从0开始
timeout=5 #等待用户选择的超时时间
splashimage=(hd0,0)/boot/grub/splash.xpm.gz #GRUB的背景图片
hiddenmenu #隐藏菜单
title CentOS (2.6.18-194.el5PAE) #内核标题
root (hd0,0) #内核文件所在的设备
kernel /vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ #内核文件路径以及传递给内核的参数
initrd /initrd-2.6.18-194.el5PAE.img #ramdisk文件路径

Kernel

Kernel,內核,Kernel是Linux系統最主要的程序,實際上,Kernel的文件很小,只保留了最基本的模組,並以壓縮的文件形式存儲在硬碟中,當GRUB將Kernel讀進內存,內存開始解壓縮內核文件。講內核啟動,應該先講下initrd這個文件,

initrd(Initial RAM Disk),它在stage2這個步驟就被拷貝到了內存中,這個文件是在安裝系統時產生的,是一個臨時的根檔案系統(rootfs)。因為Kernel為了精簡,只保留了最基本的模組,因此,Kernel上並沒有各種硬體的驅動程序,也就無法識rootfs所在的設備,故產生了initrd這個文件,該文件裝載了必要的驅動模組,當Kernel啟動時,可以從initrd檔案中裝載驅動模組,直到掛載真正的rootfs,然後將initrd從記憶體中移除。

Kernel會以唯讀方式掛載根檔案系統,當根檔案系統被掛載後,開始裝載第一個進程(用戶空間的進程),執行/sbin/init,之後就將控制權交接給了init程式。

Init

#

init,初始化,顾名思义,该程序就是进行OS初始化操作,实际上是根据/etc/inittab(定义了系统默认运行级别)设定的动作进行脚本的执行,第一个被执行的脚本为/etc/rc.d/rc.sysinit,这个是真正的OS初始化脚本,简单讲下这个脚本的任务(可以去看看实际脚本,看看都做了什么):

  • 激活udev和selinux;

  • 根据/etc/sysctl.conf文件,来设定内核参数;

  • 设定系统时钟;

  • 装载硬盘映射;

  • 启用交换分区;

  • 设置主机名;

  • 根文件系统检测,并以读写方式重新挂载根文件系统;

  • 激活RAID和LVM设备;

  • 启用磁盘配额;

  • 根据/etc/fstab,检查并挂载其他文件系统;

  • 清理过期的锁和PID文件

执行完后,根据配置的启动级别,执行对应目录底下的脚本,最后执行/etc/rc.d/rc.local这个脚本,至此,系统启动完成。

Runlevel

runlevel,运行级别,不同的级别会启动的服务不一样,init会根据定义的级别去执行相应目录下的脚本,Linux的启动级别分为以下几种

0:关机模式

1:单一用户模式(直接以管理员身份进入)

2:多用户模式(无网络)

3:多用户模式(命令行)

4:保留

5:多用户模式(图形界面)

6:重启

在不同的运行级别下,/etc/rc.d/rc这个脚本会分别执行不同目录下的脚本

Run level 0 – /etc/rc.d/rc0.d/
Run level 1 – /etc/rc.d/rc1.d/
Run level 2 – /etc/rc.d/rc2.d/
Run level 3 – /etc/rc.d/rc3.d/
Run level 4 – /etc/rc.d/rc4.d/
Run level 5 – /etc/rc.d/rc5.d/
Run level 6 – /etc/rc.d/rc6.d/

这些目录下的脚本只有K*和S*开头的文件,K开头的文件为开机需要执行关闭的服务,S开头的文件为开机需要执行开启的服务。

相关推荐:《Linux视频教程

以上是linux mbr grub是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn