有关多重引导

有关多重引导

 

应该是大四的时候吧,因为课题的需要,要学习GNU radio这个软件,一看名字就知道GNU xxx,八成是在Linux环境下的软件,不错确实是这样。当时还对Linux不了解,幸好寝室的好哥们也是因为某个软件(NS2),提前学习了Linux。然后就在其熏陶下装了Ubuntu系统,当时装的是双系统,没用虚拟机。

 

然而,装双系统还是有一定隐患的,有一次我的笔记本的xp系统的磁盘分区表和主引导记录(MBR)就被搞坏了(罪魁祸首就是xp自带的磁盘管理工具),所有文件都丢失了,而我又没有备份,当时真是心如刀绞啊。。。还好在某位牛人的指导下用DiskGenius将整个系统拯救回来。这说明只要你的系统没有低级格式化,任何损坏都有可能恢复。

 

一般来讲,如果你先装的windows操作系统,再装Ubuntu的话,默认使用Grub作为引导程序,他能让两个系统在开机后有选择的进入。但是一旦重新安装windows系统在当前电脑上的话,Grub就会被清除,windows只兼容自己的系统,并对Linux深恶痛绝。所以这时,就无法进入Ubuntu系统中,虽然它还在磁盘当中。

 

刚开始的时候在UbuntuliveCD环境下(可以用UltraISO之类的软件,将Ubuntu系统安装镜像做到优盘里,然后更改BIOS用优盘启动)用Grub来修复,但是Grub全是命令行的操作,再加上对它不很了解,所以没有成功。然后又在网上找到了另外一个神器Grub4dos

 

那么看一看网上是怎么说的:

GRUB 是一个遵从Multiboot(多重启动)规范的启动管理程序。GRUB for DOSGRUB4DOS)是一个以 GNU GRUB 为基础的功能强大的引导器。它可以在 DOS LINUX下运行,也可以通过其他引导器来运行,还可以作为MBR运行。GRUB4DOS内置了功能完善的 BIOS 级磁盘仿真。

具体使用方法:

1.      下载Grub4dos后,解压缩。

2.      grldr文件复制到c:\,去掉boot.ini的只读属性(该文件是隐藏文件),然后修改c:\boot.ini文件,在boot.ini的最后面加一行:c:\grldr="Start GRUB4DOS"

3.      并将boot.ini中的timeout值设置为大于0的数字,如:timeout=5,然后保存boot.ini,改回只读属性。(timeout就是开机选择系统时等待的秒数,通过修改这个文件可以改变开机启动时的默认启动系统及系统显示的名称和顺序)

 

这样,编辑完重新启动计算机,在启动菜单就会出现“Start GRUB4DOS”这一项,选择该项即可进入grub4dos的环境。但是光进入Grub还不够,它需要一个menu.lst文件(要求在C:\下,也可放到其它分区根目录或其它指定目录)来告诉它都有哪些可选的系统以及这些系统在磁盘的什么位置。如果装了Ubuntu 9.10以下的版本的话,在Ubuntu系统分区(/boot/grub/menu.lst是有这个文件的,所以这时就可以大功告成了。但是9.10以上版本grub升级为grub2,它的记录文件变成/boot/grub/grub.cfg(虽然它们的内容大同小异,但是能不能通用我也不太清楚这时应该怎么做我还没研究过有待验证)。通过修改menu.lst或者grub.cfg文件可以改变系统启动项的显示顺序和默认系统(注意这两个文件也是只读的,修改之前该改变他们的权限)。

 

有一些稍复杂的情况,比如就像我实验室的电脑,一共有两块硬盘,一块硬盘有3个系统,xpubuntu9.04,ubuntu10.10,另外一块硬盘是xp系统。而且第二块硬盘是新加的,这样硬盘的信息改变了,记录文件menu.lst里内容必须作相应的修改,否则还是不能正常进入系统。

 

再看看网上是怎么说的:

首先GRUB要求设备名被括在一个( )中。fd表示软盘,hd表示硬盘(不区分IDE还是SCSI)。其次设备是从0开始编号,分区也是如此,分区和设备之间用一个,分开。

下面给出几个例子

(fd0):表示整个软盘

(hd0,1):表示BIOS中的第一个硬盘的第2个分区

 

所以要弄清楚你的各个系统都装在哪些磁盘的哪些分区:

启动Ubuntu光盘,选择LiveCD模式,进入之后选择进入终端,先在终端输入如下命令:

sudo fdisk -l  (注意是小写的L,不是数字的1)

比如我的终端显示的是这样的:

 

Disk /dev/sda: 122.9 GB, 122942324736 bytes

255 heads, 63 sectors/track, 14946 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0xf0b1ebb0

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1        3533    28378791    7  HPFS/NTFS

/dev/sda2            3534       14946    91674922+   f  W95 Ext'd (LBA)

/dev/sda5            3534        4963    11486443+   b  W95 FAT32

/dev/sda6            4964        8880    31463271    7  HPFS/NTFS

/dev/sda7            8881       12797    31463271    7  HPFS/NTFS

/dev/sda8           12798       14946    17261811    b  W95 FAT32

 

Disk /dev/sdb: 160.0 GB, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x624aa2e0

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1   *           1        2049    16458561    7  HPFS/NTFS

/dev/sdb2            2050       19458   139831424+   f  W95 Ext'd (LBA)

/dev/sdb5            2050        7093    40515898+   7  HPFS/NTFS

/dev/sdb6            7094        8384    10369926   83  Linux

/dev/sdb7            8385        8448      514048+  82  Linux swap / Solaris

/dev/sdb8            8449       13381    39618326    7  HPFS/NTFS

/dev/sdb9           13381       19203    46770176   83  Linux

/dev/sdb10          19204       19458     2041856   82  Linux swap / Solaris

 

Disk /dev/sdc: 2076 MB, 2076180480 bytes

255 heads, 63 sectors/track, 252 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0xcad4ebea

 

是的,第一块硬盘是sda,第二块硬盘是sdb,第三块sdc,以此类推第一块硬盘的第一块分区是sda1,第二个分区是sda2,等等…ID83的是ubuntu的主分区,根据这个原则修改menu.lst文件即可.

 

但是,实际上原来的menu.lst文件或者grub.cfg文件都是由grub自动生成的(只是我是在弄不明白grub的命令不得已才自己来改文件的)。Grub博大精深,而我只能不求甚解啊。。。虽然网上这方面的资料很多,但是也很乱,而且很多方法不是普适的,我的方法同样也不是普适的,还要具体分析才行。

 

其实给我的电脑做多重引导,是很久以前的事了,之所以写这篇日志,一是今天又小改了一下引导;二是怕以再后忘了怎么改,所以记录下来。我的水平还是很菜的那种,但是不能因为菜就不总结,我清楚的记得我的导师曾跟我说过,他带的最好的学生都是最会总结的学生。

 

转载于:https://www.cnblogs.com/HIT-Young/archive/2011/08/21/2148598.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值