Grub引导Linux + Windows

标题:Grub + Linux + Windows


正文:

安装了一个双系统,分别是Windows 2003 Sever 和 RedFlag 6.0 桌面版。

遇到问题做记录,仅备忘。


1.存在问题:

把Grub的引导程序写到Linux系统第一个分区的引导区,当系统启动就直接进入进入Windows系统,Grub未曾出现。

把Grub的引导程序写到磁盘主引导扇区(MBR),系统启动显示grub>提示符。仍然没有Grub菜单。

2.MBR受损修复:Win98启动DOS后,使用fdisk /mbr 命令重写主引导记录即可。

3.重新把Grub装在Linux第一个分区的引导区中,然后在Windows下,使用DiskGenius工具把Linux的/boot复制出来,查

看/boot/grub/grub.conf和/boot/grub/menu.lst,未发现异常:

---------------------

#boot=/dev/hda8
default=1
timeout=5
gfxmenu (hd0,7)/boot/message
title RedFlag Linux (2.6.22.6-1)
root (hd0,7)
kernel /boot/vmlinuz-2.6.22.6-1 ro root=LABEL=/1 vga=788 splash=silent
initrd /boot/initrd-2.6.22.6-1.img
title Windows
rootnoverify (hd0,0)
chainloader +1

---------------------

4. 继续尝试,用Linux6安装光盘引导自动修复,未果。

5.看资料说修复GRUB如下操作:

1).安装盘引导
2).boot:linux rescure
3).sh#grub
4).grub>root (hdX,Y)
grub>setup (hd0)
5).exit退出linux rescure,重启。


但以linux救援模式进入后,执行sh#grub命令后,却提示:

Probing Devices to Guess BIOS Drives. This May Take a Long Time.

经查设备没有问题。

6.尝试用ntldr实现双系统的引导

原理:ntldr文件是由配置文件boot.ini提供工作参数的,位于Windows XP系统分区的根目录下,具有隐藏、系统、只

读属性。把Linux的引导记录作为一个文件备份到C盘的根目录下,并相应地在boot.ini文件里添加一个项目来指向它,

就可以实现双重系统了。

在Windows环境下备份Linux引导扇区操作:


1)找出Linux引导扇区的扇区数,再将该扇区保存为一个备份文件。

使用DiskGenius工具,选择Linux文件分区的引导扇区,查看“起始扇区号”,记录下来,如:108551268。

用Dskprobe备份引导扇区:工具dskprobe.exe在Windows 2000/XP安装光盘的\SUPPORT\TOOLS目录下的SUPPORT.cab

压缩包中。

运行Dskprobe.exe后,选择菜单“Drives”→“Pysical Drive”,弹出“Open Pysical Drive”对话框。

对话框的“Available Physical Drives”列表框中列出了所有的磁盘。

双击选择的物理硬盘,激活“Close Handle”和“Set Active”两个按钮,然后单击“OK”按钮返回到主界面。

选择菜单“Sectors”→“Read”,打开“Read Sectors”对话框。

在“Starting Sector”文本框里输入刚才通过DiskGenius工具记录的“起始扇区号”(如108551268),在

“Number of”文本框里输入1,然后单击“Read”按钮,此时显示Linux的/boot分区的引导扇区的内容。

选择菜单“File”→“Save as”,指定保存位置和文件名(如:C:\bootsect.dsk)即可。


2)修改C:\boot.ini文件。

编辑C:\boot.ini文件,添加C:\bootsect.dsk="RedFlag Linux 6.0"。

重启系统,发现仍没有Grub启动菜单,系统停留在grup>提示符。

7.使用Grub for DOS引导多系统

无奈之下只好用Grub for DOS了,版本0.4.2。

1)把Grub for DOS所有文件Copy至C:\boot\grub

2)把C:\boot\grub\grldr文件Copy至C:\

3)编辑C:\boot.ini文件,添加C:\grldr="Grub Menu"。

4)编辑C:\boot\grub\menu.lst文件,设置内容。

可以参考把Linux系统根分区内的/boot/grub/menu.lst直接移植过来使用。

也可以在Grub for DOS的menu.lst文件内,通过configfile直接引入Linux系统根分区内的/boot/grub/menu.lst菜

单使用。

即在Grub for DOS的menu.lst文件内内这样设置:

---------------------

title GNU Grub menu

configfile (hda0,X)/boot/grub/menu.lst

---------------------

或者编辑menu.lst文件形式如下:

---------------------

#title Grub Menu
#configfile (hd0,7)/boot/grub/grub.conf

default=0
timeout=30

splashimage (hd0,0)/boot/grub/chinese/bj2008.xpm.gz #设置图片
fontfile (hd0,0)/boot/grub/fonts.gz #设置字体,显示汉字

gfxmenu (hd0,7)/boot/message

title 红旗Linux 6
root (hd0,7)
kernel /boot/vmlinuz-2.6.22.6-1 ro root=LABEL=/1 vga=788 splash=silent
initrd /boot/initrd-2.6.22.6-1.img

title Windows 2003 Server
rootnoverify (hd0,0)
chainloader +1

title 从CDROM启动
cdrom --init
map --hook
chainloader (cd0)
boot

title 重启
reboot

title 关机
halt

title 退出
rootnoverify (hd0,0)
makeactive
chainloader +1

---------------------

重启系统,Grub启动,引导Windows和RedFlag Linux,一切正常。

PS1:忘记root密码的处理方法:

解决方法一:

  1. 用Linux安装盘启动系统,输入linux rescue以修复模式启动系统;

  2. 系统启动完毕后,会将系统mount到/mnt/sysimage;

  3. 在提示符后敲入命令:

  chroot /mnt/sysimage

  4. 敲入命令:passwd,更改密码

  5. 连续敲入两次exit,重起系统后,即可用新设置密码登录。


  除了用光盘引导rescue模式,还有一种方法是用启动装载器来进入单用户模式:


 解决方法二:

使用Grub移动系统启动,进入启动画面之后,输入“e”,把光标移动到kernel ...那一行。

再输入“e”,在kernel 一行的最后加上空格single,回车。

  输入“b”,启动系统,即进入单用户模式,此时候可以用passwd命令修改密码。


PS2:红旗Linux进入X后看不到鼠标的光标。

现象;偶尔在状态栏会显示光标的图标,或者是一个虚线闪烁的方块,或者不显示,但是左键和右键均能够使用。

解决办法:多是显卡驱动的问题。自动探测到的是via,可以使用vesa 或 intel试试。

操作如下:

#vi /etc/X11/xorg.config

把:
Section "Device"
Identifier "Videocard0"
Driver "via"

改为:
Section "Device"
Identifier "Videocard0"
Driver "vesa"

重启机器后,就可以顺利用startx。

或者鼠标右击,选择“显示配置”→“显卡驱动”,把via改为vesa,保存后重启。


by JRQ

2009/02/27夜.京.

你可能感兴趣的:(c,linux,windows,XP,dos)