一、如果grub的配置文件丢失怎么办?
1、我们可以在一台虚拟机上 开启虚拟机 切换目录到 # cd  /boot/grub  
2、#ls 看grub目录下有哪些文件可以看到有配置文件grub.conf
3、# mv grub.conf  /tmp  人为的把配置文件弄丢
4、重启虚拟机  会看到出现grub的界面然后做
     1)、grub> help   会出现一些命令 然后用find
     2)、grub> find (hd0,0)/ 双击tab键    会出现我们想要的东西,比如内核型号、initrd等
     3)、grub> root (hd0,0)
     4)、grub> kernel /vmlinuz-2.6.18-164.el5 
     5)、grub> initrd /initrd-2.6.18-164.el5.img
     6)、grub> boot  启动
要是不想每次打开虚拟机都做这几步在进入后 # cd /boot/grub   切换到grub目录 然后创建配置文件grub.conf
     # vim grub.conf
        default=0
        timeout=5
     tile My linux
          root (hd0,0)
          kernel /vmlinuz-2.6.18-164.el5  ro root=/dev/sda
          initrd /initrd-2.6.18-164.el5
    保存退出
二、如和给grub设置密码
1、# cd /boot/groub  切换到grub目录
2、# vim grub.conf   打开配置文件
    default=0
        timeout=5
        password --md5
     tile My linux
          root (hd0,0)
          kernel /vmlinuz-2.6.18-164.el5  ro root=/dev/sda
          initrd /initrd-2.6.18-164.el5
  
3、给密码加密
# grub-md5-crypt  给密码加密   会生成一串乱码
Password:         输入要加密的密码
Retype password:     再次输入密码
$1$f/RqW0$ldzvOE/xuZVhW96ck4Uh3 生成的加密乱码  将这一串乱码粘贴到配置文件中
4、将加密的密码写入配置文件
# vim grub.conf   打开配置文件
    default=0
        timeout=5
        password --md5 $1$f/RqW0$ldzvOE/xuZVhW96ck4Uh3
     tile My linux
          root (hd0,0)
          kernel /vmlinuz-2.6.18-164.el5  ro root=/dev/sda
          initrd /initrd-2.6.18-164.el5
    :wq   保存退出
完成后 重启虚拟机 # init 6
这时出现的grub编辑界面时和没有加密时的编辑界面略有不同,此时会有一个p选项即按p键输入密码后才能编辑
三、制作小linux
在安装好grub的基础上,用同一块硬盘只要添加上内核和一些基本的目录
1、# cd /mnt/boot  切换到/mnt/boot/
2、  #cp /boot/vmlinuz-2.6.18-164.el5 /mnt/boot/vmlinuz   把boot目录下的内核拷贝到/mnt/boot/下
3、#mkdir /tmp/linux 在tmp下创建目录
4、# cd   /tmp/linux
5、# vim init  打开init文件找到mkrootdev -t ext3 -o defaults,ro /dev/vol0/root改为mkrootdev -t ext3 -o defaults,ro /dev/sda2
6、创建第二个分区 # echo '
                  > n
                  >p
                  >2
                  >
                  >+512M
                  >w ' | fdisk /dev/sdb &> /dev/null
7、格式化sdb2 # mkfs -t ext3 /dev/sdb2
             # partprobe /dev/sdb2
8、# mkdir /mnt/sysroot
   # mount /dev/sdb2 /mnt/sysroot 挂载sdb2到 /mnt/sysroot
9、ls /mnt/sysroot  看一下里面有什么文件
10、cd /mnt/sysroot  切换目录到/mnt/sysroot
11、mkdir sbin   在当前目录下创建目录sbin
12、 cp /sbin/init sbin/  把sbin下的init拷贝到当前sbin目录下
13、mkdir etc  创建目录etc
14、 vim etc/inittab  写文件
    id:3:initdefault:
    si:sysinit:etc/rc.d/rc.sysinit
    :wq 保存退出
15、# mkdir etc/rc.d
    # vim etc/rc.d/rc.sysinit
      #! /bin/bash
      #
        echo -e "\tWelcome to linux"
        /bin/bash
      :wq
16、 #mkdir bin
     # cp /bin/bash bin/
     # ls bin/ 可以确认一下里面有没有bash
17、  # chmod +x etc/rc.d/rc.sysinit 给这个文件执行权限
18、测试  #cd
          # chroot /mnt/sysroot   测试是否可以运行 这里显然是不能的,因为sbin 和 bin 都有依赖的库文件
19、 # ldd /bin/bash  查看依赖那些库文件 然后将这些库文件拷贝到/mnt/sysroot/bin下
20、 # cd /mnt/sysroot 再次切换
21、# mkdir lib  创建存放库文件的目录
    # cp /lib/libtermcap.so.2  lib/
    # cp /lib/libdl.so.2  lib/
    # cp /lib/libc.so.6 lib/
    # cp /lib/ld-linux.so.2 lib/
拷贝这些库文件到lib目录下
22、# ldd /sbin/init   验证init是否需要库文件
   # cp /lib/libsepol.so.1 lib/
   # cp /lib/libselinux.so.1 lib/
也许你会问这里的库文件怎么这么少,那是因为之前21步时已经拷贝过的这里只需拷贝之前没有的
23、# cd  切换回来
   # chroot  /mnt/sysroot  这时就可以了
   # exit 退出
24、其实进行到这里还缺很多目录,接下来创建这些目录
  # cd /mnt/sysroot
  # mkdir var home proc sys dev srv mnt media tmp usr opt misc
  # ls
25、# cd /tmp/linux/
    # ls  看这个目录下有什么文件若有initrd-2.6.18-164.el5.img 就 # rm initrd-2.6.18-164.el5.img
    # ls
    #vim init  这个在之前第五步时已经改过这里就不需要改了
26、 # find . | cpio -o -H newc --quiet | gzip -9 > /mnt/boot/initrd.gz  把当前目录封装一下
   # ls
27、# cd /mnt/sysroot
    # ls
    # tree .   看一下目录结构是否缺少什么
28、#cd /mnt/boot/
   # cd grub/   grub还缺少配置文件所以创建一个
   # ls
   # vim grub.conf
     default=0
     timeout=5
     tile linux
        root(hd0,0)
        kernel/vmlinuz ro root=/dev/sda2
        initrd /initrd.gz
      :wq
   # sync   同步到磁盘
29、把宿主机挂起,再启动只装有grub的那台虚拟机