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鏡像盤(有點類似光盤上那個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
    • ...

 

三、安裝過程:

  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行

    set isofile="/username/download/ubuntu-14.04.iso"

     

    注意:去掉"/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文件的分區就可以了,下面是該命令在我的系統下的運行結果

     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到你的硬盤了。

四、參考文獻:

  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定制自己的啟動界面的同學不要錯過啊

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM