Boot loader: Grub進階[轉]

Boot loader: Grub進階

本文記錄grub的一些進階配置php

 

關於核心功能當中的 vga 配置

事實上,你的 tty1~tty6 除了 80x24 的解析度外,還可以有其餘解析度的支持喔!但前提之下是你的核心必須支持 FRAMEBUFFER_CONSOLE 這個核心功能選項才行。如何肯定有沒有支持呢?你能夠查閱 /boot/config-2.6.18-92.el5 這個文件,而後這樣搜尋:html

[root@www ~]# grep 'FRAMEBUFFER_CONSOLE' /boot/config-2.6.18-92.el5
CONFIG_FRAMEBUFFER_CONSOLE=y
# 這個項目若是出現 y 那就是有支持啦!若是被註解或是 n ,那就是沒支持啦!
彩度\解析度 640x480 800x600 1024x768 1280x1024 bit
256 769 771 773 775 8 bit
32768 784 787 790 793 15 bit
65536 785 788 791 794 16 bit
16.8M 786 789 792 795 32 bit

那麼如何調整 tty1 ~ tty6 終端機的解析度呢?先參考底下的表格再說 (此爲十進位數值):linux

假設你想要將你的終端機螢幕解析度調整到 1024x768 ,且色彩深度爲 15bit 色的時候,就得要指定 vga=790 那個數字! 舉例來講,鳥哥的 tty1 就想要這樣的解析度時,你能夠這樣作:shell

