作者:dbtan |【转载时请以超链接形式标明文章出处作者信息】


排错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, <miquels@drinkel.nl.mugnet.org>

# 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 (<none>) 检验间隔

二、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 命令,检测网线是否插好。