[讨论]能不能不装grub在mbr上而启动Linux

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
xinye0123
帖子: 61
注册时间: 2006-01-10 13:36

[讨论]能不能不装grub在mbr上而启动Linux

#1

帖子 xinye0123 » 2006-05-05 22:05

我想把grub装在Linux分区所在的引导扇区里或者不安装,用wingrub去启动,请问该怎么做?应该注意些什么?
麻佳
帖子: 41
注册时间: 2005-12-26 9:26

#2

帖子 麻佳 » 2006-05-05 22:47

xinye0123
帖子: 61
注册时间: 2006-01-10 13:36

#3

帖子 xinye0123 » 2006-05-06 11:49

如果你的系统现在正在使用grub引导方式,请在操作之前查看一下/boot/grub/menu.lst的内容,建议将/boot/grub/menu.lst拷贝一份以备用(将它拷到fat32分区中存放就可以)!

进入window环境下

1) 下载grub020p.zip并解压到C盘根目录下,打开C盘查看一下是否有以下文件

C:\boot (文件夹)
C:\ChangeLog.txt
C:\compile
C:\COPYING
C:\grldr
C:\grub4lin
C:\grub-0.95-patch1-startups
C:\grub-0.95-patch2-findroot
C:\grub-0.95-patch3-ntfs
C:\grub-0.95-patch4-emulation
C:\grub-0.95-patch5-splash
C:\grub-0.95-patch6-scdrom
C:\grub-0.95-patch7-bioscdrom
C:\grub.exe
C:\grub.pif
C:\README.txt
C:\robin.xpm.gz
C:\scratchpad.txt

2) 修改C:\boot\grub\menu.lst ,用你刚才从linux系统中拷贝的menu.lst覆盖C:\boot\grub\menu.lst

3) 进入grub命令行方式 (出现grub引导菜单时按c键)
> root (hd0,0)
> setup (hd0)

4) 重启计算机

第3项 两个命令具体作用是什么?他的grub是不是装在Linux所在分区的boot目录里?因为我没有光驱,软驱,mbr搞坏了很麻烦的,所以不想把grub装在mbr上,以前碰到多次装了grub,xp就进不去了
laneast
帖子: 10
注册时间: 2006-04-14 16:40

#4

帖子 laneast » 2006-05-06 21:08

可以用WindowsXP自己的引导程序来引导的
安装的时候把Grub装Linux的根分区,比如我的就是/dev/hda2
然后在grub的命令方式运行:
>chainloader (hd0,1)+1 # 根据你Linux所在的分区情况
>boot
然后就可以进入Linux了,然后在linux下把引导扇弄到Windows下的C:\上去:
sudo dd if=/dev/hda2 of=/media/hda1/bootsect.lnx bs=512 count=1 # 根据你的具体情况改动
sudo vi /media/hda1/boot.ini
在boot.ini后面加上一句
c:\bootsect.lnx="Ubuntu GNU/Linux"
然后重启,开机的时候选Ubuntu GNU/Linux那项试试:)
nobug
帖子: 46
注册时间: 2006-03-31 17:48
联系:

#5

帖子 nobug » 2006-05-06 22:37

我现在就是这样的,安装ubuntu的时候不安装grub跟lilo,然后使用XP的启动菜单引导dosgrub的menu.lst,然后就可以进入ubuntu了,升级内核的时候也只要相应的改一下menu.lst里ubuntu的内核文件名就可以了。
xinye0123
帖子: 61
注册时间: 2006-01-10 13:36

#6

帖子 xinye0123 » 2006-05-08 15:49

5楼的朋友,你的意思是说当Ubuntu提示你安装grub的时候掉过吗?那根目录下还会有/boot目录吗?接着在dosgrub上的menu.lst上该怎么写呢?我就想你那样
nobug
帖子: 46
注册时间: 2006-03-31 17:48
联系:

#7

帖子 nobug » 2006-05-08 20:48

正解。安装系统时提示安装grub跟lilo都取消,不用管它的警告,文件跟目录都会有,只是它不会往MBR写东西了,这样第一次启动时也就进不了ubuntu,需要进入XP修改dosgrub的menu.lst,内核文件名必须跟安装的内核文件名一致,否则启动ubuntu时就找不到文件了。

