天天看點

Ubuntu 11.10下GRUB 2 1.99版編譯安裝筆記

ubuntu 11.10下grub 2 1.99版編譯安裝筆記

以下的安裝筆記,都是qli自己學習grub2 時,所整理的,還是新手,有錯誤的話,請大家幫忙就别提出來了。

========================================================================

安裝grub2 1.99

下載下傳位址:

<a target="_blank" href="http://www.gnu.org/software/grub/grub-2-download.en.html">http://www.gnu.org/software/grub/grub-2-download.en.html</a>

需要提前安裝的軟體

m4_1.4.16-1_i386.deb                        

bison_1%3a2.4.1.dfsg-3_i386.deb

grub-1.99.tar.gz

還缺少一個freetype2 的庫檔案,是生成制作中文字型軟體的

安裝 

# dpkg -i m4_1.4.16-1_i386.deb   //後面兩個軟體的關系所需要的必須提前安裝

//如果沒有可以用 #apt-get install m4

selecting previously deselected package m4.

(reading database ... 127227 files and directories currently installed.)

unpacking m4 (from m4_1.4.16-1_i386.deb) ...

setting up m4 (1.4.16-1) ...

processing triggers for install-info ...

processing triggers for man-db ...

# dpkg -i bison_1%3a2.4.1.dfsg-3_i386.deb  //必要組建

//如果沒有可以用#apt-get install bison

selecting previously deselected package bison.

(reading database ... 127287 files and directories currently installed.)

unpacking bison (from bison_1%3a2.4.1.dfsg-3_i386.deb) ...

setting up bison (1:2.4.1.dfsg-3) ...

update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode.

如果沒有可以用#apt-get install flex

selecting previously deselected package flex.

(reading database ... 127325 files and directories currently installed.)

# tar -xvf grub-1.99.tar.gz    //給grub2解壓成目錄

# cd grub-1.99                 //進入目錄

編譯:

#./configure

 bash: ./autogen.sh:權限不夠  的原因是因為在windows系統下進行的原因。把檔案拷貝在linux目錄

完成以後,看最後的說明,有一個需要freetype2 庫才能制作字型生成軟體(grub2中文字庫制作的東東)我沒有打算找個别人做好的字庫,現在還沒找到。

# make

# make install

# fdisk -l                     //檢視u盤或磁盤所在分區

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

格式化u盤 為例:

# sudo umount /dev/sda1        //必須先解除安裝該分區

格式化為 fat 分區

# sudo mkfs.vfat -f 32 /dev/sdb1 // -f 參數必須大寫,參數有 12,16 和 32,分别對應 fat12,fat16,fat32。

disk /dev/sda: 250.1 gb, 250059350016 bytes

255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors

units = sectors of 1 * 512 = 512 bytes

sector size (logical/physical): 512 bytes / 512 bytes

i/o size (minimum/optimal): 512 bytes / 512 bytes

disk identifier: 0xb532b532

   device boot      start         end      blocks   id  system

/dev/sda1   *          63    61432559    30716248+   7  hpfs/ntfs/exfat

/dev/sda2        61432560   488215349   213391395    f  w95 ext'd (lba)

/dev/sda5        61432623   102398309    20482843+   7  hpfs/ntfs/exfat

/dev/sda6       102398373   163830869    30716248+   7  hpfs/ntfs/exfat

/dev/sda7       163830933   488215349   162192208+   7  hpfs/ntfs/exfat

disk /dev/sdb: 8005 mb, 8005787648 bytes

255 heads, 63 sectors/track, 973 cylinders, total 15636304 sectors

disk identifier: 0x00432a3c

/dev/sdb1              63    15636303     7818120+   b  w95 fat32

u盤所在的是 sdb1,這一點一定要确定。

# grub-install --root-directory=/media/24f2-511f/ /dev/sdb  //給u盤安裝啟動檔案mbr

          /dev/sdb  是u盤實體裝置 sdb 是整個磁盤  sdb1是磁盤分區,“我的了解”

installation finished. no error reported.

# grub-install --root-directory=/media/24f2-511f/ /dev/sdb1 //給u盤拷貝檔案 注意:後面多加了“1”

