編譯grub2-mips啟動器,制作 MIPS 架構(gòu)的 grubmips64el.efi
Compile the 64-bit grub-mips.efi launcher
一. 實驗環(huán)境
主機:龍芯3A3000 1701
系統(tǒng):Fedora28_for_loongson-MATE-Live-2.iso [下載地址](http://mirror.lemote.com/fedora/fedora28-live/Fedora28_for_loongson-MATE-Live-2.iso)
工具鏈:mips64el-redhat-linux(8.x)
內(nèi)核:4.19.5-2.fc28.lemote.1.mips64el
grub64-efi 源代碼下載地址: [下載地址](https://github.com/loongson-community/grub.git)
其實龍芯平臺下的固件已具有 bootloader 功能伸但,最后 grub 只有一個二級引導的作用了(grub.efi)
二. grub 介紹
-
grub 是什么肾请?
- GNU GRUB 是引導加載程序、啟動器更胖,可以加載各種各樣的操作系統(tǒng)铛铁,以及帶有鏈式加載的專有操作系統(tǒng), 它是解決啟動個人計算機的復雜性却妨。引導加載程序是計算機啟動運行的第一個軟件程序饵逐。它負責將控制加載和轉(zhuǎn)移到操作系統(tǒng)內(nèi)核軟件(例如 Linux 內(nèi)核),之后內(nèi)核初始化操作系統(tǒng)的其余部分彪标。
- GNU GRUB 的一個重要的特性是靈活性倍权;GRUB 知道文件系統(tǒng)和內(nèi)核可執(zhí)行格式,因此使用者可以按照自己喜歡的方式加載任意操作系統(tǒng)捞烟,而無須記錄內(nèi)核在磁盤上的物理位置账锹。因此只需指定其文件名以及內(nèi)核所在的驅(qū)動器和分區(qū)即可加載內(nèi)核。
-
磁盤分區(qū)命名習慣和文件路徑表示方法
-
grub 對設備與分區(qū)的命名規(guī)則: 磁盤從"0"開始計數(shù)坷襟,分區(qū)從"1"開始計數(shù)
(fd0) :表示第一塊軟盤 (hd0,msdos2) :表示第一塊硬盤的第二個mbr分區(qū)奸柬。grub2中分區(qū)從1開始編號,傳統(tǒng)的grub是從0開始編號的 (hd0,msdos5) :表示第一塊硬盤的第一個邏輯分區(qū) (hd0,gpt1) :表示第一塊硬盤的第一個gpt分區(qū) /boot/vmlinuz :相對路徑婴程,基于根目錄廓奕,表示根目錄下的boot目錄下的vmlinuz, :如果設置了根目錄變量root為(hd0,msdos1),則表示(hd0,msdos1)/boot/vmlinuz (hd0,msdos1)/boot/vmlinuz:絕對路徑桌粉,表示第一硬盤第一分區(qū)的boot目錄下的vmlinuz文件
-
-
文件的命名方法: (1)絕對路徑表示法蒸绩,(2)相對路徑表示法
(fd0)/grldr 第一軟盤根目錄下的"grldr"文件[絕對路徑] (hd0,gpt1)/boot/vmlinuz 第一硬盤的第一GPT分區(qū)"boot"目錄下的"vmlinuz"文件[絕對路徑] /boot/vmlinuz 根設備"boot"目錄下的"vmlinuz"文件[相對路徑], 當"root"環(huán)境變量等于"(hd0,gpt1)"時铃肯,等價于"(hd0,gpt1)/boot/vmlinuz"
-
磁盤塊的命名方法:(1)絕對路徑表示法患亿,(2)相對路徑表示法。
(hd1,1)0+1 在第二硬盤的第一分區(qū)上押逼,從第"0"個磁盤塊(首扇區(qū))起步藕,長度為"1"的連續(xù)塊。[絕對路徑] (hd1,1)+1 含義與上一個相同挑格,因為當從第"0"個磁盤塊(首扇區(qū))起時咙冗,"0"可以省略不寫。[絕對路徑] +1 在根設備上漂彤,從第"0"個磁盤塊(首扇區(qū))起雾消,長度為"1"的連續(xù)塊。[相對路徑] 當"root"環(huán)境變量等于"(hd1,1)"時挫望,等價于"(hd1,1)0+1"
-
引導操作系統(tǒng)的兩種方式
-
直接引導操作系系統(tǒng)
使用命令:boot
-
鏈式裝載:鏈式加載另一個加載程序立润,然后另一個加載程序?qū)嶋H加載操作系統(tǒng)。
# 使用命令:chainloader # 要加一些GRUB模塊并設置適當?shù)母O備媳板,以 Windows 為例: menuentry "Windows" { insmod chain insmod ntfs set root=(hd0,1) chainloader +1 }
-
三. 在x86架構(gòu)下桑腮,對grub1 與 grub2 引導階段剖析(再去結(jié)合龍芯PMON、昆侖固件拷肌、UEFI固件分析啟動過程到旦,因為龍芯固件已包含 bootloader 功能旨巷,對比分析)
使用dd讀取前512字節(jié)的內(nèi)容寫到MBR.in文件巨缘,然后使用od采取十六進制格式、ASCII打印 MBR.in文件內(nèi)容
運行以下內(nèi)容即可在終端觀察到系統(tǒng)MBR的內(nèi)容:
dd if=/dev/sda of=MBR.in bs=512 count=1
od -xa MBR.in
-
老式 grub 啟動的三個階段:stage1采呐、stage1.5若锁、stage2
-
staege1: 主要負責當 BIOS 交給 grub 時,載入存在于各分區(qū)中的開機文件斧吐,也就是所謂的開機管理程序又固,/boot/grub 中的 stage1 文件大小為 512 Byte(提醒下MBR大小也是 512 Byte),stage1文件其實就是 MBR 中的 bootloader 的備份文件煤率,或者說管理程序的備份文件(管理程序有可能裝在 bootsector 中)仰冠。bootloader 只有前 446 Byte 和 MBR 一樣,緊隨之后的 64 Byte 則和現(xiàn)存的 MBR 沒有關(guān)系蝶糯,MBR 的接下來的 64 Byte 是 Partition Table洋只,記錄分區(qū)信息,MBR 最后 2 Byte 是 Magic Number 55AA 目的只是讓存在于 bootloader 區(qū)的管理程序辨認扇區(qū)時,可以確認所存儲的這個地方就是 MBR识虚,有點像 MBR 的標識肢扯。
# 使用dd讀取前512字節(jié)的內(nèi)容寫到MBR.in文件,然后使用od采取十六進制格式担锤、ASCII # 打印 MBR.in文件內(nèi)容 運行以下內(nèi)容即可在終端觀察到系統(tǒng)MBR的內(nèi)容: dd if=/dev/sda of=MBR.in bs=512 count=1 od -xa MBR.in
-
-
stage1.5: stage1.5 階段是連接 stage1 到 stage2 的一個信道蔚晨,里面唯一存放著的是該系統(tǒng)文件的格式。在 grub 目錄下有若干 stage1.5 的文件肛循,如 e2fs_stage1_5铭腕、fat_stage1_5、jfs_stage1_5育拨、reiserfs_stage1_5谨履,這些都屬于 stage1.5 階段功能的文件。
- stage1 在加載 stage1.5 后熬丧,比如 e2fs_stage1_5(ext2 的文件系統(tǒng))笋粟,就可以識別 ext2 文件系統(tǒng)的格式。在 stage1 加載 stage1.5 之后析蝴,stage1 就可以識別 ext2 并將 stage2 加載害捕。因為在 stage1.5 被加載時,就已經(jīng)賦予 GRUB 訪問文件系統(tǒng)目錄的能力闷畸,所以尝盼,自然就可以在開始找不到 stage2 的情況下,從文件系統(tǒng)目錄中找出 stage2 的所在位置佑菩,并激活 Linux 盾沫。
-
stage2: stage2 文件是 GRUB 的核心程序,能讓用戶以選項方式將操作系統(tǒng)加載殿漠、新增參數(shù)赴精、添加選項,這些全都是 stage2 的功能绞幌。對 GRUB 來說蕾哟,stage2 除了不能自己激活外,剩余的事情全被 stage2 包了莲蜘。stage2 文件存放在各分區(qū)的 Bootsector 中谭确,主要功能為:
- 提供選項
- 訪問設置文件
- 連接下一個 boot sector
-
grub2 與 grub 的區(qū)別
1.配置文件的名稱改變了。在grub中票渠,配置文件為grub.conf或menu.lst(grub.conf的一個軟鏈接)逐哈,在grub2中改名為grub.cfg。 2.grub2增添了許多語法问顷,更接近于腳本語言了昂秃,例如支持變量薯鼠、條件判斷、循環(huán)械蹋。 3.grub2中出皇,設備分區(qū)名稱從1開始,而在grub中是從0開始的哗戈。 4.grub2使用img文件郊艘,不再使用grub中的stage1、stage1.5和stage2唯咬。 5.支持圖形界面配置grub纱注,但要安裝grub-customizer包,epel源提供該包胆胰。 6.在已進入操作系統(tǒng)環(huán)境下狞贱,不再提供grub命令,也就是不能進入grub交互式界面蜀涨,只有在開機時才能進入瞎嬉,算是一大缺憾。 7.在grub2中沒有了好用的find命令厚柳,算是另一大缺憾氧枣。
-
在x86架構(gòu)下,分析bootloader 與 新老 版本 grub 關(guān)系(再去結(jié)合龍芯PMON别垮、昆侖固件便监、UEFI固件分析啟動過程,因為龍芯固件已包含 bootloader 功能)
img文件是grub2生成的碳想,stage文件是傳統(tǒng)grub生成的烧董。
當使用grub來管理啟動菜單時,那么boot loader都是grub程序安裝的胧奔。
傳統(tǒng)的grub將stage1轉(zhuǎn)換后的內(nèi)容安裝到MBR(VBR或EBR)中的boot loader部分逊移,將stage1_5轉(zhuǎn)換后的內(nèi)容安裝在緊跟在MBR后的扇區(qū)中,將stage2轉(zhuǎn)換后的內(nèi)容安裝在/boot分區(qū)中葡盗。
-
grub2將boot.img轉(zhuǎn)換后的內(nèi)容安裝到MBR(VBR或EBR)中的boot loader部分螟左,將diskboot.img和kernel.img結(jié)合成為core.img啡浊,同時還會嵌入一些模塊或加載模塊的代碼到core.img中觅够,然后將core.img轉(zhuǎn)換后的內(nèi)容安裝到磁盤的指定位置處。
引用駿馬金龍 grub2
-
在 x86 架構(gòu)下編譯 grub2 后身成一些 .img 文件 和 mod 文件巷嚣,其 img 各文件的作用為(結(jié)合 grub 的三個stage 階段分析 ):
-
img 列表
grub2 img list
-
-
boot.img
- 在BIOS平臺下喘先,boot.img是grub啟動的第一個img文件,它被寫入到MBR中或分區(qū)的boot sector中廷粒,因為boot sector的大小是512字節(jié)窘拯,所以該img文件的大小也是512字節(jié)
- boot.img唯一的作用是讀取屬于core.img的第一個扇區(qū)并跳轉(zhuǎn)到它身上红且,將控制權(quán)交給該扇區(qū)的img。由于體積大小的限制涤姊,boot.img無法理解文件系統(tǒng)的結(jié)構(gòu)暇番,因此grub2-install將會把core.img的位置硬編碼到boot.img中,這樣就一定能找到core.img的位置思喊。
-
core.ing
- core.img根據(jù)diskboot.img壁酬、kernel.img和一系列的模塊被grub2-mkimage程序動態(tài)創(chuàng)建。core.img中嵌入了足夠多的功能模塊以保證grub能訪問/boot/grub恨课,并且可以加載相關(guān)的模塊實現(xiàn)相關(guān)的功能舆乔,例如加載啟動菜單、加載目標操作系統(tǒng)的信息等剂公,由于grub2大量使用了動態(tài)功能模塊希俩,使得core.img體積變得足夠小。
- core.img中包含了多個img文件的內(nèi)容纲辽,包括diskboot.img/kernel.img等颜武。
- core.img的安裝位置隨MBR磁盤和GPT磁盤而不同,這在文中分區(qū)類型中已經(jīng)說明過了拖吼。
-
diskboot.img
- 如果啟動設備是硬盤盒刚,即從硬盤啟動時,core.img中的第一個扇區(qū)的內(nèi)容就是diskboot.img绿贞。diskboo.img的作用是讀取core.img中剩余的部分到內(nèi)存中因块,并將控制權(quán)交給kernel.img,由于此時還不識別文件系統(tǒng)籍铁,所以將core.img的全部位置以block列表的方式編碼涡上,使得diskboot.img能夠找到剩余的內(nèi)容。
- 該img文件因為占用一個扇區(qū)拒名,所以體積為512字節(jié)吩愧。
-
cdboot.img
- 如果啟動設備是光驅(qū)(cd-rom),即從光驅(qū)啟動時增显,core.img中的第一個扇區(qū)的的內(nèi)容就是cdboo.img雁佳。它的作用和diskboot.img是一樣的。
-
pexboot.img
- 如果是從網(wǎng)絡的PXE環(huán)境啟動同云,core.img中的第一個扇區(qū)的內(nèi)容就是pxeboot.img糖权。
-
kernel.img
- kernel.img文件包含了grub的基本運行時環(huán)境:設備框架、文件句柄炸站、環(huán)境變量星澳、救援模式下的命令行解析器等等。很少直接使用它旱易,因為它們已經(jīng)整個嵌入到了core.img中了禁偎。注意腿堤,kernel.img是grub的kernel,和操作系統(tǒng)的內(nèi)核無關(guān)
- 如果細心的話如暖,會發(fā)現(xiàn)kernel.img本身就占用28KB空間笆檀,但嵌入到了core.img中后,core.img文件才只有26KB大小盒至。這是因為core.img中的kernel.img是被壓縮過的误债。
-
lnxboot.img
- 該img文件放在core.img的最前部位,使得grub像是linux的內(nèi)核一樣妄迁,這樣core.img就可以被LILO的"image="識別寝蹈。當然,這是配合LILO來使用的登淘,但現(xiàn)在誰還適用LILO呢箫老?
-
*.mod
- 各種功能模塊,部分模塊已經(jīng)嵌入到core.img中黔州,或者會被grub自動加載耍鬓,但有時也需要使用insmod命令手動加載。
-
老版本的 grub stage 階段與 grub img 對比
- stage1
- stage1文件在功能上等價于boot.img文件流妻。目的是跳轉(zhuǎn)到stage1_5或stage2的第一個扇區(qū)上牲蜀。
- *_stage1_5
- *stage1_5文件包含了各種識別文件系統(tǒng)的代碼,使得grub可以從文件系統(tǒng)中讀取體積更大功能更復雜的stage2文件绅这。從這一方面考慮涣达,它類似于core.img中加載對應文件系統(tǒng)模塊的代碼部分,但是core.img的功能遠比stage1_5多证薇。
- stage1_5一般安裝在MBR后度苔、第一個分區(qū)前的那段空閑空間中,也就是MBR gap空間浑度,它的作用是跳轉(zhuǎn)到stage2的第一個扇區(qū)寇窑。
- 其實傳統(tǒng)的grub在某些環(huán)境下是可以不用stage1_5文件就能正常運行的,但是grub2則不能缺少core.img箩张。
- stage2
- stage2的作用是加載各種環(huán)境和加載內(nèi)核甩骏,在grub2中沒有完全與之相對應的img文件,但是core.img中包含了stage2的所有功能
- 當跳轉(zhuǎn)到stage2的第一個扇區(qū)后先慷,該扇區(qū)的代碼負責加載stage2剩余的內(nèi)容饮笛。
- 注意,stage2是存放在磁盤上的熟掂,并沒有像core.img一樣嵌入到磁盤上缎浇。
- stage2_eltorito
- 功能上等價于grub2中的core.img中的cdboot.img部分扎拣。一般在制作救援模式的grub時才會使用到cd-rom相關(guān)文件
- pxegrub
- 功能上等價于grub2中的core.img中的pxeboot.img部分赴肚。
- stage1
只要有/boot/grub2/i386-pc下的img文件就一定能通過grub2相關(guān)程序再次生成boot loader(寫入到磁盤中)素跺。
四. 分區(qū)類型選擇(X86情況下)
-
MBR 分區(qū):這種格式允許四個主分區(qū)和額外的邏輯分區(qū),使用這種格式的分區(qū)表誉券。有兩種方式安裝GURB:
嵌入到MBR和第一個分區(qū)中間的空間指厌,這部分就是大眾所稱的"boot track","MBR gap"或"embedding area",它們大致需要31kB的空間踊跟;
將core.img安裝到某個文件系統(tǒng)中踩验,然后使用分區(qū)的第一個扇區(qū)(嚴格地說不是第一個扇區(qū),而是第一個block)存儲啟動它的代碼商玫。
使用嵌入的方式安裝grub箕憾,就沒有保留的空閑空間來保證安全性,例如有些專門的軟件就是使用這段空間來實現(xiàn)許可限制的拳昌;另外分區(qū)的時候袭异,雖然會在MBR和第一個分區(qū)中間留下空閑空間,但可能留下的空間會比這更小炬藤。
方法二安裝grub到文件系統(tǒng)御铃,但這樣的grub是脆弱的。例如沈矿,文件系統(tǒng)的某些特性需要做尾部包裝上真,甚至某些fsck檢測,它們可能會移動這些block
GRUB開發(fā)團隊建議將GRUB嵌入到MBR和第一個分區(qū)之間羹膳,除非有特殊需求睡互,但仍必須要保證第一個分區(qū)至少是從第31kB(第63個扇區(qū))之后才開始創(chuàng)建的。
現(xiàn)在的磁盤設備陵像,一般都會有分區(qū)邊界對齊的性能優(yōu)化提醒湃缎,所以第一個分區(qū)可能會自動從第1MB處開始創(chuàng)建。
-
GPT 分區(qū)
- 一些新的系統(tǒng)使用GUID分區(qū)表(GPT)格式蠢壹,這種格式是EFI固件所指定的一部分嗓违。但如果操作系統(tǒng)支持的話,GPT也可以用于BIOS平臺(即MBR風格結(jié)合GPT格式的磁盤)图贸,使用這種格式蹂季,需要使用獨立的BIOS boot分區(qū)來保存GRUB,GRUB被嵌入到此分區(qū)疏日,不會有任何風險偿洁。
- 當在gpt磁盤上創(chuàng)建一個BIOS boot分區(qū)時,需要保證兩件事:
- (1)它最小是31kB大小沟优,但一般都會為此分區(qū)劃分1MB的空間用于可擴展性涕滋;
- (2)必須要有合理的分區(qū)類型標識(flag type)。
五. 制作 grubmips64el.efi
-
編譯64位 mips grub2
git clone https://github.com/loongson-community/grub.git cd grub bash autogen.sh ./configure --prefix=安裝目錄 make ; make install
-
grub64.efi 制作腳本
grub-mkimage -p /boot/EFI/BOOT/ -d mips64el-efi/ -c grub.cfg -o grub.efi-config-3 -O mips64el-efi 后跟所要加載的模塊
-
參數(shù)含義
-d 表示指定查找模塊目錄 -c 表示指定配置文件挠阁,這個配置文件會集成到efi文件內(nèi)宾肺,就是我們剛剛編寫的x86_64-efi.cfg -p 設置偏好文件夾溯饵,cfg文件中會調(diào) -o 表示生成的目標文件 -O 表示集成的模塊
-
-
GRUB2 模塊介
- grub2生成了的 mod 文件,分布在/usr/lib64/grub/mips64el-efi目錄下锨用、/boot/grub2/mips64el-efi目錄下丰刊。
- 命令模塊[command.list]
- 提供了各種不同的功能,類似標準 Unix 命令增拥,一共將近 100 個啄巧。例如:cat cpuid echo halt lspci chainloader initrd linux password ...
- 加密模塊[crypto.list]
- 提供了各種數(shù)據(jù)完整性校驗與密碼算法支持,一共 20 多個掌栅。例如:gcry_rijndael crc64 fcry_md5 ...
- 文件系統(tǒng)模塊[fs.list]
- 提供了訪問各種文件系統(tǒng)的功能秩仆,一共 30 多個。例如:btrfs cpio exfat ext2 fat iso9660 ntfs tar xfs zfs ...
- 分區(qū)模塊[partmap.list]
- 提供了識別各種分區(qū)格式的功能猾封,一共 10 多個逗概。例如:part_bsd part_gpt part_msdo ...
- 分區(qū)工具[parttool.list]
- 提供了操作各種分區(qū)格式的功能,目前只有 msdospart 這一個忘衍。
- 終端模塊[terminal.list]
- 提供各種不同終端的支持逾苫,一共不到 10 個。例如:serial gfxterm vga_text at_keyboard ...
- 視頻模塊[video.list]
- 提供各種不同的視頻模式支持枚钓,一共 6 個铅搓。例如:vga vbe efi_gop efi_uga ...
- 其他模塊:所有未在上述分類文件中列出的模塊都歸為這一類,一共將近 100 個搀捷。值得關(guān)注的有以下幾個:
- “all_video” 可用于一次性加載當前所有可用的視頻模塊星掰;
- “gfxmenu” 可用于提供主題支持;
- “jpeg png tag" 可用于提供特定格式的背景圖片支持嫩舟;
- “xzio gzio lzopio” 可用于提供特定壓縮格式支持(常配合“initrd”命令使用)氢烘;
-
制作 grubmips64el.efi 腳本(下面我把所有的模塊都加載進 grub.efi 文件,但有個弊端就是會影響到系統(tǒng)啟動)
grub-mkimage -p /boot/EFI/BOOT/ -d mips64el-efi/ -c grub.cfg -o grub.efi-config-3 -O mips64el-efi acpi adler32 affs afs all_video archelp bfs bitmap bitmap_scale blocklist boot bswap_test btrfs bufio cat cbfs chain cmdline_cat_test cmp cmp_test configfile cpio_be cpio crc64 cryptodisk crypto ctz_test datehook date datetime diskfilter disk div div_test dm_nv echo efifwsetup efi_gop efinet elf eval exfat exfctest ext2 extcmd fat file font fshelp functional_test gcry_arcfour gcry_blowfish gcry_camellia gcry_cast5 gcry_crc gcry_des gcry_dsa gcry_idea gcry_md4 gcry_md5 gcry_rfc2268 gcry_rijndael gcry_rmd160 gcry_rsa gcry_seed gcry_serpent gcry_sha1 gcry_sha256 gcry_sha512 gcry_tiger gcry_twofish gcry_whirlpool geli gettext gfxmenu gfxterm_background gfxterm_menu gfxterm gptsync gzio halt hashsum hello help hexdump hfs hfspluscomp hfsplus http iso9660 jfs jpeg keystatus ldm linux loadenv loopback lsacpi lsefimmap lsefi lsefisystab lsmmap ls lssal luks lvm lzopio macbless macho mdraid09_be mdraid09 mdraid1x memdisk memrw minicmd minix2_be minix2 minix3_be minix3 minix_be minix mmap mpi msdospart mul_test net newc nilfs2 normal ntfscomp ntfs odc offsetio part_acorn part_amiga part_apple part_bsd part_dfly part_dvh part_gpt part_msdos part_plan part_sun part_sunpc parttool password password_pbkdf2 pbkdf2 pbkdf2_test png priority_queue probe procfs progress raid5rec raid6rec read reboot regexp reiserfs relocator romfs scsi search_fs_file search_fs_uuid search_label search serial setjmp setjmp_test sfs shift_test signature_test sleep sleep_test squash4 syslinuxcfg tar terminal terminfo test_blockarg testload test testspeed tftp tga time trig tr true udf ufs1_be ufs1 ufs2 verify video_colors video_fb videoinfo video videotest_checksum videotest xfs xnu_uuid xnu_uuid_test xzio zfscrypt zfsinfo zfs
-
grub.cfg 制作 grubmips64el.efi 的配置文件
search.file /boot/EFI/BOOT/grub.cfg root set prefix=($root)/boot/ configfile ($root)/boot/EFI/BOOT/grub.cfg
-
啟動參數(shù)
救援模式:systemd.unit=rescue.target 0 運行級別:systemd.unit=poweroff.target 1,s,single 運行級別(單用戶模式):systemd.unit=rescue.target 2,4 運行級別(多用戶模式家厌,通常識別為級別3播玖,多用戶、無圖形界面饭于。用戶可以通過終端或網(wǎng)絡登錄):systemd.unit=multi-user.target 5 運行級別(多用戶蜀踏、圖形界面。繼承級別 3 的服務掰吕,并啟動圖形界面服務):systemd.unit=graphical.target 6 運行級別(重啟):systemd.unit=reboot.target emergency 運行級別(急救模式[emergency shell]):systemd.unit=emergency.target rdinit=/sbin/init
-
生成 grub 配置文件 grub.cfg
# 根據(jù)/etc/default/grub.d/下的文件來創(chuàng)建配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg
-
grub 全局配置文件 /etc/default/grub
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="gfxterm" GRUB_CMDLINE_LINUX="rhgb quiet" GRUB_DISABLE_RECOVERY="true" # GRUB_TIMEOUT=5 開機選擇項的超時時間 # GRUB_DEFAULT=saved 設置為 saved 則是上一次登錄的系統(tǒng)條目果覆,可設置“0-N” 0為最上面一條系統(tǒng)條目 # GRUB_CMDLINE_LINUX="rhgb quiet" 添加到菜單中的內(nèi)核啟動參數(shù)
九. 參考資料
- GNU GRUB 手冊
- GRUB2配置文件"grub.cfg"詳解
- 《Linux 操作系統(tǒng)之奧秘》