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

 

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

  • /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
    • ...

 

3、安裝過程:windows

  1. 下載ubuntu的iso鏡像,並將其放置到E盤下的download文件夾中(能夠放到其餘文件夾下,grub2能夠容許自由放置,但最好不要放到/boot中。此外linux系統若是"/home"單獨分區的話,設置也有區別)。windows下文件的位置就是"E:\download\ubuntukylin-14.04-desktop-amd64.iso"
  2. 備份腳本"40_custom"
    1 mv /etc/grub.d/40_custom /etc/grub.d/40_custom_bak
    2 chmod u-x /etc/grub.d/40_custom_bak
    備份腳本40_custom

    註釋:grub會按腳本名字的起首數字,從小到大依次執行"/etc/grub.d/"文件夾下的所有可執行腳本,最終將決定系統在啓動界面的排列順序。所以定製我的腳本能夠將腳本命名爲06xxx(06-09均可以,只要不合系統腳本名衝突),這樣在啓動界面定製的系統就會排在第一位。chmod u-x 是爲了不40_custom_bak腳本被執行。安全

  3. 編輯腳本40_custom
    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次了)

  4. 定製啓動界面,調整系統啓動方式。(若是不須要調整系統啓動順序的話能夠跳過這步直接進行第5步)啓動界面如何設置系統的排列方式,怎麼設置誰先啓動,如何調整默認啓動時間,這些都須要修改"/etc/default/grub"文件
    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」等,我會在參考文獻中給出。其他的參數你們感興趣的話能夠查閱參考文獻。

  5. 生成grub.cfg文件。將腳本"/etc/grub.d/40_custom"和"/etc/default/grub"修改完畢後,就能夠生成grub.cfg文件了。如今能夠說萬事具有,只歉東風了。東風來了!
    1 sudo grub-mkconfig -o /boot/grub/grub.cfg
    2 sudo update-grub

    註釋:第2條命令,若是隻是安裝iso鏡像文件的話應該能夠省略。

  6. 從新啓動系統進入啓動界面,選擇"Ubuntukylin 14.04 ISO"(就是咱們前面在40_custom中設置的那個),安裝成功的話就能夠進入在iso鏡像上運行的ubuntu了。如今進入這個系統了,須要在硬盤安裝ubuntu的話,安裝以前還要運行命令
    1 sudo umount -l /isodevice

    接下來就能夠安裝ubuntu到你的硬盤了。

4、參考文獻:

  1. https://wiki.archlinux.org/index.php/GRUB_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
    archlinux 網站上介紹grub2安裝配置的文章,引言介紹了grub的工做原理。
  2. http://blog.csdn.net/wang02011/article/details/6293204
    簡單介紹瞭如何設置默認啓動項。我的不推薦第二種作法。其實網上有人還提供了另一種方法,可是,我試驗後並不成功。
    sudo grub-set-default 3
    sudo grub-mkconfig -o /boot/grub/grub.cfg

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

  1. https://help.ubuntu.com/community/Grub2/ISOBoot
    詳細介紹iso安裝方法的網站,我正是參考這篇文章安裝成功的。
  2. https://help.ubuntu.com/community/Grub2/ISOBoot/Examples
    給出了iso安裝的例子和解釋
  3. http://www.dedoimedo.com/computers/grub-2.html
    詳細介紹了grub的工做機理和應用。想要深刻研究grub定製本身的啓動界面的同窗不要錯過啊
相關文章
相關標籤/搜索