一、写在前面
个人使用的是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
...
三、安装过程:
下载ubuntu的iso镜像,并将其放置到e盘下的download文件夹中(可以放到其他文件夹下,grub2可以允许自由放置,但最好不要放到/boot中。此外linux系统如果"/home"单独分区的话,设置也有区别)。windows下文件的位置就是"e:\download\ubuntukylin-14.04-desktop-amd64.iso"
备份脚本"40_custom"
备份脚本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