Suse 宕机解决方法.docx
《Suse 宕机解决方法.docx》由会员分享,可在线阅读,更多相关《Suse 宕机解决方法.docx(55页珍藏版)》请在冰豆网上搜索。
Suse宕机解决方法
SuseLinux宕机解决方法
一、Root密码破解
由于密码保存不当或忘记密码等原因,导致Root密码丢失,需要破解Root密码,以下提供SLES10SP4和SLES11SP1破解方法。
1.Suse10SP4破解root密码
思路:
i.重新启动机器,在出现grub引导界面后,在启动linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现命令行。
ii.稍等片刻出现(none)#:
命令行。
iii.这时输入mount-n/-oremount,rw表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。
iv.这时输入passwd命令就可以重置密码了
v.修改完成后记得用mount-n/-oremount,ro将根文件系统置为原来的状态。
1)进入单用户模式:
确定,进入单用户模式:
2)将根(/)权限设置为“读写”
rw表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码。
3)修改root密码:
passwdroot
连续输入两遍密码后,密码就更改好了。
4)将根(/)的权限改为只读:
mount-n/-oremount,ro
5)重启系统,以新密码进入系统
改好后,重启系统,就可以使用新密码进入系统了。
2.Suse11SP1破解root密码
Suse11SP1和Suse10SP4方法相同,具体如下:
1)进入单用户模式:
2)将根(/)权限设置为,读写,便于修改密码:
mount-n/-oremount,rw
3)修改root用户密码:
passwdroot
输入两遍密码后,root用户的密码就被改了。
4)将根(/)权限,设置为只读。
mount-n/-oremount,ro
5)重启系统,就可以使用新密码进入系统了。
二、
Grub问题
1.GRUB选项设置错误
将内核文件的“vmlinuz”打成了“vmlinux”,导致系统无法找到内核的可执行文件。
下图是一个系统管理员不希望看到的控制台信息,“Error15”显示系统无法找到menu.lst中指定的内核。
GRUB引导错误信息
将内核文件的“vmlinuz”打成了“vmlinux”,导致系统无法找到内核的可执行文件。
恢复思路:
进入Grub,修改menu.lst中错误配置,启动系统,修改menu.lst中错误,保存。
我们可以按任意键回到GRUB编辑界面,修改此错误,回车保存后按“b”键即可正常引导,进入系统后修改menu.lst文件中此处错误。
具体恢复步骤如下:
在此界面,按Esc键,进入字符界面
选中“SUSElinuxEnterpriseServer10SP4”,然后按键盘上的“e”
输入“e”编辑此项
通过向左的方向键,移动到vmlinux位置,做如下图更改
Enter确定,返回到字符启动界面
按“b”,启动系统。
启动后即可,正常进入系统。
进入系统后,修改/boot/grub/menu.lst文件,将vmlinux修改为vmlinuz,保存退出。
2.Grub/menu.lst文件中“title”段被误删除
可使用2种方式来恢复:
1)使用“Failsafe”模式,进入系统,在menu.lst文件中添加“title”段内容
当,系统启动后会自动进入“GRUB>”命令行,为排除故障我们可以依次做如下操作:
因为没有软驱,所以此处报错,磁盘读取错误。
选择“Failsafe”模式,进入系统
重启系统,完成修复。
2)可使用光盘启动系统,通过自动修复的方式修复此问题,具体操作步骤在此不再赘述。
3.系统GRUB损坏
类似得我们可以来写零Bootloader来实现GRUB被破坏的结果:
[root@FCoEgrub]#ddif=/dev/zeroof=/dev/sdabs=446count=1
1+0recordsin
1+0recordsout
446bytes(446B)copied,0.0017583s,254kB/s
重启后系统会因找不到GRUB而卡在“BootingfromHardDisk…”
挂载系统安装光盘然后选择进入Rescue模式,然后恢复GRUB:
bash-4.1#chroot/mnt/sysimage
sh-4.1#grub
grub>roothd(0,0)#指定boot分区所在位置
grub>setup(hd0)#安装grub所需文件
grub>quit
图5.恢复GRUB
重启主机后,系统可正常引导。
4.grub被破坏(包括:
menu.lst,stage2...)
linux-02:
~#cd/boot/grub/
Youhavenewmailin/var/mail/root
linux-02:
/boot/grub#ls
device.mapiso9660_stage1_5reiserfs_stage1_5vstafs_stage1_5
e2fs_stage1_5jfs_stage1_5stage1xfs_stage1_5
fat_stage1_5menu.lststage2
ffs_stage1_5minix_stage1_5ufs2_stage1_5
linux-02:
/boot/grub#df-h
FilesystemSizeUsedAvailUse%Mountedon
/dev/sda19.9G3.6G5.8G39%/
udev1007M120K1007M1%/dev
/dev/sda3198M15M173M8%/boot
/dev/hdc3.1G3.1G0100%/media/SUSE-Linux-Enterprise-Server_001
破坏grub
rm-rf/boot/grub/*
linux-02:
/boot/grub#rm-rf/boot/grub/*
重启系统,Suse10SP4报错如下:
解决方法:
使用系统自动修复的方式来修复grub
1)Suse10SP4修复方法
设置系统从光盘启动,放入SUSE的cd1到光驱中
重启系统,开机出现以下画面,表明grub已经修复:
出现登陆界面:
输入系统的用户名和密码即可进入。
进入系统后,查看grub目录中的文件。
进入grub目录,确实是否存在menu.lst文件,该文件决定系统能否正常从硬盘引导。
至此为止,可确认grub已经修复。
2)Suse11SP1修复方法:
思路:
使用光盘进入系统救援模式,在救援模式中,新建menu.lst文件即可。
进行破坏性试验:
删除/boot/grub下的所有内容
linux-sun:
~#ls/boot/grub/
defaultffs_stage1_5minix_stage1_5vstafs_stage1_5
device.mapiso9660_stage1_5reiserfs_stage1_5xfs_stage1_5
device.map.oldjfs_stage1_5stage1
e2fs_stage1_5menu.lststage2
fat_stage1_5menu.lst.oldufs2_stage1_5
linux-sun:
~#rm-rf/boot/grub/*
linux-sun:
~#ls/boot/grub/
重启系统。
启动后,因为找不到grub里面的内容,提示如下:
挂载boot分区,所在的分区,便于进一步操作
重启系统
开机后出现此画面,说明grub已经被恢复出来
可正常进入系统。
3)Suse11SP2Grub破坏后解决方法:
Suse11SP2实现Grub被删除后,恢复的方法:
方法一:
1.使用系统盘的恢复模式里面的,专家工具模式来修复系统。
2.使用专家工具中的“bootloader”来重装bootloader
3.使用救援系统进入系统,挂载起来一起的boot分区,然后修改menu.lst文件。
4.重启系统,完成修复。
方法二:
1.使用系统盘的恢复模式里面的,专家工具模式来修复系统。
2.使用专家工具中的“bootinstalledsystem”来启动系统。
3.使用救援系统进入系统,挂载起来一起的boot分区,然后修改menu.lst文件。
4.重启系统,完成修复。
相比较而言,第二种方法更快。
在RepairTools中选择“BootinstalledSystem”
安装好后,就可以直接进入系统了。
输入用户名和密码进入系统。
进入系统后,先确认boot分区中是否有内核文件:
确认有内核文件后,编辑menu.lst文件
进入/boot/grub中新建menu.lst文件
编辑好后,重启系统,检验系统是否已经修复。
重启后,确认可以正常进入系统,表明Suse11SP1系统已经恢复。
三、MBR被破坏,不包括分区表
1.Suse10SP4
ddif=/etc/passwdof=/dev/sdabs=446count=1
reboot
放入cd1到光驱中
chooserescuesystem
entergrub
root(hd0,0)
setup(hd0)
quit
reboot
破坏系统的MBR:
linux-02:
~#if=/etc/passwdof=/dev/sdabs=446count=1
重启系统:
reboot
MBR被破坏后的情形:
开机后,如下图:
整个界面只有一个光标图标,而且不闪烁。
解决方法:
放入cd1到光驱中,开机选择“救援系统”
进入系统后,找到boot分区所在的分区:
fdisk–l
由上图可知,boot所在分区为/dev/sda3.
进入grub进行系统恢复:
输入grub
输入以下命令:
root(hd0,2)
setup(hd0)
quit
reboot
重启后,界面如下:
可以正常进入系统,表明系统已经恢复。
2.Suse11SP1
和Suse10SP4方法一样即可恢复系统,具体如下:
破坏MBR分区:
linux-sun:
~#ddif=/etc/passwdof=/dev/sdabs=446count=1
1+0recordsin
1+0recordsout
446bytes(446B)copied,4.8907e-05s,9.1MB/s
重启系统,看结果:
开就就一黑屏幕,光标不闪烁。
放CD1到光驱中,启动系统,选择救援模式:
进入系统后,确认boot所在分区:
fdisk–l
由此可知,boot所在分区为/dev/sda2,那么对应的grub中应该表示为:
root(hd0,1)
进入grub恢复MBR:
重启系统,reboot:
开机后,界面如下:
表明MBR已经恢复。
四、硬盘问题
1.硬盘扇区错乱
在启动过程中最容易遇到的问题就是硬盘可能有坏道或扇区错乱(数据损坏)的情况,这种情况多由于异常断电、不正常关机导致。
此种问题发生,在系统启动的时候,屏幕会显示:
Pressrootpasswordorctrl+D:
此时输入root密码系统自动进入单用户模式,
输入“fsck-y/dev/hda6”
(fsck为文件系统检测修复命令,“-y”设定检测到错误自动修复,/dev/hda6为发生错误的硬盘分区,请依据具体情况更改此参数),系统修复完成后,用命令“reboot”重新启动即可。
分区在挂载情况下使用fsck可能导致数据损坏,建议将分区卸载后进行fsck操作。
2.系统硬盘分区表破坏
经过测试Suse11SP1无法通过光盘中自带的修复模式来修复硬盘分区被破坏的情况。
生产环境中的Linux服务器可能会因为病毒或者意外断电而引起硬盘分区表被破坏,通常恢复硬盘分区表需要之前我们先备份其分区表的信息,一般我们使用USB外接设备来备份主机硬盘的分区表或将分区表信息备份到其他硬盘上。
查看当前分区表和备份硬盘信息:
挂在备份mgr硬盘:
通常我们通过备份硬盘的MBR来备份硬盘分区表:
ddif=/dev/sdaof=/mnt/sda.mbrbs=512count=1
现在我们来写零硬盘分区表来实现类似分区表被破坏的结果
ddif=/dev/zeroof=/dev/sdabs=1count=64skip=446seek=446
查询硬盘sda上的分区信息,发现其已不包含任何分区:
当主机硬盘分区表丢失了之后,再次启动后GRUB会因找不到配置文件而进入命令行模式:
重启机器,使用救援模式进入系统:
我们查询系统磁盘信息,发现硬盘设备sda没有包含任何分区。
挂载备份MBR的硬盘:
还原MBR:
ddif=/usb/sda.mbrof=/dev/sdabs=1count=64skip=446seek=446
再次查询系统磁盘信息:
重启系统,确认系统能否正确引导。
经过测试确定,系统可以正确引导,至此恢复MBR被破坏问题。
五、/boot分区中的内容被完全清空了包括:
(kernel,initrd,grub.....)
linux-02:
~#cd/boot/
linux-02:
/boot#ls
System.map-2.6.16.60-0.85.1-smpmessage
backup_mbrsymsets-2.6.16.60-0.85.1-smp.tar.gz
bootsymtypes-2.6.16.60-0.85.1-smp.gz
config-2.6.16.60-0.85.1-smpsymvers-2.6.16.60-0.85.1-smp.gz
grubvmlinux-2.6.16.60-0.85.1-smp.gz
initrdvmlinuz
initrd-2.6.16.60-0.85.1-smpvmlinuz-2.6.16.60-0.85.1-smp
lost+found
linux-02:
/boot#rm-rf*#清空boot分区内容
linux-02:
/boot#ls
重启reboot
linux-02:
/boot#reboot
重启之后,出现以下画面:
Suse10SP4解决方法:
解决思路:
使用光盘,自动修复模式,修复boot分区内容。
开机,从光盘启动,选择修复模式,自动修复模式是否可以直接修复boot分区内容,耗时大约10分钟。
接下来的语言选择,按照用户要求选择即可。
在此阶段,会安装系统kernel包,sysconfig包,yast2包和其他必备软件包。
选中“Finish”。
接下来,进入系统。
检测boot分区内容是否恢复:
由上图可见,boot分区内容已经恢复出来,至此问题解决。
选择“自定义修复”模式,所有选项全部选择,也可以修复boot分区内容被清空问题,但开机后还有部分选项需要配置,教为复杂,同时修复耗时较长。
因为修复过程和“自动修复”模式基本相同,在此就不在赘述。
Suse11SP1boot分区内容被清空,该如何恢复?
通过系统自带的修复模式,包括,自动修复,自定义修复,专家工具,无法修复系统。
通过升级的方式也无法修复root分区被清空。
截至目前,还没有方法能够恢复Suse11SP1boot分区内容被清空问题。
六、开机启动kernel可用的grub参数:
注意:
所有引导参数都是大小写敏感的!
绝大部分的内核引导参数的格式如下(每个参数的值列表中最多只能有十项):
name[=value_1][,value_2]...[,value_10]
如果"name"不能被识别并且满足"name=value"的格式,那么则被解译为一个环境变量(比如"TERM=linux"或"BOOT_IMAGE=vmlinuz.bak"),否则将被原封不动的传递给init程序(比如"single")。
标记说明
并不是所有的参数都是永远可用的,只有在特定的模块存在并且相应的硬件也存在的情况下才可用。
引导参数上面的方括号说明了其依赖关系,其中使用的标记解释如下:
参数
说明
ACPI
高级配置与电源接口
APIC
高级可编程中断控制器
HW
相应的硬件设备存在
IA-32
IA-32(i386)体系结构(安藤32位处理器)
X86-64
X86-64体系结构
IOSCHED
启用了多个IO调度器
LOOP
启用了Loopback设备
NET
启用了网络支持
PCI
PCI总线支持
PNP
即插即用支持
PS2
PS/2支持
SCSI
许多SCSI设备的参数在Documentation/scsi/中描述
SMP
对称多处理器
USB
USB支持
USBHID
USB人机界面设备
VT
虚拟终端(Virtualterminal)
BUGS=
用于在特定的体系结构上解决某些CPU的bug
KNL
是一个内核启动参数
BOOT
是一个引导程序参数
标记为"BOOT"的参数实际上由引导程序使用,对内核本身没有直接的意义。
没有特别的需求,请不要修改此类参数的语法,更多信息请阅读Documentation/i386/boot.txt文档。
控制台
这些参数控制着控制台或内核日志,在何处显示内核调试信息和错误信息。
参数
配置
说明
[KNL]
[IA-32,X86-64]earlyprintk=vga
在传统的控制台初始化之前,在VGA上显示内核日志信息。
如果系统有硬件问题或是严重的软件故障,可以初步查看故障信息,等系统起来后,看boot.msg进一步排查。
initcall_debug
跟踪所有内核初始化过程中调用的函数。
有助于诊断内核在启动过程中死在了那个函数上面。
loglevel
loglevel={0|1|2|3|4|5|6|7}
所有小于该数字的内核信息都将在控制台上显示出来。
这个级别可以使用klogd程序或者修改/proc/sys/kernel/printk文件进行调整。
取值范围是"0"(不显示任何信息)到"7"(显示所有级别的信息)。
建议至少设为"4"。
[提示]级别"7"要求编译时加入了调试支持。
[HW]
irqfixup
用于修复基本的中断问题:
当一个中断没有被处理时搜索所有可用的中断处理器。
用于解决某些firmware缺陷。
irqpoll
用于修复更进一步的中断问题:
当一个中断没有被处理时搜索所有可用的中断处理器,并且对每个时钟中断都进行搜索。
用于解决某些严重的firmware缺陷。
[SMP]
maxcpus=
明确指定一个SMP内核能够使用的最大CPU数量。
最好使用"maxcpus=0"而不是"maxcpus=1"来禁用SMP功能。
[KNL]
init=
指定内核启动后运行的第一个程序的绝对路径。
默认为"/sbin/init"。
S
以单用户模式运行init,默认是多用户模式。
[HW,ACPI,X86-64,i386]
acpi={force|off|ht|strict|noirq}
ACPI的总开关。
force表示强制启用;off表示强制禁用;noirq表示不要将ACPI用于IRQ路由;ht表示只运行足够的ACPI来支持超线程;strict表示降低对不严格遵循ACPI规格的平台的兼容性。
acpi_sleep={s3_bios,s3_mode}
ACPI休眠选项。
在从S3状态(挂起到内存)恢复的时候,硬件需要被正确的初始化。
这对大多数硬件都不成问题,除了显卡之外,因为显卡是由BIOS初始化的,内核无法获取必要的恢复信息(仅存在于BIOS中,内核无法读取)。
这个选项允许内核以两种方式尝试使用ACPI子系统来恢复显卡的状态。
[HW,ACPI]
acpi_use_timer_override
对于某些有毛病的NvidiaNF5主板需要使用此选项才能正常使用,不过此时HPET将失效。
[IA-32,X86-64]
acpi_pm_good
对于某些有毛病的NvidiaNF5主板需要使用此选项才能正常使用,不过此时HPET将失效。
[PCI]
pci=option[,option...]
off
不检测PCI总线,也就是关闭所有PCI设备。
(使用该参数可能导致硬盘不能使用,在Vmware中测试结果。
)
[i386,x86-64]
enable_timer_pin_1
disable_timer_pin_1
启用/禁用APIC定时器的PIN1,可以用于解决某些有bug的芯片组(特别是ATI芯片组)。
内核将尽可能自动探测正确的值。
Suse11SP1boot分区被清空后,不能使用安装光盘将boot目录拷贝到以前的boot分区所在目录,因为以前boot分区空间不够,不能容纳boot目录的内容,同时boot目录的内容并不是系统需要的内容。
七、Linux系统启动流程:
对系统的流程先有一个大概的了解:
开电源==>BIOS自检==>启动设备(磁盘orU盘or光驱)==>引导程序(lilo或grub)==>内核==>init程序(<==>rc.sysinit和rc)==>mingetty==>终端登录==>shell...
现在分为四个阶段来讲述:
第一阶段:
BIOS启动引导阶段
实现硬件的初始化以及查找启动介质;
从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理器.
第二阶段:
GRUB启动引导管理器
装载stage1;
装载stage2;
读取/boot/grub/menu.lst文件并显示启动菜单;
装载所选的kernel和initrd文件到内存中.
第三阶段:
内核启动阶段
运行内核启动参数;
解压并挂载initrd文件系统,装载所需的驱动;
挂载根文件系统.
第四阶段:
init初始化阶段
启动/sbin/init进程;
运行rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统;
读取/etc/inittab文件,运行在/etc/rc.d/rc.d中定义的不同的运行级别服务初始化运行脚本;
打开字符终端1--6号控制台or图形管理的7号控制台.
第一阶段:
系统开机上电后