1、寫在前面php
我的使用的是win7+ubuntu多系統的環境。由於目前正在學習linux環境下的C語言編程,安裝了兩個版本的ubuntu(12.04和14.04今天還按了一個kylin也不知道好用不)。這篇博文就和你們嘮一下如何用grub2安裝ubuntu14.04的iso鏡像盤。有兩點跟你們聲明下:1、我是菜鳥,謬誤不免,本文只是簡單介紹下安裝過程,理論的東西你們能夠參考我後面給出的參考文獻;2、本文不是介紹win7下安裝ubuntu的,也不是介紹如何直接在硬盤(須要解壓縮iso文件)下安裝ubuntu的。本文的方法是利用grub2引導iso鏡像盤(有點相似光盤上那個livecd)啓動,啓動以後想要安裝ubuntu或者只是體驗下那就能夠由你本身決定了。html
2、我的對於grub2的一點兒認識linux
只是想盡快把iso裝起的話,能夠跳過本部分,直接閱讀第三部分」安裝過程「。若是你的系統上已經安裝了grub2的話,就能夠跟我一塊兒來試驗引導iso鏡像盤啓動了。直奔主題,grub工做的流程以下:shell
編輯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配置文件以下:ubuntu
3、安裝過程:windows
1 mv /etc/grub.d/40_custom /etc/grub.d/40_custom_bak 2 chmod u-x /etc/grub.d/40_custom_bak
註釋:grub會按腳本名字的起首數字,從小到大依次執行"/etc/grub.d/"文件夾下的所有可執行腳本,最終將決定系統在啓動界面的排列順序。所以定製我的腳本能夠將腳本命名爲06xxx(06-09均可以,只要不合系統腳本名衝突),這樣在啓動界面定製的系統就會排在第一位。chmod u-x 是爲了不40_custom_bak腳本被執行。安全
1 sudo gedit /etc/grub.d/40_custom
個人"/etc/grub.d/40_custom"文件
1 #!/bin/sh
2 exec tail -n +3 $0
3 # This file provides an easy way to add custom menu entries. Simp ly type the 4 # menu entries you want to add after this comment. Be careful not to change 5 # the 'exec tail' line above. 6 menuentry "Ubuntukylin 14.04 ISO" { 7 insmod ntfs 8 insmod iso9660 9 set isofile="/download/ubuntukylin-14.04-desktop-amd64.iso"
10 loopback loop (hd0,msdos6)$isofile 11 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/file name=$isofile noprompt noeject 12 initrd (loop)/casper/initrd.lz 13 }
註釋:前兩行必需要有,第一行告訴系統這是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行ide
set isofile="/username/download/ubuntu-14.04.iso"
注意:去掉"/home"的文件夾名,包含位置。oop
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文件的分區就能夠了,下面是該命令在個人系統下的運行結果
1 Disk /dev/sda: 500.1 GB, 500107862016 bytes
2 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
3 Units = 扇區 of 1 * 512 = 512 bytes
4 Sector size (logical/physical): 512 bytes / 4096 bytes
5 I/O size (minimum/optimal): 4096 bytes / 4096 bytes
6 Disk identifier: 0xccdfadbb
7
8 設備 啓動 起點 終點 塊數 Id 系統
9 /dev/sda1 * 2048 411647 204800 7 HPFS/NTFS/exFAT
10 /dev/sda2 411648 102811647 51200000 7 HPFS/NTFS/exFAT
11 /dev/sda3 102813694 976771071 436978689 f W95 擴展 (LBA)
12 Partition 3 does not start on physical sector boundary.
13 /dev/sda5 102813696 518807551 207996928 7 HPFS/NTFS/exFAT
14 /dev/sda6 518809600 744089599 112640000 7 HPFS/NTFS/exFAT
15 /dev/sda7 800993280 808804351 3905536 82 Linux 交換 / Solaris
16 /dev/sda8 808806400 867397631 29295616 83 Linux
17 /dev/sda9 867399680 976771071 54685696 83 Linux
18 /dev/sda10 744091648 800985087 28446720 83 Linux
19
20 Partition table entries are not in disk order
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次了)
1 sudo gedit /etc/default/grub
個人"/etc/default/grub"
1 GRUB_DEFAULT=3 2 GRUB_HIDDEN_TIMEOUT_QUIET=true 3 GRUB_TIMEOUT=6 4 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 5 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 6 GRUB_CMDLINE_LINUX=""
註釋:第三行表示啓動界面默認的等待(延遲)時間爲6秒,第一行設置了系統默認啓動windows系統而不是ubuntu。關於第一行還須要詳細的解釋下,你們還記得"/etc/grub.d/"下,有一個"30_os-prober"文件嗎?這個文件是加載並搜索win7系統的腳本,若是你的win7安裝ubuntu以後不能引導啓動了,能夠查看修改這個文件試試。因爲起首數字是"30",排在"10"和"20"以後位於第3項,所以設置GRUB——DEFAULT等於3,就能默認啓動windows了。還有其餘的方法來設置系統的啓動順序,好比將「30」的腳本名稱改成「07」等,我會在參考文獻中給出。其他的參數你們感興趣的話能夠查閱參考文獻。
1 sudo grub-mkconfig -o /boot/grub/grub.cfg 2 sudo update-grub
註釋:第2條命令,若是隻是安裝iso鏡像文件的話應該能夠省略。
1 sudo umount -l /isodevice
接下來就能夠安裝ubuntu到你的硬盤了。
4、參考文獻:
archlinux 網站上介紹grub2安裝配置的文章,引言介紹了grub的工做原理。
簡單介紹瞭如何設置默認啓動項。我的不推薦第二種作法。其實網上有人還提供了另一種方法,可是,我試驗後並不成功。 sudo grub-set-default 3 sudo grub-mkconfig -o /boot/grub/grub.cfg
下面是幾個英文網站,雖然是英文,可是講解詳盡,理論充實喔
詳細介紹iso安裝方法的網站,我正是參考這篇文章安裝成功的。
給出了iso安裝的例子和解釋
詳細介紹了grub的工做機理和應用。想要深刻研究grub定製本身的啓動界面的同窗不要錯過啊