編譯grub2-mips啟動器儿惫,制作 MIPS 架構(gòu)的 grubmips64el.efi

編譯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 介紹

  1. 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)核。
  2. 磁盤分區(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"
    
  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

  1. 老式 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
  1. 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命令厚柳,算是另一大缺憾氧枣。
    
  1. 在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
  1. 在 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命令手動加載。
  1. 老版本的 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部分赴肚。
  2. 只要有/boot/grub2/i386-pc下的img文件就一定能通過grub2相關(guān)程序再次生成boot loader(寫入到磁盤中)素跺。

四. 分區(qū)類型選擇(X86情況下)

  1. 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)建。

  1. 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

  1. 編譯64位 mips grub2

    git clone https://github.com/loongson-community/grub.git
    cd grub
    bash autogen.sh
    ./configure --prefix=安裝目錄
    make ; make install
    
  1. 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 表示集成的模塊
      
  2. 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”命令使用)氢烘;
  3. 制作 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
    
  1. grub.cfg 制作 grubmips64el.efi 的配置文件

    search.file /boot/EFI/BOOT/grub.cfg root
    set prefix=($root)/boot/
    configfile ($root)/boot/EFI/BOOT/grub.cfg
    
  1. 啟動參數(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
    
  2. 生成 grub 配置文件 grub.cfg

    # 根據(jù)/etc/default/grub.d/下的文件來創(chuàng)建配置文件
    grub2-mkconfig -o /boot/grub2/grub.cfg
    
  1. 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ù)
    

九. 參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市殖熟,隨后出現(xiàn)的幾起案子局待,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钳榨,死亡現(xiàn)場離奇詭異舰罚,居然都是意外死亡,警方通過查閱死者的電腦和手機重绷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門沸停,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膜毁,“玉大人昭卓,你說我怎么就攤上這事∥帘酰” “怎么了候醒?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杂瘸。 經(jīng)常有香客問我倒淫,道長,這世上最難降的妖魔是什么败玉? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任敌土,我火速辦了婚禮,結(jié)果婚禮上运翼,老公的妹妹穿的比我還像新娘返干。我一直安慰自己,他們只是感情好血淌,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布矩欠。 她就那樣靜靜地躺著,像睡著了一般悠夯。 火紅的嫁衣襯著肌膚如雪癌淮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天沦补,我揣著相機與錄音乳蓄,去河邊找鬼。 笑死夕膀,一個胖子當著我的面吹牛栓袖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播店诗,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼裹刮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庞瘸?” 一聲冷哼從身側(cè)響起捧弃,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后违霞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘴办,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年买鸽,在試婚紗的時候發(fā)現(xiàn)自己被綠了涧郊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡眼五,死狀恐怖妆艘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情看幼,我是刑警寧澤批旺,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站诵姜,受9級特大地震影響汽煮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棚唆,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一暇赤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宵凌,春花似錦鞋囊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至微饥,卻和暖如春逗扒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欠橘。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工矩肩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肃续。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓黍檩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親始锚。 傳聞我的和親對象是個殘疾皇子刽酱,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348