Linux启动和故障排错
系统启动流程:
系统初始化: POST --> BootSequence (BIOS) --> Bootloader(MBR) -->kernel(ramdisk) -->rootfs(只读) -->init(systemd) init程序的类型: Upstart: init,CentOS 6 配置文件: /etc/inittab, /etc/init/*.conf Systemd:systemd, CentOS 7 配置文件:/usr/lib/systemd/system /etc/systemd/system ——————————————————————————————— 1、上电POST自检,加载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控制主机 ———————————————————————————————
实验一:破坏本机grub stage1,并修复
①将/dev/sda硬盘前446字节清零
②reboot,排错,进入救援模式修复 重启系统⽆法进⼊正常的原来系统,启动时按F2键,进⼊BIOS设置第⼀启动设备为CD-ROOM设备 光盘启动界⾯,选择救援模式即第3⾏,回车确定
切根,安装grub修复即可
实验二:删除vmlinuz和initramfs⽂件后⽆法启动,并修复
①删除两个文件
②reboot,进入救援模式修复 方法一 mkdir /mnt/cdrom mount /dev/sr0 /mnt/cdrom chroot /mnt/sysimage #切换/ mkinitrd /boot/initramfs-
uname -r
.imguname -r
cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-uname -r
sync #写入磁盘 方法二 mkdir /mnt/cdrom mount /dev/sr0 /mnt/cdrom rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-696.e16.x86_64.rpm --root=/mnt/sysimage/ --force
实验三:删除grub.conf⽂件,修复启动
①rm -f /boot/grub/grub.conf;reboot ②进⼊grub界⾯,指定内核及参数和虚拟磁盘映像⽂件
③boot启动后,重新创建grub.conf文件 vim /boot/grub/grub.conf
④reboot;测试是否可以正常启动
实验四:破坏grub stage2;删除/etc/fstab和/boot⽬录的所有⽂件,并修复
①删除fstab和/boot下所有文件
②重启,进入救援模式,通过挂载测试看到/dev/sda2是根目录
③vi /mnt/roofs/etc/fstab;创建fstab文件
④exit;reboot; ⑤建立文件夹并挂载;解压缩
⑥切根并安装gurb;自建配置grub.conf文件
⑦禁用selinux,重启测试即可