首页 > 其他 > 详细

grub2引导硬盘安装ubuntu14.04 iso镜像(不需要解压iso)

时间:2014-04-30 16:38:55      阅读:555      评论:0      收藏:0      [点我收藏+]

 

一、写在前面

个人使用的是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"
    bubuko.com,布布扣
    bubuko.com,布布扣
    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
    bubuko.com,布布扣

    注释:grub会按脚本名字的起首数字,从小到大依次执行"/etc/grub.d/"文件夹下的全部可执行脚本,最终将决定系统在启动界面的排列顺序。因此定制个人脚本可以将脚本命名为06xxx(06-09都可以,只要不合系统脚本名冲突),这样在启动界面定制的系统就会排在第一位。chmod u-x 是为了避免40_custom_bak脚本被执行。

  3. 编辑脚本40_custom
    bubuko.com,布布扣
    1 sudo gedit /etc/grub.d/40_custom
    bubuko.com,布布扣
    我的"/etc/grub.d/40_custom"文件
    bubuko.com,布布扣
     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   }
    bubuko.com,布布扣

    注释:前两行必须要有,第一行告诉系统这是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行

    bubuko.com,布布扣
    set isofile="/username/download/ubuntu-14.04.iso"
    bubuko.com,布布扣

     

    注意:去掉"/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文件的分区就可以了,下面是该命令在我的系统下的运行结果

    bubuko.com,布布扣
     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
    bubuko.com,布布扣

    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"文件
    bubuko.com,布布扣
    1 sudo gedit /etc/default/grub
    bubuko.com,布布扣

    我的"/etc/default/grub"

    bubuko.com,布布扣
    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=""
    bubuko.com,布布扣

    注释:第三行表示启动界面默认的等待(延迟)时间为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文件了。现在可以说万事具备,只歉东风了。东风来了!
    bubuko.com,布布扣
    1 sudo grub-mkconfig -o /boot/grub/grub.cfg
    2 sudo update-grub
    bubuko.com,布布扣

    注释:第2条命令,如果只是安装iso镜像文件的话应该可以省略。

  6. 重新启动系统进入启动界面,选择"Ubuntukylin 14.04 ISO"(就是我们前面在40_custom中设置的那个),安装成功的话就可以进入在iso镜像上运行的ubuntu了。现在进入这个系统了,需要在硬盘安装ubuntu的话,安装之前还要运行命令
    bubuko.com,布布扣
    1 sudo umount -l /isodevice
    bubuko.com,布布扣

    接下来就可以安装ubuntu到你的硬盘了。

四、参考文献:

  1. https://wiki.archlinux.org/index.php/GRUB_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
    bubuko.com,布布扣
    archlinux 网站上介绍grub2安装配置的文章,引言介绍了grub的工作原理。
    bubuko.com,布布扣
  2. http://blog.csdn.net/wang02011/article/details/6293204
    bubuko.com,布布扣
    简单介绍了如何设置默认启动项。个人不推荐第二种做法。其实网上有人还提供了另外一种方法,但是,我试验后并不成功。
    sudo grub-set-default 3
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    bubuko.com,布布扣

下面是几个英文网站,虽然是英文,但是讲解详尽,理论充实喔

  1. https://help.ubuntu.com/community/Grub2/ISOBoot
    bubuko.com,布布扣
    详细介绍iso安装方法的网站,我正是参考这篇文章安装成功的。
    bubuko.com,布布扣
  2. https://help.ubuntu.com/community/Grub2/ISOBoot/Examples
    bubuko.com,布布扣
    给出了iso安装的例子和解释
    bubuko.com,布布扣
  3. http://www.dedoimedo.com/computers/grub-2.html
    bubuko.com,布布扣
    详细介绍了grub的工作机理和应用。想要深入研究grub定制自己的启动界面的同学不要错过啊
    bubuko.com,布布扣

     

grub2引导硬盘安装ubuntu14.04 iso镜像(不需要解压iso),布布扣,bubuko.com

grub2引导硬盘安装ubuntu14.04 iso镜像(不需要解压iso)

原文:http://www.cnblogs.com/hhmaizi/p/3698740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!