天天看點

grub2引導硬碟安裝ubuntu14.04 iso鏡像(不需要解壓iso)

一、寫在前面

個人使用的是win7+ubuntu多系統的環境。因為目前正在學習linux環境下的c語言程式設計,安裝了兩個版本的ubuntu(12.04和14.04今天還按了一個kylin也不知道好用不)。這篇博文就和大家唠一下如何用grub2安裝ubuntu14.04的iso鏡像盤。有兩點跟大家聲明下:一、我是菜鳥,謬誤難免,本文隻是簡單介紹下安裝過程,理論的東西大家可以參考我後面給出的參考文獻;二、本文不是介紹win7下安裝ubuntu的,也不是介紹如何直接在硬碟(需要解壓縮iso檔案)下安裝ubuntu的。本文的方法是利用grub2引導iso鏡像盤(有點類似CD光牒上那個livecd)啟動,啟動之後想要安裝ubuntu或者隻是體驗下那就可以由你自己決定了。

二、個人對于grub2的一點兒認識

隻是想盡快把iso裝起的話,可以跳過本部分,直接閱讀第三部分”安裝過程“。如果你的系統上已經安裝了grub2的話,就可以跟我一起來試驗引導iso鏡像盤啟動了。直奔主題,grub工作的流程如下:

編輯grub.d檔案夾下腳本和"/etc/default/grub"檔案===》運作grub-mkconfig指令,生成grub.cfg配置檔案===》update-grub完成設定工作===》重新啟動計算機進入啟動界面。

首先把今天涉及到的三個重要的檔案及檔案夾列出來,最重要的當屬設定系統啟動方式的配置檔案“/boot/grub/grub.cfg”,grub正是讀取它來控制系統啟動方式的。grub2以後可能出于安全性的考慮,不建議直接編輯這個配置檔案了(直接編輯的話,一旦運作 sudo

update-grub ,對grub.cfg所做的修改将完全丢失),而是通過腳本和另外一個配置檔案"/etc/default/grub"間接的生成"grub.cfg"。腳本就位于"/etc/grub.d"這個檔案夾,這些腳本最終決定了grub引導哪個系統,到什麼地方找到系統核心、鏡像檔案等(前提是你的系統核心檔案、鏡像存在),和如何加載作業系統;"/etc/default/grub"這個檔案主要控制啟動界面的預設啟動時間,預設啟動哪個系統,和啟動界面的顯示方式等。總結一下,需要用到的grub配置檔案如下:

/boot/grub/grub.cfg

/etc/default/grub

/etc/grub.d

/etc/grub.d/10_linux

/etc/grub.d/20_linux_xen

/etc/grub.d/30_os-prober

/etc/grub.d/40_custom

...

三、安裝過程:

下載下傳ubuntu的iso鏡像,并将其放置到e盤下的download檔案夾中(可以放到其他檔案夾下,grub2可以允許自由放置,但最好不要放到/boot中。此外linux系統如果"/home"單獨分區的話,設定也有差別)。windows下檔案的位置就是"e:\download\ubuntukylin-14.04-desktop-amd64.iso"

備份腳本"40_custom"

grub2引導硬碟安裝ubuntu14.04 iso鏡像(不需要解壓iso)
grub2引導硬碟安裝ubuntu14.04 iso鏡像(不需要解壓iso)

備份腳本40_custom

注釋:grub會按腳本名字的起首數字,從小到大依次執行"/etc/grub.d/"檔案夾下的全部可執行腳本,最終将決定系統在啟動界面的排列順序。是以定制個人腳本可以将腳本命名為06xxx(06-09都可以,隻要不合系統腳本名沖突),這樣在啟動界面定制的系統就會排在第一位。chmod

u-x 是為了避免40_custom_bak腳本被執行。

編輯腳本40_custom

注釋:前兩行必須要有,第一行告訴系統這是shell腳本,至于第二行,目前我隻知道是兩條系統指令。從第三行開始,帶“#”号的表示該行是注釋内容,可以删除。重點說一下第6-12行。第六行是啟動界面顯示的内容。第7和第8行,加載ntfs格式分區的驅動和支援iso檔案的驅動,這兩行是為了以防萬一。我的iso鏡像檔案存放在用ntfs格式化的e盤下,如果你的iso檔案在linux分區下請删除第7行。對于iso檔案存放在linux系統分區下的情況,請注意,如果home是單獨分區的話,而iso又存放在了比如"/home/username/download/ubuntu-14.04.iso",請用下面這行替換第9行

注意:去掉"/home"的檔案夾名,包含位置。

