Linux学习笔记 - grub2

这篇笔记是对boot loader学习的记录. 现在linux主流的 boot loader就是grub2.

boot loader的功能:

  • 选择menuentry来决定加载哪个kernel
  • 解压kernel, 并根据相应配置加载到内存中.
  • 转交给其他的boot loader

grub2运行的两个阶段:

  • 执行grub2的主程序.
    grub2的主程序安装在MBR中, MBR非常小, 不超过446bytes.
  • 主程序载入相关配置文件.
    配置文件主要在/boot这个目录下.
[root@study ~]# ls -l /boot/grub2
-rw-r--r--. device.map <==grub2 的裝置對應檔(底下會談到)
drwxr-xr-x. fonts <==開機過程中的畫面會使用到的字型資料
-rw-r--r--. grub.cfg <==grub2 的主設定檔!相當重要!
-rw-r--r--. grubenv <==一些環境區塊的符號
drwxr-xr-x. i386-pc <==針對一般 x86 PC 所需要的 grub2 的相關模組
drwxr-xr-x. locale <==就是語系相關的資料囉drwxr-xr-x. themes <==一些開機主題畫面資料
[root@study ~]# ls -l /boot/grub2/i386-pc
-rw-r--r--. acpi.mod <==電源管理有關的模組
-rw-r--r--. ata.mod <==磁碟有關的模組
-rw-r--r--. chain.mod <==進行 loader 控制權移交的相關模組
-rw-r--r--. command.lst <==一些指令相關性的列表
-rw-r--r--. efiemu32.o <==底下幾個則是與 uefi BIOS 相關的模組
-rw-r--r--. efiemu64.o
-rw-r--r--. efiemu.mod
-rw-r--r--. ext2.mod <==EXT 檔案系統家族相關模組
-rw-r--r--. fat.mod <==FAT 檔案系統模組
-rw-r--r--. gcry_sha256.mod <==常見的加密模組
-rw-r--r--. gcry_sha512.mod
-rw-r--r--. iso9660.mod <==光碟檔案系統模組
-rw-r--r--. lvm.mod <==LVM 檔案系統模組
-rw-r--r--. mdraid09.mod <==軟體磁碟陣列模組
-rw-r--r--. minix.mod <==MINIX 相關檔案系統模組
-rw-r--r--. msdospart.mod <==一般 MBR 分割表
-rw-r--r--. part_gpt.mod <==GPT 分割表
-rw-r--r--. part_msdos.mod <==MBR 分割表
-rw-r--r--. scsi.mod <==SCSI 相關模組
-rw-r--r--. usb_keyboard.mod <==底下兩個為 USB 相關模組
-rw-r--r--. usb.mod
-rw-r--r--. vga.mod <==VGA 顯示卡相關模組
-rw-r--r--. xfs.mod

主配置文件/boot/grub2/grub.conf:

grub2对硬盘的排序编码方式与传统linux不同:

(hd0,1) # 一般的預設語法,由 grub2 自動判斷分割格式
(hd0,msdos1) # 此磁碟的分割為傳統的 MBR 模式
(hd0,gpt1) # 此磁碟的分割為 GPT 模式

(hd0,1): hd0表示搜寻到的第一块硬盘, 1表示此硬盘上的第一块分区.
注意: 硬盘的代号从0开始, 分区的代号从1开始.
(hd0,msdos1): 如果是MBR的模式, 也可以写做(hd0,msdos1)
例如:
系统中有一块SATA硬盘, 采用的是逻辑分区. 那么grub2的档名和代号是: (hd0,msdos5)可简写成(hd0,5)

主配置文件的内容:

[root@study ~]# vim /boot/grub2/grub.cfg
# 開始是 /etc/grub.d/00_header 這個腳本執行的結果展示,主要與基礎設定與環境有關
### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -s $prefix/grubenv ]; then 
   load_env
fi

.....(中間省略).....
if [ x$feature_timeout_style = xy ] ; then
   set timeout_style=menu
   set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
   set timeout=5
fi
### END /etc/grub.d/00_header ###
# 開始執行 /etc/grub.d/10_linux,主要針對實際的 Linux 核心檔案的開機環境
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux 7 (Core), with Linux 3.10.0-229.el7.x86_64' --class rhel fedora \
 --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option \
 'gnulinux-3.10.0-229.el7.x86_64-advanced-299bdc5b-de6d-486a-a0d2-375402aaab27' {
   load_video
   set gfxpayload=keep
   insmod gzio
   insmod part_gpt
   insmod xfs
   set root='hd0,gpt2'
   if [ x$feature_platform_search_hint = xy ]; then
     search --no-floppy --fs-uuid --set=root --hint='hd0,gpt2' 94ac5f77-cb8a-495e-a65b-...
   else
     search --no-floppy --fs-uuid --set=root 94ac5f77-cb8a-495e-a65b-2ef7442b837c
   fi
}
### END /etc/grub.d/10_linux ###
.....(中間省略).....
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
### END /etc/grub.d/40_custom ###
.....(底下省略).....

主配置文件的设置比较复杂, grub官方是不推荐直接修改这个文件的. 修改配置的主要方式是修改几个特定的配置文件后, 使用grub2-mkconfig -o /boot/grub2/grub.cfg这个command来配置.
menuentry当中比较重要的几个部分:

  • set root='hd0,gpt2':
    这个root是指grub2配置文件所在的装置. 以我們的測試機來說,當初安裝的時候分割出//boot 兩個裝置唷,而 grub2 是在 /boot/grub2 這個位置上, 而這個位置的磁碟檔名為 /dev/vda2 ,因此完整的 grub2 磁碟名稱就是 (hd0,2) 囉!因為我們的系統用的是 GTP 的磁碟分割格式, 因此全名就是『 hd0,gpt2 』
  • linux16 /vmlinuz-... root=/dev/mapper/centos-root ...:
    • 如果沒有 /boot 分割,僅有/ 分割:
      /boot/vmlinuz-xxx --> (/)/boot/vmlinuz-xxx --> (hd0,msdos1)/boot/vmlinuz-xxx
    • 如果 /boot 是獨立分割,則檔名的變化會是這樣:
      /boot/vmlinuz-xxx --> (/boot)/vmlinuz-xxx --> (hd0,msdos1)/vmlinuz-xxx
  • initrd16 /initramfs-3.10...:
    initramfs所在档名, 路径搜索方式同上.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容