linux系統下grub.cfg詳解和實體操作
簡介
grub是引導作業系統的程式,它會根據自己的組態檔,去引導內核,當內核被加載到記憶體以后,內核會根據grub組態檔中的配置,找到根磁區所使用的檔案系統對應的驅動,通過根磁區檔案系統對應的驅動,掛載根磁區,從而達到啟動作業系統的目的,
特殊變數
| 變數 | 詳解 |
|---|---|
| ? | 上一條命令的回傳值,零表示成功,非零表示失敗[與bash一樣],由GRUB2自動設定,你只能使用此變數,而不能修改它 |
| check_signatures | 是否在加載檔案時強制驗證簽名,可以設為’yes’或’no’ |
| chosen | 當前被執行的選單項名稱(緊跟"menuentry"命令之后的字串或者’–id’選項的引數),例如’Windows 7’,由GRUB2自動設定,你只應該使用此變數,而不應該修改它 |
| cmdpath | 當前被加載的"core.img"所在目錄(絕對路徑),例如:UEFI啟動可能是’(hd0,gpt1)/EFI/UBUNTU’或’(cd0)/EFI/BOOT’,BIOS啟動可能是’(hd0)’,由GRUB2自動設定,你只應該使用此變數,而不應該修改它 |
| debug | 設為’all’時表示開啟除錯輸出[會顯示大量資訊,謹慎開啟] |
| default | 默認選中第幾個選單項(從’0’開始計數) |
| fallback | 如果默認選單項啟動失敗,那么就啟動第幾個選單項(從’0’開始計數) |
| gfxmode | 設定"gfxterm"模塊所使用的視頻模式,可以指定一組由逗號或分號分隔的模式以供逐一嘗試:每個模式的格式必須是:‘auto’(自動檢測),‘寬x高’,‘寬x高x色深’之一,并且只能使用VBE標準指定的模式[640x480,800x600,1024x768,1280x1024]x[16,24,32],可以在GRUB SHELL中使用"videoinfo"命令列出當前所有可用模式,默認值是’auto’ |
| gfxpayload | 設定Linux內核啟動時的視頻模式,可以指定一組由逗號或分號分隔的模式以供逐一嘗試:每個模式的格式必須是:‘text’(普通文本模式,不能用于UEFI平臺),‘keep’(繼承"gfxmode"的值),‘auto’(自動檢測),‘寬x高’,‘寬x高x色深’之一,并且只能使用VBE標準指定的模式[640x480,800x600,1024x768,1280x1024]x[16,24,32],在BIOS平臺上的默認值是’text’,在UEFI平臺上的默認值是’auto’,除非你想明確設定Linux控制臺的解析度(要求內核必須"CONFIG_FRAMEBUFFER_CONSOLE=y"),或者打算在BIOS平臺上使用圖形控制臺(要求內核必須"CONFIG_FRAMEBUFFER_CONSOLE=y"),否則不要設定此變數 |
| gfxterm_font | 設定"gfxterm"模塊所使用的字體,默認使用所有可用字體 |
| grub_cpu | 此GRUB所適用的CPU型別,例如:‘i386’, ‘x86_64’,由GRUB2自動設定,你只應該使用此變數,而不應該修改它 |
| grub_platform | 此GRUB所適用的平臺型別,例如:‘pc’, ‘efi’,由GRUB2自動設定,你只應該使用此變數,而不應該修改它, lang設定GRUB2的界面語言,必須搭配"locale_dir"變數一起使用,簡體中文應設為’zh_CN’ |
| locale_dir | 設定翻譯檔案(*.mo)的目錄,通常是’$prefix/locale’,若未明確設定此目錄,則禁止國際化, pager如果設為’1’,那么每一滿屏后暫停輸出,等待鍵盤輸入,預設是’’,表示不暫停 |
| prefix | 絕對路徑形式的’/boot/grub’目錄位置(也就是GRUB2的安裝目錄),例如’(hd0,gpt1)/grub’或’(hd0,msdos2)/boot/grub’,初始值由GRUB在啟動時根據"grub-install"在安裝時提供的資訊自動設定,你只應該使用此變數,而不應該修改它 |
| root | 設定"根設備",任何未指定設備名的檔案都視為位于此設備,初始值由GRUB在啟動時根據"prefix"變數的值自動設定,在大多數情況下,你都需要修改它, |
| superusers | 設定一組"超級用戶"(使用空格/逗號/分號進行分隔),以開啟安全認證的功能 |
| theme | 設定選單界面的主題風格檔案的位置,例如:"/boot/grub/themes/starfield/theme.txt",關于如何定制界面風格(背景圖片/字體/顏色/圖示等)的細節,可以參考GRUB2手冊中的" Theme file format"部分 |
| timeout | 在啟動默認選單項前,等待鍵盤輸入的秒數,默認值是’5’秒,‘0’表示直接啟動默認選單項(不顯示選單),’-1’表示永遠等待 |
| quiet | 只列印重要資訊,硬體自檢不回顯 |
| rhgb | 圖片來代替啟動程序中顯示的文本資訊,這些資訊在啟動后用dmesg也可以看到 |
| loglevel | 列印日志等級,loglevel=0列印等級最低,列印資訊最少,loglevel=7列印等級最高 |
| splash | 開機影片顯示 |
GRUB2命令
說明
對于GRUB-2.0.2版本來說,所有可用的命令有大約200個之多,他們中的絕大多數由各種各樣的模塊提供,我們沒有必要去了解所有這些200個命令,只需要了解一些常用的命令即可,
menuentry "title" [--class=class …] [--users=users] [--unrestricted] [--hotkey=key] [--id=id] [arg …] { command; … }
| 命令 | 詳解 |
|---|---|
| title | 當此選單項被選中時,GRUB將會把環境變數"chosen"的值設為"id"(使用了[–id=id]選項)或"title"(未使用[–id=id]選項),然后執行花括號中的命令串列,如果串列中最后一個命令執行成功,并且已經載入了一個內核,那么將執行"boot"命令 |
| –class | 指定選單項所屬的"樣式類",從而可以使用指定的主題樣式顯示選單項 |
| –users | 指定只允許特定的用戶訪問此選單項,如果沒有使用此選項,則表示允許所有用戶訪問 |
| –unrestricted | 指明允許所有用戶訪問此選單項 |
| –hotkey | 設定訪問此選單項的熱鍵(快捷鍵),"key"可以是一個單獨的字母,或者’backspace’,‘tab’,'delete’之一 |
| –id | 此選單項設定一個全域唯一的識別符號,"id"必須由ASCII字母/數字/下劃線組成,且不得以數字開頭 |
| [arg …] | 可選的引數串列,你可以把它們理解為命令列引數,實際上"title"也是命令列引數,只不過這個引數是個必須引數而已,這些引數都可以在花括號內的命令串列中使用,“title"對應著”$1",其余的以此類推 |
| –append | 指定的終端加入到激活的輸入終端串列中,所有串列中的終端都可以用于向GRUB提供輸入 |
| –remove | 指定的終端從激活的輸入終端串列中洗掉 |
| authenticate [userlist] | 檢查當前用戶是否位于"userlist"或環境變數"superusers"中,[注意]如果環境變數"superusers"的值為空,此命令將回傳’真’ |
| background_color color | 設定當前激活的輸出終端的背景顏色,“color"可以使用HTML風格的顏色表示法(”#RRGGBB"或"#RGB") |
| –force | 強制載入檔案,而不管它是否有正確的簽名,通常用于加載有缺陷的啟動載入器(例如 SCO UnixWare 7.1) |
| echo [-n] [-e] string … | 顯示所要求的文本并換行(除非使用了 -n 選項),如果有多個字串,依次輸出它們,并用空格分隔每一個 |
| export envvar | 匯出環境變數"envvar",以使其對于使用"configfile"命令載入的組態檔可見 |
| false | 不做任何事,只回傳一個失敗的結果,主要用在if/while之類的控制構造中 |
| gettext string | 把"string"翻譯為環境變數"lang"指定的語言,MO格式的翻譯檔案從環境變數"locale_dir"指定的目錄加載 |
| halt [–no-apm] | 關閉計算機,如果指定了 --no-apm 選項,表示不執行APM BIOS呼叫,否則,計算機使用APM關閉 |
| help [pattern …] | 顯示內建命令的幫助資訊,如果沒有指定"pattern",那么將顯示所有可用命令的簡短描述 |
| initrd file | 為以32位協議啟動的Linux內核載入一個"initial ramdisk",并在記憶體里的Linux設定區域設定合適的引數 |
| initrd16 file | 為以16位協議啟動的Linux內核載入一個"initial ramdisk",并在記憶體里的Linux設定區域設定合適的引數 |
| insmod module | 載入名為"module"的GRUB2模塊 |
| linux file … | 使用32位啟動協議從"file"載入一個Linux內核映像,并將其余的字符作為內核的命令列引數逐字傳入 |
| linux16 file … | 以傳統的16位啟動協議從"file"載入一個Linux內核映像,并將其余的字符作為內核的命令列引數逐字傳入,這通常用于啟動一些遵守Linux啟動協議的特殊工具(例如MEMDISK) |
| loopback [-d] device file | 將"file"檔案映射為"device"回環設備,例如:loopback loop0 /path/to/image |
| lsfonts | 列出已經加載的所有字體 |
| lsmod | 列出已經加載的所有模塊 |
| normal [file] | 進入普通模式,并顯示GRUB選單 |
| normal_exit | 退出當前的普通模式 |
| parttool partition commands | 對磁區表進行各種修改,目前只能作用于MBR磁區表(DOS磁區表),而不能用于GPT磁區表 |
| password user clear-password | 定義一個名為user的用戶,并使用明文口令’clear-password’ |
| read [var] | 從用戶讀取一行輸入 |
| reboot | 重新啟動 |
| rmmod module | 卸載"module"模塊 |
| set [envvar=value] | 將環境變數"envvar"的值設為’value’,如果沒有使用引數,則列印出所有環境變數及其值 |
| source file | 直接將"file"檔案的內容插入到當前位置,與"configfile"不同,此命令既不切換執行環境,也不會顯示一個新的選單 |
| true | 不做任何事,只回傳一個成功的結果 |
| unset envvar | 撤銷環境變數"envvar" |
| videoinfo | 列出所有當前可用的視頻模式 |
應用實體
特殊變數
#默認啟動第一個選單項
set default=0
#如果第一個選單項啟動失敗,轉而啟動第二個選單項
set fallback=1
#優先使用最常規的1024x768解析度,以保證在不同的螢屏上擁有一致的選單效果,如果失敗再自動匹配解析度
set gfxmode=1024x768,auto
#使用自己制作的24px的大號字體以避免默認字體太小看不清
set gfxterm_font=WenQuanYiMicroHeiMono24px
#將GRUB2設定為簡體中文界面
set lang=zh_CN
#指定翻譯檔案(*.mo)的目錄,若未明確設定此目錄,則無法顯示中文界面,
set locale_dir=$prefix/locale
#每一滿屏后暫停輸出,以免資訊太多一閃而過看不清
set pager=1
#開啟密碼驗證功能,并設定一個名為'root'的超級用戶
set superusers=root
#設定選單的超時時間為5秒
set timeout=5
公共模塊
#兩種最流行的磁盤磁區格式
insmod part_gpt
insmod part_msdos
#常見檔案系統驅動
insmod btrfs
insmod exfat
insmod ext2
insmod fat
insmod iso9660
insmod jfs
insmod ntfs
insmod reiserfs
insmod udf
insmod xfs
insmod zfs
#一次性加載所有可用的視頻驅動
insmod all_video
#圖形模式終端
insmod gfxterm
#背景圖片支持
insmod png
公共命令(必須放在模塊和變數之后)
#激活圖形模式的輸出終端,以允許使用中文和背景圖
terminal_output gfxterm
#設定背景圖片
background_image $prefix/themes/1024x768.png
#加載自己制作的24px的大號字體檔案($prefix/fonts/WenQuanYiMicroHeiMono24px.pf2)
loadfont WenQuanYiMicroHeiMono24px
#設定'root'用戶的哈希密碼[通過"grub-mkpasswd-pbkdf2"工具生成]
password_pbkdf2 root grub.pbkdf2.sha512.69.7DBCA469F80EA1C0A8A1E2FEBC4F8463.B073C1C89EC1E85309C3D6A1BAFF4356
U盤安裝系統grub.cfg實體
menuentry 'NeoKylin Desktop 5.0 (Loongson) USB install'{
set root=(${root})
linux ${prefix}/vmlinuz console=tty inst.stage2=hd:LABEL=NeoKylin-Desktop-5.0(Loongson) ks=hd:sd*:/ks.cfg quiet splash loglevel=0
initrd ${prefix}/initrd.img
boot
}
硬碟啟動系統grub.cfg實體
menuentry 'NeoKylin Desktop 5.0 (x86)' --class neokylin --class gnu-linux --class gnu --class os --unrestricted 'gnulinux-simple-7c468e57-7e0c-4ab8-949e-b62f569b02f6' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 48556c0b-2f69-42a1-aacf-41bf6c3b4830
else
search --no-floppy --fs-uuid --set=root 48556c0b-2f69-42a1-aacf-41bf6c3b4830
fi
linux16 /vmlinuz-4.4.13-200.nd7.3.x86_64 root=/dev/sda3 ro rhgb quiet loglevel=0 LANG=zh_CN.UTF-8
initrd16 /initramfs-4.4.13-200.nd7.3.x86_64.img
}
手動啟動系統實體
1、在進入grub界面按c進入手動輸入命令界面;
2、linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda1
3、輸入boot回車進入系統
注意:root=xxx為根磁區,該系統根磁區為sda1,當為UEFI模式啟動時,linux應改為linuxefi,同時(hd0,msdos1)為第一塊硬碟第一個磁區boot/目錄下存放內核檔案;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/256400.html
標籤:其他
上一篇:monkey測驗 --kill-process-after-error引數原理決議;android不彈ANR彈窗;ANR時行程被殺重啟
