1. 开机后,从本地硬盘启动,但一直显示booting from local,说明super block的前446个字节有问题
2. reboot进rescue
3. 在rescue模式加载的最后出现一个错误,判断本地系统的部分分区可能没mount成功。
An error occurred trying to mount some or all of your system. Some of it may be mounted under /mnt/sysimage.
4. 备份的super block的前446字节
dd if=/dev/sda of=/mnt/sysimage/root/446bak count=1 bs=446
5. 重新生成446字节
#grub
grub>root (hd0,0)
grub>setup (hd0)
grub>quit
6. reboot,引导成功,并进入grub界面,grub也有内容,但跳国grub后出现
kernel /boot/vmlinuz-2.6.9-22.EL ro root=LABEL=/
Erroe 15: File not found
说明系统加载/boot下面的kernel时找不到,判断可能是fstab文件有问题;还注意到一个问题,从界面上显示判断,是加载kernel时找不到vmlinuz文件,而这个路径/boot/和版本号2.6.9-22.EL跟我们平常不符,说明grub可能也有问题
7. reboot进rescue
8. 首先查看一下本地机器的磁盘分区情况
fdisk -l
发现有sda1、sda2、sda3、sda6四个分区可用,再查看挂载情况
mount
发现sda1、sda2、sda3、sda6四个分区都没挂载
9. 先挂载,但我们不知道这四个分区各是什么分区,有两种方法:一、将每个分区分别mount,查看里面的文件,从来判断各是哪个分区;二、用e2label /dev/sda1等分别查看。采用第二种方法
e2label /dev/sda1 # /boot
e2label /dev/sda2 # /
e2label /dev/sda3 # /usr
e2label /dev/sda6 # /home
10.分别将上述四个分区挂载到chroot环境/mnt/sysimage下
mount /dev/sda2 /mnt/sysimage/ #注意先挂/分区
mount /dev/sda1 /mnt/sysimage/boot/
mount /dev/sda3 /mnt/sysimage/usr/
mount /dev/sda6 /mnt/sysimage/home/
11.查看fstab文件是否正确
vi /mnt/sysimage/etc/fstab
发现有问题,全删重写
/dev/sda1 /boot ext3 defaults 0 0
/dev/sda2 / ext3 defaults 0 0
/dev/sda3 /usr ext3 defaults 0 0
/dev/sda6 /home ext3 defaults 0 0
12.查看一下,grub.conf文件有没有问题
vi /mnt/sysimage/boot/grub/grub.conf
发现的确有问题,修改一下(修改过程中不知道vmlinuz版本号,可以Alt+F2另开一个终端查看)
default=0
timeout=5
title rhel
root (hd0,0)
kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/sda2
initrd /initrd-2.6.18-128.el5.img
13.reboot,系统启动过程中有fail
Remounting root filesystem in read-write mode: mount: remount,rw: No such file or directory
/:
***(列出了与ls -l /一样的列表)
***
判断mount可能被ls -l所替换了(alias mount=ls -l)
14.此次启动暂停了,但并不是因为mount命令有问题而暂停的,可以看到最下面显示
INIT: Entering runlevel: 9
INIT: no more processes left in this level
runlevel只有0-6,这里却显示9,说明inittab文件有问题
15.reboot进rescue
16.重装mount命令
rpm -ivh util-linux-2.13-0.52.el5.i386.rpm --root=/mnt/sysimage
提示有很多文件都是从这个rpm包安装而来的,即已安装的意思,则强制安装
rpm -ivh util-linux-2.13-0.52.el5.i386.rpm --root=/mnt/sysimage --force
17.查看/mnt/sysimage/etc/inittab文件
id::initdefault:
10:0:wait:/etc/rc.d/rc 0
10:0:wait:/etc/rc.d/rc 1
10:0:wait:/etc/rc.d/rc 6
10:0:wait:/etc/rc.d/rc 6
10:0:wait:/etc/rc.d/rc 6
10:0:wait:/etc/rc.d/rc 6
10:0:wait:/etc/rc.d/rc 6
很明显,runlevel没写,改成3。而且对应的运行脚本目录也错,都是6了,修改
18.reboot
19.启动过程一开始很顺利,但启动完HAL daemon后有一个runlevel 6(重启)出来了,就开始关闭服务并重启了
Starting HAL daemon: ok
INIT: Switching to runlevel: 6
INIT: Sending processes the TERM signal
说明HAL daemon后面的一个服务有问题
20.reboot进rescue
21.ls -l /mnt/sysimage/etc/rc3.d/
S98haldaemon -> ../init.d/haldaemon
S99local -> ../rc.local
haldaemon后面的是local这个服务,链接纸上../rc.local
22.查看rc.local
vi /mnt/sysimage/etc/rc.local
发现文件内有一个"reboot",删除
23.reboot
24.发现问题依旧,还是和步骤19一样,判断可能rc.local文件每次开机都会被改写,那改写操作肯定是在启动这个服务之前执行的,而之前执行的脚本中除了rc3.d/目录下的脚本,还有一个更先执行的脚本是rc.sysinit,可能是这个文件的问题
25.reboot进rescue
26.vi /mnt/sysimage/etc/rc.sysinit
查找/rc.local,发现最下面有一句echo
echo "reboot" >> /etc/rc.d/rc.local
删除
27.reboot
28.成功进入login界面,但发现密码不对
29.reboot进单用户模式
kernel /vml+[tab] ro root=/dev/sda2 1
30.成功进入单用户模式,修改root密码
#passwd root
#init 3
31.root登录后启动图形界面
#startx
报错:
(EE) Problem parsing the config file
(EE) Error parsing the config file
32.删除配置文件
rm /etc/X11/xorg.conf
33.运行setup--X configuration,设个分辨率,ok确定(此步操作会重新生成/etc/X11/xorg.conf文件)
34.startx成功启动图形界面