CentOS6启动流程
1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机
第一阶段
破坏1阶段后还原方法:mbr 446字节
1.先复制在破坏,dd if=/dev/sda of=/data/mbr bs=1 count=512
破坏,dd if=/dev/zero of=/dev/sda bs=1 count=446
进入救援模式,dd if=/mnt/sysimage/data/mbr of =/dev/sda bs =1 count=446
默认下一步,再次下一步
方法2:使用grub修复
进入救援模式,chroot /mnt/sysimage ; grub-install /dev/sda
示例1 :使用grub方法修复mbr前446字节:恢复1阶段
修复方法:grub
grub> root (hd0,0)
grub> setup (hd0) //该修复方法,依赖于三种状态文件
一又二分之一阶段
示例2:破坏1.5阶段:dd if=/dev/zero of=/dev/sda bs=1 count=10000 skip=512 seek=512
修复方法:进入救援模式,grub
grub-install /dev/sda
退出方法同上
注意:一旦使用grub(交互式)修复,三个阶段的文件不可丢失,一旦丢失,机器将无法恢复;
但是grub --install 仍然可以修复
丢失initramfs和vmlinuz文件效果:(机器不能正常启动)
恢复方法(centos6):
按esc,进入光盘救援模式,默认根路径为:/mnt/sysimage
chroot /mnt/sysimage 切换根路径
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
mount /dev/sr0 /mnt
cp /run/install/repo/isolinux/vmlinuz /boot/vmlinuz-`uname -r`
sync 将内存中的数据同步到磁盘
退出,重启
丢失vmlinuz文件的恢复方法(centos6/7通用):
chroot /mnt/sysimage 切换根路径
mount /dev/sr0 /mnt
cp /run/install/repo/isolinux/vmlinuz /mnt/sysimage//boot/vmlinuz-`uname -r`
退出,重启
第二阶段
破坏方式2:rm -f /etc/fstab rm -rf /boot/*
效果:
两种状态都出现过
修复方法:进入救援模式,开启shell
fdisk -l 查看 ,用mount挂载找根(如果挂载上,目录下没有东西,证明不是根文件,卸载后重新挂载)
vim /mnt/sysimage/etc/fstab
/dev/sda2 / ext4 defaults 0 0
/dev/sda1 /boot ext4 defaults 0 0
/dev/sd5 swap swap defaults 0 0
后续修复同上一实验
重启后发现还是报错,进入救援模式发现grub.conf中文件名与文件不一致
grub下文件全部删除:修复方法:
重启;
进入救援模式
切跟,vim
kernel /vmlinuz-2.6.32-696.e16.x86_64(可用补全键) root=/dev/sda2
initrd /initramfs-2.6.32-696.e16.x86_64.img(可用补全键)
rboot,重启后再修复目录下的文件
示例1: rm -rf /boot/*
效果图:
修复方法:进入光盘救援模式;chroot /mnt/sysimage; mount /dev/sr0 /mnt; cp /mnt/isolinux/vmlinuz /booot/ ; cd /boot ; mkinitrd initramfs.img `uname -r`
grub-install /dev/sda
vim grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz root=/dev/sda2
initrd /initramfs.img
方法2:进入救援光盘的救援模式: mkdir /mnt/cdrom ;mount /dev/sr0 /mnt/cdrom
rpm -ivh /mnt/cdrom/Packages/kernel-xxxx.rpm --root=/mnt/sysimage --force
chroot /mnt/sysimage
grub-install /dev/sda
vim /boot/grub/grub.conf
default=0
timeout=5
title linux
kernel /vmlinuz root=/dev/sda2 quiet rhgb(图形) selinux=0
initrd /initramfs.img
注意:如果boot不是独立分区,以上操作必须写kernel /boot/vmlinuz【grub.conf 文件中】
配置文件:/boot/grub/grub.conf <-- /etc/grub.conf (在此文件可配置启动菜单)
例如:将kernel和initrd这两行调换位置,出现的结果,不能正常启动
修复方法:选中该启动菜单,输入e修改内核参数,删除initrd行,且把该行内容写到kernel行后,启动后将配置文件修改为正确的
破坏方式3:rm -f /sbin/init
效果:
救援方法1:若有相同的其他设备,可配ip,切根后chroot /mnt/sysimage, rm -f (可删除软链接
拷贝 scp ip:/sbin/init /mnt/sysimage/sbin
方法2:rpm -ivh upstart (可安装该包)
进入救援模式
rpm2cpio /misc/cd/Packages/upstart-xxxx.rpm | cpio -tv 查看该包所包含的文件
rpm2cpio /misc/cd/Packages/upstart-xxxx.rpm | cpio -idv ./sbin/init 解压指定包到当前目录下
软件故障修复
rpm被卸载:
进入救援模式:mount 挂在光盘;rpm -ivh [包名称] --root=/mnt/sysimage/
计划任务语法错误时:@reboot root reboot的解决方案
cetos7
开机时选中默认内核摁e
在linux16行尾加rd.break Ctrl+x
mount -o remount.rw /sysroot
vi /sysroot/etc/crontab
cetos6
开机时选中默认内核摁a空格1回车
进系统再改一下etc/crontab
**口令(centos6以下)
进入单用户
直接更改密码passwd
单用户设置密码
加密密码 grub-md5-crypt
在grub.conf中添加passwd --md5 [密文密码]
grub-crypt
passwd --encrypted [密文密码] ()
备份分区表
dd if=/dev/sda of=/data/mbr_bak bs=1 count=512
恢复分区表
dd if=mbr_bak of=/dev/sda
分区表克隆
dd if=/dev/sda of=/dev/sdb bs=1 count=512(两块磁盘容量必须相同)