grub分为两段,第一段446个字节在mbr上,第二段在/boot/grub/目录下由grub.conf支配执行的


开机启动的时候如果你grub的配置文件丢失了
grub的修复过程
grub>root (hd0,0)           //此时如果你不知道在那里可以使用find来查找配置文件   find (hd0,0)/vmlinuz-   (括号里面的数字改变直到找到为止)
grub>kernel /vmlinuz-2.6.18****** 1   //后面的1表示1级别,可以不输入级别。
grub>initrd /initrd-2.6.18********   //跟内核在一起与内核版本号相同。
grub>boot                //启动


修复grub
修改开机时的画面和开机选项都在
/boot/grub/grub.conf
其中/etc/grub.conf文件是指向/boot/grub/grub.conf的链接


系统开机启动画面位于/boot/grub/下的
splash.xpm.gz
可以把它替换成你想要的照片的。但是格式和大小等必须正确,先生成xpm格式的图片再压缩
yum install gimp              //装载图片修改工具,分辨率是640*480的14位颜色的图片必须要使用xpm格式,用gzip压缩
gzip -9 1.xpm                //压缩图片
cp 1.xpm.gz /boot/grub/           //拷贝到/boot/grub/目录下
然后把grup.conf里面的图片的名字改成你的图片的名字(后缀一定为.xpm.gz)
这时候不能立即重启,此时数据位于内存,重启立即就丢失了,这时候要使用sync来写入硬盘


vim /etc/grub.conf  //grub的配置文件,这是我的机器上的。如果此文件丢了我们可以重建
default=0                   #表示如果你不选择运行级别默认就是第0个启动,也就是下面第一个title定义的启动级别
timeout=5                   #开机等待你选择运行级别时间
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz    #定义开机图片的。可以把图片替换掉
hiddenmenu                  #隐藏信息
title Red Hat Enterprise Linux Server (2.6.18-164.el5)              #系统版本
        root (hd0,0)                               #第一块硬盘的第一分区
        kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet     #内核文件ro表示只读
        initrd /initrd-2.6.18-164.el5.img                     #模拟出linux系统,来提供开机驱动程序
title Install Red Hat Enterprise Linux 5
        root (hd0,0)
        kernel /vmlinuz-5 ks=http://192.168.0.254/workstation.cfg ksdevice=eth0 noipv6
        initrd /initrd-5
        password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.              #设置密码,以md5格式加密
其中rhgb是redhat系统自带的红色边框。quiet表示开机的时候显示的那些文字信息,使用quiet后显示信息将隐藏(出现硬盘信息之前的信息)


title文件中系统的版本可以使用以下命令来查看
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)     //我的当前系统

uname -r
2.6.18-164.el5                        //版本号

 

自己手动建立grub.conf配置文件
ls  /boot/     //查看vmlinuz文件名
df -lh       //查看根分区的位置

vim /boot/grub/grub.conf
default=0
timeout=5                             //表示开机等待5秒
title My Redhat Enterprise System                 //你系统的名字
   root (hd0,0)
   kernel /vmlinuz-******** ro root=/dev/vol0/root quiet
   initrd /initrd-*********.img                //这里initrd的版本与内核版本号完全一致,否则不能启动  


使用单用户模式找回管理员密码
在开机启动时等待你选择运行级别的时候输入
e
找到kernel这一行再点击e
在显示的信息后面加入s或者1或者single都表示1级别 回车
此时返回到你的内核信息上点击  b   启动

此时你更改密码,并使用init来切换你想要进入的级别
passwd root
输入密码
init 5  //进入图形化界面模式


给grub添加密码,不能随便让人登录你的1模式,否则管理员密码形同虚设
vim /boot/grub/grub.conf
里面加入密码123456
password 123456   //此时如果你把passwd放在title外面表示全局的,放在title里面表示局部,局部在使用内核的时候才输入密码

此处的123456很不安全,登录后谁都可以看到,此时把此处加密保存可以使用grub-md5-crypt这个配置文件
cd /boot/grub
grub-md5-crypt
输入你的密码
再输入一次
出现的乱码复制并粘贴到grub.conf里面的passwd后面就可以了、形如:
passwd --md5 $1$EFl7E0$wQ1HU5SmIo29kbiajuOtC0

 

如果你无意中使用了
dd if=/dev/zero of=/dev/sda bs=446 count=1       销毁boot loader
重启肯定连系统都进不了了。此时你可以使用grub命令来恢复

第一种重装方法
cd /boot/grub/
#grub
grub>root (hd0,0)
grub>setup (hd0)    //重装grub
grub>quit
sync

第二种重装grub的方式
grub-install --root-directory=/ /dev/sda
        指定根目录    安装位置

第三中重装方式
加入你的系统分区中grub文件被你弄坏了,又进入不了系统了。此时你可以把硬盘挂载到另一台机器上来给他重装grub
你挂载的硬盘此时为sdb1,你给它建立分区,并挂载(如建立100M ext3并格式化)
mkdir /mnt/boot   //一定要创建在/mnt下,否则跟你当前系统的重复了。后面的boot可以改
mount /dev/sdb1 /mnt/boot
然后给你的sdb安装grub.此时安装的位置不能写/mnt/boot要指定为boot的父目录。此时就完成给另外一块硬盘安装grub了
grub-install --root-directory=/mnt /dev/sdb