/usr/local/sbin/grub-setup: warn: attempting to install grub to a partitionless disk or to a partition.  this is a bad idea..

/usr/local/sbin/grub-setup: warn: embedding is not possible.  grub can only be installed in this setup by using blocklists.  however, blocklists are unreliable and their use is discouraged..

/usr/local/sbin/grub-setup: error: will not proceed with blocklists.

=======================================================================

grub-install 是一個腳本,它完成以下任務:

* 調用 grub-mkdevicemap 建立裝置映像檔案 /boot/grub/device.map

* 複制 *.mod *.lst *.img 檔案到 /boot/grub/

* 調用 grub-probe 自動偵測檔案系統類型

* 調用 grub-mkimage 生成grub2核心檔案 /boot/grub/core.img

* 調用 grub-setup 安裝引導記錄到mbr或分區

安裝部分完成。

在/mnt/boot/grub/這個目錄下建立一個文本檔案grub.cfg。

#vi grub.cfg  //可以什麼都不寫

按 esc鍵 按“:”按qw字母儲存退出

#cp grub.cfg /media/24f2-511f/boot/grub/    //拷貝grub.cfg檔案到u盤boot檔案夾下grub目錄内,編輯是可以用notepad2  在windows中編輯

字型檔案到硬碟的/usr/share/grub/中複制unicode.pf2到/mnt/boot/grub/目錄下。目錄可能不對

可以通過

#cd /     //退回到根目錄

#find -name unicode.pf2    //查找unicode.pf2英文字型,在那個目錄然後用cp拷貝到u盤boot下grub下

grub2 1.99 菜單配置

建立grub菜單:把下面加号内的拷貝到grub.cfg即可

#

# sample grub configuration file

# 設定grub.cfg啟動菜單

# =============================================================== #

# 啟動延長時間,機關“秒”

set timeout=30

# 啟動順序,預設為“0”

set default=1

# 傳回菜單到第二條 fallback to the second entry.

set fallback=1

#加載fat子產品,如果你的u盤是其他格式請對應更換,如insmod ntfs

insmod fat

#insmod ntfs

#添加jpeg支援,如要使用png或tga檔案做背景,加上 insmod png或insmod tga

#insmod jpeg

insmod png

#insmod tga

#加載vbe子產品,作用不是很清楚

insmod vbe

#這一句不太清除,網上沒有找到相關資料,加上保險

#set gfxpayload=keep

#啟用gfxterm子產品,分辨率什麼的,都靠它

insmod gfxterm

insmod font

#insmod video

#設定終端字型為英文 unicode.pf2

loadfont /boot/kernel/font/unicode.pf2

#設定終端字型為中文

#loadfont /boot/kernel/font/msyh16b.pf2

#設定分辨率\1024x768\800x600\640x480\

#set gfxmode=1024x768

#set gfxmode=800x600

set gfxmode=640x480

#将終端設定為gfxterm模式,也就是使上面的分辨率什麼的生效,隻能放在分辨率下面。

#文字變小。

terminal_output gfxterm

#terminal_output console

#設定背景圖檔

background_image (hd0,1)/boot/kernel/background/bj.png

#菜單中未選中項目的字型顔色(字型顔色/後全背景顔色)

#black (透明,與white是不同的),

#dark-gray, light-gray, white, brown, yellow, red, light-red, blue, light-blue, green, light-green, cyan, light-cyan, magenta, light-magenta.

#背景顔色,有圖檔就不顯示,黑色有圖時為透明。

set color_normal=black/black

set color_highlight=magenta/black

#選中項目的字型顔色,黑色有圖時為透明。

set menu_color_normal=cyan/black

set menu_color_highlight=black/black

# change the colors.如果看不清可以改變背景顔色

menuentry "change the colors" {

 set menu_color_normal=light-green/brown

 set menu_color_highlight=red/blue

}

# for booting microsoft windows

