标题: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夜.京.