GRUB和文件系统恢复

最近在修改gnome电源管理的时候,改坏了一个/user/lib/ 下的文件,导致进不去桌面。开机按e键盘,进入grub,从grub引导进入root用户根目录,修改相应文件,提示没有可写权限。这时执行命令 mount -n / -o remount,rw (表示将根重新mount为可读写)。之后,文件可修改,问题解决

转载自 http://blog.chinaunix.net/uid-20083-id-2785272.html

GRUB和文件系统恢复

如何重新安装GRUB启动加载程序
环境
SuSE Linux Enterprise Desktop 10 (SLED 10)
情景
GRUB启动管理器的菜单不再显示
解决办法
按照以下步骤重新安装GRUB启动加载程序:

  1. 放入SLED 10 CD 1 或 DVD光盘,以光盘方式启动系统以后在显示菜单选择"Rescue System",这会启动系统到一个文本模式的Login提示符,输入用户名root, 回车进入命令行终端环境。

  2. 输入"fdisk -l"命令,显示的结果类似如下信息:
    Disk /dev/sda: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 262 2104483+ 82 Linux swap / Solaris
/dev/sda2 * 263 3449 25599577+ 83 Linux
/dev/sda3 3450 19456 128576227+ f W95 Ext’d (LBA)
/dev/sda5 3450 6060 20972826 83 Linux
/dev/sda6 6061 19456 107603338+ 83 Linux
这是一个SATA磁盘信息的例子,IDE硬盘的设备名会以/dev/hda打头。

你需要知道显示的分区中哪一个是Linux系统的root分区。如果你使用缺省分区方式进行安装,通常紧跟在swap分区之后的就是root分区。

  1. 输入命令"mount /dev/sda2 /mnt"。务必将/dev/sda2替换成您真正的root分区设备名称。

  2. 输入命令"grub-install --root-directory=/mnt /dev/sda",务必将/dev/sda替换成您真正的root分区设备名称。末尾不带数字的"sda"代表硬盘,"sda2"中的2代表硬盘上的第二个分区。

  3. 成功执行完以上命令之后输入reboot命令重启系统。你的系统将会重新启动,很有可能您又会看到grub的启动菜单了。

GRUB 修复手记

最 近在实验室装了 Suse10.0 安装的时候我让他自动分区, 发现原来安排的空间没有完全被用上, 遂在Windows把这块剩余的空间重新格式化弄 到Wondows下面来. 重新启动后, 发现进不了系统. 提示 GRUB ERROR 17. 哭死掉…

去网上找了一些资料, 知道通过修复 GRUB 可以解决这个问题.

首先,进入要Linux. 网上的文章都是用Linux的安装光盘进去的.我没有光盘.不过,上次鸟江同学送给我几套 Ubantu 的系统.其中有 Live CD. 我就用它进入了系统.
PS. Ubantu 改root密码 # sudo passwd root

紧接着在命令行中输入 
# grub        
# root (hd0,5)
# setup (hd0)
PS. (hd0,5) (hd0) 请根据实际情况修改

用安装光盘来修复grub
作者: 出处:Unix爱好者家园unix-cd.com 更新时间: 2005年11月11日

一、本解决方案所要解决的问题:
  我们可能在安装windows时,把GRUB或者LILO从MBR上清除。如果在没有系统引导软盘只有安装盘的情况下,所采取的解决办法。
  常用恢复MBR的办法还有一种是用升级系统的办法,这种办法经过验证,是极不可靠的。我们经过近二三十次的实践,证明效果几乎很少,这个办法用于没有安装GRUB的还是可行的。如果已经把GRUB安装上,后来就重装WINDOW或者别的操作系统而带的LILO,而导致系统不能正常引导,这种办法就失效了。所以说,本方案最适合GRUB的恢复。

二、解决过程[以RedHat 7.3为例]
  1.把安装盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。
  2.等安装界面出来后,按[F4]键,也就是linux rescue模式。如果是Redhat 8.0可能是F5吧。
  然后在boot下输入
  linux rescue
  然后就是回车一下。
  3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。
  4.然后会出现这样的字符
  sh#
  5.我们就可以操作GRUB了
  sh#grub
  会出现这样的字符
  grub>
  我们就可以在这样的字符后面,输入
  grub>root (hdX,Y)
  grub>setup (hd0)
  如果成功会有一个successful…
  这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。setup (hd0)就是把GRUB写到硬盘的MBR上。