menuentry "登入microsoft windows1" {

 set root=(hd0,1)

  drivemap -s (hd0) ${root}

 chainloader +1

menuentry "登入microsoft windows2" {

insmod ntfs

 set root=(hd1,1)

  drivemap -s (hd1) ${root}

menuentry "登入microsoft windows3" {

 set root=(hd2,1)

  drivemap -s (hd2) ${root}

# for booting memtest86+ 記憶體檢測

#menuentry "memtest86+" {

# set root=(hd0,1)

# linux16 /boot/kernel/mt86plus

#}

set root='(hd0,msdos1)'

initrd (loop)/casper/initrd.lz

boot

# cdlinux mini 0.9.6.1 最小版,指令行,其中的bzlmage和initrd在CD光牒中可以找到

menuentry "cdlinux mini 0.9.6.1" {

linux /boot/iso/cdlinux/bzimage root=/dev/ram0 vga=791 cdl_lang=zh_cn.utf-8

initrd /boot/iso/cdlinux/initrd

# linux 核心網絡安裝linux,因為CD光牒不支援,是以啟動不了

menuentry "netbootcd-4.5 form internet to install linux" {

loopback loop0 (hd0,1)/boot/iso/netbootcd/netbootcd-4.5.iso

set root=(loop0)

chainloader +1

# 引導freedos安裝CD光牒,在虛拟機中隻有一項能夠運作,到dos界面,隻是試驗用的 

menuentry "freedos" {

    linux16 /boot/iso/freedos/memdisk

    initrd16 /boot/iso/freedos/fdboot.img

# peCD光牒版iso檔案,從u盤啟動,現在grub2好像對win的CD光牒支援不好,都是通過grub4dos曲線執行的,這個是執行4dos的菜單指令

#menuentry "grub win7 pe 6" {

#linux /boot/g4dos/grub1.exe

# 引導CD光牒檔案,對win系統的安裝CD光牒不太支援,這個是引導普通iso檔案的引導菜單

#menuentry "引導isoCD光牒"{

#loopback loop0 (hd0,1)/boot/pe/pe/win7_pe_6.iso

#set root=(loop0)

#chainloader +1

#boot

# 挂載"非标準"軟碟鏡像1.44和2.88 軟體memdisk自己百度下得,後面的參數可以通過軟體gdparam來看

menuentry "dos tools" {

    linux16 /boot/kernel/memdisk c=99 h=4 s=36 floppy

    initrd16 /boot/img/dadidos.ima

# 挂載"标準"軟碟鏡像1.44和2.88

menuentry "win98 dos 急救盤" {

    linux16 /boot/kernel/memdisk

    initrd16 /boot/img/98dosboot.img

# 重新啟動計算機

menuentry "重新開機-restart"{

reboot

# 關閉計算機

menuentry "關機-shutdown"{

halt

# 對非标準的1.4m和2.8m的其他鏡像挂載方法,需要指定 chs參數:

# menuentry "no boot from img" {

#    linux16 /memdisk c=* h=* s=* floppy

#    initrd16 /xxx.img

# 挂載CD光牒linux

#你得考慮你的記憶體足夠的大。

#其中boot=casper是使用casper來啟動一個在iso檔案内的一個預先安好的live系統。

#你也可以安裝一個到你的系統中,利用man casper來看一下,它的基本使用方法。

#并把所找到的iso檔案挂到光驅裝置(在這裡,其相到于find, 和mount指令的內建,但功能更強)/cdrom

#initrid (loop)/casper/initrid.lz

#其中initrid.lz是一個鏡象檔案,裡面存的是一些核心要加載的重要檔案。

現在還遺留的問題

1 沒有中文字型,回來下個庫檔案打算自己整,或者哪位同仁有自己做好的,可以交流一下。

2 不能直接引導PE,對這個要說的話比較多,也有一些想法,有時間的話也可以和同仁交流一下。

3 不能引導win7或win xp等安裝盤,現在還不會,學習資料網上幾乎沒有,grub2 好像也不太支援。

4 找了一個cdlinux 迷你版的,光有指令行那種的,不太滿意。

5 dos工具箱自己修改的大地pe dos工具箱還算可以。現在有點小問題。希望哪位同仁有dos下支援滑鼠點選拖放檔案的軟體給我考一份。

6 grub2 在網絡中得應用,時間緊還沒接觸,不過已經看了一篇這類的文章了。

7 CD光牒系統引導檔案,在grub2中,自己能修改麼,現在還不會,時間夠就看看。

繼續閱讀