Boot loader: Grub進階)

來源:互聯網
上載者:User
Boot loader: Grub進階

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

 

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

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

[root@www ~]# grep 'FRAMEBUFFER_CONSOLE' /boot/config-2.6.18-92.el5CONFIG_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 終端機的解析度呢?先參考底下的表格再說 (此為十進位元值):

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

[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 進位制,所以還需要修改一下格式呢! 一般使用上表當中的值應該就可以了。不過,由於不同的作業系統與硬體可能會有不一樣的情況,因此, 上面的值不見得一定可以在您的機器上面測試成功,建議您可以分別配置看看哩~以找出可以使用的值! ^_^

 

BIOS 無法讀取大硬碟的問題

現今的硬碟容量越來越大,如果你使用舊的主板來安插大容量硬碟時,可能由於系統 BIOS 或者是其他問題, 導致 BIOS 無法判斷該硬碟的容量,此時你的系統讀取可能會有問題。為什麼呢?

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

  • 在安裝的過程中,由於是使用 DVD 或 CD 啟動,因此載入 Linux 核心不成問題,而核心會去偵測系統硬體,因此可以捉到 BIOS 捉不到的硬碟,此時你確實可以安裝 Linux 在大容量的硬碟上,且不會出現任何問題。

  • 但是在進入硬碟啟動時,由於 kernel 與 initrd 檔案都是透過 BIOS 的 INT 13 通道讀取的, 因此你的 kernel 與 initrd 如果放置在 BIOS 無法判斷的磁區中,當然就無法被系統載入,而僅會出現 grub shell (grub>) 等待你的處理而已。

更多 grub 錯誤的代碼查詢可以到底下的連結查閱:

  • http://orgs.man.ac.uk/documentation/grub/grub_toc.html#SEC_Contents

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

萬一你已經安裝了 Linux 且發生了上述的問題,那該怎辦?你可以這樣作的:

  • 最簡單的做法,就是直接重灌,並且製作出 /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-cryptPassword: <==輸入口令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.lstdefault=0timeout=30password --md5 $1$kvlI0/$byrbNgkt/.REKPQdfg287.  <==放在整體配置處splashimage=(hd0,0)/grub/splash.xpm.gz#hiddenmenutitle 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.