五、通过GRUB命令行来启动Linux操作系统;
GRUB的命令行才是王道,如果知道怎么用命令行来启动操作系统,那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单,通过GRUB的命令也是一样能把操作系统引导起来。
因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇?
1、为什么需要学习GRUB的命令行;
当我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时,比如在开机的时候,GRUB会出现grub>类似的命令提示符,这时需要我们用命令行启动系统;当然您可以不用定义GRUB的菜单 ,直接用命令行来启动系统,比如我现在就是,为了写GRUB的文档,就把menu.lst 删除了,直接用命令来启动系统;
2、用命令行来引导Linux操作系统的步骤;
通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。如果您不知道有哪些命令,可以输入help;
1)进入GRUB的命令行模式 grub>
1)您可以按Ctrl+c组合键进入GRUB的命令行模式,会出现grub> 提示符;
grub>
2)获取帮助GRUB的 help
只要您在grub>提示符的后面输入help 就能得到GRUB所有的命令提示;
grub> help
如果需要得到某个指令的帮助,就在 help 后面空一格,然后输入指令,比如;
grub>help kernel
3)cat的用法;
cat指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令补齐的功能;
4) root (hd[0-n,y) 指令来指定/boot所在的分区;
......
5) kernel 指令,用来指定Linux的内核,及/所在的分区;
.......
6)initrd 命令行来指定initrd文件;
........
六、通过GRUB引导Windows操作系统;
1、通过编辑 menu.lst 来引导Windows 系统;
如果您的Windows所处于的分区在(hd0,0),可以在menu.lst 加如下的一段就能引导起来了;
title WinXp
rootnoverify (hd0,0)
chainloader +1
如果您的机器有两块硬盘,而Windows 位于第二个硬盘的第一个分区,也就是(hd1,0)
您可以用grub的map来指令来操作把两块硬盘的序列对调,这样就不用在BIOS中设置了;在menu.lst中加如下的内容,比如下面的;
title WinXp
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
chainloader +1
makeactive
如果Windows的分区不位于硬盘的第一个分区怎么办呢?比如在(hd0,2);
这个也好办吧,把rootnoverify 这行的(hd0,0)改为 (hd0,2)
title WinXp
rootnoverify (hd0,2)
chainloader +1
makeactive
如果Windows的在第二个硬盘的某个分区,比如说是位于(hd1,2),则要用到map指令;
title WinXp
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,2)
chainloader +1
makeactive
如果有多个Windows 系统,怎么才能引导出来呢?应该用hide 和unhide指令操作;比如我们安装了两个Windows ,一个是位于(hd0,0)的windows 98 ,另一个是安装的是位于(hd0,1)的WindowsXP;这时我们就要用到hide指令了;
title Win98
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
chainloader +1
makeactive
title WinXP
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
chainloader +1
makeactive
2、通过GRUB指令来引导Windows ;
其实我们会写menu.lst了,在menu.lst中的除了title外,都是一条条指令;如果我们启动Windows ,只是输入指令就行了;
比如 Windows的分区在 (hd0,0),我们在开机后,按ctrl+c ,进入GRUB的命令模式;就可以用下面的
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> boot
其它同理...
七、GRUB丢失或损坏的应对策略;
如果GRUB是Linux版本才出会这样的问题;WINGRUB可以不写在MBR上;所以不会出现这样的问题。WINGRUB用起来比较简单。menu.lst 和命令行的用法和Linux版本的GRUB是一样的;
1、由于重新安装Windows或其它未知原因而导致GRUB的丢失;
您可以通过系统安装盘、livecd进入修复模式;
请参考:《Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用》
首先:您根据前面所说grub-install来安装GRUB到/boot所在的分区;要仔细看文档,/boot是不是处于一个独立的分区是重要的,执行的命令也不同;
其次:要执行grub ,然后通过 root (hd[0-n],y)来指定/boot所位于的分区,然后接着执行 setup (hd0),这样就写入MBR了,比如下面的例子;
grub>root (hd0,6)
grub>setup (hd0)
grub>quit
重新引导就会再次出现MBR的菜单了或命令行的提示符了;
2、如果出现GRUB提示符,而不出现GRUB的菜单,如何引导系统;
存在的问题可能是/boot/grub/menu.lst丢失,要自己写一个才行;您可以用命令行来启动系统,进入系统后写一写menu.lst就OK了。前面已经谈过了;
写好后还要建一个grub.conf的链接,如下:
[root@localhost ~]# cd /boot/grub
[root@localhost grub]# ln -s menu.lst grub.conf
grub配置错误
在GRUB rescue>后输入
root (hd0,0) 回车(windows分区)
chainloader +1 回车
boot 回车
可以引导windows
或者输入linux的启动位置,进入后重新编辑grub.conf
系统问题
unknown filesystem的意思就是 未知的文件系统
建议重装
这种情况 重新装系统吧 系统文件被丢失
典型的引导错误。ubuntu没装好,建议用U盘重新安装下。