複製代碼
[root@www ~]# vim /boot/grub/menu.lst
....(前面省略)....
title CentOS (2.6.18-92.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
        initrd /initrd-2.6.18-92.el5.img
....(後面省略)....
複製代碼

從新啓動並選擇此菜單進入 Linux,你跑到 tty1 去看看,嘿嘿!就已是 1024x768 的解析度羅! 只是字會變的很小,可是畫面的範圍會加大就是了。不過,某些版本支持的是 16 進位制,因此還須要修改一下格式呢! 通常使用上表當中的值應該就能夠了。不過,由於不一樣的操做系統與硬件可能會有不同的狀況,所以, 上面的值不見得必定能夠在您的機器上面測試成功,建議您能夠分別配置看看哩~以找出可使用的值! ^_^vim

 

BIOS 沒法讀取大硬盤的問題

現今的硬盤容量愈來愈大,若是你使用舊的主板來安插大容量硬盤時,可能由於系統 BIOS 或者是其餘問題, 致使 BIOS 沒法判斷該硬盤的容量,此時你的系統讀取可能會有問題。爲何呢?測試

咱們在本章一開始的啓動流程講過,當進入 Linux 核心功能後,他會主動的再去偵測一下整個系統, 所以 BIOS 捉不到的硬件在 Linux 核心反而可能會能夠捉到而正常使用。舉例來講,過去不少朋友經常會發現, 『個人系統使用 DVD 啓動安裝時,能夠順利的安裝好 Linux ,可是第一次啓動時, 螢幕只出現黑壓壓的一片,且出現 grub> 的字樣,而沒法進入 Linux 系統中』,這又是怎麼一回事?ui

  • 在安裝的過程當中,由於是使用 DVD 或 CD 啓動,所以加載 Linux 核心不成問題,而核心會去偵測系統硬件,所以能夠捉到 BIOS 捉不到的硬盤,此時你確實能夠安裝 Linux 在大容量的硬盤上,且不會出現任何問題。

  • 可是在進入硬盤啓動時,由於 kernel 與 initrd 文件都是透過 BIOS 的 INT 13 通道讀取的, 所以你的 kernel 與 initrd 若是放置在 BIOS 沒法判斷的磁區中,固然就沒法被系統加載,而僅會出現 grub shell (grub>) 等待你的處理而已。

更多 grub 錯誤的代碼查詢能夠到底下的連結查閱:編碼

如今你知道問題所在啦!那就是 BIOS 沒法讀取大容量磁碟內的 kernel 與 initrd 文件。 那如何解決呢?很簡單啦!就讓 kernel 與 initrd 文件放置在大硬盤的最前頭,由於 BIOS 至少能夠讀到大磁碟的 1024 磁柱內的數據,所以就可以讀取核心與虛擬文件系統的文件羅。那如何讓 kernel 與 initrd 放置到整顆硬盤的最前面呢?簡單的要命吧!就建立 /boot 獨立分割槽,並將 /boot 放置到最前面便可!加密

萬一你已經安裝了 Linux 且發生了上述的問題,那該怎辦?你能夠這樣做的:spa

  • 最簡單的作法,就是直接重灌,而且製做出 /boot 掛載的 partition ,同時確認該 partition 是在 1024 cylinder 以前才行。

  • 若是實在不想重灌,沒有關係,利用咱們剛剛上頭提到的 grub 功能,額外建立一個可啓動軟盤, 或者是直接以光驅啓動,而後以 grub 的編寫能力進入 Linux 。

  • 另外的辦法實際上是騙過 BIOS ,直接將硬盤的 cylinder, head, sector 等等資訊直接寫到 BIOS 當中去,如此一來你的 BIOS 可能就能夠讀獲得與支持的到你的大硬盤了。

不過,鳥哥仍是建議您能夠從新安裝,而且製做出 /boot 這個 partition 啦! ^_^!這也是爲啥此次更版中, 鳥哥特別強調要分割出 /boot 這個分割槽的緣由啊!

 

爲個別菜單加上口令

想像一個環境,若是你管理的是一間計算機教室,這間計算機教室由於可對外開放,可是你又擔憂某些 partition 被學生不當心的弄亂,所以你可能會想要將某些啓動菜單做個保護。這個時候,爲每一個菜單做個加密的口令就是個可行的方案啦! 那如何在啓動的過程裏面提供口令保護呢?首先,你必需要建立口令,並且還須要是加密事後的喔! 不然人家跑到 /boot/grub/menu.lst 不就能夠探查到你的啓動口令了?那如何建立加密的口令呢? 咱們能夠透過 grub 提供的 md5 編碼來處理的,以下所示:

[root@www ~]# grub-md5-crypt
Password: <==輸入口令
Retype password: <==再輸入一次
$1$kvlI0/$byrbNgkt/.REKPQdfg287. <==這就是產生的 md5 口令!

上表的案例中,咱們兩個菜單進入的口令並不相同,能夠進行同窗的分類啦!不過這樣也形成一個問題, 那就是必定要輸入口令纔可以進入啓動流程,若是你在遠程使用 reboot 從新啓動,而且主機前面並無任何人的話.... 你的主機並不會主動進入啓動程序喔! ^_^上面產生的最後一行,由 $ 開始到 . 結束的那行,就是你的口令通過 md5 編碼事後的咚咚! 將這個口令複製下來吧!假設咱們要將第一個選項加入這個口令,而第四個選項加入另外的口令, 那你應該要這樣作:

複製代碼
[root@www ~]# vim /boot/grub/menu.lst
....(前面省略)....
title CentOS (2.6.18-92.el5)
        password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287.
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
        initrd /initrd-2.6.18-92.el5.img
....(中間省略)....
title single user mode
        password --md5 $1$GFnI0/$UuiZc/7snugLtVN4J/WyM/
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet single
        initrd /initrd-2.6.18-92.el5.img
複製代碼

你必需要注意的是:password 這個項目必定要在 title 底下的第一行。 不過,此項功能仍是可能被破解的,由於使用者能夠透過編輯模式 (e) 進入菜單,並刪除口令欄位並按下 b 就可以進行啓動流程了!真糟糕!那怎辦?只好透過總體的 password (放在全部的 title 以前) , 而後在 title 底下的第一行配置 lock ,那使用者想要編輯時,也得要輸入口令才行啊!配置有點像這樣:

複製代碼
[root@www ~]# vim /boot/grub/menu.lst
default=0
timeout=30
password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287.  <==放在總體配置處
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title CentOS (2.6.18-92.el5)
        lock  <==多了鎖死的功能
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
        initrd /initrd-2.6.18-92.el5.img
複製代碼

那麼從新啓動後,畫面會像這樣:

你能夠看到最下方僅出現 p 的功能,由於 2, 3, 4 菜單並無使用 lock ,所以這三個菜單使用者仍是能夠運行啓動程序, 可是第一個菜單由於有 lock 項目,所以除非你輸入正確的口令,不然第一個菜單是沒法被加載運行的。 另外,這個項目也可以避免你的 menu.lst 在啓動的過程當中被亂改,是具備保密 menu.lst 的功能啦! 與剛剛的菜單口令功能不一樣。

 

轉自 http://vbird.dic.ksu.edu.tw/linux_basic/0510osloader_3.php#grub_vga

相關文章
相關標籤/搜索