下面是我的设置,供你参考。

XP的启动文件C:\boot.ini

代码: 全选

[Boot Loader]
Timeout=10
Default=c:\grldr               [color=red]------------缺省启动grub[/color]
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(4)\XP="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Windows Server 2003, Standard" /fastdetect
c:\grldr="Grub"                [color=red]------------dosgrub的安装位置[/color]
C:\BOOT\BOOTDISK.bin="虚拟软盘" 
C:\BOOT\NTFS.bin="CIA Commander" 
C:\BOOT\BOOTSECT.cdr="光驱" 
grub的启动菜单文件C:\boot\grub\menu.lst
这个文件很长,把没用的部分注释掉,下面是关键的部分

代码: 全选

###############################################################################
# 启动硬盘上的其它系统
###############################################################################
##[color=red]每个启动项由3行组成,第一行标题随便写,自己认识就行,后2行的分区位置及文件名不可写错,(hd0,2)以及/dev/hda3表示/boot分区在第一硬盘第三主分区,根据你的分区修改,被注释的2.6.12-9-386是5.10安装时的内核文件版本,现在用的是升级后的2.6.15-21-686[/color]
#title	Ubuntu, kernel 2.6.12-9-386 on (hd0,2)
#kernel	(hd0,2)/boot/vmlinuz-2.6.12-9-386 root=/dev/hda3 ro quiet splash
#initrd	(hd0,2)/boot/initrd.img-2.6.12-9-386
title		Ubuntu, kernel 2.6.15-21-686 on (hd0,2)
kernel	(hd0,2)/boot/vmlinuz-2.6.15-21-686 root=/dev/hda3 ro quiet splash
initrd	(hd0,2)/boot/initrd.img-2.6.15-21-686

#title	Ubuntu, kernel 2.6.12-9-386 on (hd0,2) (recovery mode)
#kernel	(hd0,2)/boot/vmlinuz-2.6.12-9-386 root=/dev/hda3 ro single
#initrd	(hd0,2)/boot/initrd.img-2.6.12-9-386
title		Ubuntu, kernel 2.6.15-21-686 on (hd0,2) (recovery mode)
kernel	(hd0,2)/boot/vmlinuz-2.6.15-21-686 root=/dev/hda3 ro single
initrd	(hd0,2)/boot/initrd.img-2.6.15-21-686

title	Ubuntu, memtest86+ on (hd0,2)
kernel	(hd0,2)/boot/memtest86+.bin
如果你的ubuntu能通过grub管理XP启动最好让它安装,省得改来改去,我是不得不这样,ubuntu的grub启动我的XP失败,害的我差点进不了XP,只好这样解决了。如果你也要这样做,记得先保证dosgrub能正常启动。
laneast
帖子: 10
注册时间: 2006-04-14 16:40

#8

帖子 laneast » 2006-05-29 17:24

xinye0123 写了:5楼的朋友,你的意思是说当Ubuntu提示你安装grub的时候掉过吗?那根目录下还会有/boot目录吗?接着在dosgrub上的menu.lst上该怎么写呢?我就想你那样
上面的那个是有了dosgrub之后我的做法
之前我都是把grub装在Linux下的根分区上(假如是/dev/hda2),不装在mbr上,然后在分区的时候把hda2设置成激活的,重启后是直接进入Ubuntu的,然后把/dev/hda2的第一个扇区弄到Windows的C盘(对于我是/dev/hda1)下:
dd if=/dev/hda2 of=/media/hda1/bootsect.lnx of=512 count=1
然后编辑c:\boot.ini(/media/hda1/boot.ini)
在[operating systems]下面加上
c:\bootsect.lnx="Ubuntu GNU/Linux"
然后再把/dev/hda1改成激活的,把/dev/hda2取消激活就可以了

其实只要把grub装在Linux的分区下,然后dd出个512字节放到c:\下面去,然后编辑boot.ini就可以了,我上面的方法可以,用LiveCD也可以
回复