grub2好像已經能支援ntfs格式了,是以第7行可以不加。但有時候系統還是會出現莫名其妙的問題(主要是個人道行淺啊),是以還是加上為好。第9行,給變量"isofile"指派,把"/download/ubuntukylin-14.04-desktop-amd64.iso"換成你的iso鏡像檔案的位置,注意這裡是linux下分割檔案夾的方式,"/"而不是windows的"\"。這個變量将用于第10行,查找iso檔案的位置。第10行,加載iso鏡像檔案。這裡要詳細的說下(hd0,msdos6),hd0表示第一塊硬碟(我隻有一塊硬碟),如果你的鏡像檔案在第二塊硬碟,請用hd1,依次類推。msdos6表示分區,我的電腦是聯想b470,有一個隐藏的200m分區,然後還有主分區,邏輯分區。這樣隐藏分區就是msdos1(grub2之前是從0開始計數的,現在從1開始),c就是msdos2,d就是msdos3。可能你要說了,“那麼e就是msdos4了”,先别着急,這個還真不是,可能由于多出來的那個隐藏oem分區的原因再加上我的e盤是邏輯分區我的e盤對應的是msdos6。目前詳細的原因我還不知道,有知道的給我解釋下啊,在此謝過了。但是你不用害怕這部影響我們安裝系統,輸入那個我們已經熟悉的指令 sudo fdisk

-l 查找出存放你的iso檔案的分區就可以了,下面是該指令在我的系統下的運作結果

sda6就對應着msdos6,兩塊硬碟的話可能是sdb。第11,12行,加載linux核心。(loop)表示鏡像位置"(hd0,msdos6)/download/ubuntukylin-14.04-desktop-amd64.iso",至于"/casper/vmlinuz.efi"和"/casper/initrd.lz",需要檢視iso檔案驗證(linux下的歸檔管理器和windows下的winrar都可以檢視iso檔案),對于ubuntu來說vmlinuz和initrd一般放在"/casper"檔案夾下。總之,用你的vmlinuz和initrd的位置取代"/casper/vmlinuz.efi"和"/casper/initrd.lz",注意如果是ubuntu14.04而不是kylin32位系統的話,應該是“/casper/vmlinuz”(注意沒有efi的字尾)。說到這裡有沒有人知道到底聯想b470能不能裝64位系統啊?(已經失敗了n次了)

定制啟動界面,調整系統啟動方式。(如果不需要調整系統啟動順序的話可以跳過這步直接進行第5步)啟動界面如何設定系統的排列方式,怎麼設定誰先啟動,如何調整預設啟動時間,這些都需要修改"/etc/default/grub"檔案

我的"/etc/default/grub"

注釋:第三行表示啟動界面預設的等待(延遲)時間為6秒,第一行設定了系統預設啟動windows系統而不是ubuntu。關于第一行還需要詳細的解釋下,大家還記得"/etc/grub.d/"下,有一個"30_os-prober"檔案嗎?這個檔案是加載并搜尋win7系統的腳本,如果你的win7安裝ubuntu之後不能引導啟動了,可以檢視修改這個檔案試試。由于起首數字是"30",排在"10"和"20"之後位于第3項,是以設定grub——default等于3,就能預設啟動windows了。還有其他的方法來設定系統的啟動順序,比如将“30”的腳本名稱改為“07”等,我會在參考文獻中給出。其餘的參數大家感興趣的話可以查閱參考文獻。

生成grub.cfg檔案。将腳本"/etc/grub.d/40_custom"和"/etc/default/grub"修改完畢後,就可以生成grub.cfg檔案了。現在可以說萬事具備,隻歉東風了。東風來了!

注釋:第2條指令,如果隻是安裝iso鏡像檔案的話應該可以省略。

重新啟動系統進入啟動界面,選擇"ubuntukylin 14.04

iso"(就是我們前面在40_custom中設定的那個),安裝成功的話就可以進入在iso鏡像上運作的ubuntu了。現在進入這個系統了,需要在硬碟安裝ubuntu的話,安裝之前還要運作指令

接下來就可以安裝ubuntu到你的硬碟了。

四、參考文獻:

https://wiki.archlinux.org/index.php/grub_(%e7%ae%80%e4%bd%93%e4%b8%ad%e6%96%87)

http://blog.csdn.net/wang02011/article/details/6293204

下面是幾個英文網站,雖然是英文,但是講解詳盡,理論充實喔

https://help.ubuntu.com/community/grub2/isoboot

https://help.ubuntu.com/community/grub2/isoboot/examples

http://www.dedoimedo.com/computers/grub-2.html