RHCE考试Troubleshooting中,linux 系统不能开机或可能出现的错误情况
2009-03-13 02:01
405 查看
| ||
RHCE考试Troubleshooting中,linux 系统不能开机或可能出现的错误情况 ############################################### # # ############################################### # # # # # 作者:羊(flaunt@rest7.com) # # # 主页:http://blueflybird.rest7.com # # # 欢迎转载,但请保留此段 # # # ## ############################################### 下周一(2004年4月19日)就要到上海参加RHCE考试,考完后基本上不会再碰这些无 关紧要的问题。实际上,只要有充足的时间,任何一个对linux有充分兴趣的大虾小虾们 都能想办法在不重装系统的前提下,上google查资料修复这些问题。但RHCE考试中时间 比较紧张,而一个系统管理员也不可能把所有千奇百怪的问题都遇到,所以了解一些常见 trouble还是有好处的。 RHCE不代表甚麽,虽然相对于其他许多考试RHCE要难一些,通过后也不会成为“理论 家”,不知如何实战,尤其在国内“假”文凭满天飞的情况下(“假”不是指制假文凭假证 书那种假,现在非常多的非常正规的教育部门的文凭,实际上与假的没甚麽区别),RHCE 比较容易受人尊敬(同时向CCIE敬礼),但RHCE考得毕竟比较浅,象许多坛子里的RHCE 们说的,“RHCE的服务设置贵在广而不是精”,“RHCE仅仅是开始”,拿不拿这个证就看 它对你有没有用了。anyway,在准备RHCE的过程中,你会发现自己以前忽略的一些基础 知识,对于考RHCE值不值这个问题总是仁者见仁,智者见智,就懒得想那么多了。 (假设系统中至少已经安装有grub或lilo程序,按错误可能发生的顺序,包括root帐号不 能正常登录的情况,写这个错误情况最初的目的是让自己有个大的概念,希望没有误人子 弟) ####################### # # ####################### # # # # # 一、MBR错误。 # # # ## ####################### 由于意外原因,主引导记录被破坏,新手安装多操作时系统常发生先装linux再装windows 类系统后只能引导win的情况。这种情况下,grub.conf或lilo.conf正常,只需进入rescue 模式重安装一次MBR即可。 情况描述:只能进入win类系统或开机后BIOS自检通过后黑屏无任何提示。 ####################### # # ####################### # # # # # 二(1)、引导程序错误# # # ## ####################### grub.conf或lilo.conf文件错误。修改了grub.conf或lilo.conf后,或者硬盘物理位置和分区 发生变化后造成不能正常启动。进入rescue模式,修改grub.conf或lilo.conf即可。注意修 改了lilo.conf后需执行lilo命令(可加-v 参数查看详细信息) 情况描述: (一)grub的一般情况 1、如果没有找到内核(vmlinuz-x.x.x文件), 出现File not found Press any key to continue.... 说明root(hdx,x)错误,或内核文件名不对 2、如果找到内核后,运行一会, 出现kernel Panic:Not init Found, 一般来说是没有找到根分区(/分区)即root=/dev/xxx不对 3、如果找到内核后,运行一会, 出现Kernel panic: VFS: Unable to mount root fs on ..., 一般来说可能忘了加上initrd /initrd-2.4.21-4.EL.img(大多情况发生在使用scsi硬盘) 4、总的来说grub.conf里面必须存在的就几行。 #more grub.conf title linux root (hd0,1) #/boot分区所在位置 kernel /vmlinuz-2.4.21-4.EL ro root=/dev/TEST/root #内核和根分区(/分区)位置 (根分区可能是LVM和raid,而不仅是hdx和sdx) initrd /initrd-2.4.21-4.EL.img 平时练习grub.conf菜单文件的最好办法是把这个文件删掉,每次重启时自己使用grub的 交互命令行就快就会对文件里面的内容熟悉。 (二)lilo的一般情况 lilo中没有找到内核文件或ramdisk文件(initrd-2.4.xx.x.ximg)出现的提示与grub中相同, 但如果是分区发生变化就会出现众所周知的L、LI、010101等错误。 lilo.conf中必须出现的几行。 image=/boot/vmlinuz-2.4.21-4.EL #内核所在位置 label=linux #等于grub中的title root=/dev/sdc1 #根分区所在位置 initrd=/boot/initrd-2.4.21-4.EL.img 注意如果lilo中不加boot=/dev/sdx,则运行lilo程序时,需加参数指明 lilo -b /dev/sdx (三)综述 1、grub.conf文件设置错误可以使用交互命令进入系统,而lilo.conf文件设置错误又没有 设delay值的话,连sigle模式都无法进入,只能用rescue修复。修改文件后发正常的重启 信号就行了,不用执行sync命令。 2、lilo.conf文件中基本上不管有没有/boot分区,而grub就要区别有无/boot分区,grub.conf 中root(hdx,x),如果有/boot分区,这个root就是指/boot分区,如果/boot只是作为一个目 录在根分区中(/分区),这个root(hdx,x)就是/分区的所在位置。 3、那麽:lilo.conf文件中的内核和根分区(/分区)的位置能不能象grub.conf这样写呢: lilo: image=/boot/vmlinuz-2.4.21-4.EL root=/dev/sdc1 grub: kernel /vmlinuz-2.4.21-4.EL ro root=/dev/TEST/root 结果lilo是无法找到/分区。 4、记住lilo.conf和grub.conf都有4行必须写,不同之处在于grub.conf中多了一行指明/boot 目录(注意不是/boot分区,而仅仅是/boot目录)所在分区的位置,而lilo.conf中把kernel 和根分区(/分区)拆行为两行。 5、我估计grub和lilo是troubleshooting中必考项目 ####################### # # ####################### # # # # # 二(2)、/initrd目录 # # # ## ####################### 这个该死的问题搞了我一整个下午,说来话长,写在最后(估计考试中不大可能出这种题, 要不就太缺德了)。 ####################### # # ####################### # # # # # 三、/etc/inittab # # # ## ####################### ***(/etc/initab还可能在后面发生错误)***** (一)如果出现INIT: No inittab file found Enter runlevel: 一般来说就是inittab文件丢失或者有错误。 (二)如果启动基本正常,到了 INIT:Entering runlevel: 3 (或者 5) 后,就开始出现一系列错误,很有可能/etc/inittab文件中 si::sysinit:/etc/rc.d/rc.sysinit 这一行发生错误 由于系统许多模块还没有初始化。 只能进入rescue模式,如果对inittab文件不很熟悉的话,最好把initscripts的rpm包重装 一次。默认的/etc/inittab文件应该能正常启动。 ####################### # # ####################### # # # # # 四、/etc/fstab # # # ## ####################### /etc/fstab文件错误(比/etc/inittab文件后出错) (一)出现WARNING:coundn't open /etc/fstab: No such file or directory /etc/fstab文件丢失 /etc/fstab文件不属于任何rpm包,利用fdisk和e2label命令查看根分区(/分区)、/boot、/home 、 /usr、/var分区(如果有这几个分区),然后编辑/etc/fstab文件,注意fstab文件的格式,如 果记不住,可以查看帮助:如果未mount /分区,则先装载,如果/usr分区单列,装载/usr 分区。如果在rescue模式下则先chroot。 查找fstab的帮助文件: 1、直接man fstab 2、locate fstab 你会发现有个叫fstab.5.gz的文件,一般在/usr/share/man/man5/fstab.5.gz 可以 man /usr/share/man/man5/fstab.5.gz 或者 zless /usr/share/man/man5/fstab.5.gz 3、rpm -ql mount | grep fstab 也能找到fstab的帮助文件 4、find / -iname "*fstab*" 最笨的办法 如果不是在rescue模式,修改fstab文件时出来Read-only file system咋办?重新装载成读 写模式 mount -o remount,rw /dev/sdax / (二)mount 文件丢失或被替换 mount 文件错误会出现/proc文件相关错误,红字显示很醒目, 此时比较麻烦,需进入rescue模式而不是进入输入root口令进行修改,因为根分区现在被 mount成只读(ro)模式,你没有mount命令来把根分区mount 成读写的(rw)。 (三)文件系统错误 1、使用fsck进行修复,郁闷的是无论出现什么提示只能选y,要不系统依然有问题。 2、可能文件系统的superblock有问题,把备份的恢复即可。(考试中这种情况几乎不可能) fsck.ext3 -b (8192*n)+1 (四)raid或LVM错误 使用raid和lvm的知识进行修复,如果raid盘或lvm盘中没有数据,则可把/etc/fstab中提 到的/dev/mdx和/dev/xxxxxx/xxx相关的注释掉。如何修复raid或lvm上的数据估计Redhat 是不会考的。 我在做实验时,发现RedHat Enterprise AS3的/etc/rc.sysinit有个小bug 如果我在做raid的基础上把raid做到LVM里面去,重启系统时,会报告出错。 例如: 1、编辑/etc/raidtab #设一个任意级别的 md0 2、mkraid /dev/md0 #假设一切都正常,该raid则可使用了 3、pvcreate /dev/md0 #建立LVM的pv 4(方法一)、vgextend VGname /dev/md0 #把md0加到现有vg中 4(方法二)、vgcreate VGname /dev/md0 /dev/sdax #新建一个vg 5、lvcreate -L 5G -n newlv VGname #在VGname这个vg中建立一个5G 的名字newlv的lv 6、mkfs.ext3 /dev/VGname/newlv #格式化成ext3文件系统 7、把/dev/VGname/newlv加到/etc/fstab中 8、reboot 你会发现系统出错。原来/etc/rc.sysinit在启动raid时,是根据/etc/fstab这个文件来的,如 果/etc/fstab中没有以/dev/mdx开头行,则不启动/etc/raidtab中的md0、md1 .....,重启系统, 你会发现启动raid时有(skiped)的东东。如果这个raid是属于LVM中的一个pv,所以在 启动LVM的时候,也跟着出错。 临时办法倒是有:编辑/etc/rc.sysinit,因为在rc.sysinit文件中确定/etc/fstab中是否有raid?br>? 用的grep命令: INFSTAB=`LC_ALL=C grep -c "^$i" /etc/fstab` 其中INFSTAB是确定命令是否成功的变量,$i是/etc/raidtab 文件中的md0或md1...etc, 把$i前面的^去掉即可。 (五)quota设置错误 大不了把/etc/fstab中的usrquota和grpquota全部关闭。 FIXME:是否还有其他发生错误的可能? ####################### # # ####################### # # # # # 五、/etc/inittab # # # ## ####################### ***/etc/inittab文件错误*** 系统反复重启或启动后就关机 设置了错误的runlevel,如0或6 ####################### # # ####################### # # # # # 六、其他daemon错误 # # # ## ####################### 情况比较复杂,根据显示出错误信息决定如何修复。 ####################### # # ####################### # # # # # 七、/etc/inittab # # # ## ####################### ***如果服务基本已经启动完毕却出现*** INIT: no more processes left in this runlevel 可能是没有程序守护 tty1或tty2…………等,即/etc/inittab文件中少了 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 等等 出现这种情况,如果不大明白//etc/inittab的格式,强制重装initscripts的rpm包即可 ####################### # # ####################### # # # # # 八、xwindow错误 # # # ## ####################### 一般来说与/etc/X11/XF86config文件有关,考试中不可能涉及硬盘问题。 运行redhat-config-xfree86一般都能解决,可能发生的问题较多,普通点的就是刷新率,显 示模式如800x600等。 ####################### # # ####################### # # # # # 九、root不能正常登录# # # ## ####################### ********密码及PAM相关******* (一)出现Login incorrect 多半与密码相关 1、的确是密码错误 单用户模式修改 2、root用户被锁 单用户模式 usermod -U root 即可 3、没有root用户,即没有uid为0的用户 4、/etc/securetty文件中没有tty*(*表示1,2,3,4等) (二)输入用户名和密码后,只见屏幕一闪,,那多半与authconfig、pam有关了 1、三轮车夫同志遇到的。authconfig时,选了ldap认证,后来ldap服务器的地址变了后, 就无法登录。 解决办法:运行 authconfig取消该选项。 2、/etc/pam.d/system-auth中添加了 account required /lib/security/$ISA/pam_access.so 或其他类似的pam模式限制,如pam_listfile.so、pam_time.so等。 解决办法同上,运行authconfig后会自动删掉。 3、/etc/pam.d/login中添加了 account required /lib/security/$ISA/pam_access.so 或其他类似的pam模式限制,如pam_listfile.so、pam_time.so等。 解决办法:只有手工去查看login文件,运行authconfig后不会自动取消。 4、/etc/pam.d/ 目录中的system-auth 或login中的模块文件名有误。 模块文件名错误同样会使系统无法登录。 建议发生无法登录的情况时,到单用户或rescue模式,首先查看/var/log/secure 和 message文件。 **************************************************************** **********************关于第二点的说明************************** **************************************************************** ####################### # # ####################### # # # # # 二(2)、/initrd目录 # # # ## ####################### 该问题困扰了整个下午。从头说起: 中午在linuxsir.org的论坛上发现一位叫Proarfei的发了个贴子,内容如下: ---------------------------发贴内容-------------------------------- RHAS3-请求帮助! 安装RHAS3时很顺利,由于是双系统,而且我希望是ntldr做主启动程序,所以我选择了 GRUB安装位置在引导分区的第一扇区,但很奇怪的是,AS在安装完成处没有提示创建 引导盘,在RH9中是有这一步的,我在查询AS3的安装说明中也没有这步骤,但在说明 GRUB配置时说可以创建引导在别的盘上,我不是很清楚AS3是如何创建引导程序在软盘 上的,请各位高手指点一二。 ---------------------------发帖结束-------------------------------- AS3中的确没有创建引导盘这一步,当时我不明白Proarfei究竟是想用软盘引导还是想在 ntldr中引导linux,于是回贴如下: ---------------------------回帖内容-------------------------------- 如果想用软盘启动linux与grub无关。 制作启动盘 mkbootdisk `uname -r` 如果想在nt启动菜单选择启动 ntldr是由配置文件boot.ini提供工作参数的,该文件位于Windows XP系统分区的根目录下, 具有隐藏、系统、只读属性。我们只需要将Red Hat Linux的引导记录作为一个文件备份到 C盘的根目录下,并相应地在boot.ini文件里添加一个项目来指向它们,就可以实现双重系 统了。 参见: target="_blank">http://tech.ccidnet.com/pub/article/c738_a79178_p1.html ----------------------------回帖结束------------------------------ 由于平时从来没有用过mkbookdisk做过系统盘,不知是否有效,于是自己顺便做个实验, 以免乱说误人子弟。谁知道偶在AS3上用这个命令做盘时,显示: [root@blueflybird root]# mkbootdisk --device /dev/fd0 `uname -r` Insert a disk in /dev/fd0. Any information on the disk will be lost. Press <Enter> to continue or ^C to abort: cp: writing `/tmp/mkbootdisk.MPg6Cy/initrd.img': No space left on device cat: write error: No space left on device cat: write error: No space left on device 20+0 records in 20+0 records out 靠,空间不足,而且还不说到底是哪个盘的空间不足,整得我连忙用df查看。 结果毕竟还是做好了启动盘(只是不能使用该盘正常启动) 而此时偶又想起,如果Proarfei同志只是要引导linux,把lilo或grub安装到软盘上也行啊, 根本不用mkbookdisk做系统盘。等到论坛上回完贴,心里很不爽,为什么偶用mkbookdisk 做的盘就不能启动呢? 突然偶又想起(偶已经想起了很多次什么东东了),是不是偶用的scsi硬盘造成ramdisk太 大的原因哦,管他三七二十二,还是二十三,去找个IDE盘接上,把scsi中的文件复制到 ide中 cp -a /bin /sbin /var /lib /etc /boot /dev /usr /IDE/ 由于根分区中的/root区内编译2.6的内核也占了1G,所以/root /tmp /proc 几个区就自己建 了,swap,暂时不用吧 象/mnt /home /misc 目前对我来说毫无价值,懒得管他,这样拷了好久(幸亏还有笔记本 可以用)。 终于拷完,把grub也装上,卸下scsi盘,再把IDE放到第一个位置,reboot 从SCSI开始出错。 ---------------------------屏幕结束-------------------------------- /lib/BusLogic.o:init_module: Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. you may find more information in syslog or the output from dmesg ERROR:/bin/insmod exited abnormally! . . 调ext3.o module正常 . . Mounting root filesystem 正常 . . pivortroot:pivot_root(/sysroot,/sysroot/initrd)failed: 2 umount /initrd/proc failed: 2 Freeing unused kernel memory: 164k freed Kernel panic: No init found. Try passing init= option to kernel ---------------------------显示结束-------------------------------- 以后的事让我越来越不爽,甚至变得气急败坏,许许多多的事反反复复做了许多遍。 一、拆下IDE,装上SCSI 二、拆下SCSI,装上IDE 三、看/var/log/dmesg,反复拆,反复看,里面屁都没有一个最新的 四、mkinitrd /boot/initrd.2.4.x.x.xEl `uname -r` 五、加参数--omit-scsi-modules 六、加参数--omit-raid-modules 七、加参数--omit-lvm-modules 八、试用各种组合方式 九、重新回想系统启动的顺序 十、IDE和SCSI整在一起,考文件,拷了删,再删了拷 十一、差点就准备用dd 十二、发狂中 十三、看电视、胃痛 十四、启动时向内核加参数init=/bin/sh、加1。 十五、用带scsi-modules 的ramdisk和不带scsi-modules 的ramdisk 十六、明明知道本来许多无关的情况,都尽量试试关掉再打开。 十七、再重新回想系统启动的顺序 怎么会想得到与/initrd 这个目录有关系?????正绝望中看到 umount /initrd/proc failed: 2 心想总不可能与/initrd有关系吧,管他妈的,试了再说。 好了,进入rescue建立/initrd目录后,他妈的一切正常了。 然后制作了一个不带scsi、raid、lvm的ramdisk,initrd.2.4..x.x.x.img的尺寸小了一大半, 重启也正常,再用 [root@blueflybird root]# mkbootdisk `uname -r` 一切非常正常,也可以正常用该软盘启动。说明ramdisk调用的模块多了后可能无法建系 统盘。 现在已经22:51,我在发狂中吃了晚饭。 |
相关文章推荐
- Linux 系统开机可能出现的错误与分析
- Linux 系统开机可能出现的错误和分析
- VMware安装Linux,出现错误-未找到要在其中创建新文件系统的有效设备(转)
- 如果flash 容易出现ECC 校验错误导致wince 系统不启动,有可能是什么问题呢?
- linux开机出现一下错误Give root password for maintenance (or type Control-D to continue):
- 小马激活工具激活系统后,电脑不能启动,出现错误 a disk read error occurred
- 连接字符串中Min Pool Size的理解是错误,超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- mysql出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- [FAQ14088][EXT_BUCK] EXT BUCK配置错误可导致系统不能开机
- java项目部署到linux系统上出现java.lang.OutOfMemoryError: PermGen space错误
- 虚拟机上LINUX开机输入密码后回车,闪下黑屏,又回到登录界面了,不能进系统
- 打开IE浏览网页或电脑刚开机时,系统提示“出现了运行时间错误,是否要进行调试”
- 系统在一次更新后开机出现您可能是软件盗版的受害者解决办法
- 一个windows10系统中linux子系统的编译出现“undefine reference to”错误的解决方法
- VMware安装Linux,出现错误-未找到要在其中创建新文件系统
- windows系统正常运行转移到linux系统时出现错误
- 装双系统linux window出现错误
- CentOS开机时出现GRUB引导错误进入不了系统
- Linux(Centos)Apache安装配置过程中可能出现的错误
- /etc/fstab文件错误导致Linux系统不能启动故障解决