我来举个例子吧,如果以我的硬盘为例。我在第一个硬盘上装了XP,在第一个硬盘的hda9个装了RH73.我总共有两个硬盘。如果我把GRUB丢了,就用这种办法找回来。 如果你不知道你的linux安装到哪个分区上,也就是说,不知道这个Y是多少,这也不要紧,先输入root (hdX,然后用[TAB]来查看,一下就明白了…
  操作如下:[前面开机启动的上面有说明]
  sh# grub
  会出现下面的字样的
  grub>
  然后再这样操作,如果我知道我的linux装在第一个硬盘上,但我不知道装在哪个分区上,就可以先输入root (hd0,然后用[TAB]键来补齐,然后就明白了。
  grub>root (hd0,8)
  grub>setup (hd0)
  请弟兄们结合文章及这个例子,仔细想一想。
  我的第一个硬盘的分区情况是这样的。。
  /dev/hda1 主分区 NTFS
  /dev/hda2 扩展分区
  /dev/hda5 NTFS
  /dev/hda6 FAT
  /dev/hda7 FAT
  /dev/hda8 /boot ext3
  /dev/hda9 / ext3
  /dev/hda10 /swap ext3
  最后就是按一下[RESET]键,重新启动,就OK了。。。。这步应该是最简单的吧。。。哈。。。。

另一种方法[在DOS中操作引导系统]
  首先要有能启动的win98或win98的启动光盘,rh 7.x的启动光盘中的两个文件:loadlin.exe(存在于dosutils下)和vmlinuz(存在于dosutilsautoboot下)当然vmlinuz你也可在其它linux发行版中取得.
  先从硬盘启动进入win98的纯dos模式或从win98的启动光盘启动(mini模式),然后进入loadlin.exe及vmlinuz所在的目录并执行:
  loadlin vmlinuz root=/dev/hdaX 1
  #说明:/dev/hdaX 为linux所在的根目录
  进入后再重新安装grub即可.
SUSE Linux忘记root密码的处理办法
/ 2009-12-22 13:11:39 / 个人分类:SUSE

/ /

GRUB修改法

注意:
此办法仅适用SLES8、SLES9,不适用于SLES10,SLES10请用光盘修改法。
此办法不适合用于grub启动超时时间为0的机器,因为grub超时时间为0后,不能编辑grub选项,此类机器必须使用光盘或引导到救援模式下修改root密码。

1、重新启动机器,在出现grub引导界面后,在启动的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现行。

2、稍等片刻出现(none)#: 提示符。

3、这时执行命令 mount -n / -o remount,rw 表示将根重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。

4、输入passwd root命令就可以重置密码。

5、修改完成后记得用mount -n / -o remount,ro将根文件系统置为原来的状态。

6、重启linux使密码生效。

光盘引导修改法

设备:USB光驱、SUSE9 SP2 CD1或者SUSE10 CD1(原则:什么样的就用什么样的引导光盘,包括位数也要一样,如suse10sp1 64位光盘)

用USB光驱引导进入救援模式。

输入root登陆
Rescue login# root

查看硬盘分区
Rescue# fdisk -l

Device Boot Start End Blocks Id System
/dev/hde1 1 1024 1048560 82 Linux swap
/dev/hde2 1025 11264 10485760 83 Linux

一般地,hde2或者sda2是根分区(注意:R0单板一般可以看到hde和hdg两个盘,只能修改hde盘的;R2一般看到是sda)

挂载分区
Rescue# mount /dev/hde2 /mnt

Rescue# mount -o bind /dev /mnt/dev
Rescue# chroot /mnt

修改root密码
Rescue# passwd
Changing password for root.
New password:

修改完之后,退出
Rescue# exit

取消分区挂载
Rescue# cd /
Rescue# umount /mnt/dev
Rescue# umount /mnt

重启单板
Rescue# reboot

十月 11th, 2009

原创文章,转载请注明: 转载自
本文链接地址:

排错troubleshooting:分4部分。

⑴ boot 启动问题。

⑵ local 系统本地问题。

⑶ network 网络问题。

⑷ server 服务问题。

这里只先总结前3部分问题的排错,server服务问题会在搭建服务器时提及。

一、boot 启动问题:

启动步骤:BIOS→bootloader(启动引导器,grub)→kernel→init。

始前时代:init之前是始前时代。

⒈ bios读取MBR时,MBR坏掉了,进行修复。

注:MBR前446字节MBC(主引导代码)坏时,如同新的硬盘什么都没写一样,此时,是可修复的。如果,之后的64字节(DPT分区表)坏了就无法修复了。

破坏MBR方法:

[root@newrhel5: ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

1+0 records in

1+0 records out

446 bytes (446 B) copied, 0.000557676 seconds, 800 kB/s

修复方法:(2种:①光盘引导启动;②U盘引导启动)

① 用光盘引导启动,进入rescue修复模式→chroot重新挂载/根分区→grub-install /dev/sda 重装sba,修复MBR。

方法1:

⑴ 破坏MBR:

[root@newrhel5: ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

1+0 records in

1+0 records out

446 bytes (446 B) copied, 0.000557676 seconds, 800 kB/s

⑵ 光盘引导启动:

光盘rescue修复模式已经init了,有udev(在内核中,加设备文件)

进入linux rescue修复模式。

linux rescue1 linux rescue2

⑴ 进入linux rescue修复模式 ⑵ 选择美式键盘

linux rescue3 linux rescue4

⑶ 选择语言为英语 ⑷ 安装网络

linux rescue5 linux rescue6

⑸ 设置网络IP地址 ⑹光盘rescue修复模式会自动把/根分区挂载到/mnt/sysimage/目录下。

linux rescue7 linux rescue8

⑺ 看光盘修复模式自动挂载的分区 ⑻ 切换/根分区;重装sda,修复MBR

sh-3.1#chroot /mnt/sysimage

sh-3.1#grub-install /dev/sda

此时,重启系统即开正常引导进入系统!!!

方法2:

⑴ 如果在MBR被损坏前已把MBR备份到第三方存储设备中(如:U盘中)。

[root@newrhel5: ~]# dd if=/dev/sda of=/mnt/u/mbr.file bs=446 count=1

1+0 records in

1+0 records out

446 bytes (446 B) copied, 0.00138103 seconds, 323 kB/s

⑵ 用光盘引导进入rescue修复模式,再dd还回/dev/sda即可。

sh-3.1#dd if=/mnt/u/mbr.file of=/dev/sda bs=446 count=1

1+0 records in

1+0 records out

446 bytes (446 B) copied, 0.00138103 seconds, 323 kB/s

此时,重启系统即开正常引导进入系统!!!

② 用做好的U盘引导盘引导系统,手动挂载进行修复MBR。

sh-3.1# mount -n -o remount,rw / -n:则不更新/etc/mtab

sh-3.1# cd /mnt

sh-3.1# mkdir boot

sh-3.1# PATH=/bin:/sbin

sh-3.1# mount /dev/sda2 /mnt 挂载/根分区与/boot分区

sh-3.1# mount /dev/sda1 /mnt/boot

sh-3.1# mount -t proc none /proc

sh-3.1# mknod /dev/sda b 8 0 创建设备文件

sh-3.1# mknod /dev/sda1 b 8 1

sh-3.1# mknod /dev/sda2 b 8 2

sh-3.1# /usr/sbin/chroot /dev/sda 切换/根分区

sh-3.1# /sbin/grub-install /dev/sda 重装sda,修复MBR

此时,重启系统即开正常引导进入系统!!!

⒉ bootloader启动引导器的修复。

修改/boot/grub/grub.conf配置文件

[root@newrhel5: ~]# vim /boot/grub/grub.conf

grub.conf generated by anaconda

Note that you do not have to rerun grub after making changes to this file

NOTICE: You have a /boot partition. This means that

all kernel and initrd paths are relative to /boot/, eg.

root (hd0,0)

kernel /vmlinuz-version ro root=/dev/sda2

initrd /initrd-version.img

#boot=/dev/sda

default=1

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux Server (2.6.24)

root (hd0,0)

kernel /vmlinuz-2.6.24 ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.24.img

title Red Hat Enterprise Linux Server (2.6.18-8.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.18-8.el5.img

⒊ init的修复。(用单用户模式都可搞定)

⑴ 设置/etc/inittab配置文件

说明:默认有7种运行级别。

此配置文件是以“:”分隔的4段格式。

例:

l1:1:wait:/etc/rc.d/rc 1

第一段:标记(ID):1~4字符。

第二段:runlevel 运行级别。

第三段:描述,有wait、sysinit、respawn可重生。

第四段:要执行的脚本。

深入学习要看以下系统脚本:

/etc/rc.d/rc.sysinit

/etc/rc.d/rc

/etc/rc.d/local

/etc/init.d/目录下的系统服务脚本

[root@newrhel5: ~]# vim /etc/inittab

inittab This file describes how the INIT process should set up

the system in a certain run-level.

Author: Miquel van Smoorenburg,

Modified for RHS Linux by Marc Ewing and Donnie Barnes

Default runlevel. The runlevels used by RHS are:

0 - halt (Do NOT set initdefault to this)

1 - Single user mode

2 - Multiuser, without NFS (The same as 3, if you do not have networking)

3 - Full multiuser mode

4 - unused

5 - X11

6 - reboot (Do NOT set initdefault to this)

id:3:initdefault: 设置默认的运行级别为3

System initialization.

si::sysinit:/etc/rc.d/rc.sysinit sysinit:一定要运行完后面的脚本,再继续运行后面,有错也不停(继续运行后面程序)

l0:0:wait:/etc/rc.d/rc 0 wait:等运行完后面脚本,再继续运行会面,有错就停。

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

When our UPS tells us power has failed, assume we have a few minutes

of power left. Schedule a shutdown for 2 minutes from now.

This does, of course, assume you have powerd installed and your

UPS connected and working correctly.

pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”

If power was restored before the shutdown kicked in, cancel it.

pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”

Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1 可重生

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon

⑵ /etc/fstab文件存分区信息,由/etc/rc.d/rc.sysinit脚本启用。

在启动initrd时,初始化驱动

[root@newrhel5: ~]# vim /etc/fstab

LABEL=/ / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

devpts /dev/pts devpts gid=5,mode=620 0 0

tmpfs /dev/shm tmpfs defaults 0 0

LABEL=/home /home ext3 defaults 1 2

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

LABEL=/var /var ext3 defaults 1 2

LABEL=SWAP-sda3 swap swap defaults 0 0

启动系统时,要3次挂载根分区:

① root (hd0,0) 挂grub的根分区(即/boot分区)

② kernel vmlinuz-2.6.24 ro root=LABEL=/ ro rhgb quiet 挂/分区

③ /etc/rc.d/rc.sysinit 此脚本执行挂载/分区为rw读写权限

如果,在/etc/fstab中输入的数据错误,导致无法顺利启动,而进入单用户维护模式时,/是“只读”状态,无法修改/etc/fstab。

用 # mount -n -o remount,rw / 命令,重新挂载/为“读写”权限。

-n:不更新/etc/mtab

再把/etc/fstab文件设置正确,重启系统(或#init 3)即可顺利启动了!!!

说明:/etc/mtab和/proc/mounts文件是当前mount的分区信息。

/etc/fstab是系统启动时,自动要挂载的分区信息。

可以用#mount -a 命令测试设置/etc/fstab的分区信息是否生效。

/etc/fstab文件中倒数两列数字的含义:

倒数第二列:dump备份命令,用restone解备份。

0:不备份;

1:要进行备份;

2:也要做备份,不过,该分区的重要性比1小。

倒数第一列:是否以fsck检验分区。

0:不要检验;

1:要检验;

2:也是要检验,不过1会较早被检验。

一般来说,根目录设置为1,其它要检验的文件系统都设置为2就可以了。

在superblock超级块中有检验项目:①次数;②上次检验时间。

[root@newrhel5: ~]# dumpe2fs -h /dev/sda2

Mount count: 27 挂载次数

Maximum mount count: -1 最大挂载次数,-1为不限次数

Last checked: Tue Feb 5 00:46:47 2008 上次检验时间

Check interval: 0 () 检验间隔

二、local 本地问题排错:

⒈ /etc/shadow 倒数第二列:用户过期时间。

进入单用户模式,重新挂载/为读写权限,设置/etc/shadow文件即可搞定!!!

⒉ pam问题。也用单用户模式解决。

/etc/pam.d/目录下的文件

⒊ 磁盘配额问题。 (quota内核支持)

设置步骤:

⑴ #mount -o remount,usrquota /dev/sda5 设置用户的磁盘配额

⑵ #quotacheck -cvu /dev/sda5 在/boot下加了一个auota.user文件

⑶ #quotaon /dev/sda5 激活磁盘配额

⑷ #edquota tq 建立磁盘配额的用户;可加-t:设置软限制时间

⑸ #repquota -a 查看全部磁盘配额使用情况

#repquota /dev/sda5

⒋ Xwindow桌面:是应用程序

如果进程启不来,进不了Xwindow桌面要考虑以下问题:

⑴ /etc/X11/xorg.conf 配置问题(服务端)

#xinit 启服务端:进行键、鼠、分辨率、显卡驱动等硬件设置。

说明:通用显卡驱动:“vesa”

#system-config-display 系统自动检测显示设备,进入一个选择框。

⑵ #startx 会释放临时文件到/tmp和用户主目录/home中

问题出现在:① 磁盘用完了

② 权限 (root用户不受影响)

③ 磁盘配额

⑶ xfs服务:Xwindow字体服务器

#service xfs restart RHEL5不用也能启桌面

RHEL4要用xfs服务,才能启桌面

⑷ su 切换用户身份 RHEL4用su不能启Xwindow

RHEL5用su可以启Xwindow

⑸ Xwindow客户端:dm桌面管理器 desk manager

先#xinit 启服务器

#xclock 时钟

#gnome-session 启gnome桌面管理器dm →gdm

#startkde 启kde桌面管理器dm→kdm

⑹ /etc/sysconfig/desktop文件,设置默认启动桌面是gnome还是kde。

三、network 网络问题排错:

⒈ #ifconfig 命令

⒉ DNS:

#vim /etc/resolv.conf 配置文件,DNS客户端设置。

⒊ #netconfig 命令,综合的网络设置。

⒋ #mii-tool 命令,检测网线是否插好。

深入浅出的了解Linux rescue
作者:贝壳汉姆  出处:IT实验室系统管理 2010年04月14日 00:00 进入论坛

相关主题:linux rescue深入浅出mfc深入浅出深入浅出的意思深入浅出设计模式深入浅出mfc pdf深入浅出ext js深入浅出extjs深入浅出mfc 下载深入浅出 linuxrescue  应用Linux时,经常会因为不懂,所以会出现很多问题,解决了这些问题,你也就进一步掌握了Linux系统。本文为你详细介绍Linux rescue,为你在学习Linux rescue时起一定的作用。

应用场景:/boot 目录中所有文件被管理员误删除,且 /etc/fstab 文件被改名,系统已经无法引导,通过修复模式进入系统,发现所有的分区已经不能正常挂载和访问;该服务器中有非常重要的服务和数据,要求在不损坏任何数据的情况快速的修复系统。

解决过程:

1、 从 BIOS 中设置开启 PXE 引导功能,并选择从网络引导

2、 从网络引导后,进入修复模式:Linux rescue

3、 使用 NFS image 方式进入,一路回车后,即进入系统 shell。

NFS server:192.168.0.254

Directory:/var/ftp/pub

4、 因/etc/fstab 文件改名,系统无法正常读取到该文件,所以导致分区均无法挂载起来,所有数据均无法读出,首先需要恢复/etc/fstab 文件。

5、 在根分区上建立一个目录,如:mkdir test,将根分区挂载到该目录上mount/dev/sda3test (/dev/hda3 根据系统不同而不同)

6、 使用 df 命令查看,系统应该已经挂载到 test 目录中,进入该目录就可以看到 /test/etc目录,将 fstab 文件改回来

7、 按 exit 重新启动系统,系统读取到/etc/fstab 文件会自动挂载文件系统

8、 进入内核所在目录 cd/mnt/source/Server

9、 重新安装内核(rpm -ivh kernel?2.6.18?53.el5.i686.rpm ??root=/mnt/sysimage ??force)

10、切换到系统根分区 chroot/mnt/sysimage

11、安装 GRUBgrub?install /dev/sda(/dev/sda 根据系统不同而不同)

12、重新生成 initrd?2.6.18?53.el5.img

① rm /boot/initrd-2.6.18-53.el5.img

② cd /lib/modules

③ mkinitrd /boot/initrd?2.6.18?53.el5.img 2.6.18?53.el5

13、编辑/boot/grub/grub.conf 文件

1.default=0

2.timeout=10

3.title Redhat Enterprise 5

4.root(hd0,0)

5.kernel/vmlinuz?2.6.18?53.el5 ro root=LABEL=/

6.initrd/initrd?2.6.18?53.el5.img

14、按两次 exit 重新启动系统改从硬盘进行引导,测试是否可正常启动

以上就是Linux rescue的介绍。

本篇文章来自IDC专家网 原文链接:

(一)安装linux时安装grub.

安装redhat linux时会提示安装引导程序,如果选择grub为引导程序,建议把grub安装到硬盘的引导扇区MBR.grub 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT、2000、XP。

(二)grub的配置

一旦选择了grub为引导程序,下面我们来了解一下它的配置.

/boot/grub/grub.conf是grub产生一个引导选择菜单以及设置一些选项.下面是我的grub.conf:

#例子开始

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,6)

# kernel /vmlinuz-version ro root=/dev/hda10

# initrd /initrd-version.img

#boot=/dev/hda

default=0

timeout=10

splashimage=(hd0,6)/grub/splash.xpm.gz

# --> Redhat Linux 8.0 <–

title Red Hat Linux (2.4.18-14)

root (hd0,6)

kernel /vmlinuz-2.4.18-14 ro root=LABEL=/

initrd /initrd-2.4.18-14.img

# --> Microsoft Windows XP <–

title Microsoft Windows XP

rootnoverify (hd0,0)

chainloader +1

#=例子结束

配置选项解释:

以"#"开头的是注释行.

我这里有两个操作系统,分别是Red Hat Linux和Microsoft Windows XP.

其中 timeout标识默认等待时间,我这设置为10秒,超过10秒用户还没作出选择的话,将自动选择默认的操作系统(我这里默认的是Redhat linux 8.0)

默认的操作系统是由default一项来控制的,default后的数字表明第几个是默认的,这里0表示第一个,1表示第二个.所以如果你想修改默认的操作系统,就修改default后的数字.

title一项是设置操作系统的名称,grub不支持中文(有点遗憾).

splashimage一项指定grub界面的背景图片,有兴趣的朋友可以修改grub的背景哦!

root (hd0,6)标识从第一个硬盘,第7个分区来启动搜索引导内核.注意这儿的root与linux的root分区不同,此root非彼root也! grub的硬盘标识方法与linux的有点不同.在linux中第一个主分区为hda1,第二个主分区为hda1,第一个逻辑分区为hda5,而在 grub中是以(hdx,y)来标识的,如第一个主分区为(hd0,0)第一个逻辑分区为(hd0,1)依此类推.所以这儿root后面的是你的 /boot所在分区标识.

知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。

kernel /vmlinuz-2.2.18-14 ro root=LABEL=/.说明/boot/vmlinuz-2.2.18-14 就是要载入的内核。后面的都是传递给内核的参数。ro是以readonly的意思。注意我这里内核前面的路径是"/",因为我的boot单独分了一个区, 如果你没有为boot单独分区,那么内核前面的路径就是"/boot".

initrd用来初始的linux image,并设置相应的参数

再来看一看windows的定义段吧。

这里,我添加了一项来引导 WindowsXP。要完成此操作,GRUB 使用了"链式装入器"(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 winXP 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 – 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。如果你在计算机中装有win98,winme,win2k,winxp的话,chainloader会把引导权交与win的 NTLoader来引导.

(三)Grub启动盘的制作

要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 “grub” 程序,它将负责设置软盘的引导扇区。

将一张空盘插入 1.44MB 软驱,输入:

# mke2fs /dev/fd0

创建了 ext2 文件系统后,需要安装该文件系统:

# mount /dev/fd0 /mnt/floppy

现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

# mkdir /mnt/floppy/boot

# mkdir /mnt/floppy/boot/grub

# cp /boot/grub/stage1 /mnt/floppy/boot/grub

# cp /boot/grub/stage2 /mnt/floppy/boot/grub

再有一个步骤,就能得到可用的引导盘。

在linux bash中,从 root 用户运行"grub",该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。

在 grub> 提示符处,输入:

grub> root (fd0)

grub> setup (fd0)

grub> quit

现在,引导盘完成了。

(四).恢复被windows破坏的grub.

如果你用grub来引导linux和windows,当windows出毛病重新安装后,会破坏MBR中的grub,这时需要恢复grub.

1.把linux安装光盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。

2.等安装界面出来后,按[F4]键,也就是linux rescue模式。

3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。

4.然后会出现这样的提示符:

sh#

5.我们就可以操作GRUB了.输入grub:

sh#grub

会出现这样的提示符:

grub>

我们就可以在这样的字符后面,输入:

grub>root (hdX,Y)

grub>setup (hd0)

如果成功会有一个successful…

这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。

(五).用NTLoader来引导linux.

如果你在安装linux时没有选择安装grub,不必着急,现在我们来看看如何在安装linux后安装grub.并用windows的NTLoader来引导linux.

1. 安装grub

我用的grub是Redhat8.0带的grub安装包: grub-0.92-7.rpm

安装: rpm -ivh grub-0.92-7.rpm

其他安装方式也一样,只要你安装上grub就行了.RH8缺省用的grub, 1,2步骤可以

省了.

2. 建立grub的环境

cp /usr/share/grub/i386-pc/* /boot/grub

3. 生成grub的配置文件/boot/grub/menu.conf

按照上面所讲的grub.conf来生成一个配置文件.

注意了, 这里我的linux在/dev/hda4,所以menu.conf那些分区位置为(hd0,3),

你的可能不一样了,不能完全照着"画瓢"噢! 下面第3步install的中的分区位置也应该和你的系统一致.

3. 安装grub至Linux分区boot

将grub的stage1安装到/dev/hda4的boot扇区(hd0,3). 过程如下:

/sbin/grub (运行grub)

grub> install (hd0,3)/boot/grub/stage1 d (hd0,3) (hd0,3)/boot/grub/stage2 p (hd0,3)/boot/grub/menu.conf

(注意,上面"grub>"为grub的提示符,其后内容写在一行上.)

4. 取得grub的boot信息

过程如下:

dd if=/dev/hda4 of=/grub.lnx bs=512 count=1

这样得到grub的引导信息,只要用NT Loader来加载它就行了.

5. 将上面得到的grub.lnx弄到Windows的C盘根目录下

可以先把grub.lnx弄得软盘上,然后启动windows,拷贝到C:; 情况允许也可以直接在Linux下拷贝到C:了. 我的C盘(即设备/dev/hda1)为FAT32, 可以直接从Linux下弄过去了. 如下:

mount -t vfat /dev/hda1 /mnt/c

cp /grub.lnx /mnt/c

umount /mnt/c

6. 修改NT Loader的boot.ini

在其中加入一行: C:\grub.lnx=“Redhat Linux - GRUB”

加入后boot.ini的内容如下:

[boot loader]

timeout=15

default=C:\boot.lnx

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=“Microsoft Windows XP Professional” /fastdetect

[VGA mode]" /basevideo /sos

C:\grub.lnx=“Redhat Linux - GRUB”

OK. 可以用NT Loader加载Linux了, 其实上面过程基本上和用NT Loader加载LILO一样.其基本思想就是用NT Loader来加载LILO或grub的引导区(grub.lnx), 其中的关键就是LILO或grub的引导区的获取.

(六)活用grub的交互功能

grub具有强大的交互功能.学会了将会使你受益非浅!

1.grub没有显示菜单怎么办?

当开机后进入grub界面但没了菜单,只剩下一个grub>提示符,怎么启动呢?别急,看下面:

grub>cat (hd0,6)/boot/grub/grub.conf (为了看参数)

grub>root (hd0,6)

grub>kernel (hd0,6)/vmlinuz-2.4.18-14 ro root=LABEL=/

grub>initrd (hd0,6)/initrd-2.4.18-14.img

grub>boot

OK!启动了吧!以上有些数字要根据你的实际情况更改.

以上这个方法也可以用于测试新编译的内核.

2.进入单用户模式.

有时不小心把root用户密码忘了,只能进入单用户模式来重新设置root密码.方法如下:

开机进入grub界面,按C进入命令行模式,然后按照上面的方法进行,只是在第

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值