歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 安裝debian Linux過程中學習grub的心得體會

安裝debian Linux過程中學習grub的心得體會

日期:2017/2/28 17:55:35   编辑:Linux教程

  從sarge開始,grub成為debian的默認boot loader,說明grub有比lilo更高明的地方。但是,像我這樣用慣了lilo的人,轉到grub來還是有點不習慣。這兩天看了grub的一些文檔,終於把一些本來不清楚的地方琢磨的有點明白了。現在把自己的一些心得寫在這裡,希望對那些和我有同樣問題的朋友能起到一點幫助。
  1、grub是什麼?
  按照官方文檔的說法,grub是一個boot loader,它主要負責pc機自檢(POST)以後到操作系統內核獲得控制權之間一些工作。如果只是引導本地系統,能正常工作的grub應該包括一下文件:stage1、stage2、*stage1_5、menu.lst。
  其中stage1的大小一定是512字節,它要被安裝(也就是寫入)某個硬盤的主引導記錄,或者某個活動分區(這個分區要用fdisk標記成可啟動的)的啟動扇區。stage1的主要的也是唯一的作用就是找到你存放在硬盤上某個地方的stage2文件,來完成後續的工作。
  stage2文件可以存在在某個特定的文件系統中,比如你分了一個linux分區,在上面創建一個ext2文件系統,然後把這個文件拷貝到這個分區的某個目錄下。也可以把stage2直接存放在硬盤的某個位置,也就是未分區的某個地方。不過,好像沒有多少人會這麼做吧。
  因為stage1的容量有限(主引導記錄MBR和啟動扇區的大小只能夠是512字節),所以它對文件系統是無法識別的,那如果你把stage2存放在ext2或者fat格式的文件系統上,它如何來找到這個文件呢?這就要用到上面提到的那些stage1_5的文件了,它們負責解釋文件系統。你的stage2放在什麼格式的文件系統上,就要調用對應的那個stage1_5文件。比如,你把stage2存放在ext2格式的文件系統上,就需要e2fs_stage1_5;stage2存放在fat格式的文件系統上,就需要fat_stage1_5了。
  總的來說,從你按下計算機電源,到debian啟動,大概的過程如下:
  ①按下電源後,計算機自檢(POST),如果硬件設備(CPU、內存、硬盤、光驅、各種卡)都沒有問題,BIOS會檢查各個硬盤的MBR,看有沒有可以執行的代碼,如果你把grub安裝到第一個硬盤的MBR上,那BIOS就會找到它,然後把控制權交個這段代碼(其實就是512字節大小的stage1)。
  ②stage1根據安裝時提供的信息,如stage2在什麼地方,需不需要加載文件系統的對應的stage1_5文件等,找到stage2文件,並把控制權交給stage2。
  ③stage2會需要特定位置的menu.lst文件,如果找到,就分析其中的內容,形成操作系統選擇菜單(Grub管它叫Menu Interface),如果沒有找到menu.lst或者這個文件的格式、內容有錯誤,那就顯示grub的命令行提示符。
  ④當你選擇了菜單中相應的條目,或者輸入了相關的命令,就可以看是引導系統了。比如引導linux的話,stage2會負責將vmlinuz和initrd(如果有的話)裝載到內存,並把控制全交給vmlinuz。
  ⑤linux的內容完成對硬件的初始化,並把控制權交給init程序,完成後續的工作了。(後續的工作挺復雜,我還是有點鬧不明白,還要繼續看文檔)
  好,說了這麼多,可以看到,grub的安裝、使用都是和某個linux kernel沒有關系的,或許在編譯的時候會有什麼關系。修改grub的設置是不需要對kernel做任何修改的。
  還有就是,我看到一些問題,如何給debian提供的grub加上背景圖片。當然可以用一些朋友介紹的方法,自己制作xpm圖片,但是也可以用debian提供的。debian有一個叫做grub-splashimages的包,安裝了以後會在/boot/grub/下建立一個叫做splashimages的目錄,其中就提供了幾個挺不錯的背景圖片,我現在就用了其中的bike背景。在你的/boot/grub/menu.lst文件中加上一行:
  splashimage=/boot/grub/bike_gua.xpm.gz(如果選擇不同的圖片就改後面的文件名,如果你的boot是一個單獨分區,可能左面也要改。)

Copyright © Linux教程網 All Rights Reserved